@zivis/mcp 0.1.0-alpha.26 → 0.1.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/dist/api-client.d.ts +24 -1
  2. package/dist/api-client.js +52 -29
  3. package/dist/api-client.js.map +1 -0
  4. package/dist/auth/index.d.ts +22 -1
  5. package/dist/auth/index.js +38 -17
  6. package/dist/auth/index.js.map +1 -0
  7. package/dist/auth/jwt.d.ts +16 -0
  8. package/dist/auth/jwt.js +13 -0
  9. package/dist/auth/jwt.js.map +1 -0
  10. package/dist/auth/keychain.d.ts +32 -6
  11. package/dist/auth/keychain.js +114 -83
  12. package/dist/auth/keychain.js.map +1 -0
  13. package/dist/auth/oauth.d.ts +37 -2
  14. package/dist/auth/oauth.js +48 -38
  15. package/dist/auth/oauth.js.map +1 -0
  16. package/dist/auth/sessions.d.ts +25 -5
  17. package/dist/auth/sessions.js +39 -20
  18. package/dist/auth/sessions.js.map +1 -0
  19. package/dist/auth/token-refresh.d.ts +22 -2
  20. package/dist/auth/token-refresh.js +35 -32
  21. package/dist/auth/token-refresh.js.map +1 -0
  22. package/dist/cli.d.ts +18 -1
  23. package/dist/cli.js +908 -30
  24. package/dist/cli.js.map +1 -0
  25. package/dist/index.d.ts +6 -0
  26. package/dist/index.js +7 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/project-binding.d.ts +19 -2
  29. package/dist/project-binding.js +21 -38
  30. package/dist/project-binding.js.map +1 -0
  31. package/dist/resolve-application-id.d.ts +4 -0
  32. package/dist/resolve-application-id.js +5 -0
  33. package/dist/resolve-application-id.js.map +1 -0
  34. package/dist/sanitize.d.ts +21 -0
  35. package/dist/sanitize.js +41 -0
  36. package/dist/sanitize.js.map +1 -0
  37. package/dist/server.d.ts +13 -1
  38. package/dist/server.js +247 -122
  39. package/dist/server.js.map +1 -0
  40. package/dist/tools/check-project.d.ts +18 -5
  41. package/dist/tools/check-project.js +110 -122
  42. package/dist/tools/check-project.js.map +1 -0
  43. package/dist/tools/check-repo-trust.d.ts +19 -4
  44. package/dist/tools/check-repo-trust.js +47 -56
  45. package/dist/tools/check-repo-trust.js.map +1 -0
  46. package/dist/tools/create-diagram.d.ts +5 -0
  47. package/dist/tools/create-diagram.js +10 -0
  48. package/dist/tools/create-diagram.js.map +1 -0
  49. package/dist/tools/create-document.d.ts +5 -0
  50. package/dist/tools/create-document.js +6 -0
  51. package/dist/tools/create-document.js.map +1 -0
  52. package/dist/tools/discover-local-infra.d.ts +10 -0
  53. package/dist/tools/discover-local-infra.js +73 -3
  54. package/dist/tools/discover-local-infra.js.map +1 -0
  55. package/dist/tools/enterprise/capture-evidence.d.ts +54 -0
  56. package/dist/tools/enterprise/capture-evidence.js +72 -0
  57. package/dist/tools/enterprise/capture-evidence.js.map +1 -0
  58. package/dist/tools/enterprise/create-report-ticket.d.ts +34 -0
  59. package/dist/tools/enterprise/create-report-ticket.js +44 -0
  60. package/dist/tools/enterprise/create-report-ticket.js.map +1 -0
  61. package/dist/tools/enterprise/end-pentest-session.d.ts +33 -0
  62. package/dist/tools/enterprise/end-pentest-session.js +42 -0
  63. package/dist/tools/enterprise/end-pentest-session.js.map +1 -0
  64. package/dist/tools/enterprise/generate-report.d.ts +55 -0
  65. package/dist/tools/enterprise/generate-report.js +111 -0
  66. package/dist/tools/enterprise/generate-report.js.map +1 -0
  67. package/dist/tools/enterprise/get-org-zat.d.ts +5 -0
  68. package/dist/tools/enterprise/get-org-zat.js +6 -0
  69. package/dist/tools/enterprise/get-org-zat.js.map +1 -0
  70. package/dist/tools/enterprise/get-report-status.d.ts +27 -0
  71. package/dist/tools/enterprise/get-report-status.js +38 -0
  72. package/dist/tools/enterprise/get-report-status.js.map +1 -0
  73. package/dist/tools/enterprise/get-threat-model.d.ts +6 -1
  74. package/dist/tools/enterprise/get-threat-model.js +17 -52
  75. package/dist/tools/enterprise/get-threat-model.js.map +1 -0
  76. package/dist/tools/enterprise/list-agents.d.ts +42 -0
  77. package/dist/tools/enterprise/list-agents.js +95 -0
  78. package/dist/tools/enterprise/list-agents.js.map +1 -0
  79. package/dist/tools/enterprise/list-report-issues.d.ts +36 -0
  80. package/dist/tools/enterprise/list-report-issues.js +50 -0
  81. package/dist/tools/enterprise/list-report-issues.js.map +1 -0
  82. package/dist/tools/enterprise/list-threat-models.d.ts +5 -0
  83. package/dist/tools/enterprise/list-threat-models.js +8 -0
  84. package/dist/tools/enterprise/list-threat-models.js.map +1 -0
  85. package/dist/tools/enterprise/manage-actor.d.ts +6 -1
  86. package/dist/tools/enterprise/manage-actor.js +7 -14
  87. package/dist/tools/enterprise/manage-actor.js.map +1 -0
  88. package/dist/tools/enterprise/manage-attack-scenario.d.ts +6 -1
  89. package/dist/tools/enterprise/manage-attack-scenario.js +7 -13
  90. package/dist/tools/enterprise/manage-attack-scenario.js.map +1 -0
  91. package/dist/tools/enterprise/manage-component.d.ts +6 -1
  92. package/dist/tools/enterprise/manage-component.js +7 -20
  93. package/dist/tools/enterprise/manage-component.js.map +1 -0
  94. package/dist/tools/enterprise/manage-data-asset.d.ts +7 -2
  95. package/dist/tools/enterprise/manage-data-asset.js +7 -17
  96. package/dist/tools/enterprise/manage-data-asset.js.map +1 -0
  97. package/dist/tools/enterprise/manage-data-flow.d.ts +7 -2
  98. package/dist/tools/enterprise/manage-data-flow.js +7 -19
  99. package/dist/tools/enterprise/manage-data-flow.js.map +1 -0
  100. package/dist/tools/enterprise/manage-finding.d.ts +69 -0
  101. package/dist/tools/enterprise/manage-finding.js +106 -0
  102. package/dist/tools/enterprise/manage-finding.js.map +1 -0
  103. package/dist/tools/enterprise/manage-security-control.d.ts +6 -1
  104. package/dist/tools/enterprise/manage-security-control.js +7 -18
  105. package/dist/tools/enterprise/manage-security-control.js.map +1 -0
  106. package/dist/tools/enterprise/manage-test-case.d.ts +7 -2
  107. package/dist/tools/enterprise/manage-test-case.js +6 -8
  108. package/dist/tools/enterprise/manage-test-case.js.map +1 -0
  109. package/dist/tools/enterprise/promote-finding-to-issue.d.ts +36 -0
  110. package/dist/tools/enterprise/promote-finding-to-issue.js +65 -0
  111. package/dist/tools/enterprise/promote-finding-to-issue.js.map +1 -0
  112. package/dist/tools/enterprise/publish-report-version.d.ts +34 -0
  113. package/dist/tools/enterprise/publish-report-version.js +75 -0
  114. package/dist/tools/enterprise/publish-report-version.js.map +1 -0
  115. package/dist/tools/enterprise/publish-test-to-library.d.ts +31 -0
  116. package/dist/tools/enterprise/publish-test-to-library.js +40 -0
  117. package/dist/tools/enterprise/publish-test-to-library.js.map +1 -0
  118. package/dist/tools/enterprise/record-test-result.d.ts +67 -0
  119. package/dist/tools/enterprise/record-test-result.js +75 -0
  120. package/dist/tools/enterprise/record-test-result.js.map +1 -0
  121. package/dist/tools/enterprise/start-pentest-session.d.ts +35 -0
  122. package/dist/tools/enterprise/start-pentest-session.js +50 -0
  123. package/dist/tools/enterprise/start-pentest-session.js.map +1 -0
  124. package/dist/tools/enterprise/sync-report-section.d.ts +41 -0
  125. package/dist/tools/enterprise/sync-report-section.js +79 -0
  126. package/dist/tools/enterprise/sync-report-section.js.map +1 -0
  127. package/dist/tools/enterprise/update-report-issue.d.ts +55 -0
  128. package/dist/tools/enterprise/update-report-issue.js +69 -0
  129. package/dist/tools/enterprise/update-report-issue.js.map +1 -0
  130. package/dist/tools/generate-diagram.d.ts +6 -0
  131. package/dist/tools/generate-diagram.js +9 -0
  132. package/dist/tools/generate-diagram.js.map +1 -0
  133. package/dist/tools/get-agent-test-results.d.ts +41 -0
  134. package/dist/tools/get-agent-test-results.js +86 -0
  135. package/dist/tools/get-agent-test-results.js.map +1 -0
  136. package/dist/tools/get-application-overview.d.ts +5 -0
  137. package/dist/tools/get-application-overview.js +6 -0
  138. package/dist/tools/get-application-overview.js.map +1 -0
  139. package/dist/tools/get-application.d.ts +5 -0
  140. package/dist/tools/get-application.js +6 -0
  141. package/dist/tools/get-application.js.map +1 -0
  142. package/dist/tools/get-artifact-content.d.ts +29 -0
  143. package/dist/tools/get-artifact-content.js +86 -0
  144. package/dist/tools/get-artifact-content.js.map +1 -0
  145. package/dist/tools/get-diagram.d.ts +5 -0
  146. package/dist/tools/get-diagram.js +11 -1
  147. package/dist/tools/get-diagram.js.map +1 -0
  148. package/dist/tools/get-document.d.ts +5 -0
  149. package/dist/tools/get-document.js +6 -0
  150. package/dist/tools/get-document.js.map +1 -0
  151. package/dist/tools/get-finding-details.d.ts +28 -0
  152. package/dist/tools/get-finding-details.js +43 -0
  153. package/dist/tools/get-finding-details.js.map +1 -0
  154. package/dist/tools/get-findings.d.ts +57 -0
  155. package/dist/tools/get-findings.js +103 -0
  156. package/dist/tools/get-findings.js.map +1 -0
  157. package/dist/tools/get-oss-zat.d.ts +5 -0
  158. package/dist/tools/get-oss-zat.js +7 -0
  159. package/dist/tools/get-oss-zat.js.map +1 -0
  160. package/dist/tools/get-recon-scan.d.ts +27 -0
  161. package/dist/tools/get-recon-scan.js +46 -0
  162. package/dist/tools/get-recon-scan.js.map +1 -0
  163. package/dist/tools/get-scan-output.d.ts +27 -0
  164. package/dist/tools/get-scan-output.js +64 -0
  165. package/dist/tools/get-scan-output.js.map +1 -0
  166. package/dist/tools/get-scenario-details.d.ts +27 -0
  167. package/dist/tools/get-scenario-details.js +46 -0
  168. package/dist/tools/get-scenario-details.js.map +1 -0
  169. package/dist/tools/get-test-case-results.d.ts +37 -0
  170. package/dist/tools/get-test-case-results.js +66 -0
  171. package/dist/tools/get-test-case-results.js.map +1 -0
  172. package/dist/tools/get-test-details.d.ts +29 -0
  173. package/dist/tools/get-test-details.js +49 -0
  174. package/dist/tools/get-test-details.js.map +1 -0
  175. package/dist/tools/get-trust-keys.d.ts +5 -0
  176. package/dist/tools/get-trust-keys.js +6 -0
  177. package/dist/tools/get-trust-keys.js.map +1 -0
  178. package/dist/tools/import-openapi-endpoints.d.ts +5 -0
  179. package/dist/tools/import-openapi-endpoints.js +6 -0
  180. package/dist/tools/import-openapi-endpoints.js.map +1 -0
  181. package/dist/tools/inspect-zat.d.ts +5 -0
  182. package/dist/tools/inspect-zat.js +19 -0
  183. package/dist/tools/inspect-zat.js.map +1 -0
  184. package/dist/tools/list-agent-test-cases.d.ts +41 -0
  185. package/dist/tools/list-agent-test-cases.js +73 -0
  186. package/dist/tools/list-agent-test-cases.js.map +1 -0
  187. package/dist/tools/list-applications.d.ts +6 -1
  188. package/dist/tools/list-applications.js +6 -0
  189. package/dist/tools/list-applications.js.map +1 -0
  190. package/dist/tools/list-diagrams.d.ts +5 -0
  191. package/dist/tools/list-diagrams.js +6 -0
  192. package/dist/tools/list-diagrams.js.map +1 -0
  193. package/dist/tools/list-documents.d.ts +5 -0
  194. package/dist/tools/list-documents.js +6 -0
  195. package/dist/tools/list-documents.js.map +1 -0
  196. package/dist/tools/list-endpoints.d.ts +5 -0
  197. package/dist/tools/list-endpoints.js +6 -0
  198. package/dist/tools/list-endpoints.js.map +1 -0
  199. package/dist/tools/list-recon-scans.d.ts +36 -0
  200. package/dist/tools/list-recon-scans.js +74 -0
  201. package/dist/tools/list-recon-scans.js.map +1 -0
  202. package/dist/tools/list-scan-artifacts.d.ts +41 -0
  203. package/dist/tools/list-scan-artifacts.js +63 -0
  204. package/dist/tools/list-scan-artifacts.js.map +1 -0
  205. package/dist/tools/list-scans.d.ts +44 -0
  206. package/dist/tools/list-scans.js +91 -0
  207. package/dist/tools/list-scans.js.map +1 -0
  208. package/dist/tools/list-test-library.d.ts +44 -0
  209. package/dist/tools/list-test-library.js +83 -0
  210. package/dist/tools/list-test-library.js.map +1 -0
  211. package/dist/tools/list-test-scenarios.d.ts +31 -0
  212. package/dist/tools/list-test-scenarios.js +66 -0
  213. package/dist/tools/list-test-scenarios.js.map +1 -0
  214. package/dist/tools/local-scan.d.ts +40 -0
  215. package/dist/tools/local-scan.js +261 -0
  216. package/dist/tools/local-scan.js.map +1 -0
  217. package/dist/tools/manage-diagram.d.ts +5 -0
  218. package/dist/tools/manage-diagram.js +16 -0
  219. package/dist/tools/manage-diagram.js.map +1 -0
  220. package/dist/tools/open-in-ide.d.ts +13 -1
  221. package/dist/tools/open-in-ide.js +13 -0
  222. package/dist/tools/open-in-ide.js.map +1 -0
  223. package/dist/tools/run-test-scenario.d.ts +37 -0
  224. package/dist/tools/run-test-scenario.js +70 -0
  225. package/dist/tools/run-test-scenario.js.map +1 -0
  226. package/dist/tools/scan-pr.d.ts +27 -0
  227. package/dist/tools/scan-pr.js +51 -0
  228. package/dist/tools/scan-pr.js.map +1 -0
  229. package/dist/tools/security-review.d.ts +16 -0
  230. package/dist/tools/security-review.js +77 -63
  231. package/dist/tools/security-review.js.map +1 -0
  232. package/dist/tools/setup-red-team-target.d.ts +79 -0
  233. package/dist/tools/setup-red-team-target.js +430 -0
  234. package/dist/tools/setup-red-team-target.js.map +1 -0
  235. package/dist/tools/triage-finding.d.ts +47 -0
  236. package/dist/tools/triage-finding.js +116 -0
  237. package/dist/tools/triage-finding.js.map +1 -0
  238. package/dist/tools/update-document.d.ts +5 -0
  239. package/dist/tools/update-document.js +6 -0
  240. package/dist/tools/update-document.js.map +1 -0
  241. package/dist/tools/update-endpoint.d.ts +5 -0
  242. package/dist/tools/update-endpoint.js +7 -0
  243. package/dist/tools/update-endpoint.js.map +1 -0
  244. package/dist/tools/update-mermaid-source.d.ts +13 -0
  245. package/dist/tools/update-mermaid-source.js +14 -0
  246. package/dist/tools/update-mermaid-source.js.map +1 -0
  247. package/dist/tools/verify-trust-mark.d.ts +5 -0
  248. package/dist/tools/verify-trust-mark.js +6 -0
  249. package/dist/tools/verify-trust-mark.js.map +1 -0
  250. package/dist/types.d.ts +14 -14
  251. package/dist/types.js +28 -22
  252. package/dist/types.js.map +1 -0
  253. package/package.json +4 -24
  254. package/LICENSE +0 -201
  255. package/README.md +0 -19
  256. package/dist/lib/inspect-cache.d.ts +0 -10
  257. package/dist/lib/inspect-cache.js +0 -75
  258. package/dist/lib/next-steps.d.ts +0 -27
  259. package/dist/lib/next-steps.js +0 -21
  260. package/dist/matcher/ast-eval.d.ts +0 -8
  261. package/dist/matcher/ast-eval.js +0 -95
  262. package/dist/matcher/finding.d.ts +0 -55
  263. package/dist/matcher/finding.js +0 -1
  264. package/dist/matcher/index.d.ts +0 -8
  265. package/dist/matcher/index.js +0 -202
  266. package/dist/matcher/inference-candidates.d.ts +0 -26
  267. package/dist/matcher/inference-candidates.js +0 -81
  268. package/dist/matcher/walker.d.ts +0 -7
  269. package/dist/matcher/walker.js +0 -71
  270. package/dist/pattern-pack/index.d.ts +0 -125
  271. package/dist/pattern-pack/index.js +0 -189
  272. package/dist/pattern-packs/zivis-public-0.2.0/capsules/agents/privilege-separation.yaml +0 -224
  273. package/dist/pattern-packs/zivis-public-0.2.0/capsules/prompting/self-consistency-no-isolation.yaml +0 -237
  274. package/dist/pattern-packs/zivis-public-0.2.0/capsules/retrieval/context-injection-no-validator.yaml +0 -348
  275. package/dist/pattern-packs/zivis-public-0.2.0/capsules/security/late-org-filter.yaml +0 -266
  276. package/dist/pattern-packs/zivis-public-0.2.0/controls/external_validator_on_facts.yaml +0 -37
  277. package/dist/pattern-packs/zivis-public-0.2.0/controls/fact_validator_present.yaml +0 -68
  278. package/dist/pattern-packs/zivis-public-0.2.0/controls/human_approval_gate.yaml +0 -44
  279. package/dist/pattern-packs/zivis-public-0.2.0/controls/langgraph_state_machine_with_per_node_tools.yaml +0 -35
  280. package/dist/pattern-packs/zivis-public-0.2.0/controls/per_sample_retrieval_diversification.yaml +0 -38
  281. package/dist/pattern-packs/zivis-public-0.2.0/controls/prisma_extension_or_middleware_attaching_org_filter.yaml +0 -31
  282. package/dist/pattern-packs/zivis-public-0.2.0/controls/row_level_security_policy.yaml +0 -37
  283. package/dist/pattern-packs/zivis-public-0.2.0/controls/source_attribution_present.yaml +0 -58
  284. package/dist/pattern-packs/zivis-public-0.2.0/manifest.json +0 -167
  285. package/dist/pattern-packs/zivis-public-0.2.0/prompts/agents/privilege-separation/identify.md +0 -54
  286. package/dist/pattern-packs/zivis-public-0.2.0/prompts/prompting/self-consistency-no-isolation/identify.md +0 -60
  287. package/dist/pattern-packs/zivis-public-0.2.0/prompts/retrieval/context-injection-no-validator/identify.md +0 -109
  288. package/dist/pattern-packs/zivis-public-0.2.0/prompts/security/late-org-filter/identify.md +0 -78
  289. package/dist/prompts/audit-dependencies.d.ts +0 -2
  290. package/dist/prompts/audit-dependencies.js +0 -47
  291. package/dist/prompts/getting-started.d.ts +0 -2
  292. package/dist/prompts/getting-started.js +0 -37
  293. package/dist/prompts/index.d.ts +0 -2
  294. package/dist/prompts/index.js +0 -6
  295. package/dist/tools/enterprise/get-threat-model-artifact.d.ts +0 -24
  296. package/dist/tools/enterprise/get-threat-model-artifact.js +0 -68
  297. package/dist/tools/enterprise/list-attack-scenarios.d.ts +0 -24
  298. package/dist/tools/enterprise/list-attack-scenarios.js +0 -63
  299. package/dist/tools/enterprise/list-attack-step-library-tests.d.ts +0 -24
  300. package/dist/tools/enterprise/list-attack-step-library-tests.js +0 -55
  301. package/dist/tools/enterprise/list-threat-model-artifacts.d.ts +0 -55
  302. package/dist/tools/enterprise/list-threat-model-artifacts.js +0 -108
  303. package/dist/tools/enterprise/list-threat-model-review-items.d.ts +0 -30
  304. package/dist/tools/enterprise/list-threat-model-review-items.js +0 -54
  305. package/dist/tools/enterprise/list-threat-model-versions.d.ts +0 -24
  306. package/dist/tools/enterprise/list-threat-model-versions.js +0 -54
  307. package/dist/tools/enterprise/manage-threat-model-analysis.d.ts +0 -44
  308. package/dist/tools/enterprise/manage-threat-model-analysis.js +0 -83
  309. package/dist/tools/enterprise/manage-threat-model-review.d.ts +0 -38
  310. package/dist/tools/enterprise/manage-threat-model-review.js +0 -72
  311. package/dist/tools/get-started.d.ts +0 -18
  312. package/dist/tools/get-started.js +0 -470
  313. package/dist/tools/inspect.d.ts +0 -21
  314. package/dist/tools/inspect.js +0 -222
  315. package/dist/tools/manage-application.d.ts +0 -64
  316. package/dist/tools/manage-application.js +0 -129
  317. package/dist/tools/manage-endpoint-lifecycle.d.ts +0 -80
  318. package/dist/tools/manage-endpoint-lifecycle.js +0 -180
  319. package/dist/tools/threat-get-capsule.d.ts +0 -15
  320. package/dist/tools/threat-get-capsule.js +0 -53
  321. package/dist/tools/threat-get-inference-prompt.d.ts +0 -15
  322. package/dist/tools/threat-get-inference-prompt.js +0 -73
  323. package/dist/tools/threat-guide.d.ts +0 -28
  324. package/dist/tools/threat-guide.js +0 -175
  325. package/dist/tools/threat-list-relevant-capsules.d.ts +0 -17
  326. package/dist/tools/threat-list-relevant-capsules.js +0 -158
  327. package/dist/tools/threat-run-matcher.d.ts +0 -17
  328. package/dist/tools/threat-run-matcher.js +0 -145
@@ -1,28 +1,29 @@
1
+ /**
2
+ * zivis_get_threat_model — Get a threat model with all entities
3
+ *
4
+ * Maps to: GET /api/threat-models/:id
5
+ */
1
6
  import { z } from "zod";
2
7
  import { sanitizeResponse } from "../../sanitize.js";
3
8
  export const GET_THREAT_MODEL_NAME = "zivis_get_threat_model";
4
- export const GET_THREAT_MODEL_DESCRIPTION = `Get a threat model with ALL its entities — actors, components, data flows, attack scenarios, security controls, data assets, test cases, findings, AND any linked diagrams/artifacts.
9
+ export const GET_THREAT_MODEL_DESCRIPTION = `Get a threat model with ALL its entities — actors, components, data flows, attack scenarios, security controls, data assets, test cases, findings, AND any linked diagrams.
5
10
 
6
- Returns the complete threat model. Sub-entities live on the latest ThreatModelVersion. For convenience this tool surfaces them at BOTH levels:
7
- - Top-level: \`actors\`, \`components\`, \`dataFlows\`, \`attackScenarios\`, \`securityControls\`, \`dataAssets\`, \`testCases\`, \`findings\` — copied from the latest version
8
- - Nested: \`versions[0].<entity>\` — authoritative source. Older versions in \`versions[N]\` (N≥1) only carry summary metrics, not entities.
9
-
10
- Entity contents:
11
+ Returns the complete threat model including:
11
12
  - **Actors**: Who interacts with the system (external users, attackers, internal services)
12
13
  - **Components**: System parts (APIs, databases, frontends, services) with technology and trust level
13
14
  - **Data Flows**: How data moves between components (protocol, encryption, auth mechanism)
14
- - **Attack Scenarios**: STRIDE-categorized threats with severity, likelihood, narrative
15
+ - **Attack Scenarios**: STRIDE-categorized threats with severity, likelihood, attack vectors
15
16
  - **Security Controls**: Existing mitigations (preventive, detective, corrective) with effectiveness
16
17
  - **Data Assets**: What sensitive data exists and how it's classified
17
18
  - **Test Cases**: Security tests with results (pass/fail/partial/not_tested)
18
19
  - **Findings**: Discovered vulnerabilities with severity and remediation recommendations
19
- - **Linked Diagrams** (\`linked_diagrams\`): First-class \`Diagram\` entities — used for app-level / cross-TM views.
20
- - **Artifacts** (\`artifacts_summary\`): The diagrams the TM detail page itself displays (Mermaid, canvas state, attack chains, asset inventories). Use \`zivis_list_threat_model_artifacts\` and \`zivis_get_threat_model_artifact\` for full content. NOTE: the platform is mid-migration from artifacts → first-class diagrams; today most TM-internal diagrams live as artifacts.
20
+ - **Linked Diagrams**: Architecture, data flow, trust boundary, and other diagrams associated with this threat model
21
21
 
22
22
  IMPORTANT: The threat_model_id must be a threat model UUID from zivis_list_threat_models, NOT a scan ID or agent instance ID.
23
23
 
24
24
  Use this to understand the full security posture before making changes, adding entities, or running pen tests.
25
- After viewing, use zivis_manage_actor, zivis_manage_component, zivis_manage_data_flow, etc. to add or update entities.`;
25
+ After viewing, use zivis_manage_actor, zivis_manage_component, zivis_manage_data_flow, etc. to add or update entities.
26
+ Use zivis_get_diagram with a diagram_id from the linked_diagrams to view full diagram details (nodes, connections, boundaries).`;
26
27
  export const GET_THREAT_MODEL_SCHEMA = {
27
28
  threat_model_id: z
28
29
  .string()
@@ -35,34 +36,16 @@ export const GET_THREAT_MODEL_SCHEMA = {
35
36
  export function createGetThreatModelHandler(apiClient) {
36
37
  return async (params) => {
37
38
  try {
38
- const [threatModelData, diagramsData, artifactsData] = await Promise.all([
39
+ // Fetch threat model and linked diagrams in parallel
40
+ const [threatModelData, diagramsData] = await Promise.all([
39
41
  apiClient.get(`/api/threat-models/${params.threat_model_id}?include=all`),
40
42
  apiClient
41
43
  .get(`/api/diagrams?linkedThreatModelId=${params.threat_model_id}&take=50`)
42
44
  .catch(() => ({ diagrams: [], total: 0 })),
43
- apiClient
44
- .get(`/api/threat-models/${params.threat_model_id}/artifacts`)
45
- .catch(() => []),
46
45
  ]);
47
46
  const sanitized = sanitizeResponse(threatModelData);
48
- const versions = Array.isArray(sanitized.versions) ? sanitized.versions : [];
49
- const latestVersion = (versions[0] || {});
50
- const lifted = {};
51
- for (const key of [
52
- "actors",
53
- "components",
54
- "dataFlows",
55
- "attackScenarios",
56
- "securityControls",
57
- "dataAssets",
58
- "testCases",
59
- "findings",
60
- ]) {
61
- if (Array.isArray(latestVersion[key])) {
62
- lifted[key] = latestVersion[key];
63
- }
64
- }
65
- const linkedDiagrams = Array.isArray(diagramsData.diagrams)
47
+ // Attach linked diagrams summary to the response
48
+ const diagrams = Array.isArray(diagramsData.diagrams)
66
49
  ? diagramsData.diagrams.map((d) => ({
67
50
  diagram_id: d.id,
68
51
  name: d.name,
@@ -74,29 +57,10 @@ export function createGetThreatModelHandler(apiClient) {
74
57
  updated_at: d.updatedAt,
75
58
  }))
76
59
  : [];
77
- const artifactsRaw = Array.isArray(artifactsData) ? artifactsData : [];
78
- const artifactsSummary = artifactsRaw.map((a) => ({
79
- artifact_id: a.id,
80
- title: a.title,
81
- artifact_type: a.artifactType,
82
- content_type: a.contentType,
83
- tags: a.tags || [],
84
- description: a.description || null,
85
- is_stale: a.isStale ?? false,
86
- stale_reason: a.staleReason || null,
87
- is_edited: a.isEdited ?? false,
88
- group_id: a.groupId || null,
89
- scope_id: a.scopeId || null,
90
- promoted_diagram_id: a.diagramId || null,
91
- sort_order: a.sortOrder ?? 0,
92
- }));
93
60
  const result = {
94
61
  ...sanitized,
95
- ...lifted,
96
- linked_diagrams: linkedDiagrams,
62
+ linked_diagrams: diagrams,
97
63
  linked_diagrams_count: diagramsData.total,
98
- artifacts_summary: artifactsSummary,
99
- artifacts_count: artifactsSummary.length,
100
64
  };
101
65
  return {
102
66
  content: [
@@ -116,3 +80,4 @@ export function createGetThreatModelHandler(apiClient) {
116
80
  }
117
81
  };
118
82
  }
83
+ //# sourceMappingURL=get-threat-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-threat-model.js","sourceRoot":"","sources":["../../../src/tools/enterprise/get-threat-model.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAE9D,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;gIAiBoF,CAAC;AAEjI,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,kBAAkB,EAAE,CAAC;SAClB,OAAO,EAAE;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,+CAA+C,CAAC;CAC7D,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,SAAoB;IAC9D,OAAO,KAAK,EAAE,MAAiE,EAAE,EAAE;QACjF,IAAI,CAAC;YACH,qDAAqD;YACrD,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACxD,SAAS,CAAC,GAAG,CACX,sBAAsB,MAAM,CAAC,eAAe,cAAc,CAC3D;gBACD,SAAS;qBACN,GAAG,CACF,qCAAqC,MAAM,CAAC,eAAe,UAAU,CACtE;qBACA,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;aAC7C,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,gBAAgB,CAAC,eAAe,CAA4B,CAAC;YAE/E,iDAAiD;YACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACnD,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;oBACzD,UAAU,EAAE,CAAC,CAAC,EAAE;oBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,YAAY,EAAE,CAAC,CAAC,WAAW;oBAC3B,YAAY,EAAE,CAAC,CAAC,WAAW;oBAC3B,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;oBAClC,UAAU,EAAG,CAAC,CAAC,MAAiC,EAAE,KAAK,IAAI,IAAI;oBAC/D,gBAAgB,EAAG,CAAC,CAAC,MAAiC,EAAE,WAAW,IAAI,IAAI;oBAC3E,UAAU,EAAE,CAAC,CAAC,SAAS;iBACxB,CAAC,CAAC;gBACL,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,MAAM,GAAG;gBACb,GAAG,SAAS;gBACZ,eAAe,EAAE,QAAQ;gBACzB,qBAAqB,EAAE,YAAY,CAAC,KAAK;aAC1C,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC;YAClF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * zivis_list_agents — List agent instances for the org
3
+ *
4
+ * Maps to: GET /api/agent-instances
5
+ */
6
+ import { z } from "zod";
7
+ import type { ApiClient } from "../../api-client.js";
8
+ export declare const LIST_AGENTS_NAME = "zivis_list_agents";
9
+ export declare const LIST_AGENTS_DESCRIPTION = "List all configured agent instances for your organization.\n\nIMPORTANT \u2014 Understand the ZIVIS entity hierarchy:\n- **Agent instance** = a configured agent (e.g., \"Production Recon Agent\", \"API Pen Test Agent\"). Each has a UUID, an agent type, a target URL, and configuration. This tool lists these.\n- **Scan** = a single execution run of an agent instance. One agent can have many scans. Use zivis_list_scans to see scan runs.\n- **Threat model** = a structured security model (components, data flows, actors, findings). Created/updated by threat-analysis agent scans. Use zivis_list_threat_models to see these.\n\nAgent types:\n- **recon**: Reconnaissance \u2014 discovers attack surface, endpoints, technologies\n- **pen-test**: Penetration testing \u2014 actively tests for vulnerabilities\n- **ai-red-team**: AI/LLM red teaming \u2014 tests AI systems for prompt injection, jailbreaks, etc.\n- **threat-analysis**: Threat modeling \u2014 builds structured threat models (automated LLM threat ID is pipeline-specific)\n- **code-monitor**: Code monitoring \u2014 continuous scanning of repositories\n- **evidence**: Evidence collection \u2014 gathers compliance evidence\n\nWhen users ask about \"the threat model agent\" or \"the recon agent\", use this tool to find the agent instance, NOT zivis_list_scans.";
10
+ export declare const LIST_AGENTS_SCHEMA: {
11
+ agent_type: z.ZodOptional<z.ZodEnum<{
12
+ "pen-test": "pen-test";
13
+ recon: "recon";
14
+ "ai-red-team": "ai-red-team";
15
+ "threat-analysis": "threat-analysis";
16
+ "code-monitor": "code-monitor";
17
+ evidence: "evidence";
18
+ }>>;
19
+ status: z.ZodOptional<z.ZodEnum<{
20
+ archived: "archived";
21
+ paused: "paused";
22
+ active: "active";
23
+ }>>;
24
+ limit: z.ZodDefault<z.ZodNumber>;
25
+ };
26
+ export declare function createListAgentsHandler(apiClient: ApiClient): (params: {
27
+ agent_type?: string;
28
+ status?: string;
29
+ limit?: number;
30
+ }) => Promise<{
31
+ content: {
32
+ type: "text";
33
+ text: string;
34
+ }[];
35
+ isError?: undefined;
36
+ } | {
37
+ content: {
38
+ type: "text";
39
+ text: string;
40
+ }[];
41
+ isError: boolean;
42
+ }>;
@@ -0,0 +1,95 @@
1
+ /**
2
+ * zivis_list_agents — List agent instances for the org
3
+ *
4
+ * Maps to: GET /api/agent-instances
5
+ */
6
+ import { z } from "zod";
7
+ import { sanitizeResponse } from "../../sanitize.js";
8
+ export const LIST_AGENTS_NAME = "zivis_list_agents";
9
+ export const LIST_AGENTS_DESCRIPTION = `List all configured agent instances for your organization.
10
+
11
+ IMPORTANT — Understand the ZIVIS entity hierarchy:
12
+ - **Agent instance** = a configured agent (e.g., "Production Recon Agent", "API Pen Test Agent"). Each has a UUID, an agent type, a target URL, and configuration. This tool lists these.
13
+ - **Scan** = a single execution run of an agent instance. One agent can have many scans. Use zivis_list_scans to see scan runs.
14
+ - **Threat model** = a structured security model (components, data flows, actors, findings). Created/updated by threat-analysis agent scans. Use zivis_list_threat_models to see these.
15
+
16
+ Agent types:
17
+ - **recon**: Reconnaissance — discovers attack surface, endpoints, technologies
18
+ - **pen-test**: Penetration testing — actively tests for vulnerabilities
19
+ - **ai-red-team**: AI/LLM red teaming — tests AI systems for prompt injection, jailbreaks, etc.
20
+ - **threat-analysis**: Threat modeling — builds structured threat models (automated LLM threat ID is pipeline-specific)
21
+ - **code-monitor**: Code monitoring — continuous scanning of repositories
22
+ - **evidence**: Evidence collection — gathers compliance evidence
23
+
24
+ When users ask about "the threat model agent" or "the recon agent", use this tool to find the agent instance, NOT zivis_list_scans.`;
25
+ export const LIST_AGENTS_SCHEMA = {
26
+ agent_type: z
27
+ .enum(["pen-test", "ai-red-team", "recon", "threat-analysis", "code-monitor", "evidence"])
28
+ .optional()
29
+ .describe("Filter by agent type"),
30
+ status: z
31
+ .enum(["active", "paused", "archived"])
32
+ .optional()
33
+ .describe("Filter by agent status"),
34
+ limit: z
35
+ .number()
36
+ .min(1)
37
+ .max(50)
38
+ .default(20)
39
+ .describe("Maximum number of results (1-50, default 20)"),
40
+ };
41
+ export function createListAgentsHandler(apiClient) {
42
+ return async (params) => {
43
+ try {
44
+ const query = new URLSearchParams();
45
+ if (params.agent_type)
46
+ query.set("agentType", params.agent_type);
47
+ if (params.status)
48
+ query.set("status", params.status);
49
+ if (params.limit)
50
+ query.set("limit", String(params.limit));
51
+ query.set("includeOpenStats", "true");
52
+ const queryStr = query.toString();
53
+ const path = `/api/agent-instances${queryStr ? `?${queryStr}` : ""}`;
54
+ const data = await apiClient.get(path);
55
+ const sanitized = sanitizeResponse(data);
56
+ const instances = Array.isArray(sanitized.instances) ? sanitized.instances : [];
57
+ const summary = instances.map((agent) => ({
58
+ agent_instance_id: agent.id,
59
+ name: agent.name,
60
+ agent_type: agent.agentType,
61
+ status: agent.status,
62
+ target_url: agent.targetUrl,
63
+ description: agent.description || null,
64
+ is_enabled: agent.isEnabled,
65
+ last_scan_at: agent.lastScanAt || null,
66
+ created_at: agent.createdAt,
67
+ updated_at: agent.updatedAt,
68
+ open_critical_count: agent.openCriticalCount ?? null,
69
+ open_findings_total: agent.openFindingsTotal ?? null,
70
+ campaigns: Array.isArray(agent.campaignLinks)
71
+ ? agent.campaignLinks.map((link) => {
72
+ const campaign = link.campaign;
73
+ return campaign ? { id: campaign.id, name: campaign.name } : null;
74
+ }).filter(Boolean)
75
+ : [],
76
+ }));
77
+ return {
78
+ content: [
79
+ {
80
+ type: "text",
81
+ text: JSON.stringify({ total: data.total, agents: summary }, null, 2),
82
+ },
83
+ ],
84
+ };
85
+ }
86
+ catch (err) {
87
+ const message = err instanceof Error ? err.message : "Failed to list agents";
88
+ return {
89
+ content: [{ type: "text", text: `Error: ${message}` }],
90
+ isError: true,
91
+ };
92
+ }
93
+ };
94
+ }
95
+ //# sourceMappingURL=list-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-agents.js","sourceRoot":"","sources":["../../../src/tools/enterprise/list-agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * zivis_list_report_issues — List remediation checklist issues for a campaign report
3
+ *
4
+ * Maps to: GET /api/reports/:reportId/issues
5
+ * Also uses: POST /api/reports/for-campaign/:campaignId
6
+ */
7
+ import { z } from "zod";
8
+ import type { ApiClient } from "../../api-client.js";
9
+ export declare const LIST_REPORT_ISSUES_NAME = "zivis_list_report_issues";
10
+ export declare const LIST_REPORT_ISSUES_DESCRIPTION = "List all issues in a campaign's remediation checklist with status summary.\n\nReturns issues grouped by severity with stats (open/in_progress/done counts). Use campaign_id to auto-resolve the report, or provide report_id directly.\n\nFilter by status to see only open, in-progress, or completed items.";
11
+ export declare const LIST_REPORT_ISSUES_SCHEMA: {
12
+ campaign_id: z.ZodOptional<z.ZodString>;
13
+ report_id: z.ZodOptional<z.ZodString>;
14
+ status: z.ZodOptional<z.ZodEnum<{
15
+ open: "open";
16
+ in_progress: "in_progress";
17
+ done: "done";
18
+ }>>;
19
+ };
20
+ export declare function createListReportIssuesHandler(apiClient: ApiClient): (params: {
21
+ campaign_id?: string;
22
+ report_id?: string;
23
+ status?: string;
24
+ }) => Promise<{
25
+ content: {
26
+ type: "text";
27
+ text: string;
28
+ }[];
29
+ isError: boolean;
30
+ } | {
31
+ content: {
32
+ type: "text";
33
+ text: string;
34
+ }[];
35
+ isError?: undefined;
36
+ }>;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * zivis_list_report_issues — List remediation checklist issues for a campaign report
3
+ *
4
+ * Maps to: GET /api/reports/:reportId/issues
5
+ * Also uses: POST /api/reports/for-campaign/:campaignId
6
+ */
7
+ import { z } from "zod";
8
+ import { sanitizeResponse } from "../../sanitize.js";
9
+ export const LIST_REPORT_ISSUES_NAME = "zivis_list_report_issues";
10
+ export const LIST_REPORT_ISSUES_DESCRIPTION = `List all issues in a campaign's remediation checklist with status summary.
11
+
12
+ Returns issues grouped by severity with stats (open/in_progress/done counts). Use campaign_id to auto-resolve the report, or provide report_id directly.
13
+
14
+ Filter by status to see only open, in-progress, or completed items.`;
15
+ export const LIST_REPORT_ISSUES_SCHEMA = {
16
+ campaign_id: z.string().optional().describe("Campaign UUID — auto-resolves to report"),
17
+ report_id: z.string().optional().describe("Report UUID (alternative to campaign_id)"),
18
+ status: z.enum(["open", "in_progress", "done"]).optional().describe("Filter by status"),
19
+ };
20
+ export function createListReportIssuesHandler(apiClient) {
21
+ return async (params) => {
22
+ try {
23
+ let reportId = params.report_id;
24
+ // Resolve campaign → report if needed
25
+ if (!reportId && params.campaign_id) {
26
+ const reportData = await apiClient.post(`/api/reports/for-campaign/${params.campaign_id}`, {});
27
+ reportId = reportData.reportId;
28
+ }
29
+ if (!reportId) {
30
+ return {
31
+ content: [{ type: "text", text: "Error: Provide either campaign_id or report_id" }],
32
+ isError: true,
33
+ };
34
+ }
35
+ const queryParams = params.status ? `?status=${params.status}` : "";
36
+ const data = await apiClient.get(`/api/reports/${reportId}/issues${queryParams}`);
37
+ return {
38
+ content: [{ type: "text", text: JSON.stringify(sanitizeResponse(data), null, 2) }],
39
+ };
40
+ }
41
+ catch (err) {
42
+ const message = err instanceof Error ? err.message : "Failed to list report issues";
43
+ return {
44
+ content: [{ type: "text", text: `Error: ${message}` }],
45
+ isError: true,
46
+ };
47
+ }
48
+ };
49
+ }
50
+ //# sourceMappingURL=list-report-issues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-report-issues.js","sourceRoot":"","sources":["../../../src/tools/enterprise/list-report-issues.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,uBAAuB,GAAG,0BAA0B,CAAC;AAElE,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;oEAIsB,CAAC;AAErE,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACtF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACrF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CACxF,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAAC,SAAoB;IAChE,OAAO,KAAK,EAAE,MAIb,EAAE,EAAE;QACH,IAAI,CAAC;YACH,IAAI,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;YAEhC,sCAAsC;YACtC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,CACrC,6BAA6B,MAAM,CAAC,WAAW,EAAE,EACjD,EAAE,CACH,CAAC;gBACF,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;YACjC,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gDAAgD,EAAE,CAAC;oBAC5F,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CAC9B,gBAAgB,QAAQ,UAAU,WAAW,EAAE,CAChD,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5F,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC;YACpF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * zivis_list_threat_models — List threat models for the org
3
+ *
4
+ * Maps to: GET /api/threat-models
5
+ */
1
6
  import { z } from "zod";
2
7
  import type { ApiClient } from "../../api-client.js";
3
8
  export declare const LIST_THREAT_MODELS_NAME = "zivis_list_threat_models";
@@ -1,3 +1,8 @@
1
+ /**
2
+ * zivis_list_threat_models — List threat models for the org
3
+ *
4
+ * Maps to: GET /api/threat-models
5
+ */
1
6
  import { z } from "zod";
2
7
  import { sanitizeResponse } from "../../sanitize.js";
3
8
  export const LIST_THREAT_MODELS_NAME = "zivis_list_threat_models";
@@ -35,11 +40,13 @@ export function createListThreatModelsHandler(apiClient) {
35
40
  const path = `/api/threat-models${queryStr ? `?${queryStr}` : ""}`;
36
41
  const data = await apiClient.get(path);
37
42
  const sanitized = sanitizeResponse(data);
43
+ // Fetch diagram counts for each threat model in parallel
38
44
  const threatModels = Array.isArray(sanitized) ? sanitized : [];
39
45
  const diagramCounts = await Promise.all(threatModels.map((tm) => apiClient
40
46
  .get(`/api/diagrams?linkedThreatModelId=${tm.id}&take=1`)
41
47
  .then((res) => res.total ?? 0)
42
48
  .catch(() => 0)));
49
+ // Format with clear ID labeling to prevent confusion with scan/agent IDs
43
50
  const summary = Array.isArray(sanitized)
44
51
  ? sanitized.map((tm, i) => ({
45
52
  threat_model_id: tm.id,
@@ -72,3 +79,4 @@ export function createListThreatModelsHandler(apiClient) {
72
79
  }
73
80
  };
74
81
  }
82
+ //# sourceMappingURL=list-threat-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-threat-models.js","sourceRoot":"","sources":["../../../src/tools/enterprise/list-threat-models.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
+ /**
2
+ * zivis_manage_actor — Create, update, or delete threat actors in a threat model
3
+ *
4
+ * Maps to: POST/PATCH/DELETE /api/threat-models/:id/actors
5
+ */
1
6
  import { z } from "zod";
2
7
  import type { ApiClient } from "../../api-client.js";
3
8
  export declare const MANAGE_ACTOR_NAME = "zivis_manage_actor";
4
- export declare const MANAGE_ACTOR_DESCRIPTION = "Create, update, or delete a threat actor in a threat model.\n\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)";
9
+ export declare const MANAGE_ACTOR_DESCRIPTION = "Create, update, or delete a threat actor in a threat model.\n\nThreat actors represent entities that interact with or threaten the system (e.g., external users, attackers, services). Each actor has a trust level, type, and capabilities.\n\nActions:\n- create: Add a new threat actor (requires name, actor_type, trust_level)\n- update: Modify an existing actor (requires actor_id)\n- delete: Remove an actor (requires actor_id)";
5
10
  export declare const MANAGE_ACTOR_SCHEMA: {
6
11
  threat_model_id: z.ZodString;
7
12
  action: z.ZodEnum<{
@@ -1,22 +1,14 @@
1
+ /**
2
+ * zivis_manage_actor — Create, update, or delete threat actors in a threat model
3
+ *
4
+ * Maps to: POST/PATCH/DELETE /api/threat-models/:id/actors
5
+ */
1
6
  import { z } from "zod";
2
7
  import { sanitizeResponse } from "../../sanitize.js";
3
8
  export const MANAGE_ACTOR_NAME = "zivis_manage_actor";
4
9
  export const MANAGE_ACTOR_DESCRIPTION = `Create, update, or delete a threat actor in a threat model.
5
10
 
6
- When to use (plain English): call this when the user describes who interacts with or threatens the app. Common phrasings:
7
- - "users / end users / customers / our users can ..."
8
- - "admins / support team / internal employees ..."
9
- - "attacker / adversary / bad actor / malicious user ..."
10
- - "insider / rogue employee ..."
11
- - "vendor / partner / integration partner ..."
12
- - "bot / scraper / automated agent ..."
13
- - "<external service> calls our API" (the external service is an actor too)
14
-
15
- If you got here from zivis_threat_guide, the args_preview already maps actor_type and trust_level — start from those and confirm only what's unclear.
16
-
17
- Threat actors represent entities that interact with or threaten the system. Each actor has a trust level, type, and capabilities.
18
-
19
- After create: ask which components this actor interacts with so a data flow can be modeled.
11
+ Threat actors represent entities that interact with or threaten the system (e.g., external users, attackers, services). Each actor has a trust level, type, and capabilities.
20
12
 
21
13
  Actions:
22
14
  - create: Add a new threat actor (requires name, actor_type, trust_level)
@@ -104,3 +96,4 @@ export function createManageActorHandler(apiClient) {
104
96
  }
105
97
  };
106
98
  }
99
+ //# sourceMappingURL=manage-actor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage-actor.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-actor.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
+ /**
2
+ * zivis_manage_attack_scenario — Create, update, or delete attack scenarios
3
+ *
4
+ * Maps to: POST/PATCH/DELETE /api/threat-models/:id/attack-scenarios
5
+ */
1
6
  import { z } from "zod";
2
7
  import type { ApiClient } from "../../api-client.js";
3
8
  export declare const MANAGE_ATTACK_SCENARIO_NAME = "zivis_manage_attack_scenario";
4
- export declare const MANAGE_ATTACK_SCENARIO_DESCRIPTION = "Create, update, or delete an attack scenario in a threat model.\n\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)";
9
+ export declare const MANAGE_ATTACK_SCENARIO_DESCRIPTION = "Create, update, or delete an attack scenario in a threat model.\n\nAttack scenarios describe specific attack paths \u2014 how a threat actor could exploit vulnerabilities to achieve their objective. They link actors, components, and attack vectors into a cohesive narrative.\n\nActions:\n- create: Add a new scenario (requires title, narrative, entry_point_id, target_id)\n- update: Update scenario status/notes (requires scenario_id)\n- delete: Remove a scenario (requires scenario_id)";
5
10
  export declare const MANAGE_ATTACK_SCENARIO_SCHEMA: {
6
11
  threat_model_id: z.ZodString;
7
12
  action: z.ZodEnum<{
@@ -1,21 +1,14 @@
1
+ /**
2
+ * zivis_manage_attack_scenario — Create, update, or delete attack scenarios
3
+ *
4
+ * Maps to: POST/PATCH/DELETE /api/threat-models/:id/attack-scenarios
5
+ */
1
6
  import { z } from "zod";
2
7
  import { sanitizeResponse } from "../../sanitize.js";
3
8
  export const MANAGE_ATTACK_SCENARIO_NAME = "zivis_manage_attack_scenario";
4
9
  export const MANAGE_ATTACK_SCENARIO_DESCRIPTION = `Create, update, or delete an attack scenario in a threat model.
5
10
 
6
- When to use (plain English): call this when the user describes a security worry, "what if" question, or specific failure mode. Common phrasings:
7
- - "what if <bad thing happens>"
8
- - "could someone <attack action>"
9
- - "I'm worried about <X> being abused / leaked / hacked"
10
- - "how would an attacker <do X>"
11
- - "is <Y> safe from <Z>"
12
- - mentions of: prompt injection, jailbreak, data exfiltration, privilege escalation, account takeover, supply chain, abuse
13
-
14
- Before creating a scenario, the threat model needs at least one entry_point component (where the attack starts) and a target component (where the attacker wants to go). If either is missing, model components first.
15
-
16
- The narrative should be a 2–5 sentence story: who attacks, where they enter, what they exploit, what they achieve. Don't write a textbook chapter.
17
-
18
- After create: ask which test cases should validate this scenario. zivis_manage_test_case curates tests against the scenario; the platform later uses those to drive automated red-team runs.
11
+ Attack scenarios describe specific attack paths — how a threat actor could exploit vulnerabilities to achieve their objective. They link actors, components, and attack vectors into a cohesive narrative.
19
12
 
20
13
  Actions:
21
14
  - create: Add a new scenario (requires title, narrative, entry_point_id, target_id)
@@ -93,3 +86,4 @@ export function createManageAttackScenarioHandler(apiClient) {
93
86
  }
94
87
  };
95
88
  }
89
+ //# sourceMappingURL=manage-attack-scenario.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage-attack-scenario.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-attack-scenario.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
+ /**
2
+ * zivis_manage_component — Create, update, or delete components in a threat model
3
+ *
4
+ * Maps to: POST/PATCH/DELETE /api/threat-models/:id/components
5
+ */
1
6
  import { z } from "zod";
2
7
  import type { ApiClient } from "../../api-client.js";
3
8
  export declare const MANAGE_COMPONENT_NAME = "zivis_manage_component";
4
- export declare const MANAGE_COMPONENT_DESCRIPTION = "Create, update, or delete an architectural component in a threat model.\n\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)";
9
+ export declare const MANAGE_COMPONENT_DESCRIPTION = "Create, update, or delete an architectural component in a threat model.\n\nComponents represent the building blocks of the system being modeled (e.g., API Gateway, Database, Frontend App, Authentication Service).\n\nActions:\n- create: Add a new component (requires name, component_type)\n- update: Modify an existing component (requires component_id)\n- delete: Remove a component (requires component_id)";
5
10
  export declare const MANAGE_COMPONENT_SCHEMA: {
6
11
  threat_model_id: z.ZodString;
7
12
  action: z.ZodEnum<{
@@ -1,28 +1,14 @@
1
+ /**
2
+ * zivis_manage_component — Create, update, or delete components in a threat model
3
+ *
4
+ * Maps to: POST/PATCH/DELETE /api/threat-models/:id/components
5
+ */
1
6
  import { z } from "zod";
2
7
  import { sanitizeResponse } from "../../sanitize.js";
3
8
  export const MANAGE_COMPONENT_NAME = "zivis_manage_component";
4
9
  export const MANAGE_COMPONENT_DESCRIPTION = `Create, update, or delete an architectural component in a threat model.
5
10
 
6
- 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:
7
- - "we have a <X> service / our backend / the API gateway / our frontend"
8
- - "we just added <Stripe / OpenAI / Auth0 / Twilio / Datadog / S3>"
9
- - "we use <library / framework> for X"
10
- - "<service> talks to / calls / sends data to <other service>" — both endpoints are components
11
- - "we deploy on <Vercel / Lambda / k8s>" (compute platform is a component)
12
- - mentions of any external SaaS, identity provider, message queue, CDN, secrets manager
13
-
14
- Pick component_type:
15
- - entry_point — anything users hit first (login, public API, webhook receiver)
16
- - orchestrator — controllers, routers, API gateways, workflow engines
17
- - data_store — DBs, caches, blob storage
18
- - external_service — any third-party SaaS the app integrates with (Stripe, OpenAI, etc.)
19
- - identity_provider — auth systems (Auth0, Okta, WorkOS)
20
- - worker — background processors, queue consumers
21
- - secrets_manager, message_queue, cdn, proxy — when those specific terms apply
22
-
23
- If you got here from zivis_threat_guide, args_preview already maps trust + category for known vendors. Use those.
24
-
25
- After create: ask what data flows in/out of this component so data flows can be modeled.
11
+ Components represent the building blocks of the system being modeled (e.g., API Gateway, Database, Frontend App, Authentication Service).
26
12
 
27
13
  Actions:
28
14
  - create: Add a new component (requires name, component_type)
@@ -101,3 +87,4 @@ export function createManageComponentHandler(apiClient) {
101
87
  }
102
88
  };
103
89
  }
90
+ //# sourceMappingURL=manage-component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage-component.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-component.ts"],"names":[],"mappings":"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"}