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

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