nat-engine 1__tar.gz

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 (864) hide show
  1. nat_engine-1/.dockerignore +44 -0
  2. nat_engine-1/.env.example +258 -0
  3. nat_engine-1/.github/CLA.md +114 -0
  4. nat_engine-1/.github/workflows/action-release.yml +175 -0
  5. nat_engine-1/.github/workflows/canary-promote.yml +337 -0
  6. nat_engine-1/.github/workflows/cla.yml +43 -0
  7. nat_engine-1/.github/workflows/deploy-azure.yml +286 -0
  8. nat_engine-1/.github/workflows/deploy-staging.yml +334 -0
  9. nat_engine-1/.github/workflows/deploy-website.yml +42 -0
  10. nat_engine-1/.github/workflows/docker-publish.yml +104 -0
  11. nat_engine-1/.github/workflows/e2e-regression.yml +184 -0
  12. nat_engine-1/.github/workflows/post-release.yml +332 -0
  13. nat_engine-1/.github/workflows/pre-release-check.yml +185 -0
  14. nat_engine-1/.github/workflows/release.yml +272 -0
  15. nat_engine-1/.github/workflows/smoke-tests.yml +154 -0
  16. nat_engine-1/.gitignore +26 -0
  17. nat_engine-1/CHANGELOG.md +214 -0
  18. nat_engine-1/CLA.md +114 -0
  19. nat_engine-1/CLA_SIGNATORIES.md +12 -0
  20. nat_engine-1/COMMERCIAL_LICENSE.md +76 -0
  21. nat_engine-1/CONTRIBUTING.md +60 -0
  22. nat_engine-1/Dockerfile +80 -0
  23. nat_engine-1/Dockerfile.demo +82 -0
  24. nat_engine-1/InitialResearch.md +420 -0
  25. nat_engine-1/LICENSE +651 -0
  26. nat_engine-1/MANIFEST.in +42 -0
  27. nat_engine-1/Makefile +74 -0
  28. nat_engine-1/NOTICE +178 -0
  29. nat_engine-1/PKG-INFO +555 -0
  30. nat_engine-1/Pre-Release-Notes +130 -0
  31. nat_engine-1/README.md +487 -0
  32. nat_engine-1/RELEASE_NOTES.md +33 -0
  33. nat_engine-1/SECURITY.md +126 -0
  34. nat_engine-1/action/Dockerfile +36 -0
  35. nat_engine-1/action/README.md +246 -0
  36. nat_engine-1/action/entrypoint.sh +135 -0
  37. nat_engine-1/action/parse_results.py +659 -0
  38. nat_engine-1/action.yml +227 -0
  39. nat_engine-1/alembic/env.py +86 -0
  40. nat_engine-1/alembic/versions/001_initial.py +83 -0
  41. nat_engine-1/alembic/versions/002_tenants_billing.py +102 -0
  42. nat_engine-1/alembic/versions/003_tenant_scoped_scans.py +73 -0
  43. nat_engine-1/alembic/versions/004_billing_events_concurrency.py +71 -0
  44. nat_engine-1/alembic/versions/005_tenant_notification_webhooks.py +48 -0
  45. nat_engine-1/alembic/versions/006_autonomous_runs.py +88 -0
  46. nat_engine-1/alembic/versions/007_dismissed_findings.py +64 -0
  47. nat_engine-1/alembic/versions/008_team_collaboration.py +164 -0
  48. nat_engine-1/alembic.ini +48 -0
  49. nat_engine-1/branding/README.md +191 -0
  50. nat_engine-1/branding/nat-logo-animated.svg +48 -0
  51. nat_engine-1/branding/nat-logo-mono.svg +13 -0
  52. nat_engine-1/branding/nat-logo.svg +18 -0
  53. nat_engine-1/branding/nat-logotype.svg +21 -0
  54. nat_engine-1/branding/og-image.svg +24 -0
  55. nat_engine-1/ci-templates/azure/README.md +179 -0
  56. nat_engine-1/ci-templates/azure/azure-pipelines-nat.yml +226 -0
  57. nat_engine-1/ci-templates/gitlab/.gitlab-ci-nat.yml +152 -0
  58. nat_engine-1/ci-templates/gitlab/README.md +143 -0
  59. nat_engine-1/ci-templates/jenkins/Jenkinsfile.example +61 -0
  60. nat_engine-1/ci-templates/jenkins/README.md +201 -0
  61. nat_engine-1/ci-templates/jenkins/vars/natScan.groovy +183 -0
  62. nat_engine-1/cicd/README.md +137 -0
  63. nat_engine-1/cicd/azure-devops/README.md +145 -0
  64. nat_engine-1/cicd/azure-devops/nat-scan.ps1 +172 -0
  65. nat_engine-1/cicd/azure-devops/task.json +131 -0
  66. nat_engine-1/cicd/examples/github-actions-example.yml +103 -0
  67. nat_engine-1/cicd/github-action/README.md +146 -0
  68. nat_engine-1/cicd/github-action/action.yml +105 -0
  69. nat_engine-1/cicd/github-action/entrypoint.sh +345 -0
  70. nat_engine-1/cicd/jenkins/README.md +175 -0
  71. nat_engine-1/cicd/jenkins/vars/natScan.groovy +198 -0
  72. nat_engine-1/demo.tape +34 -0
  73. nat_engine-1/deploy/azure/OIDC_SETUP.md +263 -0
  74. nat_engine-1/deploy/azure/README.md +1062 -0
  75. nat_engine-1/deploy/azure/SECRETS.md +100 -0
  76. nat_engine-1/deploy/azure/TROUBLESHOOTING.md +365 -0
  77. nat_engine-1/deploy/azure/container-app.yaml +135 -0
  78. nat_engine-1/deploy/azure/custom-domain.sh +184 -0
  79. nat_engine-1/deploy/azure/run-migrations.sh +36 -0
  80. nat_engine-1/deploy/azure/setup-db.sh +130 -0
  81. nat_engine-1/deploy/azure/setup.sh +258 -0
  82. nat_engine-1/deploy/azure/staging/container-app-staging.yaml +132 -0
  83. nat_engine-1/deploy/azure/staging/setup-staging.sh +263 -0
  84. nat_engine-1/deploy/azure/verify-domain.sh +241 -0
  85. nat_engine-1/deploy/azure/verify-oidc.sh +228 -0
  86. nat_engine-1/deploy/k8s/README.md +206 -0
  87. nat_engine-1/deploy/k8s/configmap.yaml +17 -0
  88. nat_engine-1/deploy/k8s/deployment.yaml +84 -0
  89. nat_engine-1/deploy/k8s/service.yaml +22 -0
  90. nat_engine-1/docker-compose.demo.yml +33 -0
  91. nat_engine-1/docker-compose.dev.yml +45 -0
  92. nat_engine-1/docker-compose.prod.yml +58 -0
  93. nat_engine-1/docker-compose.yml +72 -0
  94. nat_engine-1/docs/README.md +119 -0
  95. nat_engine-1/docs/api-reference/github-action.md +294 -0
  96. nat_engine-1/docs/api-reference/python-api.md +638 -0
  97. nat_engine-1/docs/api-reference/rest-api.md +980 -0
  98. nat_engine-1/docs/assets/.gitkeep +0 -0
  99. nat_engine-1/docs/assets/cli-scan-output.png +0 -0
  100. nat_engine-1/docs/assets/cli-security-output.png +0 -0
  101. nat_engine-1/docs/assets/dashboad-overview-00.png +0 -0
  102. nat_engine-1/docs/assets/dashboard-agents-02.png +0 -0
  103. nat_engine-1/docs/assets/dashboard-agents-03.png +0 -0
  104. nat_engine-1/docs/assets/dashboard-agents-dark.png +0 -0
  105. nat_engine-1/docs/assets/dashboard-dark-mode-off.png +0 -0
  106. nat_engine-1/docs/assets/dashboard-history.png +0 -0
  107. nat_engine-1/docs/assets/dashboard-overview-000.png +0 -0
  108. nat_engine-1/docs/assets/dashboard-overview-02.png +0 -0
  109. nat_engine-1/docs/assets/dashboard-overview-03.png +0 -0
  110. nat_engine-1/docs/assets/dashboard-overview-top.png +0 -0
  111. nat_engine-1/docs/assets/dashboard-security-detail.png +0 -0
  112. nat_engine-1/docs/assets/dashboard-security.png +0 -0
  113. nat_engine-1/docs/assets/demo-assets-manifest.json +11 -0
  114. nat_engine-1/docs/assets/security-detail.png +0 -0
  115. nat_engine-1/docs/changelog.md +274 -0
  116. nat_engine-1/docs/concepts/architecture.md +314 -0
  117. nat_engine-1/docs/concepts/bdi-agents.md +204 -0
  118. nat_engine-1/docs/concepts/ecnp-protocol.md +180 -0
  119. nat_engine-1/docs/concepts/neural-networks.md +317 -0
  120. nat_engine-1/docs/concepts/security-model.md +327 -0
  121. nat_engine-1/docs/contributing.md +448 -0
  122. nat_engine-1/docs/demo/README.md +200 -0
  123. nat_engine-1/docs/demo/report-template.html +1284 -0
  124. nat_engine-1/docs/demo/sample-reports/accessibility-report.json +125 -0
  125. nat_engine-1/docs/demo/sample-reports/functional-test-report.json +464 -0
  126. nat_engine-1/docs/demo/sample-reports/performance-report.json +164 -0
  127. nat_engine-1/docs/demo/sample-reports/security-scan-report.json +270 -0
  128. nat_engine-1/docs/demo/sample-reports/unified-report.json +139 -0
  129. nat_engine-1/docs/demo/sample-reports/visual-regression-report.json +186 -0
  130. nat_engine-1/docs/demos/orangehrm.md +312 -0
  131. nat_engine-1/docs/faq.md +310 -0
  132. nat_engine-1/docs/getting-started/first-scan.md +246 -0
  133. nat_engine-1/docs/getting-started/installation.md +307 -0
  134. nat_engine-1/docs/getting-started/quickstart.md +191 -0
  135. nat_engine-1/docs/getting-started/setup-wizard.md +223 -0
  136. nat_engine-1/docs/guides/authentication.md +953 -0
  137. nat_engine-1/docs/guides/belief-driven-prioritization.md +235 -0
  138. nat_engine-1/docs/guides/billing.md +775 -0
  139. nat_engine-1/docs/guides/ci-cd-integration.md +894 -0
  140. nat_engine-1/docs/guides/cli-reference.md +904 -0
  141. nat_engine-1/docs/guides/confidence-calibration.md +181 -0
  142. nat_engine-1/docs/guides/custom-check-plugins.md +347 -0
  143. nat_engine-1/docs/guides/dashboard.md +232 -0
  144. nat_engine-1/docs/guides/demo-mode.md +451 -0
  145. nat_engine-1/docs/guides/docker-deployment.md +485 -0
  146. nat_engine-1/docs/guides/e2e-billing-runbook.md +350 -0
  147. nat_engine-1/docs/guides/e2e-results-hub.md +199 -0
  148. nat_engine-1/docs/guides/exporter-plugins.md +852 -0
  149. nat_engine-1/docs/guides/graphql-testing.md +308 -0
  150. nat_engine-1/docs/guides/grpc-scanning.md +338 -0
  151. nat_engine-1/docs/guides/ingestor-plugins.md +970 -0
  152. nat_engine-1/docs/guides/llm-augmented-testing.md +238 -0
  153. nat_engine-1/docs/guides/metering.md +222 -0
  154. nat_engine-1/docs/guides/notifications.md +288 -0
  155. nat_engine-1/docs/guides/releasing.md +183 -0
  156. nat_engine-1/docs/guides/rest-api-testing.md +872 -0
  157. nat_engine-1/docs/guides/risk-scoring.md +374 -0
  158. nat_engine-1/docs/guides/scheduled-scans.md +437 -0
  159. nat_engine-1/docs/guides/security-scanning.md +400 -0
  160. nat_engine-1/docs/guides/self-healing-test-suites.md +257 -0
  161. nat_engine-1/docs/guides/testbed.md +141 -0
  162. nat_engine-1/docs/guides/transfer-learning.md +216 -0
  163. nat_engine-1/docs/guides/worker-pools.md +190 -0
  164. nat_engine-1/docs/how-to/customize-security-checks.md +277 -0
  165. nat_engine-1/docs/how-to/deploy-with-docker.md +402 -0
  166. nat_engine-1/docs/how-to/integrate-with-github-actions.md +447 -0
  167. nat_engine-1/docs/how-to/read-risk-reports.md +274 -0
  168. nat_engine-1/docs/how-to/run-security-audit.md +276 -0
  169. nat_engine-1/docs/how-to/setup-oauth2.md +282 -0
  170. nat_engine-1/docs/how-to/test-graphql-api.md +266 -0
  171. nat_engine-1/docs/how-to/test-openapi-spec.md +235 -0
  172. nat_engine-1/docs/ip/README.md +115 -0
  173. nat_engine-1/docs/ip/disclosure-001-bounded-belief-revision.md +344 -0
  174. nat_engine-1/docs/ip/disclosure-002-extended-contract-net-protocol.md +322 -0
  175. nat_engine-1/docs/ip/disclosure-003-adaptive-test-allocation.md +350 -0
  176. nat_engine-1/docs/ip/disclosure-004-multi-agent-bdi-architecture.md +404 -0
  177. nat_engine-1/docs/legal/licensing.md +187 -0
  178. nat_engine-1/docs/marketing/README.md +102 -0
  179. nat_engine-1/docs/marketing/demo-script.md +166 -0
  180. nat_engine-1/docs/marketing/feature-matrix.md +99 -0
  181. nat_engine-1/docs/marketing/launch-announcement.md +209 -0
  182. nat_engine-1/docs/sales/competitor-matrix.md +108 -0
  183. nat_engine-1/docs/sales/email-templates.md +264 -0
  184. nat_engine-1/docs/sales/ipad-demo-playbook.md +314 -0
  185. nat_engine-1/docs/sales/onboarding-faq.md +197 -0
  186. nat_engine-1/docs/sales/sales-playbook.md +187 -0
  187. nat_engine-1/docs/sales/value-proposition.md +95 -0
  188. nat_engine-1/docs/troubleshooting/auth-issues.md +252 -0
  189. nat_engine-1/docs/troubleshooting/ci-cd-issues.md +421 -0
  190. nat_engine-1/docs/troubleshooting/common-issues.md +274 -0
  191. nat_engine-1/docs/troubleshooting/connection-errors.md +265 -0
  192. nat_engine-1/docs/troubleshooting/docker-issues.md +416 -0
  193. nat_engine-1/docs/vision/functional-testing-saas.md +607 -0
  194. nat_engine-1/docs/whitepaper.md +699 -0
  195. nat_engine-1/e2e-results/coverage-matrix.md +33 -0
  196. nat_engine-1/e2e-results/latest.json +123 -0
  197. nat_engine-1/e2e-results/trend-report.html +210 -0
  198. nat_engine-1/examples/.natrc.example +243 -0
  199. nat_engine-1/examples/demo.py +172 -0
  200. nat_engine-1/examples/exporters/console_exporter.py +65 -0
  201. nat_engine-1/examples/graphql-schema.graphql +197 -0
  202. nat_engine-1/examples/ingestors/csv_ingestor.py +298 -0
  203. nat_engine-1/examples/petstore-openapi.yaml +567 -0
  204. nat_engine-1/examples/pipeline.yaml +75 -0
  205. nat_engine-1/examples/plugins/rate_limit_check.py +55 -0
  206. nat_engine-1/examples/python/basic_scan.py +206 -0
  207. nat_engine-1/examples/python/graphql_scan.py +215 -0
  208. nat_engine-1/examples/python/oauth2_scan.py +267 -0
  209. nat_engine-1/examples/python/security_audit.py +294 -0
  210. nat_engine-1/examples/workflows/README.md +79 -0
  211. nat_engine-1/examples/workflows/nat-example.yml +63 -0
  212. nat_engine-1/examples/workflows/nat-matrix.yml +81 -0
  213. nat_engine-1/examples/workflows/nat-pr-comment.yml +81 -0
  214. nat_engine-1/examples/workflows/nat-scheduled.yml +132 -0
  215. nat_engine-1/examples/workflows/nat-security-gate.yml +84 -0
  216. nat_engine-1/nginx/certs/README.md +16 -0
  217. nat_engine-1/nginx/nginx.conf +61 -0
  218. nat_engine-1/pyproject.toml +122 -0
  219. nat_engine-1/releases/v1.0.0.md +58 -0
  220. nat_engine-1/scripts/compare_manifests.py +333 -0
  221. nat_engine-1/scripts/demo.bat +115 -0
  222. nat_engine-1/scripts/demo.sh +130 -0
  223. nat_engine-1/scripts/demo_orangehrm.py +433 -0
  224. nat_engine-1/scripts/e2e_staging_validation.py +605 -0
  225. nat_engine-1/scripts/extract_demo_assets.py +234 -0
  226. nat_engine-1/scripts/generate_coverage_matrix.py +320 -0
  227. nat_engine-1/scripts/generate_manifest.py +309 -0
  228. nat_engine-1/scripts/generate_trend_report.py +434 -0
  229. nat_engine-1/scripts/go_live_checklist.py +843 -0
  230. nat_engine-1/scripts/pre_launch_check.py +298 -0
  231. nat_engine-1/scripts/prepare-release.sh +195 -0
  232. nat_engine-1/scripts/seed_demo_data.py +431 -0
  233. nat_engine-1/scripts/update_baseline.py +102 -0
  234. nat_engine-1/setup.cfg +4 -0
  235. nat_engine-1/src/mannf/__init__.py +33 -0
  236. nat_engine-1/src/mannf/__main__.py +10 -0
  237. nat_engine-1/src/mannf/_version.py +8 -0
  238. nat_engine-1/src/mannf/agents/__init__.py +7 -0
  239. nat_engine-1/src/mannf/agents/analyzer_agent.py +9 -0
  240. nat_engine-1/src/mannf/agents/base.py +9 -0
  241. nat_engine-1/src/mannf/agents/bdi_agent.py +9 -0
  242. nat_engine-1/src/mannf/agents/belief_state.py +9 -0
  243. nat_engine-1/src/mannf/agents/coordinator_agent.py +9 -0
  244. nat_engine-1/src/mannf/agents/executor_agent.py +9 -0
  245. nat_engine-1/src/mannf/agents/monitor_agent.py +9 -0
  246. nat_engine-1/src/mannf/agents/oracle_agent.py +9 -0
  247. nat_engine-1/src/mannf/agents/planner_agent.py +9 -0
  248. nat_engine-1/src/mannf/agents/test_agent.py +9 -0
  249. nat_engine-1/src/mannf/anomaly/__init__.py +7 -0
  250. nat_engine-1/src/mannf/anomaly/enhanced_detector.py +9 -0
  251. nat_engine-1/src/mannf/cli.py +9 -0
  252. nat_engine-1/src/mannf/core/__init__.py +26 -0
  253. nat_engine-1/src/mannf/core/agents/__init__.py +52 -0
  254. nat_engine-1/src/mannf/core/agents/accessibility_scanner_agent.py +245 -0
  255. nat_engine-1/src/mannf/core/agents/analyzer_agent.py +224 -0
  256. nat_engine-1/src/mannf/core/agents/autonomous_loop_agent.py +1086 -0
  257. nat_engine-1/src/mannf/core/agents/autonomous_loop_models.py +62 -0
  258. nat_engine-1/src/mannf/core/agents/autonomous_run_differ.py +427 -0
  259. nat_engine-1/src/mannf/core/agents/base.py +128 -0
  260. nat_engine-1/src/mannf/core/agents/bdi_agent.py +330 -0
  261. nat_engine-1/src/mannf/core/agents/belief_state.py +202 -0
  262. nat_engine-1/src/mannf/core/agents/browser_coordinator_agent.py +224 -0
  263. nat_engine-1/src/mannf/core/agents/browser_executor_agent.py +410 -0
  264. nat_engine-1/src/mannf/core/agents/coordinator_agent.py +262 -0
  265. nat_engine-1/src/mannf/core/agents/executor_agent.py +222 -0
  266. nat_engine-1/src/mannf/core/agents/monitor_agent.py +188 -0
  267. nat_engine-1/src/mannf/core/agents/oracle_agent.py +150 -0
  268. nat_engine-1/src/mannf/core/agents/performance_testing_agent.py +279 -0
  269. nat_engine-1/src/mannf/core/agents/planner_agent.py +128 -0
  270. nat_engine-1/src/mannf/core/agents/test_agent.py +249 -0
  271. nat_engine-1/src/mannf/core/agents/visual_regression_agent.py +311 -0
  272. nat_engine-1/src/mannf/core/agents/web_crawler_agent.py +510 -0
  273. nat_engine-1/src/mannf/core/agents/worker_pool.py +366 -0
  274. nat_engine-1/src/mannf/core/anomaly/__init__.py +14 -0
  275. nat_engine-1/src/mannf/core/anomaly/enhanced_detector.py +541 -0
  276. nat_engine-1/src/mannf/core/browser/__init__.py +63 -0
  277. nat_engine-1/src/mannf/core/browser/accessibility_scanner.py +424 -0
  278. nat_engine-1/src/mannf/core/browser/discovery_model.py +178 -0
  279. nat_engine-1/src/mannf/core/browser/dom_snapshot.py +349 -0
  280. nat_engine-1/src/mannf/core/browser/ingestor_bridge.py +371 -0
  281. nat_engine-1/src/mannf/core/browser/performance_metrics.py +217 -0
  282. nat_engine-1/src/mannf/core/browser/reflection_analyzer.py +442 -0
  283. nat_engine-1/src/mannf/core/browser/scenario_generator.py +1100 -0
  284. nat_engine-1/src/mannf/core/browser/security_scenario_generator.py +695 -0
  285. nat_engine-1/src/mannf/core/browser/visual_comparer.py +159 -0
  286. nat_engine-1/src/mannf/core/diagnostics/__init__.py +28 -0
  287. nat_engine-1/src/mannf/core/diagnostics/failure_clusterer.py +211 -0
  288. nat_engine-1/src/mannf/core/diagnostics/flake_detector.py +233 -0
  289. nat_engine-1/src/mannf/core/diagnostics/root_cause_analyzer.py +273 -0
  290. nat_engine-1/src/mannf/core/distributed/__init__.py +16 -0
  291. nat_engine-1/src/mannf/core/distributed/endpoint.py +139 -0
  292. nat_engine-1/src/mannf/core/distributed/system_under_test.py +207 -0
  293. nat_engine-1/src/mannf/core/functional_orchestrator.py +428 -0
  294. nat_engine-1/src/mannf/core/messaging/__init__.py +11 -0
  295. nat_engine-1/src/mannf/core/messaging/bus.py +113 -0
  296. nat_engine-1/src/mannf/core/messaging/messages.py +89 -0
  297. nat_engine-1/src/mannf/core/nat_orchestrator.py +342 -0
  298. nat_engine-1/src/mannf/core/neural/__init__.py +183 -0
  299. nat_engine-1/src/mannf/core/orchestrator.py +272 -0
  300. nat_engine-1/src/mannf/core/prioritization/__init__.py +17 -0
  301. nat_engine-1/src/mannf/core/prioritization/adaptive_controller.py +509 -0
  302. nat_engine-1/src/mannf/core/prioritization/belief_prioritizer.py +231 -0
  303. nat_engine-1/src/mannf/core/prioritization/risk_scorer.py +430 -0
  304. nat_engine-1/src/mannf/core/reporting/__init__.py +12 -0
  305. nat_engine-1/src/mannf/core/reporting/unified_report.py +664 -0
  306. nat_engine-1/src/mannf/core/testing/__init__.py +17 -0
  307. nat_engine-1/src/mannf/core/testing/adaptive_controller.py +149 -0
  308. nat_engine-1/src/mannf/core/testing/models.py +179 -0
  309. nat_engine-1/src/mannf/core/validation/__init__.py +10 -0
  310. nat_engine-1/src/mannf/core/validation/self_validation_runner.py +180 -0
  311. nat_engine-1/src/mannf/dashboard/__init__.py +7 -0
  312. nat_engine-1/src/mannf/dashboard/app.py +9 -0
  313. nat_engine-1/src/mannf/dashboard/models.py +9 -0
  314. nat_engine-1/src/mannf/dashboard/static/index.html +2538 -0
  315. nat_engine-1/src/mannf/dashboard/telemetry.py +9 -0
  316. nat_engine-1/src/mannf/distributed/__init__.py +7 -0
  317. nat_engine-1/src/mannf/distributed/endpoint.py +9 -0
  318. nat_engine-1/src/mannf/distributed/system_under_test.py +9 -0
  319. nat_engine-1/src/mannf/healing/__init__.py +7 -0
  320. nat_engine-1/src/mannf/healing/graphql_schema_diff.py +9 -0
  321. nat_engine-1/src/mannf/healing/healer.py +9 -0
  322. nat_engine-1/src/mannf/healing/models.py +9 -0
  323. nat_engine-1/src/mannf/healing/schema_diff.py +9 -0
  324. nat_engine-1/src/mannf/integrations/__init__.py +7 -0
  325. nat_engine-1/src/mannf/integrations/auth.py +9 -0
  326. nat_engine-1/src/mannf/integrations/graphql_parser.py +9 -0
  327. nat_engine-1/src/mannf/integrations/graphql_sut.py +9 -0
  328. nat_engine-1/src/mannf/integrations/http_sut.py +9 -0
  329. nat_engine-1/src/mannf/integrations/openapi_parser.py +9 -0
  330. nat_engine-1/src/mannf/integrations/postman_parser.py +9 -0
  331. nat_engine-1/src/mannf/llm/__init__.py +7 -0
  332. nat_engine-1/src/mannf/llm/anthropic_provider.py +9 -0
  333. nat_engine-1/src/mannf/llm/base.py +9 -0
  334. nat_engine-1/src/mannf/llm/config.py +9 -0
  335. nat_engine-1/src/mannf/llm/factory.py +9 -0
  336. nat_engine-1/src/mannf/llm/openai_provider.py +9 -0
  337. nat_engine-1/src/mannf/llm/prompts.py +9 -0
  338. nat_engine-1/src/mannf/messaging/__init__.py +7 -0
  339. nat_engine-1/src/mannf/messaging/bus.py +9 -0
  340. nat_engine-1/src/mannf/messaging/messages.py +9 -0
  341. nat_engine-1/src/mannf/nat_orchestrator.py +9 -0
  342. nat_engine-1/src/mannf/neural/__init__.py +7 -0
  343. nat_engine-1/src/mannf/orchestrator.py +9 -0
  344. nat_engine-1/src/mannf/prioritization/__init__.py +7 -0
  345. nat_engine-1/src/mannf/prioritization/adaptive_controller.py +9 -0
  346. nat_engine-1/src/mannf/prioritization/belief_prioritizer.py +9 -0
  347. nat_engine-1/src/mannf/prioritization/risk_scorer.py +9 -0
  348. nat_engine-1/src/mannf/product/__init__.py +29 -0
  349. nat_engine-1/src/mannf/product/admin/__init__.py +3 -0
  350. nat_engine-1/src/mannf/product/admin/routes.py +514 -0
  351. nat_engine-1/src/mannf/product/auth/__init__.py +5 -0
  352. nat_engine-1/src/mannf/product/auth/saml.py +212 -0
  353. nat_engine-1/src/mannf/product/billing/__init__.py +5 -0
  354. nat_engine-1/src/mannf/product/billing/audit.py +160 -0
  355. nat_engine-1/src/mannf/product/billing/feature_gates.py +180 -0
  356. nat_engine-1/src/mannf/product/billing/metering.py +179 -0
  357. nat_engine-1/src/mannf/product/billing/notifications.py +181 -0
  358. nat_engine-1/src/mannf/product/billing/plans.py +133 -0
  359. nat_engine-1/src/mannf/product/billing/rate_limits.py +35 -0
  360. nat_engine-1/src/mannf/product/billing/stripe_billing.py +906 -0
  361. nat_engine-1/src/mannf/product/billing/tenant_auth.py +233 -0
  362. nat_engine-1/src/mannf/product/billing/tenant_manager.py +873 -0
  363. nat_engine-1/src/mannf/product/cli.py +3900 -0
  364. nat_engine-1/src/mannf/product/cli_admin.py +408 -0
  365. nat_engine-1/src/mannf/product/dashboard/__init__.py +61 -0
  366. nat_engine-1/src/mannf/product/dashboard/app.py +3567 -0
  367. nat_engine-1/src/mannf/product/dashboard/models.py +460 -0
  368. nat_engine-1/src/mannf/product/dashboard/static/index.html +6347 -0
  369. nat_engine-1/src/mannf/product/dashboard/static/manifest.json +25 -0
  370. nat_engine-1/src/mannf/product/dashboard/static/pwa-icon-192.png +0 -0
  371. nat_engine-1/src/mannf/product/dashboard/static/pwa-icon-512.png +0 -0
  372. nat_engine-1/src/mannf/product/dashboard/static/sw.js +64 -0
  373. nat_engine-1/src/mannf/product/dashboard/telemetry.py +547 -0
  374. nat_engine-1/src/mannf/product/database.py +145 -0
  375. nat_engine-1/src/mannf/product/demo.py +844 -0
  376. nat_engine-1/src/mannf/product/doctor.py +509 -0
  377. nat_engine-1/src/mannf/product/exporters/__init__.py +65 -0
  378. nat_engine-1/src/mannf/product/exporters/azuredevops_exporter.py +257 -0
  379. nat_engine-1/src/mannf/product/exporters/base.py +307 -0
  380. nat_engine-1/src/mannf/product/exporters/bugzilla_exporter.py +200 -0
  381. nat_engine-1/src/mannf/product/exporters/dedup.py +275 -0
  382. nat_engine-1/src/mannf/product/exporters/finding_adapter.py +216 -0
  383. nat_engine-1/src/mannf/product/exporters/github_exporter.py +197 -0
  384. nat_engine-1/src/mannf/product/exporters/gitlab_exporter.py +215 -0
  385. nat_engine-1/src/mannf/product/exporters/jira_exporter.py +180 -0
  386. nat_engine-1/src/mannf/product/exporters/linear_exporter.py +195 -0
  387. nat_engine-1/src/mannf/product/exporters/loader.py +233 -0
  388. nat_engine-1/src/mannf/product/exporters/pagerduty_exporter.py +363 -0
  389. nat_engine-1/src/mannf/product/exporters/sentry_exporter.py +322 -0
  390. nat_engine-1/src/mannf/product/exporters/servicenow_exporter.py +240 -0
  391. nat_engine-1/src/mannf/product/exporters/shortcut_exporter.py +231 -0
  392. nat_engine-1/src/mannf/product/exporters/webhook_exporter.py +383 -0
  393. nat_engine-1/src/mannf/product/formatters/__init__.py +18 -0
  394. nat_engine-1/src/mannf/product/formatters/allure_formatter.py +161 -0
  395. nat_engine-1/src/mannf/product/formatters/ctrf_formatter.py +149 -0
  396. nat_engine-1/src/mannf/product/healing/__init__.py +30 -0
  397. nat_engine-1/src/mannf/product/healing/graphql_schema_diff.py +152 -0
  398. nat_engine-1/src/mannf/product/healing/healer.py +141 -0
  399. nat_engine-1/src/mannf/product/healing/models.py +175 -0
  400. nat_engine-1/src/mannf/product/healing/schema_diff.py +251 -0
  401. nat_engine-1/src/mannf/product/ingestors/__init__.py +77 -0
  402. nat_engine-1/src/mannf/product/ingestors/base.py +256 -0
  403. nat_engine-1/src/mannf/product/ingestors/bgstm_ingestor.py +764 -0
  404. nat_engine-1/src/mannf/product/ingestors/curl_ingestor.py +1019 -0
  405. nat_engine-1/src/mannf/product/ingestors/cypress_ingestor.py +487 -0
  406. nat_engine-1/src/mannf/product/ingestors/gherkin_ingestor.py +967 -0
  407. nat_engine-1/src/mannf/product/ingestors/graphql_ingestor.py +845 -0
  408. nat_engine-1/src/mannf/product/ingestors/grpc_ingestor.py +591 -0
  409. nat_engine-1/src/mannf/product/ingestors/har_ingestor.py +976 -0
  410. nat_engine-1/src/mannf/product/ingestors/loader.py +284 -0
  411. nat_engine-1/src/mannf/product/ingestors/models.py +146 -0
  412. nat_engine-1/src/mannf/product/ingestors/openapi_ingestor.py +606 -0
  413. nat_engine-1/src/mannf/product/ingestors/playwright_ingestor.py +449 -0
  414. nat_engine-1/src/mannf/product/ingestors/postman_ingestor.py +631 -0
  415. nat_engine-1/src/mannf/product/ingestors/traffic_ingestor.py +679 -0
  416. nat_engine-1/src/mannf/product/ingestors/websocket_ingestor.py +526 -0
  417. nat_engine-1/src/mannf/product/integrations/__init__.py +21 -0
  418. nat_engine-1/src/mannf/product/integrations/auth.py +190 -0
  419. nat_engine-1/src/mannf/product/integrations/graphql_parser.py +436 -0
  420. nat_engine-1/src/mannf/product/integrations/graphql_sut.py +247 -0
  421. nat_engine-1/src/mannf/product/integrations/grpc_sut.py +469 -0
  422. nat_engine-1/src/mannf/product/integrations/http_sut.py +237 -0
  423. nat_engine-1/src/mannf/product/integrations/kafka_adapter.py +342 -0
  424. nat_engine-1/src/mannf/product/integrations/openapi_parser.py +513 -0
  425. nat_engine-1/src/mannf/product/integrations/postman_parser.py +467 -0
  426. nat_engine-1/src/mannf/product/integrations/webhook_receiver.py +344 -0
  427. nat_engine-1/src/mannf/product/integrations/websocket_sut.py +434 -0
  428. nat_engine-1/src/mannf/product/llm/__init__.py +25 -0
  429. nat_engine-1/src/mannf/product/llm/anthropic_provider.py +94 -0
  430. nat_engine-1/src/mannf/product/llm/base.py +267 -0
  431. nat_engine-1/src/mannf/product/llm/config.py +48 -0
  432. nat_engine-1/src/mannf/product/llm/factory.py +42 -0
  433. nat_engine-1/src/mannf/product/llm/openai_provider.py +93 -0
  434. nat_engine-1/src/mannf/product/llm/prompts.py +403 -0
  435. nat_engine-1/src/mannf/product/llm/root_cause_service.py +311 -0
  436. nat_engine-1/src/mannf/product/llm/test_plan_models.py +78 -0
  437. nat_engine-1/src/mannf/product/metrics.py +149 -0
  438. nat_engine-1/src/mannf/product/middleware/__init__.py +3 -0
  439. nat_engine-1/src/mannf/product/middleware/audit_middleware.py +112 -0
  440. nat_engine-1/src/mannf/product/middleware/tenant_isolation.py +114 -0
  441. nat_engine-1/src/mannf/product/models.py +347 -0
  442. nat_engine-1/src/mannf/product/notifications/__init__.py +24 -0
  443. nat_engine-1/src/mannf/product/notifications/dispatcher.py +411 -0
  444. nat_engine-1/src/mannf/product/onboarding.py +190 -0
  445. nat_engine-1/src/mannf/product/orchestration/__init__.py +39 -0
  446. nat_engine-1/src/mannf/product/orchestration/ingest_scan_orchestrator.py +339 -0
  447. nat_engine-1/src/mannf/product/orchestration/pipeline.py +401 -0
  448. nat_engine-1/src/mannf/product/orchestrator.py +987 -0
  449. nat_engine-1/src/mannf/product/orchestrator_models.py +269 -0
  450. nat_engine-1/src/mannf/product/regression/__init__.py +36 -0
  451. nat_engine-1/src/mannf/product/regression/differ.py +172 -0
  452. nat_engine-1/src/mannf/product/regression/masking.py +100 -0
  453. nat_engine-1/src/mannf/product/regression/models.py +232 -0
  454. nat_engine-1/src/mannf/product/regression/recorder.py +124 -0
  455. nat_engine-1/src/mannf/product/regression/replayer.py +168 -0
  456. nat_engine-1/src/mannf/product/reports/__init__.py +10 -0
  457. nat_engine-1/src/mannf/product/reports/pdf.py +132 -0
  458. nat_engine-1/src/mannf/product/scheduling/__init__.py +57 -0
  459. nat_engine-1/src/mannf/product/scheduling/cron_utils.py +251 -0
  460. nat_engine-1/src/mannf/product/scheduling/engine.py +473 -0
  461. nat_engine-1/src/mannf/product/scheduling/models.py +86 -0
  462. nat_engine-1/src/mannf/product/scheduling/queue.py +894 -0
  463. nat_engine-1/src/mannf/product/scheduling/store.py +235 -0
  464. nat_engine-1/src/mannf/product/security/__init__.py +21 -0
  465. nat_engine-1/src/mannf/product/security/belief_guided.py +143 -0
  466. nat_engine-1/src/mannf/product/security/checks/__init__.py +55 -0
  467. nat_engine-1/src/mannf/product/security/checks/base.py +69 -0
  468. nat_engine-1/src/mannf/product/security/checks/bfla.py +77 -0
  469. nat_engine-1/src/mannf/product/security/checks/bola.py +77 -0
  470. nat_engine-1/src/mannf/product/security/checks/bopla.py +80 -0
  471. nat_engine-1/src/mannf/product/security/checks/broken_auth.py +86 -0
  472. nat_engine-1/src/mannf/product/security/checks/graphql_security.py +299 -0
  473. nat_engine-1/src/mannf/product/security/checks/inventory.py +70 -0
  474. nat_engine-1/src/mannf/product/security/checks/misconfig.py +158 -0
  475. nat_engine-1/src/mannf/product/security/checks/resource_consumption.py +70 -0
  476. nat_engine-1/src/mannf/product/security/checks/sensitive_flows.py +80 -0
  477. nat_engine-1/src/mannf/product/security/checks/ssrf.py +101 -0
  478. nat_engine-1/src/mannf/product/security/checks/unsafe_consumption.py +120 -0
  479. nat_engine-1/src/mannf/product/security/models.py +92 -0
  480. nat_engine-1/src/mannf/product/security/plugin_loader.py +182 -0
  481. nat_engine-1/src/mannf/product/security/reporter.py +92 -0
  482. nat_engine-1/src/mannf/product/security/scanner.py +183 -0
  483. nat_engine-1/src/mannf/product/server.py +6220 -0
  484. nat_engine-1/src/mannf/product/setup_wizard.py +873 -0
  485. nat_engine-1/src/mannf/product/status.py +404 -0
  486. nat_engine-1/src/mannf/product/storage/__init__.py +10 -0
  487. nat_engine-1/src/mannf/product/storage/artifact_store.py +343 -0
  488. nat_engine-1/src/mannf/product/telemetry.py +300 -0
  489. nat_engine-1/src/mannf/product/uninstall.py +169 -0
  490. nat_engine-1/src/mannf/product/upgrade.py +139 -0
  491. nat_engine-1/src/mannf/product/weights/__init__.py +13 -0
  492. nat_engine-1/src/mannf/product/weights/blob_store.py +299 -0
  493. nat_engine-1/src/mannf/product/weights/factory.py +42 -0
  494. nat_engine-1/src/mannf/product/weights/registry.py +159 -0
  495. nat_engine-1/src/mannf/product/weights/store.py +210 -0
  496. nat_engine-1/src/mannf/regression/__init__.py +7 -0
  497. nat_engine-1/src/mannf/regression/differ.py +9 -0
  498. nat_engine-1/src/mannf/regression/masking.py +9 -0
  499. nat_engine-1/src/mannf/regression/models.py +9 -0
  500. nat_engine-1/src/mannf/regression/recorder.py +9 -0
  501. nat_engine-1/src/mannf/regression/replayer.py +9 -0
  502. nat_engine-1/src/mannf/security/__init__.py +7 -0
  503. nat_engine-1/src/mannf/security/belief_guided.py +9 -0
  504. nat_engine-1/src/mannf/security/checks/__init__.py +7 -0
  505. nat_engine-1/src/mannf/security/checks/base.py +9 -0
  506. nat_engine-1/src/mannf/security/checks/bfla.py +9 -0
  507. nat_engine-1/src/mannf/security/checks/bola.py +9 -0
  508. nat_engine-1/src/mannf/security/checks/bopla.py +9 -0
  509. nat_engine-1/src/mannf/security/checks/broken_auth.py +9 -0
  510. nat_engine-1/src/mannf/security/checks/graphql_security.py +9 -0
  511. nat_engine-1/src/mannf/security/checks/inventory.py +9 -0
  512. nat_engine-1/src/mannf/security/checks/misconfig.py +9 -0
  513. nat_engine-1/src/mannf/security/checks/resource_consumption.py +9 -0
  514. nat_engine-1/src/mannf/security/checks/sensitive_flows.py +9 -0
  515. nat_engine-1/src/mannf/security/checks/ssrf.py +9 -0
  516. nat_engine-1/src/mannf/security/checks/unsafe_consumption.py +9 -0
  517. nat_engine-1/src/mannf/security/models.py +9 -0
  518. nat_engine-1/src/mannf/security/reporter.py +9 -0
  519. nat_engine-1/src/mannf/security/scanner.py +9 -0
  520. nat_engine-1/src/mannf/server.py +9 -0
  521. nat_engine-1/src/mannf/testing/__init__.py +7 -0
  522. nat_engine-1/src/mannf/testing/adaptive_controller.py +9 -0
  523. nat_engine-1/src/mannf/testing/models.py +9 -0
  524. nat_engine-1/src/mannf/weights/__init__.py +7 -0
  525. nat_engine-1/src/mannf/weights/registry.py +9 -0
  526. nat_engine-1/src/mannf/weights/store.py +9 -0
  527. nat_engine-1/src/nat_engine.egg-info/PKG-INFO +555 -0
  528. nat_engine-1/src/nat_engine.egg-info/SOURCES.txt +862 -0
  529. nat_engine-1/src/nat_engine.egg-info/dependency_links.txt +1 -0
  530. nat_engine-1/src/nat_engine.egg-info/entry_points.txt +4 -0
  531. nat_engine-1/src/nat_engine.egg-info/requires.txt +42 -0
  532. nat_engine-1/src/nat_engine.egg-info/top_level.txt +1 -0
  533. nat_engine-1/testbed/Dockerfile +7 -0
  534. nat_engine-1/testbed/README.md +117 -0
  535. nat_engine-1/testbed/__init__.py +0 -0
  536. nat_engine-1/testbed/app.py +583 -0
  537. nat_engine-1/testbed/conftest.py +20 -0
  538. nat_engine-1/testbed/docker-compose.yml +14 -0
  539. nat_engine-1/testbed/openapi_override.json +229 -0
  540. nat_engine-1/testbed/requirements.txt +10 -0
  541. nat_engine-1/testbed/static/style.css +102 -0
  542. nat_engine-1/testbed/templates/accessible.html +42 -0
  543. nat_engine-1/testbed/templates/base.html +22 -0
  544. nat_engine-1/testbed/templates/dashboard.html +38 -0
  545. nat_engine-1/testbed/templates/inaccessible.html +49 -0
  546. nat_engine-1/testbed/templates/login.html +23 -0
  547. nat_engine-1/testbed/templates/settings.html +31 -0
  548. nat_engine-1/testbed/templates/user_form.html +31 -0
  549. nat_engine-1/testbed/templates/users.html +28 -0
  550. nat_engine-1/testbed/tests/__init__.py +0 -0
  551. nat_engine-1/testbed/tests/test_vulnapi.py +231 -0
  552. nat_engine-1/testbed/vulnapi.proto +15 -0
  553. nat_engine-1/tests/__init__.py +18 -0
  554. nat_engine-1/tests/conftest.py +39 -0
  555. nat_engine-1/tests/e2e/__init__.py +4 -0
  556. nat_engine-1/tests/e2e/conftest.py +297 -0
  557. nat_engine-1/tests/e2e/dashboard/__init__.py +22 -0
  558. nat_engine-1/tests/e2e/dashboard/conftest.py +339 -0
  559. nat_engine-1/tests/e2e/dashboard/screenshots/billing_panel.png +0 -0
  560. nat_engine-1/tests/e2e/dashboard/screenshots/billing_plan_badge.png +0 -0
  561. nat_engine-1/tests/e2e/dashboard/screenshots/nav_billing.png +0 -0
  562. nat_engine-1/tests/e2e/dashboard/screenshots/nav_functional.png +0 -0
  563. nat_engine-1/tests/e2e/dashboard/screenshots/nav_history.png +0 -0
  564. nat_engine-1/tests/e2e/dashboard/screenshots/nav_overview.png +0 -0
  565. nat_engine-1/tests/e2e/dashboard/screenshots/nav_schedules.png +0 -0
  566. nat_engine-1/tests/e2e/dashboard/screenshots/nav_security.png +0 -0
  567. nat_engine-1/tests/e2e/dashboard/screenshots/nav_settings.png +0 -0
  568. nat_engine-1/tests/e2e/dashboard/screenshots/nav_team.png +0 -0
  569. nat_engine-1/tests/e2e/dashboard/screenshots/nav_test-plans.png +0 -0
  570. nat_engine-1/tests/e2e/dashboard/screenshots/nav_testing_collapsed.png +0 -0
  571. nat_engine-1/tests/e2e/dashboard/screenshots/nav_testing_section.png +0 -0
  572. nat_engine-1/tests/e2e/dashboard/screenshots/nl_description_filled.png +0 -0
  573. nat_engine-1/tests/e2e/dashboard/screenshots/nl_generation_result.png +0 -0
  574. nat_engine-1/tests/e2e/dashboard/screenshots/overview_default.png +0 -0
  575. nat_engine-1/tests/e2e/dashboard/screenshots/overview_scan_count.png +0 -0
  576. nat_engine-1/tests/e2e/dashboard/screenshots/pdf_button_visible.png +0 -0
  577. nat_engine-1/tests/e2e/dashboard/screenshots/pdf_history_panel.png +0 -0
  578. nat_engine-1/tests/e2e/dashboard/screenshots/plans_generate_btn.png +0 -0
  579. nat_engine-1/tests/e2e/dashboard/screenshots/plans_nl_generated.png +0 -0
  580. nat_engine-1/tests/e2e/dashboard/screenshots/plans_panel.png +0 -0
  581. nat_engine-1/tests/e2e/dashboard/screenshots/responsive_breakpoint.png +0 -0
  582. nat_engine-1/tests/e2e/dashboard/screenshots/responsive_desktop.png +0 -0
  583. nat_engine-1/tests/e2e/dashboard/screenshots/responsive_mobile.png +0 -0
  584. nat_engine-1/tests/e2e/dashboard/screenshots/responsive_sidebar_open.png +0 -0
  585. nat_engine-1/tests/e2e/dashboard/screenshots/responsive_toggle.png +0 -0
  586. nat_engine-1/tests/e2e/dashboard/screenshots/rootcause_after_fail.png +0 -0
  587. nat_engine-1/tests/e2e/dashboard/screenshots/rootcause_api_verified.png +0 -0
  588. nat_engine-1/tests/e2e/dashboard/screenshots/rootcause_panel.png +0 -0
  589. nat_engine-1/tests/e2e/dashboard/screenshots/scans_export_buttons.png +0 -0
  590. nat_engine-1/tests/e2e/dashboard/screenshots/scans_json_download.png +0 -0
  591. nat_engine-1/tests/e2e/dashboard/screenshots/scans_panel.png +0 -0
  592. nat_engine-1/tests/e2e/dashboard/screenshots/schedules_panel.png +0 -0
  593. nat_engine-1/tests/e2e/dashboard/screenshots/security_findings_injected.png +0 -0
  594. nat_engine-1/tests/e2e/dashboard/screenshots/security_panel.png +0 -0
  595. nat_engine-1/tests/e2e/dashboard/screenshots/settings_panel.png +0 -0
  596. nat_engine-1/tests/e2e/dashboard/screenshots/team_panel.png +0 -0
  597. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_billing.py +102 -0
  598. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_nav.py +133 -0
  599. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_nl.py +102 -0
  600. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_overview.py +85 -0
  601. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_pdf.py +97 -0
  602. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_plans.py +106 -0
  603. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_responsive.py +166 -0
  604. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_rootcause.py +134 -0
  605. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_scans.py +132 -0
  606. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_schedules.py +176 -0
  607. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_security.py +115 -0
  608. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_settings.py +115 -0
  609. nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_team.py +87 -0
  610. nat_engine-1/tests/e2e/test_e2e_api.py +479 -0
  611. nat_engine-1/tests/e2e/test_e2e_demo.py +212 -0
  612. nat_engine-1/tests/e2e/test_e2e_exports.py +412 -0
  613. nat_engine-1/tests/e2e/test_e2e_nl_test.py +313 -0
  614. nat_engine-1/tests/e2e/test_e2e_plan.py +313 -0
  615. nat_engine-1/tests/e2e/test_e2e_scan_graphql.py +182 -0
  616. nat_engine-1/tests/e2e/test_e2e_scan_grpc.py +181 -0
  617. nat_engine-1/tests/e2e/test_e2e_scan_rest.py +283 -0
  618. nat_engine-1/tests/e2e/test_e2e_schedules.py +310 -0
  619. nat_engine-1/tests/smoke/README.md +186 -0
  620. nat_engine-1/tests/smoke/__init__.py +0 -0
  621. nat_engine-1/tests/smoke/conftest.py +177 -0
  622. nat_engine-1/tests/smoke/test_billing_increment.py +135 -0
  623. nat_engine-1/tests/smoke/test_dashboard.py +174 -0
  624. nat_engine-1/tests/smoke/test_functional_scan.py +154 -0
  625. nat_engine-1/tests/smoke/test_report_export.py +156 -0
  626. nat_engine-1/tests/smoke/test_security_scan.py +161 -0
  627. nat_engine-1/tests/smoke/test_signup_billing.py +190 -0
  628. nat_engine-1/tests/smoke/test_usage_metering.py +154 -0
  629. nat_engine-1/tests/test_accessibility_scanner.py +921 -0
  630. nat_engine-1/tests/test_action/__init__.py +17 -0
  631. nat_engine-1/tests/test_action/test_entrypoint.py +343 -0
  632. nat_engine-1/tests/test_action/test_parse_results.py +811 -0
  633. nat_engine-1/tests/test_admin/__init__.py +3 -0
  634. nat_engine-1/tests/test_admin/test_admin_api.py +422 -0
  635. nat_engine-1/tests/test_admin/test_cli_admin.py +483 -0
  636. nat_engine-1/tests/test_admin/test_tenant_manager.py +452 -0
  637. nat_engine-1/tests/test_agents.py +160 -0
  638. nat_engine-1/tests/test_anomaly/__init__.py +18 -0
  639. nat_engine-1/tests/test_anomaly/test_enhanced_detector.py +321 -0
  640. nat_engine-1/tests/test_artifact_blob.py +449 -0
  641. nat_engine-1/tests/test_auth_layer.py +509 -0
  642. nat_engine-1/tests/test_autonomous_loop.py +1149 -0
  643. nat_engine-1/tests/test_autonomous_run_differ.py +750 -0
  644. nat_engine-1/tests/test_belief_state.py +151 -0
  645. nat_engine-1/tests/test_billing_audit.py +426 -0
  646. nat_engine-1/tests/test_billing_bridge.py +1151 -0
  647. nat_engine-1/tests/test_billing_models.py +195 -0
  648. nat_engine-1/tests/test_billing_notifications.py +275 -0
  649. nat_engine-1/tests/test_billing_status.py +296 -0
  650. nat_engine-1/tests/test_browser_agent.py +536 -0
  651. nat_engine-1/tests/test_calibration.py +794 -0
  652. nat_engine-1/tests/test_canary_health.py +200 -0
  653. nat_engine-1/tests/test_cli_help.py +398 -0
  654. nat_engine-1/tests/test_concurrency_enforcement.py +384 -0
  655. nat_engine-1/tests/test_cypress_ingestor.py +783 -0
  656. nat_engine-1/tests/test_dashboard/__init__.py +17 -0
  657. nat_engine-1/tests/test_dashboard/test_bug_filing.py +341 -0
  658. nat_engine-1/tests/test_dashboard/test_dashboard_models.py +197 -0
  659. nat_engine-1/tests/test_dashboard/test_dashboard_routes.py +495 -0
  660. nat_engine-1/tests/test_dashboard/test_diagnostics_endpoints.py +493 -0
  661. nat_engine-1/tests/test_dashboard/test_telemetry.py +461 -0
  662. nat_engine-1/tests/test_dashboard_import.py +522 -0
  663. nat_engine-1/tests/test_dashboard_scenarios.py +542 -0
  664. nat_engine-1/tests/test_dashboard_ui.py +1345 -0
  665. nat_engine-1/tests/test_demo/__init__.py +18 -0
  666. nat_engine-1/tests/test_demo/test_cli_demo.py +547 -0
  667. nat_engine-1/tests/test_demo_mode.py +190 -0
  668. nat_engine-1/tests/test_demo_orangehrm.py +585 -0
  669. nat_engine-1/tests/test_demo_seeder.py +292 -0
  670. nat_engine-1/tests/test_diagnostics.py +576 -0
  671. nat_engine-1/tests/test_distributed.py +121 -0
  672. nat_engine-1/tests/test_e2e_billing_happy_path.py +1015 -0
  673. nat_engine-1/tests/test_e2e_billing_onboarding.py +980 -0
  674. nat_engine-1/tests/test_e2e_onboarding.py +612 -0
  675. nat_engine-1/tests/test_exporters/__init__.py +4 -0
  676. nat_engine-1/tests/test_exporters/test_azuredevops_exporter.py +604 -0
  677. nat_engine-1/tests/test_exporters/test_bugzilla_exporter.py +485 -0
  678. nat_engine-1/tests/test_exporters/test_dedup.py +383 -0
  679. nat_engine-1/tests/test_exporters/test_exporter_loader.py +813 -0
  680. nat_engine-1/tests/test_exporters/test_finding_adapter.py +242 -0
  681. nat_engine-1/tests/test_exporters/test_github_exporter.py +400 -0
  682. nat_engine-1/tests/test_exporters/test_gitlab_exporter.py +487 -0
  683. nat_engine-1/tests/test_exporters/test_jira_exporter.py +296 -0
  684. nat_engine-1/tests/test_exporters/test_linear_exporter.py +313 -0
  685. nat_engine-1/tests/test_exporters/test_pagerduty_exporter.py +709 -0
  686. nat_engine-1/tests/test_exporters/test_sentry_exporter.py +535 -0
  687. nat_engine-1/tests/test_exporters/test_servicenow_exporter.py +537 -0
  688. nat_engine-1/tests/test_exporters/test_shortcut_exporter.py +483 -0
  689. nat_engine-1/tests/test_exporters/test_test_connection.py +544 -0
  690. nat_engine-1/tests/test_exporters/test_webhook_exporter.py +666 -0
  691. nat_engine-1/tests/test_formatters/__init__.py +4 -0
  692. nat_engine-1/tests/test_formatters/test_allure_formatter.py +172 -0
  693. nat_engine-1/tests/test_formatters/test_ctrf_formatter.py +173 -0
  694. nat_engine-1/tests/test_functional_orchestrator.py +528 -0
  695. nat_engine-1/tests/test_go_live_checklist.py +494 -0
  696. nat_engine-1/tests/test_grpc_e2e.py +603 -0
  697. nat_engine-1/tests/test_healing/__init__.py +17 -0
  698. nat_engine-1/tests/test_healing/test_cli_healing.py +156 -0
  699. nat_engine-1/tests/test_healing/test_healer.py +163 -0
  700. nat_engine-1/tests/test_healing/test_schema_diff.py +161 -0
  701. nat_engine-1/tests/test_healing/test_server_healing.py +108 -0
  702. nat_engine-1/tests/test_ingest_orchestrator.py +1381 -0
  703. nat_engine-1/tests/test_ingestor_bridge.py +491 -0
  704. nat_engine-1/tests/test_ingestors/__init__.py +4 -0
  705. nat_engine-1/tests/test_ingestors/test_bgstm_ingestor.py +926 -0
  706. nat_engine-1/tests/test_ingestors/test_curl_ingestor.py +1146 -0
  707. nat_engine-1/tests/test_ingestors/test_gherkin_ingestor.py +949 -0
  708. nat_engine-1/tests/test_ingestors/test_graphql_ingestor.py +723 -0
  709. nat_engine-1/tests/test_ingestors/test_grpc_ingestor.py +499 -0
  710. nat_engine-1/tests/test_ingestors/test_har_ingestor.py +1195 -0
  711. nat_engine-1/tests/test_ingestors/test_ingestor_base.py +430 -0
  712. nat_engine-1/tests/test_ingestors/test_ingestor_loader.py +449 -0
  713. nat_engine-1/tests/test_ingestors/test_openapi_ingestor.py +776 -0
  714. nat_engine-1/tests/test_ingestors/test_postman_ingestor.py +773 -0
  715. nat_engine-1/tests/test_ingestors/test_traffic_ingestor.py +415 -0
  716. nat_engine-1/tests/test_ingestors/test_websocket_ingestor.py +418 -0
  717. nat_engine-1/tests/test_integrations/__init__.py +18 -0
  718. nat_engine-1/tests/test_integrations/test_auth.py +84 -0
  719. nat_engine-1/tests/test_integrations/test_cli.py +876 -0
  720. nat_engine-1/tests/test_integrations/test_cli_graphql.py +148 -0
  721. nat_engine-1/tests/test_integrations/test_graphql_parser.py +218 -0
  722. nat_engine-1/tests/test_integrations/test_graphql_sut.py +186 -0
  723. nat_engine-1/tests/test_integrations/test_grpc_sut.py +215 -0
  724. nat_engine-1/tests/test_integrations/test_http_sut.py +193 -0
  725. nat_engine-1/tests/test_integrations/test_oauth2_auth.py +136 -0
  726. nat_engine-1/tests/test_integrations/test_openapi_parser.py +352 -0
  727. nat_engine-1/tests/test_integrations/test_postman_parser.py +698 -0
  728. nat_engine-1/tests/test_integrations/test_server_graphql.py +113 -0
  729. nat_engine-1/tests/test_integrations/test_websocket_sut.py +348 -0
  730. nat_engine-1/tests/test_llm/__init__.py +18 -0
  731. nat_engine-1/tests/test_llm/test_cli_llm.py +157 -0
  732. nat_engine-1/tests/test_llm/test_integration.py +236 -0
  733. nat_engine-1/tests/test_llm/test_nl_test_authoring.py +432 -0
  734. nat_engine-1/tests/test_llm/test_prompts.py +102 -0
  735. nat_engine-1/tests/test_llm/test_providers.py +297 -0
  736. nat_engine-1/tests/test_llm/test_root_cause_service.py +562 -0
  737. nat_engine-1/tests/test_llm/test_server_llm.py +137 -0
  738. nat_engine-1/tests/test_llm/test_test_plan_generator.py +590 -0
  739. nat_engine-1/tests/test_messaging.py +100 -0
  740. nat_engine-1/tests/test_nat_agents.py +292 -0
  741. nat_engine-1/tests/test_nat_orchestrator.py +99 -0
  742. nat_engine-1/tests/test_neural.py +134 -0
  743. nat_engine-1/tests/test_observability.py +344 -0
  744. nat_engine-1/tests/test_orchestration/__init__.py +4 -0
  745. nat_engine-1/tests/test_orchestration/test_ingest_scan_orchestrator.py +1189 -0
  746. nat_engine-1/tests/test_orchestrator.py +85 -0
  747. nat_engine-1/tests/test_pdf_export.py +238 -0
  748. nat_engine-1/tests/test_performance_testing.py +904 -0
  749. nat_engine-1/tests/test_persistence_pause_resume.py +618 -0
  750. nat_engine-1/tests/test_plans_api.py +243 -0
  751. nat_engine-1/tests/test_playwright_ingestor.py +515 -0
  752. nat_engine-1/tests/test_prioritization/__init__.py +18 -0
  753. nat_engine-1/tests/test_prioritization/test_adaptive_controller.py +288 -0
  754. nat_engine-1/tests/test_prioritization/test_belief_prioritizer.py +235 -0
  755. nat_engine-1/tests/test_prioritization/test_risk_scorer.py +387 -0
  756. nat_engine-1/tests/test_product_notifications.py +693 -0
  757. nat_engine-1/tests/test_quota_enforcement.py +1271 -0
  758. nat_engine-1/tests/test_regression/__init__.py +18 -0
  759. nat_engine-1/tests/test_regression/test_cli_regression.py +233 -0
  760. nat_engine-1/tests/test_regression/test_differ.py +177 -0
  761. nat_engine-1/tests/test_regression/test_masking.py +126 -0
  762. nat_engine-1/tests/test_regression/test_recorder.py +164 -0
  763. nat_engine-1/tests/test_regression/test_replayer.py +174 -0
  764. nat_engine-1/tests/test_regression/test_server_regression.py +245 -0
  765. nat_engine-1/tests/test_scenario_generator.py +1579 -0
  766. nat_engine-1/tests/test_scheduling/__init__.py +3 -0
  767. nat_engine-1/tests/test_scheduling/test_api.py +446 -0
  768. nat_engine-1/tests/test_scheduling/test_cron_utils.py +184 -0
  769. nat_engine-1/tests/test_scheduling/test_engine.py +337 -0
  770. nat_engine-1/tests/test_scheduling/test_models.py +156 -0
  771. nat_engine-1/tests/test_scheduling/test_schedule_dashboard.py +359 -0
  772. nat_engine-1/tests/test_scheduling/test_scheduler_integration.py +444 -0
  773. nat_engine-1/tests/test_scheduling/test_store.py +240 -0
  774. nat_engine-1/tests/test_security/__init__.py +17 -0
  775. nat_engine-1/tests/test_security/test_adaptive_cli.py +82 -0
  776. nat_engine-1/tests/test_security/test_belief_guided.py +257 -0
  777. nat_engine-1/tests/test_security/test_checks/__init__.py +17 -0
  778. nat_engine-1/tests/test_security/test_checks/test_bola.py +183 -0
  779. nat_engine-1/tests/test_security/test_checks/test_broken_auth.py +194 -0
  780. nat_engine-1/tests/test_security/test_checks/test_graphql_security.py +193 -0
  781. nat_engine-1/tests/test_security/test_checks/test_misconfig.py +270 -0
  782. nat_engine-1/tests/test_security/test_cli_security.py +297 -0
  783. nat_engine-1/tests/test_security/test_models.py +243 -0
  784. nat_engine-1/tests/test_security/test_plugin_loader.py +585 -0
  785. nat_engine-1/tests/test_security/test_reporter.py +254 -0
  786. nat_engine-1/tests/test_security/test_scanner.py +501 -0
  787. nat_engine-1/tests/test_security/test_server_security.py +509 -0
  788. nat_engine-1/tests/test_security_scenario_generator.py +1189 -0
  789. nat_engine-1/tests/test_server.py +989 -0
  790. nat_engine-1/tests/test_server_risk.py +284 -0
  791. nat_engine-1/tests/test_setup_wizard.py +345 -0
  792. nat_engine-1/tests/test_staging_status.py +242 -0
  793. nat_engine-1/tests/test_status.py +475 -0
  794. nat_engine-1/tests/test_stripe_billing.py +1083 -0
  795. nat_engine-1/tests/test_team_collaboration.py +1016 -0
  796. nat_engine-1/tests/test_telemetry.py +319 -0
  797. nat_engine-1/tests/test_tenant_isolation.py +444 -0
  798. nat_engine-1/tests/test_tenant_scoped_scans.py +505 -0
  799. nat_engine-1/tests/test_testing.py +163 -0
  800. nat_engine-1/tests/test_unified_report.py +571 -0
  801. nat_engine-1/tests/test_usage_metering.py +786 -0
  802. nat_engine-1/tests/test_visual_regression.py +487 -0
  803. nat_engine-1/tests/test_web_crawler_agent.py +879 -0
  804. nat_engine-1/tests/test_weights/__init__.py +17 -0
  805. nat_engine-1/tests/test_weights/test_blob_store.py +322 -0
  806. nat_engine-1/tests/test_weights/test_cli_weights.py +252 -0
  807. nat_engine-1/tests/test_weights/test_registry.py +135 -0
  808. nat_engine-1/tests/test_weights/test_server_weights.py +194 -0
  809. nat_engine-1/tests/test_weights/test_store.py +192 -0
  810. nat_engine-1/tests/test_worker_pool/__init__.py +3 -0
  811. nat_engine-1/tests/test_worker_pool/test_cli_worker.py +156 -0
  812. nat_engine-1/tests/test_worker_pool/test_job_queue.py +401 -0
  813. nat_engine-1/tests/test_worker_pool/test_worker_pool.py +334 -0
  814. nat_engine-1/tests/unit/__init__.py +0 -0
  815. nat_engine-1/tests/unit/product/__init__.py +0 -0
  816. nat_engine-1/tests/unit/product/test_database_url_warning.py +130 -0
  817. nat_engine-1/tests/unit/product/test_doctor.py +636 -0
  818. nat_engine-1/tests/unit/product/test_uninstall.py +235 -0
  819. nat_engine-1/tests/unit/product/test_upgrade.py +180 -0
  820. nat_engine-1/tests/unit/test_plans.py +499 -0
  821. nat_engine-1/website/.eslintrc.json +3 -0
  822. nat_engine-1/website/.gitignore +21 -0
  823. nat_engine-1/website/README.md +77 -0
  824. nat_engine-1/website/next.config.js +7 -0
  825. nat_engine-1/website/package-lock.json +6269 -0
  826. nat_engine-1/website/package.json +27 -0
  827. nat_engine-1/website/postcss.config.js +6 -0
  828. nat_engine-1/website/public/assets/dashboard-agents-dark.png +0 -0
  829. nat_engine-1/website/public/assets/dashboard-overview-top.png +0 -0
  830. nat_engine-1/website/public/assets/dashboard-security-detail.png +0 -0
  831. nat_engine-1/website/public/assets/dashboard-security.png +0 -0
  832. nat_engine-1/website/public/favicon-16x16.svg +15 -0
  833. nat_engine-1/website/public/favicon-32x32.svg +19 -0
  834. nat_engine-1/website/public/favicon.svg +18 -0
  835. nat_engine-1/website/public/og-image.svg +24 -0
  836. nat_engine-1/website/src/app/commercial-license/page.tsx +131 -0
  837. nat_engine-1/website/src/app/demo/DemoPageClient.tsx +721 -0
  838. nat_engine-1/website/src/app/demo/page.tsx +21 -0
  839. nat_engine-1/website/src/app/globals.css +76 -0
  840. nat_engine-1/website/src/app/layout.tsx +74 -0
  841. nat_engine-1/website/src/app/license/page.tsx +715 -0
  842. nat_engine-1/website/src/app/page.tsx +41 -0
  843. nat_engine-1/website/src/app/privacy/page.tsx +265 -0
  844. nat_engine-1/website/src/app/terms/page.tsx +264 -0
  845. nat_engine-1/website/src/components/ComparisonTable.tsx +186 -0
  846. nat_engine-1/website/src/components/CtaBanner.tsx +68 -0
  847. nat_engine-1/website/src/components/FAQ.tsx +162 -0
  848. nat_engine-1/website/src/components/Features.tsx +45 -0
  849. nat_engine-1/website/src/components/Footer.tsx +131 -0
  850. nat_engine-1/website/src/components/FunctionalFeatures.tsx +42 -0
  851. nat_engine-1/website/src/components/FunctionalPricing.tsx +108 -0
  852. nat_engine-1/website/src/components/Hero.tsx +161 -0
  853. nat_engine-1/website/src/components/HowItWorks.tsx +119 -0
  854. nat_engine-1/website/src/components/NatLogo.tsx +120 -0
  855. nat_engine-1/website/src/components/Navbar.tsx +207 -0
  856. nat_engine-1/website/src/components/PricingGrid.tsx +116 -0
  857. nat_engine-1/website/src/components/SaasOnboarding.tsx +141 -0
  858. nat_engine-1/website/src/components/ScanModules.tsx +66 -0
  859. nat_engine-1/website/src/components/Screenshots.tsx +228 -0
  860. nat_engine-1/website/src/components/StatsBar.tsx +57 -0
  861. nat_engine-1/website/src/data/products.ts +310 -0
  862. nat_engine-1/website/tailwind.config.ts +52 -0
  863. nat_engine-1/website/tsconfig.json +27 -0
  864. nat_engine-1/website/vercel.json +7 -0
@@ -0,0 +1,44 @@
1
+ # .dockerignore — exclude files not needed in the Docker build context
2
+
3
+ # Python cache and build artefacts
4
+ __pycache__/
5
+ *.py[cod]
6
+ *.pyo
7
+ *.pyd
8
+ .Python
9
+ *.egg-info/
10
+ dist/
11
+ build/
12
+ *.egg
13
+
14
+ # Development / test files
15
+ .pytest_cache/
16
+ .ruff_cache/
17
+ .mypy_cache/
18
+ htmlcov/
19
+ .coverage
20
+ *.log
21
+
22
+ # Version control
23
+ .git/
24
+ .gitignore
25
+
26
+ # Editor/IDE
27
+ .vscode/
28
+ .idea/
29
+ *.swp
30
+ *.swo
31
+ .DS_Store
32
+
33
+ # Documentation and non-essential assets
34
+ 1999_Doctoral_Thesis_Brad_Guider_DRAFT.docx
35
+ InitialResearch.md
36
+
37
+ # Docker files (avoid recursive context)
38
+ Dockerfile
39
+ docker-compose.yml
40
+ .dockerignore
41
+
42
+ # Test files (not needed at runtime)
43
+ tests/
44
+ examples/
@@ -0,0 +1,258 @@
1
+ # NAT (Neural Agent Testing Framework) — Environment Variables Reference
2
+ #
3
+ # Copy this file to .env and fill in the values for your environment:
4
+ #
5
+ # cp .env.example .env
6
+ # # Edit .env with your settings
7
+ #
8
+ # Variables marked (required) must be set for the relevant feature to work.
9
+ # Variables with a default value can be omitted to accept the default.
10
+
11
+ # ---------------------------------------------------------------------------
12
+ # Server / Core
13
+ # ---------------------------------------------------------------------------
14
+
15
+ # Bind address for the NAT HTTP server (default: 0.0.0.0)
16
+ NAT_HOST=0.0.0.0
17
+
18
+ # Port for the NAT HTTP server (default: 8080)
19
+ NAT_PORT=8080
20
+
21
+ # Log level: debug, info, warning, error (default: info)
22
+ NAT_LOG_LEVEL=info
23
+
24
+ # Number of Uvicorn worker processes (default: 1)
25
+ NAT_WORKERS=1
26
+
27
+ # Comma-separated list of allowed CORS origins (e.g. https://app.example.com)
28
+ NAT_CORS_ORIGINS=
29
+
30
+ # ---------------------------------------------------------------------------
31
+ # Database
32
+ # ---------------------------------------------------------------------------
33
+
34
+ # PostgreSQL async connection string (required for persistent storage).
35
+ # WITHOUT this, NAT runs in-memory and all scan data is lost on restart.
36
+ # Example: postgresql://user:password@localhost:5432/nat
37
+ DATABASE_URL=
38
+
39
+ # ---------------------------------------------------------------------------
40
+ # Authentication / API Keys
41
+ # ---------------------------------------------------------------------------
42
+
43
+ # API key for authenticating scan requests (X-API-Key header). (required)
44
+ NAT_API_KEY=
45
+
46
+ # Admin API key for tenant management endpoints (X-Admin-Key header). (required)
47
+ NAT_ADMIN_KEY=
48
+
49
+ # Internal app-sync key used for service-to-service calls.
50
+ NAT_APP_SYNC_KEY=
51
+
52
+ # ---------------------------------------------------------------------------
53
+ # Scan Queue / Rate Limiting
54
+ # ---------------------------------------------------------------------------
55
+
56
+ # Maximum number of scans that can run in parallel (default: 4)
57
+ NAT_MAX_CONCURRENT_SCANS=4
58
+
59
+ # Maximum number of scans allowed in the waiting queue (default: 20)
60
+ NAT_MAX_QUEUE_DEPTH=20
61
+
62
+ # Per-scan timeout in seconds before the scan is aborted (default: 300)
63
+ NAT_SCAN_TIMEOUT=300
64
+
65
+ # Global rate-limit for the scan API (e.g. 100/minute). Leave empty to disable.
66
+ NAT_RATE_LIMIT=100/minute
67
+
68
+ # ---------------------------------------------------------------------------
69
+ # Webhooks / Notifications
70
+ # ---------------------------------------------------------------------------
71
+
72
+ # Default webhook URL for delivering scan results.
73
+ NAT_WEBHOOK_URL=
74
+
75
+ # HMAC-SHA256 signing secret for outbound scan-result webhook payloads.
76
+ NAT_WEBHOOK_SECRET=
77
+
78
+ # Webhook URL for billing lifecycle events (subscription created, etc.).
79
+ NAT_BILLING_WEBHOOK_URL=
80
+
81
+ # HMAC signing secret for billing webhook payloads.
82
+ NAT_BILLING_WEBHOOK_SECRET=
83
+
84
+ # Signing secret for notification webhook payloads (Slack / Teams).
85
+ NAT_NOTIFICATION_WEBHOOK_SECRET=
86
+
87
+ # Slack incoming-webhook URL for scan notifications.
88
+ NAT_SLACK_WEBHOOK_URL=
89
+
90
+ # Microsoft Teams incoming-webhook URL for scan notifications.
91
+ NAT_TEAMS_WEBHOOK_URL=
92
+
93
+ # ---------------------------------------------------------------------------
94
+ # Billing (Stripe)
95
+ # ---------------------------------------------------------------------------
96
+
97
+ # Stripe secret API key (sk_live_… or sk_test_…). (required for billing)
98
+ STRIPE_SECRET_KEY=
99
+
100
+ # Stripe webhook endpoint signing secret (whsec_…). (required for billing)
101
+ STRIPE_WEBHOOK_SECRET=
102
+
103
+ # Stripe product IDs for each plan tier.
104
+ STRIPE_PRODUCT_ID_FREE=
105
+ STRIPE_PRODUCT_ID_PRO=
106
+ STRIPE_PRODUCT_ID_TEAM=
107
+ STRIPE_PRODUCT_ID_ENTERPRISE=
108
+ STRIPE_PRODUCT_ID_FUNCTIONAL=
109
+ STRIPE_PRODUCT_ID_PERFORMANCE=
110
+ STRIPE_PRODUCT_ID_VISUAL=
111
+ STRIPE_PRODUCT_ID_ACCESSIBILITY=
112
+
113
+ # Stripe price IDs for each plan tier.
114
+ STRIPE_PRICE_ID_FREE=
115
+ STRIPE_PRICE_ID_PRO=
116
+ STRIPE_PRICE_ID_TEAM=
117
+ STRIPE_PRICE_ID_ENTERPRISE=
118
+ STRIPE_PRICE_ID_FUNCTIONAL=
119
+ STRIPE_PRICE_ID_PERFORMANCE=
120
+ STRIPE_PRICE_ID_VISUAL=
121
+ STRIPE_PRICE_ID_ACCESSIBILITY=
122
+
123
+ # ---------------------------------------------------------------------------
124
+ # Telemetry / Monitoring
125
+ # ---------------------------------------------------------------------------
126
+
127
+ # Azure Application Insights connection string for telemetry.
128
+ APPLICATIONINSIGHTS_CONNECTION_STRING=
129
+
130
+ # Azure Blob Storage connection string for storing scan artefacts.
131
+ AZURE_STORAGE_CONNECTION_STRING=
132
+
133
+ # Azure Blob Storage account name (alternative to AZURE_STORAGE_CONNECTION_STRING).
134
+ AZURE_STORAGE_ACCOUNT_NAME=
135
+
136
+ # Azure Blob Storage account key (used together with AZURE_STORAGE_ACCOUNT_NAME).
137
+ AZURE_STORAGE_ACCOUNT_KEY=
138
+
139
+ # ---------------------------------------------------------------------------
140
+ # LLM Integration
141
+ # ---------------------------------------------------------------------------
142
+
143
+ # OpenAI API key — required when using --use-llm --llm-provider openai
144
+ OPENAI_API_KEY=
145
+
146
+ # Anthropic API key — required when using --use-llm --llm-provider anthropic
147
+ ANTHROPIC_API_KEY=
148
+
149
+ # ---------------------------------------------------------------------------
150
+ # Setup Wizard / CLI (non-interactive / CI mode)
151
+ # ---------------------------------------------------------------------------
152
+
153
+ # Deployment mode: saas, self-hosted, or cli (default: cli)
154
+ NAT_MODE=cli
155
+
156
+ # Path to the OpenAPI / Postman spec file to scan.
157
+ NAT_SPEC_PATH=
158
+
159
+ # Base URL of the API under test.
160
+ NAT_BASE_URL=
161
+
162
+ # Bearer token for authenticating requests to the API under test.
163
+ NAT_AUTH_TOKEN=
164
+
165
+ # Exporter to configure in non-interactive mode (e.g. jira, github-issues, gitlab).
166
+ NAT_EXPORT=
167
+
168
+ # ---------------------------------------------------------------------------
169
+ # Exporter: Jira
170
+ # ---------------------------------------------------------------------------
171
+
172
+ # Jira Cloud base URL (e.g. https://yourorg.atlassian.net).
173
+ NAT_JIRA_BASE_URL=
174
+
175
+ # Jira project key (e.g. NAT).
176
+ NAT_JIRA_PROJECT_KEY=
177
+
178
+ # Atlassian account email address.
179
+ NAT_JIRA_EMAIL=
180
+
181
+ # Atlassian API token (generate at id.atlassian.com/manage-profile/security/api-tokens).
182
+ NAT_JIRA_API_TOKEN=
183
+
184
+ # ---------------------------------------------------------------------------
185
+ # Exporter: GitHub Issues
186
+ # ---------------------------------------------------------------------------
187
+
188
+ # GitHub Personal Access Token with repo scope.
189
+ NAT_GITHUB_TOKEN=
190
+
191
+ # Target GitHub repository in owner/repo format (e.g. acme/api-service).
192
+ NAT_GITHUB_REPO=
193
+
194
+ # ---------------------------------------------------------------------------
195
+ # Exporter: GitLab Issues
196
+ # ---------------------------------------------------------------------------
197
+
198
+ # GitLab instance URL (e.g. https://gitlab.com).
199
+ NAT_GITLAB_URL=https://gitlab.com
200
+
201
+ # GitLab project ID (numeric).
202
+ NAT_GITLAB_PROJECT_ID=
203
+
204
+ # GitLab private token with api scope.
205
+ NAT_GITLAB_TOKEN=
206
+
207
+ # ---------------------------------------------------------------------------
208
+ # Exporter: Linear
209
+ # ---------------------------------------------------------------------------
210
+
211
+ # Linear API key.
212
+ NAT_LINEAR_API_KEY=
213
+
214
+ # Linear team ID to create issues in.
215
+ NAT_LINEAR_TEAM_ID=
216
+
217
+ # ---------------------------------------------------------------------------
218
+ # Exporter: Azure DevOps
219
+ # ---------------------------------------------------------------------------
220
+
221
+ # Azure DevOps organization name.
222
+ NAT_ADO_ORG=
223
+
224
+ # Azure DevOps project name.
225
+ NAT_ADO_PROJECT=
226
+
227
+ # Azure DevOps Personal Access Token.
228
+ NAT_ADO_PAT=
229
+
230
+ # ---------------------------------------------------------------------------
231
+ # Exporter: Shortcut (formerly Clubhouse)
232
+ # ---------------------------------------------------------------------------
233
+
234
+ # Shortcut API token.
235
+ NAT_SHORTCUT_TOKEN=
236
+
237
+ # Shortcut project ID to create stories in.
238
+ NAT_SHORTCUT_PROJECT_ID=
239
+
240
+ # ---------------------------------------------------------------------------
241
+ # Exporter: PagerDuty
242
+ # ---------------------------------------------------------------------------
243
+
244
+ # PagerDuty Events API v2 routing/integration key.
245
+ NAT_PAGERDUTY_ROUTING_KEY=
246
+
247
+ # ---------------------------------------------------------------------------
248
+ # Exporter: ServiceNow
249
+ # ---------------------------------------------------------------------------
250
+
251
+ # ServiceNow instance URL (e.g. https://yourinstance.service-now.com).
252
+ NAT_SERVICENOW_URL=
253
+
254
+ # ServiceNow username.
255
+ NAT_SERVICENOW_USER=
256
+
257
+ # ServiceNow password.
258
+ NAT_SERVICENOW_PASSWORD=
@@ -0,0 +1,114 @@
1
+ # Contributor License Agreement (CLA)
2
+
3
+ **NeuroAgentTest (NAT) — Multi-Agent Neural Network Framework**
4
+
5
+ Thank you for your interest in contributing to NeuroAgentTest (NAT). This
6
+ Contributor License Agreement ("Agreement") clarifies the intellectual
7
+ property rights granted with contributions to this project.
8
+
9
+ By submitting a contribution (a pull request, patch, or any other material)
10
+ to this repository, you agree to the following terms:
11
+
12
+ ---
13
+
14
+ ## 1. Definitions
15
+
16
+ - **"You"** means the individual or legal entity submitting a contribution.
17
+ - **"Contribution"** means any original work of authorship, including any
18
+ modifications or additions to existing work, submitted to this project.
19
+ - **"Project"** means the NeuroAgentTest (NAT) software and associated
20
+ documentation hosted at
21
+ [https://github.com/bg-playground/MultiAgent-Neural-Network-Framework](https://github.com/bg-playground/MultiAgent-Neural-Network-Framework).
22
+ - **"Maintainers"** means the current maintainers and copyright holders of
23
+ the Project.
24
+
25
+ ---
26
+
27
+ ## 2. Grant of Copyright License
28
+
29
+ You hereby grant to the Maintainers and to all recipients of software
30
+ distributed by the Project a **perpetual, worldwide, non-exclusive,
31
+ no-charge, royalty-free, irrevocable** copyright license to reproduce,
32
+ prepare derivative works of, publicly display, publicly perform,
33
+ sublicense, and distribute your Contributions and such derivative works.
34
+
35
+ ---
36
+
37
+ ## 3. Grant of Patent License
38
+
39
+ You hereby grant to the Maintainers and to all recipients of software
40
+ distributed by the Project a **perpetual, worldwide, non-exclusive,
41
+ no-charge, royalty-free, irrevocable** (except as stated in this section)
42
+ patent license to make, have made, use, offer to sell, sell, import, and
43
+ otherwise transfer the Project, where such license applies only to those
44
+ patent claims licensable by you that are necessarily infringed by your
45
+ Contribution(s) alone or by combination of your Contribution(s) with the
46
+ Project.
47
+
48
+ ---
49
+
50
+ ## 4. Right to Re-License
51
+
52
+ You grant the Maintainers the right to re-license your Contributions,
53
+ including under a proprietary or commercial license, as part of the
54
+ Project's dual-licensing model (AGPL-3.0 and Commercial License). This
55
+ allows the Maintainers to offer commercial licenses to third parties
56
+ without violating your rights or the open-source license.
57
+
58
+ ---
59
+
60
+ ## 5. Copyright Assignment
61
+
62
+ To the extent permitted by applicable law and as necessary to support the
63
+ dual-licensing model, you assign to the Maintainers all right, title, and
64
+ interest in your Contributions, including all copyright and related rights.
65
+ Where assignment is not permitted by law, you grant the broadest possible
66
+ license as described in Sections 2 and 3.
67
+
68
+ ---
69
+
70
+ ## 6. Representations
71
+
72
+ You represent that:
73
+
74
+ 1. **Original work**: Each Contribution is your original creation, or you
75
+ have sufficient rights to submit it under this Agreement.
76
+ 2. **No third-party restrictions**: Your Contribution does not include any
77
+ material that is subject to third-party intellectual property rights
78
+ (patents, copyrights, trade secrets) that would restrict the Maintainers'
79
+ ability to use, distribute, or re-license the Contribution.
80
+ 3. **Employment**: If your employer has rights to intellectual property you
81
+ create, you have received permission to make the Contribution on behalf
82
+ of your employer, or your employer has waived such rights.
83
+ 4. **Accuracy**: You agree to notify the Maintainers if any of these
84
+ representations become inaccurate.
85
+
86
+ ---
87
+
88
+ ## 7. No Obligation
89
+
90
+ Nothing in this Agreement obligates the Maintainers to accept, include, or
91
+ use your Contribution. Acceptance of this Agreement does not guarantee that
92
+ your Contribution will be merged.
93
+
94
+ ---
95
+
96
+ ## 8. How to Indicate Acceptance
97
+
98
+ By opening a pull request or submitting a patch to this repository, you
99
+ indicate that you have read, understood, and agree to the terms of this
100
+ Contributor License Agreement.
101
+
102
+ If you are contributing on behalf of an organization, the individual
103
+ submitting the contribution represents that they have authority to bind
104
+ the organization to this Agreement.
105
+
106
+ ---
107
+
108
+ ## Contact
109
+
110
+ For questions about this CLA, contact [licensing@nat-testing.io](mailto:licensing@nat-testing.io).
111
+
112
+ ---
113
+
114
+ See also: [README.md — License](README.md#license) · [CONTRIBUTING.md — License and CLA](docs/contributing.md#license-and-cla)
@@ -0,0 +1,175 @@
1
+ # NeuroAgentTest (NAT) — Multi-Agent Neural Network Framework
2
+ # Copyright (C) 2026 NAT Contributors
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU Affero General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU Affero General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Affero General Public License
15
+ # along with this program. If not, see <https://www.gnu.org/licenses/>.
16
+ #
17
+ # For commercial licensing, contact: licensing@nat-testing.io
18
+ ---
19
+ # .github/workflows/action-release.yml
20
+ # Publishes a new GitHub Marketplace release for the NAT GitHub Action when
21
+ # a version tag (v*, e.g. v1.2.3) is pushed.
22
+ #
23
+ # Release process:
24
+ # git tag v1.2.3 && git push origin v1.2.3
25
+ #
26
+ # The workflow will:
27
+ # 1. Run the action test suite
28
+ # 2. Validate the action.yml schema
29
+ # 3. Create a GitHub Release with auto-generated changelog
30
+ # 4. Force-update the major version tag (v1 → latest v1.x.x)
31
+
32
+ name: Action Release
33
+
34
+ on:
35
+ push:
36
+ tags:
37
+ - 'v*'
38
+ workflow_dispatch:
39
+ inputs:
40
+ tag:
41
+ description: 'Version tag to release (e.g. v1.2.3)'
42
+ required: true
43
+
44
+ jobs:
45
+ # ── 1. Run tests ──────────────────────────────────────────────────────────
46
+ test:
47
+ name: Test
48
+ runs-on: ubuntu-latest
49
+ permissions:
50
+ contents: read
51
+ steps:
52
+ - uses: actions/checkout@v4
53
+
54
+ - name: Set up Python
55
+ uses: actions/setup-python@v5
56
+ with:
57
+ python-version: '3.11'
58
+
59
+ - name: Install dependencies
60
+ run: pip install --quiet -e ".[dev]"
61
+
62
+ - name: Run action tests
63
+ run: python -m pytest tests/test_action/ -v --tb=short
64
+
65
+ # ── 2. Validate action.yml ────────────────────────────────────────────────
66
+ validate:
67
+ name: Validate action.yml
68
+ runs-on: ubuntu-latest
69
+ needs: test
70
+ permissions:
71
+ contents: read
72
+ steps:
73
+ - uses: actions/checkout@v4
74
+
75
+ - name: Validate action.yml exists and has required fields
76
+ run: |
77
+ python - <<'EOF'
78
+ import sys
79
+ try:
80
+ import yaml
81
+ except ImportError:
82
+ import subprocess
83
+ subprocess.check_call([sys.executable, "-m", "pip", "install", "pyyaml", "-q"])
84
+ import yaml
85
+
86
+ with open("action.yml") as f:
87
+ action = yaml.safe_load(f)
88
+
89
+ required = ["name", "description", "branding", "inputs", "outputs", "runs"]
90
+ for field in required:
91
+ if field not in action:
92
+ print(f"ERROR: action.yml missing required field: {field}")
93
+ sys.exit(1)
94
+
95
+ branding = action.get("branding", {})
96
+ if "icon" not in branding or "color" not in branding:
97
+ print("ERROR: action.yml branding must have 'icon' and 'color'")
98
+ sys.exit(1)
99
+
100
+ print("action.yml validation passed")
101
+ print(f" Name: {action['name']}")
102
+ print(f" Description: {action['description'][:80]}...")
103
+ print(f" Branding: icon={branding['icon']}, color={branding['color']}")
104
+ print(f" Inputs: {len(action['inputs'])}")
105
+ print(f" Outputs: {len(action['outputs'])}")
106
+ EOF
107
+
108
+ # ── 3. Create GitHub Release and update major version tag ────────────────
109
+ release:
110
+ name: Release
111
+ runs-on: ubuntu-latest
112
+ needs: [test, validate]
113
+ permissions:
114
+ contents: write
115
+ steps:
116
+ - uses: actions/checkout@v4
117
+ with:
118
+ fetch-depth: 0
119
+
120
+ - name: Determine version
121
+ id: version
122
+ run: |
123
+ TAG="${GITHUB_REF_NAME:-${{ github.event.inputs.tag }}}"
124
+ echo "tag=${TAG}" >> "${GITHUB_OUTPUT}"
125
+ # Extract major version (v1.2.3 → v1)
126
+ MAJOR=$(echo "${TAG}" | sed 's/\([^.]*\)\..*/\1/')
127
+ echo "major=${MAJOR}" >> "${GITHUB_OUTPUT}"
128
+ echo "Tag: ${TAG}, Major: ${MAJOR}"
129
+
130
+ - name: Generate changelog
131
+ id: changelog
132
+ run: |
133
+ TAG="${{ steps.version.outputs.tag }}"
134
+ PREV_TAG=$(git tag --sort=-version:refname | grep '^v' | sed -n '2p' || echo "")
135
+
136
+ if [[ -n "${PREV_TAG}" ]]; then
137
+ RANGE="${PREV_TAG}..${TAG}"
138
+ else
139
+ RANGE="${TAG}"
140
+ fi
141
+
142
+ echo "## What's Changed" > /tmp/changelog.md
143
+ echo "" >> /tmp/changelog.md
144
+ git log ${RANGE} --pretty=format:"- %s (%h)" --no-merges >> /tmp/changelog.md || true
145
+ echo "" >> /tmp/changelog.md
146
+ echo "" >> /tmp/changelog.md
147
+ echo "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${TAG}" >> /tmp/changelog.md
148
+ cat /tmp/changelog.md
149
+
150
+ - name: Create GitHub Release
151
+ env:
152
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
153
+ run: |
154
+ TAG="${{ steps.version.outputs.tag }}"
155
+ gh release create "${TAG}" \
156
+ --title "NAT Action ${TAG}" \
157
+ --notes-file /tmp/changelog.md \
158
+ --verify-tag
159
+
160
+ - name: Update major version tag
161
+ env:
162
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
163
+ run: |
164
+ TAG="${{ steps.version.outputs.tag }}"
165
+ MAJOR="${{ steps.version.outputs.major }}"
166
+
167
+ # Force-update the major version tag to point to this commit.
168
+ # This lets consumers use `nat-testing/nat-action@v1` and get the
169
+ # latest v1.x.x automatically.
170
+ git config user.name "github-actions[bot]"
171
+ git config user.email "github-actions[bot]@users.noreply.github.com"
172
+ git tag -fa "${MAJOR}" -m "Update ${MAJOR} to ${TAG}"
173
+ git push origin "${MAJOR}" --force
174
+
175
+ echo "✅ Updated ${MAJOR} → ${TAG}"