@zivis/mcp 0.1.0-alpha.1

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 (253) hide show
  1. package/dist/api-client.d.ts +42 -0
  2. package/dist/api-client.js +145 -0
  3. package/dist/api-client.js.map +1 -0
  4. package/dist/auth/index.d.ts +29 -0
  5. package/dist/auth/index.js +73 -0
  6. package/dist/auth/index.js.map +1 -0
  7. package/dist/auth/jwt.d.ts +24 -0
  8. package/dist/auth/jwt.js +25 -0
  9. package/dist/auth/jwt.js.map +1 -0
  10. package/dist/auth/keychain.d.ts +34 -0
  11. package/dist/auth/keychain.js +272 -0
  12. package/dist/auth/keychain.js.map +1 -0
  13. package/dist/auth/oauth.d.ts +38 -0
  14. package/dist/auth/oauth.js +241 -0
  15. package/dist/auth/oauth.js.map +1 -0
  16. package/dist/auth/sessions.d.ts +28 -0
  17. package/dist/auth/sessions.js +69 -0
  18. package/dist/auth/sessions.js.map +1 -0
  19. package/dist/auth/token-refresh.d.ts +24 -0
  20. package/dist/auth/token-refresh.js +91 -0
  21. package/dist/auth/token-refresh.js.map +1 -0
  22. package/dist/cli.d.ts +23 -0
  23. package/dist/cli.js +962 -0
  24. package/dist/cli.js.map +1 -0
  25. package/dist/index.d.ts +8 -0
  26. package/dist/index.js +15 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/project-binding.d.ts +25 -0
  29. package/dist/project-binding.js +67 -0
  30. package/dist/project-binding.js.map +1 -0
  31. package/dist/resolve-application-id.d.ts +12 -0
  32. package/dist/resolve-application-id.js +21 -0
  33. package/dist/resolve-application-id.js.map +1 -0
  34. package/dist/sanitize.d.ts +23 -0
  35. package/dist/sanitize.js +125 -0
  36. package/dist/sanitize.js.map +1 -0
  37. package/dist/server.d.ts +14 -0
  38. package/dist/server.js +447 -0
  39. package/dist/server.js.map +1 -0
  40. package/dist/tools/check-project.d.ts +32 -0
  41. package/dist/tools/check-project.js +180 -0
  42. package/dist/tools/check-project.js.map +1 -0
  43. package/dist/tools/check-repo-trust.d.ts +33 -0
  44. package/dist/tools/check-repo-trust.js +212 -0
  45. package/dist/tools/check-repo-trust.js.map +1 -0
  46. package/dist/tools/create-diagram.d.ts +114 -0
  47. package/dist/tools/create-diagram.js +176 -0
  48. package/dist/tools/create-diagram.js.map +1 -0
  49. package/dist/tools/create-document.d.ts +28 -0
  50. package/dist/tools/create-document.js +53 -0
  51. package/dist/tools/create-document.js.map +1 -0
  52. package/dist/tools/discover-local-infra.d.ts +24 -0
  53. package/dist/tools/discover-local-infra.js +763 -0
  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 +27 -0
  68. package/dist/tools/enterprise/get-org-zat.js +62 -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 +29 -0
  74. package/dist/tools/enterprise/get-threat-model.js +83 -0
  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 +36 -0
  83. package/dist/tools/enterprise/list-threat-models.js +82 -0
  84. package/dist/tools/enterprise/list-threat-models.js.map +1 -0
  85. package/dist/tools/enterprise/manage-actor.d.ts +58 -0
  86. package/dist/tools/enterprise/manage-actor.js +99 -0
  87. package/dist/tools/enterprise/manage-actor.js.map +1 -0
  88. package/dist/tools/enterprise/manage-attack-scenario.d.ts +70 -0
  89. package/dist/tools/enterprise/manage-attack-scenario.js +89 -0
  90. package/dist/tools/enterprise/manage-attack-scenario.js.map +1 -0
  91. package/dist/tools/enterprise/manage-component.d.ts +58 -0
  92. package/dist/tools/enterprise/manage-component.js +90 -0
  93. package/dist/tools/enterprise/manage-component.js.map +1 -0
  94. package/dist/tools/enterprise/manage-data-asset.d.ts +53 -0
  95. package/dist/tools/enterprise/manage-data-asset.js +90 -0
  96. package/dist/tools/enterprise/manage-data-asset.js.map +1 -0
  97. package/dist/tools/enterprise/manage-data-flow.d.ts +57 -0
  98. package/dist/tools/enterprise/manage-data-flow.js +98 -0
  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 +59 -0
  104. package/dist/tools/enterprise/manage-security-control.js +96 -0
  105. package/dist/tools/enterprise/manage-security-control.js.map +1 -0
  106. package/dist/tools/enterprise/manage-test-case.d.ts +88 -0
  107. package/dist/tools/enterprise/manage-test-case.js +119 -0
  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 +36 -0
  131. package/dist/tools/generate-diagram.js +153 -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 +27 -0
  137. package/dist/tools/get-application-overview.js +143 -0
  138. package/dist/tools/get-application-overview.js.map +1 -0
  139. package/dist/tools/get-application.d.ts +27 -0
  140. package/dist/tools/get-application.js +83 -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 +27 -0
  146. package/dist/tools/get-diagram.js +109 -0
  147. package/dist/tools/get-diagram.js.map +1 -0
  148. package/dist/tools/get-document.d.ts +22 -0
  149. package/dist/tools/get-document.js +43 -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 +27 -0
  158. package/dist/tools/get-oss-zat.js +105 -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 +22 -0
  176. package/dist/tools/get-trust-keys.js +67 -0
  177. package/dist/tools/get-trust-keys.js.map +1 -0
  178. package/dist/tools/import-openapi-endpoints.d.ts +33 -0
  179. package/dist/tools/import-openapi-endpoints.js +93 -0
  180. package/dist/tools/import-openapi-endpoints.js.map +1 -0
  181. package/dist/tools/inspect-zat.d.ts +26 -0
  182. package/dist/tools/inspect-zat.js +247 -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 +34 -0
  188. package/dist/tools/list-applications.js +74 -0
  189. package/dist/tools/list-applications.js.map +1 -0
  190. package/dist/tools/list-diagrams.d.ts +42 -0
  191. package/dist/tools/list-diagrams.js +81 -0
  192. package/dist/tools/list-diagrams.js.map +1 -0
  193. package/dist/tools/list-documents.d.ts +24 -0
  194. package/dist/tools/list-documents.js +50 -0
  195. package/dist/tools/list-documents.js.map +1 -0
  196. package/dist/tools/list-endpoints.d.ts +47 -0
  197. package/dist/tools/list-endpoints.js +98 -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 +109 -0
  218. package/dist/tools/manage-diagram.js +316 -0
  219. package/dist/tools/manage-diagram.js.map +1 -0
  220. package/dist/tools/open-in-ide.d.ts +39 -0
  221. package/dist/tools/open-in-ide.js +61 -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 +65 -0
  230. package/dist/tools/security-review.js +378 -0
  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 +28 -0
  239. package/dist/tools/update-document.js +63 -0
  240. package/dist/tools/update-document.js.map +1 -0
  241. package/dist/tools/update-endpoint.d.ts +65 -0
  242. package/dist/tools/update-endpoint.js +145 -0
  243. package/dist/tools/update-endpoint.js.map +1 -0
  244. package/dist/tools/update-mermaid-source.d.ts +34 -0
  245. package/dist/tools/update-mermaid-source.js +76 -0
  246. package/dist/tools/update-mermaid-source.js.map +1 -0
  247. package/dist/tools/verify-trust-mark.d.ts +29 -0
  248. package/dist/tools/verify-trust-mark.js +108 -0
  249. package/dist/tools/verify-trust-mark.js.map +1 -0
  250. package/dist/types.d.ts +220 -0
  251. package/dist/types.js +33 -0
  252. package/dist/types.js.map +1 -0
  253. package/package.json +50 -0
@@ -0,0 +1,99 @@
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
+ */
6
+ import { z } from "zod";
7
+ import { sanitizeResponse } from "../../sanitize.js";
8
+ export const MANAGE_ACTOR_NAME = "zivis_manage_actor";
9
+ export const MANAGE_ACTOR_DESCRIPTION = `Create, update, or delete a threat actor in a threat model.
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.
12
+
13
+ Actions:
14
+ - create: Add a new threat actor (requires name, actor_type, trust_level)
15
+ - update: Modify an existing actor (requires actor_id)
16
+ - delete: Remove an actor (requires actor_id)`;
17
+ export const MANAGE_ACTOR_SCHEMA = {
18
+ threat_model_id: z.string().describe("Threat model UUID (from zivis_list_threat_models, NOT a scan ID or agent ID)"),
19
+ action: z.enum(["create", "update", "delete"]).describe("CRUD action to perform"),
20
+ actor_id: z.string().optional().describe("Actor UUID (required for update/delete)"),
21
+ name: z.string().optional().describe("Actor name (e.g., 'External Attacker', 'API Consumer')"),
22
+ actor_type: z
23
+ .enum(["external", "internal", "system", "third_party"])
24
+ .optional()
25
+ .describe("Type of threat actor"),
26
+ trust_level: z
27
+ .enum(["untrusted", "low", "medium", "high", "privileged"])
28
+ .optional()
29
+ .describe("Trust level assigned to this actor"),
30
+ description: z.string().optional().describe("Description of the actor's role and intent"),
31
+ motivation: z.string().optional().describe("Actor's motivation (e.g., financial gain, espionage)"),
32
+ capabilities: z.array(z.string()).optional().describe("Actor capabilities (e.g., ['network_access', 'social_engineering'])"),
33
+ };
34
+ export function createManageActorHandler(apiClient) {
35
+ return async (params) => {
36
+ try {
37
+ const { threat_model_id, action, actor_id } = params;
38
+ if ((action === "update" || action === "delete") && !actor_id) {
39
+ return {
40
+ content: [{ type: "text", text: "Error: actor_id is required for update/delete" }],
41
+ isError: true,
42
+ };
43
+ }
44
+ let data;
45
+ if (action === "create") {
46
+ if (!params.name || !params.actor_type || !params.trust_level) {
47
+ return {
48
+ content: [{ type: "text", text: "Error: name, actor_type, and trust_level are required for create" }],
49
+ isError: true,
50
+ };
51
+ }
52
+ data = await apiClient.post(`/api/threat-models/${threat_model_id}/actors`, {
53
+ name: params.name,
54
+ actorType: params.actor_type,
55
+ trustLevel: params.trust_level,
56
+ description: params.description,
57
+ motivation: params.motivation,
58
+ capabilities: params.capabilities,
59
+ });
60
+ }
61
+ else if (action === "update") {
62
+ const body = {};
63
+ if (params.name)
64
+ body.name = params.name;
65
+ if (params.actor_type)
66
+ body.actorType = params.actor_type;
67
+ if (params.trust_level)
68
+ body.trustLevel = params.trust_level;
69
+ if (params.description !== undefined)
70
+ body.description = params.description;
71
+ if (params.motivation !== undefined)
72
+ body.motivation = params.motivation;
73
+ if (params.capabilities)
74
+ body.capabilities = params.capabilities;
75
+ data = await apiClient.patch(`/api/threat-models/${threat_model_id}/actors/${actor_id}`, body);
76
+ }
77
+ else {
78
+ data = await apiClient.del(`/api/threat-models/${threat_model_id}/actors/${actor_id}`);
79
+ }
80
+ const sanitized = sanitizeResponse(data);
81
+ return {
82
+ content: [
83
+ {
84
+ type: "text",
85
+ text: JSON.stringify(sanitized, null, 2),
86
+ },
87
+ ],
88
+ };
89
+ }
90
+ catch (err) {
91
+ const message = err instanceof Error ? err.message : "Failed to manage actor";
92
+ return {
93
+ content: [{ type: "text", text: `Error: ${message}` }],
94
+ isError: true,
95
+ };
96
+ }
97
+ };
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAEtD,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;8CAOM,CAAC;AAE/C,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,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,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACnF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IAC9F,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;SACvD,QAAQ,EAAE;SACV,QAAQ,CAAC,sBAAsB,CAAC;IACnC,WAAW,EAAE,CAAC;SACX,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;SAC1D,QAAQ,EAAE;SACV,QAAQ,CAAC,oCAAoC,CAAC;IACjD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACzF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAClG,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;CAC7H,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,SAAoB;IAC3D,OAAO,KAAK,EAAE,MAUb,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;YAErD,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9D,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,+CAA+C,EAAE,CAAC;oBAC3F,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,IAAI,IAA6B,CAAC;YAElC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBAC9D,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kEAAkE,EAAE,CAAC;wBAC9G,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CACzB,sBAAsB,eAAe,SAAS,EAC9C;oBACE,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,SAAS,EAAE,MAAM,CAAC,UAAU;oBAC5B,UAAU,EAAE,MAAM,CAAC,WAAW;oBAC9B,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;iBAClC,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAA4B,EAAE,CAAC;gBACzC,IAAI,MAAM,CAAC,IAAI;oBAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gBACzC,IAAI,MAAM,CAAC,UAAU;oBAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;gBAC1D,IAAI,MAAM,CAAC,WAAW;oBAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;gBAC7D,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;oBAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;gBAC5E,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;oBAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gBACzE,IAAI,MAAM,CAAC,YAAY;oBAAE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;gBAEjE,IAAI,GAAG,MAAM,SAAS,CAAC,KAAK,CAC1B,sBAAsB,eAAe,WAAW,QAAQ,EAAE,EAC1D,IAAI,CACL,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CACxB,sBAAsB,eAAe,WAAW,QAAQ,EAAE,CAC3D,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;qBACzC;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,wBAAwB,CAAC;YAC9E,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,70 @@
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
+ */
6
+ import { z } from "zod";
7
+ import type { ApiClient } from "../../api-client.js";
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)";
10
+ export declare const MANAGE_ATTACK_SCENARIO_SCHEMA: {
11
+ threat_model_id: z.ZodString;
12
+ action: z.ZodEnum<{
13
+ create: "create";
14
+ update: "update";
15
+ delete: "delete";
16
+ }>;
17
+ scenario_id: z.ZodOptional<z.ZodString>;
18
+ title: z.ZodOptional<z.ZodString>;
19
+ narrative: z.ZodOptional<z.ZodString>;
20
+ entry_point_id: z.ZodOptional<z.ZodString>;
21
+ target_id: z.ZodOptional<z.ZodString>;
22
+ severity: z.ZodOptional<z.ZodEnum<{
23
+ critical: "critical";
24
+ high: "high";
25
+ medium: "medium";
26
+ low: "low";
27
+ info: "info";
28
+ }>>;
29
+ likelihood: z.ZodOptional<z.ZodEnum<{
30
+ almost_certain: "almost_certain";
31
+ likely: "likely";
32
+ possible: "possible";
33
+ unlikely: "unlikely";
34
+ }>>;
35
+ actor_id: z.ZodOptional<z.ZodString>;
36
+ goal_category: z.ZodOptional<z.ZodString>;
37
+ goal_description: z.ZodOptional<z.ZodString>;
38
+ business_impact: z.ZodOptional<z.ZodString>;
39
+ status: z.ZodOptional<z.ZodString>;
40
+ user_notes: z.ZodOptional<z.ZodString>;
41
+ };
42
+ export declare function createManageAttackScenarioHandler(apiClient: ApiClient): (params: {
43
+ threat_model_id: string;
44
+ action: "create" | "update" | "delete";
45
+ scenario_id?: string;
46
+ title?: string;
47
+ narrative?: string;
48
+ entry_point_id?: string;
49
+ target_id?: string;
50
+ severity?: string;
51
+ likelihood?: string;
52
+ actor_id?: string;
53
+ goal_category?: string;
54
+ goal_description?: string;
55
+ business_impact?: string;
56
+ status?: string;
57
+ user_notes?: string;
58
+ }) => Promise<{
59
+ content: {
60
+ type: "text";
61
+ text: string;
62
+ }[];
63
+ isError: boolean;
64
+ } | {
65
+ content: {
66
+ type: "text";
67
+ text: string;
68
+ }[];
69
+ isError?: undefined;
70
+ }>;
@@ -0,0 +1,89 @@
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
+ */
6
+ import { z } from "zod";
7
+ import { sanitizeResponse } from "../../sanitize.js";
8
+ export const MANAGE_ATTACK_SCENARIO_NAME = "zivis_manage_attack_scenario";
9
+ export const MANAGE_ATTACK_SCENARIO_DESCRIPTION = `Create, update, or delete an attack scenario in a threat model.
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.
12
+
13
+ Actions:
14
+ - create: Add a new scenario (requires title, narrative, entry_point_id, target_id)
15
+ - update: Update scenario status/notes (requires scenario_id)
16
+ - delete: Remove a scenario (requires scenario_id)`;
17
+ export const MANAGE_ATTACK_SCENARIO_SCHEMA = {
18
+ threat_model_id: z.string().describe("Threat model UUID (from zivis_list_threat_models, NOT a scan ID or agent ID)"),
19
+ action: z.enum(["create", "update", "delete"]).describe("CRUD action to perform"),
20
+ scenario_id: z.string().optional().describe("Scenario UUID (required for update/delete)"),
21
+ title: z.string().optional().describe("Scenario title (e.g., 'Privilege Escalation via API') — required for create"),
22
+ narrative: z.string().optional().describe("Detailed narrative of the attack path (markdown supported) — required for create"),
23
+ entry_point_id: z.string().optional().describe("Entry point component UUID — required for create"),
24
+ target_id: z.string().optional().describe("Target component UUID — required for create"),
25
+ severity: z.enum(["critical", "high", "medium", "low", "info"]).optional().describe("Severity of this scenario (for create)"),
26
+ likelihood: z.enum(["almost_certain", "likely", "possible", "unlikely"]).optional().describe("Likelihood of this scenario being exploited (for create)"),
27
+ actor_id: z.string().optional().describe("Threat actor UUID who would execute this scenario (for create)"),
28
+ goal_category: z.string().optional().describe("Terminal goal category (for create)"),
29
+ goal_description: z.string().optional().describe("Description of the attacker's goal (for create)"),
30
+ business_impact: z.string().optional().describe("Business impact if the attack succeeds (for create)"),
31
+ status: z.string().optional().describe("Scenario status (for update)"),
32
+ user_notes: z.string().optional().describe("Review notes (for update)"),
33
+ };
34
+ export function createManageAttackScenarioHandler(apiClient) {
35
+ return async (params) => {
36
+ try {
37
+ const { threat_model_id, action, scenario_id } = params;
38
+ if ((action === "update" || action === "delete") && !scenario_id) {
39
+ return {
40
+ content: [{ type: "text", text: "Error: scenario_id is required for update/delete" }],
41
+ isError: true,
42
+ };
43
+ }
44
+ let data;
45
+ if (action === "create") {
46
+ if (!params.title || !params.narrative || !params.entry_point_id || !params.target_id) {
47
+ return {
48
+ content: [{ type: "text", text: "Error: title, narrative, entry_point_id, and target_id are required for create" }],
49
+ isError: true,
50
+ };
51
+ }
52
+ data = await apiClient.post(`/api/threat-models/${threat_model_id}/attack-scenarios`, {
53
+ title: params.title,
54
+ narrative: params.narrative,
55
+ entryPointId: params.entry_point_id,
56
+ targetId: params.target_id,
57
+ severity: params.severity,
58
+ likelihood: params.likelihood,
59
+ actorId: params.actor_id,
60
+ goalCategory: params.goal_category,
61
+ goalDescription: params.goal_description,
62
+ businessImpact: params.business_impact,
63
+ });
64
+ }
65
+ else if (action === "update") {
66
+ const body = {};
67
+ if (params.status !== undefined)
68
+ body.status = params.status;
69
+ if (params.user_notes !== undefined)
70
+ body.userNotes = params.user_notes;
71
+ data = await apiClient.patch(`/api/threat-models/${threat_model_id}/attack-scenarios/${scenario_id}`, body);
72
+ }
73
+ else {
74
+ data = await apiClient.del(`/api/threat-models/${threat_model_id}/attack-scenarios/${scenario_id}`);
75
+ }
76
+ return {
77
+ content: [{ type: "text", text: JSON.stringify(sanitizeResponse(data), null, 2) }],
78
+ };
79
+ }
80
+ catch (err) {
81
+ const message = err instanceof Error ? err.message : "Failed to manage attack scenario";
82
+ return {
83
+ content: [{ type: "text", text: `Error: ${message}` }],
84
+ isError: true,
85
+ };
86
+ }
87
+ };
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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"}
@@ -0,0 +1,58 @@
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
+ */
6
+ import { z } from "zod";
7
+ import type { ApiClient } from "../../api-client.js";
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)";
10
+ export declare const MANAGE_COMPONENT_SCHEMA: {
11
+ threat_model_id: z.ZodString;
12
+ action: z.ZodEnum<{
13
+ create: "create";
14
+ update: "update";
15
+ delete: "delete";
16
+ }>;
17
+ component_id: z.ZodOptional<z.ZodString>;
18
+ name: z.ZodOptional<z.ZodString>;
19
+ component_type: z.ZodOptional<z.ZodEnum<{
20
+ trust_boundary: "trust_boundary";
21
+ entry_point: "entry_point";
22
+ orchestrator: "orchestrator";
23
+ compute_sandbox: "compute_sandbox";
24
+ worker: "worker";
25
+ data_store: "data_store";
26
+ proxy: "proxy";
27
+ external_service: "external_service";
28
+ identity_provider: "identity_provider";
29
+ secrets_manager: "secrets_manager";
30
+ }>>;
31
+ description: z.ZodOptional<z.ZodString>;
32
+ technology: z.ZodOptional<z.ZodString>;
33
+ is_external: z.ZodOptional<z.ZodBoolean>;
34
+ trust_boundary: z.ZodOptional<z.ZodString>;
35
+ };
36
+ export declare function createManageComponentHandler(apiClient: ApiClient): (params: {
37
+ threat_model_id: string;
38
+ action: "create" | "update" | "delete";
39
+ component_id?: string;
40
+ name?: string;
41
+ component_type?: string;
42
+ description?: string;
43
+ technology?: string;
44
+ is_external?: boolean;
45
+ trust_boundary?: string;
46
+ }) => Promise<{
47
+ content: {
48
+ type: "text";
49
+ text: string;
50
+ }[];
51
+ isError: boolean;
52
+ } | {
53
+ content: {
54
+ type: "text";
55
+ text: string;
56
+ }[];
57
+ isError?: undefined;
58
+ }>;
@@ -0,0 +1,90 @@
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
+ */
6
+ import { z } from "zod";
7
+ import { sanitizeResponse } from "../../sanitize.js";
8
+ export const MANAGE_COMPONENT_NAME = "zivis_manage_component";
9
+ export const MANAGE_COMPONENT_DESCRIPTION = `Create, update, or delete an architectural component in a threat model.
10
+
11
+ Components represent the building blocks of the system being modeled (e.g., API Gateway, Database, Frontend App, Authentication Service).
12
+
13
+ Actions:
14
+ - create: Add a new component (requires name, component_type)
15
+ - update: Modify an existing component (requires component_id)
16
+ - delete: Remove a component (requires component_id)`;
17
+ export const MANAGE_COMPONENT_SCHEMA = {
18
+ threat_model_id: z.string().describe("Threat model UUID (from zivis_list_threat_models, NOT a scan ID or agent ID)"),
19
+ action: z.enum(["create", "update", "delete"]).describe("CRUD action to perform"),
20
+ component_id: z.string().optional().describe("Component UUID (required for update/delete)"),
21
+ name: z.string().optional().describe("Component name (e.g., 'API Gateway', 'User Database')"),
22
+ component_type: z
23
+ .enum(["entry_point", "orchestrator", "compute_sandbox", "worker", "data_store", "proxy", "external_service", "trust_boundary", "identity_provider", "secrets_manager"])
24
+ .optional()
25
+ .describe("Type of component"),
26
+ description: z.string().optional().describe("Description of the component's purpose"),
27
+ technology: z.string().optional().describe("Technology stack (e.g., 'Express.js', 'PostgreSQL')"),
28
+ is_external: z.boolean().optional().describe("Whether this component is external to the system boundary"),
29
+ trust_boundary: z.string().optional().describe("Trust boundary this component belongs to"),
30
+ };
31
+ export function createManageComponentHandler(apiClient) {
32
+ return async (params) => {
33
+ try {
34
+ const { threat_model_id, action, component_id } = params;
35
+ if ((action === "update" || action === "delete") && !component_id) {
36
+ return {
37
+ content: [{ type: "text", text: "Error: component_id is required for update/delete" }],
38
+ isError: true,
39
+ };
40
+ }
41
+ let data;
42
+ if (action === "create") {
43
+ if (!params.name || !params.component_type) {
44
+ return {
45
+ content: [{ type: "text", text: "Error: name and component_type are required for create" }],
46
+ isError: true,
47
+ };
48
+ }
49
+ data = await apiClient.post(`/api/threat-models/${threat_model_id}/components`, {
50
+ name: params.name,
51
+ componentType: params.component_type,
52
+ description: params.description,
53
+ technology: params.technology,
54
+ isExternal: params.is_external,
55
+ trustBoundary: params.trust_boundary,
56
+ });
57
+ }
58
+ else if (action === "update") {
59
+ const body = {};
60
+ if (params.name)
61
+ body.name = params.name;
62
+ if (params.component_type)
63
+ body.componentType = params.component_type;
64
+ if (params.description !== undefined)
65
+ body.description = params.description;
66
+ if (params.technology !== undefined)
67
+ body.technology = params.technology;
68
+ if (params.is_external !== undefined)
69
+ body.isExternal = params.is_external;
70
+ if (params.trust_boundary !== undefined)
71
+ body.trustBoundary = params.trust_boundary;
72
+ data = await apiClient.patch(`/api/threat-models/${threat_model_id}/components/${component_id}`, body);
73
+ }
74
+ else {
75
+ data = await apiClient.del(`/api/threat-models/${threat_model_id}/components/${component_id}`);
76
+ }
77
+ return {
78
+ content: [{ type: "text", text: JSON.stringify(sanitizeResponse(data), null, 2) }],
79
+ };
80
+ }
81
+ catch (err) {
82
+ const message = err instanceof Error ? err.message : "Failed to manage component";
83
+ return {
84
+ content: [{ type: "text", text: `Error: ${message}` }],
85
+ isError: true,
86
+ };
87
+ }
88
+ };
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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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * zivis_manage_data_asset — Create, update, or delete data assets
3
+ *
4
+ * Maps to: POST/PATCH/DELETE /api/threat-models/:id/data-assets
5
+ */
6
+ import { z } from "zod";
7
+ import type { ApiClient } from "../../api-client.js";
8
+ export declare const MANAGE_DATA_ASSET_NAME = "zivis_manage_data_asset";
9
+ export declare const MANAGE_DATA_ASSET_DESCRIPTION = "Create, update, or delete a data asset in a threat model.\n\nData assets represent sensitive data that needs protection (e.g., user PII, API keys, session tokens, financial records).\n\nActions:\n- create: Add a new data asset (requires name, classification)\n- update: Modify an existing data asset (requires asset_id)\n- delete: Remove a data asset (requires asset_id)";
10
+ export declare const MANAGE_DATA_ASSET_SCHEMA: {
11
+ threat_model_id: z.ZodString;
12
+ action: z.ZodEnum<{
13
+ create: "create";
14
+ update: "update";
15
+ delete: "delete";
16
+ }>;
17
+ asset_id: z.ZodOptional<z.ZodString>;
18
+ name: z.ZodOptional<z.ZodString>;
19
+ classification: z.ZodOptional<z.ZodEnum<{
20
+ critical: "critical";
21
+ internal: "internal";
22
+ public: "public";
23
+ confidential: "confidential";
24
+ restricted: "restricted";
25
+ }>>;
26
+ description: z.ZodOptional<z.ZodString>;
27
+ data_type: z.ZodOptional<z.ZodString>;
28
+ storage_location: z.ZodOptional<z.ZodString>;
29
+ retention_policy: z.ZodOptional<z.ZodString>;
30
+ };
31
+ export declare function createManageDataAssetHandler(apiClient: ApiClient): (params: {
32
+ threat_model_id: string;
33
+ action: "create" | "update" | "delete";
34
+ asset_id?: string;
35
+ name?: string;
36
+ classification?: string;
37
+ description?: string;
38
+ data_type?: string;
39
+ storage_location?: string;
40
+ retention_policy?: string;
41
+ }) => Promise<{
42
+ content: {
43
+ type: "text";
44
+ text: string;
45
+ }[];
46
+ isError: boolean;
47
+ } | {
48
+ content: {
49
+ type: "text";
50
+ text: string;
51
+ }[];
52
+ isError?: undefined;
53
+ }>;
@@ -0,0 +1,90 @@
1
+ /**
2
+ * zivis_manage_data_asset — Create, update, or delete data assets
3
+ *
4
+ * Maps to: POST/PATCH/DELETE /api/threat-models/:id/data-assets
5
+ */
6
+ import { z } from "zod";
7
+ import { sanitizeResponse } from "../../sanitize.js";
8
+ export const MANAGE_DATA_ASSET_NAME = "zivis_manage_data_asset";
9
+ export const MANAGE_DATA_ASSET_DESCRIPTION = `Create, update, or delete a data asset in a threat model.
10
+
11
+ Data assets represent sensitive data that needs protection (e.g., user PII, API keys, session tokens, financial records).
12
+
13
+ Actions:
14
+ - create: Add a new data asset (requires name, classification)
15
+ - update: Modify an existing data asset (requires asset_id)
16
+ - delete: Remove a data asset (requires asset_id)`;
17
+ export const MANAGE_DATA_ASSET_SCHEMA = {
18
+ threat_model_id: z.string().describe("Threat model UUID (from zivis_list_threat_models, NOT a scan ID or agent ID)"),
19
+ action: z.enum(["create", "update", "delete"]).describe("CRUD action to perform"),
20
+ asset_id: z.string().optional().describe("Asset UUID (required for update/delete)"),
21
+ name: z.string().optional().describe("Asset name (e.g., 'User PII', 'API Keys')"),
22
+ classification: z
23
+ .enum(["public", "internal", "confidential", "restricted", "critical"])
24
+ .optional()
25
+ .describe("Data classification level"),
26
+ description: z.string().optional().describe("Description of the data asset"),
27
+ data_type: z.string().optional().describe("Type of data (e.g., 'credentials', 'pii', 'financial')"),
28
+ storage_location: z.string().optional().describe("Where this data is stored"),
29
+ retention_policy: z.string().optional().describe("Data retention policy"),
30
+ };
31
+ export function createManageDataAssetHandler(apiClient) {
32
+ return async (params) => {
33
+ try {
34
+ const { threat_model_id, action, asset_id } = params;
35
+ if ((action === "update" || action === "delete") && !asset_id) {
36
+ return {
37
+ content: [{ type: "text", text: "Error: asset_id is required for update/delete" }],
38
+ isError: true,
39
+ };
40
+ }
41
+ let data;
42
+ if (action === "create") {
43
+ if (!params.name || !params.classification) {
44
+ return {
45
+ content: [{ type: "text", text: "Error: name and classification are required for create" }],
46
+ isError: true,
47
+ };
48
+ }
49
+ data = await apiClient.post(`/api/threat-models/${threat_model_id}/data-assets`, {
50
+ name: params.name,
51
+ classification: params.classification,
52
+ description: params.description,
53
+ dataType: params.data_type,
54
+ storageLocation: params.storage_location,
55
+ retentionPolicy: params.retention_policy,
56
+ });
57
+ }
58
+ else if (action === "update") {
59
+ const body = {};
60
+ if (params.name)
61
+ body.name = params.name;
62
+ if (params.classification)
63
+ body.classification = params.classification;
64
+ if (params.description !== undefined)
65
+ body.description = params.description;
66
+ if (params.data_type)
67
+ body.dataType = params.data_type;
68
+ if (params.storage_location !== undefined)
69
+ body.storageLocation = params.storage_location;
70
+ if (params.retention_policy !== undefined)
71
+ body.retentionPolicy = params.retention_policy;
72
+ data = await apiClient.patch(`/api/threat-models/${threat_model_id}/data-assets/${asset_id}`, body);
73
+ }
74
+ else {
75
+ data = await apiClient.del(`/api/threat-models/${threat_model_id}/data-assets/${asset_id}`);
76
+ }
77
+ return {
78
+ content: [{ type: "text", text: JSON.stringify(sanitizeResponse(data), null, 2) }],
79
+ };
80
+ }
81
+ catch (err) {
82
+ const message = err instanceof Error ? err.message : "Failed to manage data asset";
83
+ return {
84
+ content: [{ type: "text", text: `Error: ${message}` }],
85
+ isError: true,
86
+ };
87
+ }
88
+ };
89
+ }
90
+ //# sourceMappingURL=manage-data-asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage-data-asset.js","sourceRoot":"","sources":["../../../src/tools/enterprise/manage-data-asset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * zivis_manage_data_flow — Create, update, or delete data flows in a threat model
3
+ *
4
+ * Maps to: POST/PATCH/DELETE /api/threat-models/:id/data-flows
5
+ */
6
+ import { z } from "zod";
7
+ import type { ApiClient } from "../../api-client.js";
8
+ export declare const MANAGE_DATA_FLOW_NAME = "zivis_manage_data_flow";
9
+ export declare const MANAGE_DATA_FLOW_DESCRIPTION = "Create, update, or delete a data flow between components in a threat model.\n\nData flows represent the movement of data between components. They are critical for identifying where data crosses trust boundaries and where threats may exist.\n\nActions:\n- create: Add a new data flow (requires name, source_component_id, target_component_id)\n- update: Modify an existing data flow (requires flow_id)\n- delete: Remove a data flow (requires flow_id)";
10
+ export declare const MANAGE_DATA_FLOW_SCHEMA: {
11
+ threat_model_id: z.ZodString;
12
+ action: z.ZodEnum<{
13
+ create: "create";
14
+ update: "update";
15
+ delete: "delete";
16
+ }>;
17
+ flow_id: z.ZodOptional<z.ZodString>;
18
+ name: z.ZodOptional<z.ZodString>;
19
+ source_component_id: z.ZodOptional<z.ZodString>;
20
+ target_component_id: z.ZodOptional<z.ZodString>;
21
+ description: z.ZodOptional<z.ZodString>;
22
+ protocol: z.ZodOptional<z.ZodString>;
23
+ data_classification: z.ZodOptional<z.ZodEnum<{
24
+ critical: "critical";
25
+ internal: "internal";
26
+ public: "public";
27
+ confidential: "confidential";
28
+ restricted: "restricted";
29
+ }>>;
30
+ is_encrypted: z.ZodOptional<z.ZodBoolean>;
31
+ crosses_trust_boundary: z.ZodOptional<z.ZodBoolean>;
32
+ };
33
+ export declare function createManageDataFlowHandler(apiClient: ApiClient): (params: {
34
+ threat_model_id: string;
35
+ action: "create" | "update" | "delete";
36
+ flow_id?: string;
37
+ name?: string;
38
+ source_component_id?: string;
39
+ target_component_id?: string;
40
+ description?: string;
41
+ protocol?: string;
42
+ data_classification?: string;
43
+ is_encrypted?: boolean;
44
+ crosses_trust_boundary?: boolean;
45
+ }) => Promise<{
46
+ content: {
47
+ type: "text";
48
+ text: string;
49
+ }[];
50
+ isError: boolean;
51
+ } | {
52
+ content: {
53
+ type: "text";
54
+ text: string;
55
+ }[];
56
+ isError?: undefined;
57
+ }>;