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.
- nat_engine-1/.dockerignore +44 -0
- nat_engine-1/.env.example +258 -0
- nat_engine-1/.github/CLA.md +114 -0
- nat_engine-1/.github/workflows/action-release.yml +175 -0
- nat_engine-1/.github/workflows/canary-promote.yml +337 -0
- nat_engine-1/.github/workflows/cla.yml +43 -0
- nat_engine-1/.github/workflows/deploy-azure.yml +286 -0
- nat_engine-1/.github/workflows/deploy-staging.yml +334 -0
- nat_engine-1/.github/workflows/deploy-website.yml +42 -0
- nat_engine-1/.github/workflows/docker-publish.yml +104 -0
- nat_engine-1/.github/workflows/e2e-regression.yml +184 -0
- nat_engine-1/.github/workflows/post-release.yml +332 -0
- nat_engine-1/.github/workflows/pre-release-check.yml +185 -0
- nat_engine-1/.github/workflows/release.yml +272 -0
- nat_engine-1/.github/workflows/smoke-tests.yml +154 -0
- nat_engine-1/.gitignore +26 -0
- nat_engine-1/CHANGELOG.md +214 -0
- nat_engine-1/CLA.md +114 -0
- nat_engine-1/CLA_SIGNATORIES.md +12 -0
- nat_engine-1/COMMERCIAL_LICENSE.md +76 -0
- nat_engine-1/CONTRIBUTING.md +60 -0
- nat_engine-1/Dockerfile +80 -0
- nat_engine-1/Dockerfile.demo +82 -0
- nat_engine-1/InitialResearch.md +420 -0
- nat_engine-1/LICENSE +651 -0
- nat_engine-1/MANIFEST.in +42 -0
- nat_engine-1/Makefile +74 -0
- nat_engine-1/NOTICE +178 -0
- nat_engine-1/PKG-INFO +555 -0
- nat_engine-1/Pre-Release-Notes +130 -0
- nat_engine-1/README.md +487 -0
- nat_engine-1/RELEASE_NOTES.md +33 -0
- nat_engine-1/SECURITY.md +126 -0
- nat_engine-1/action/Dockerfile +36 -0
- nat_engine-1/action/README.md +246 -0
- nat_engine-1/action/entrypoint.sh +135 -0
- nat_engine-1/action/parse_results.py +659 -0
- nat_engine-1/action.yml +227 -0
- nat_engine-1/alembic/env.py +86 -0
- nat_engine-1/alembic/versions/001_initial.py +83 -0
- nat_engine-1/alembic/versions/002_tenants_billing.py +102 -0
- nat_engine-1/alembic/versions/003_tenant_scoped_scans.py +73 -0
- nat_engine-1/alembic/versions/004_billing_events_concurrency.py +71 -0
- nat_engine-1/alembic/versions/005_tenant_notification_webhooks.py +48 -0
- nat_engine-1/alembic/versions/006_autonomous_runs.py +88 -0
- nat_engine-1/alembic/versions/007_dismissed_findings.py +64 -0
- nat_engine-1/alembic/versions/008_team_collaboration.py +164 -0
- nat_engine-1/alembic.ini +48 -0
- nat_engine-1/branding/README.md +191 -0
- nat_engine-1/branding/nat-logo-animated.svg +48 -0
- nat_engine-1/branding/nat-logo-mono.svg +13 -0
- nat_engine-1/branding/nat-logo.svg +18 -0
- nat_engine-1/branding/nat-logotype.svg +21 -0
- nat_engine-1/branding/og-image.svg +24 -0
- nat_engine-1/ci-templates/azure/README.md +179 -0
- nat_engine-1/ci-templates/azure/azure-pipelines-nat.yml +226 -0
- nat_engine-1/ci-templates/gitlab/.gitlab-ci-nat.yml +152 -0
- nat_engine-1/ci-templates/gitlab/README.md +143 -0
- nat_engine-1/ci-templates/jenkins/Jenkinsfile.example +61 -0
- nat_engine-1/ci-templates/jenkins/README.md +201 -0
- nat_engine-1/ci-templates/jenkins/vars/natScan.groovy +183 -0
- nat_engine-1/cicd/README.md +137 -0
- nat_engine-1/cicd/azure-devops/README.md +145 -0
- nat_engine-1/cicd/azure-devops/nat-scan.ps1 +172 -0
- nat_engine-1/cicd/azure-devops/task.json +131 -0
- nat_engine-1/cicd/examples/github-actions-example.yml +103 -0
- nat_engine-1/cicd/github-action/README.md +146 -0
- nat_engine-1/cicd/github-action/action.yml +105 -0
- nat_engine-1/cicd/github-action/entrypoint.sh +345 -0
- nat_engine-1/cicd/jenkins/README.md +175 -0
- nat_engine-1/cicd/jenkins/vars/natScan.groovy +198 -0
- nat_engine-1/demo.tape +34 -0
- nat_engine-1/deploy/azure/OIDC_SETUP.md +263 -0
- nat_engine-1/deploy/azure/README.md +1062 -0
- nat_engine-1/deploy/azure/SECRETS.md +100 -0
- nat_engine-1/deploy/azure/TROUBLESHOOTING.md +365 -0
- nat_engine-1/deploy/azure/container-app.yaml +135 -0
- nat_engine-1/deploy/azure/custom-domain.sh +184 -0
- nat_engine-1/deploy/azure/run-migrations.sh +36 -0
- nat_engine-1/deploy/azure/setup-db.sh +130 -0
- nat_engine-1/deploy/azure/setup.sh +258 -0
- nat_engine-1/deploy/azure/staging/container-app-staging.yaml +132 -0
- nat_engine-1/deploy/azure/staging/setup-staging.sh +263 -0
- nat_engine-1/deploy/azure/verify-domain.sh +241 -0
- nat_engine-1/deploy/azure/verify-oidc.sh +228 -0
- nat_engine-1/deploy/k8s/README.md +206 -0
- nat_engine-1/deploy/k8s/configmap.yaml +17 -0
- nat_engine-1/deploy/k8s/deployment.yaml +84 -0
- nat_engine-1/deploy/k8s/service.yaml +22 -0
- nat_engine-1/docker-compose.demo.yml +33 -0
- nat_engine-1/docker-compose.dev.yml +45 -0
- nat_engine-1/docker-compose.prod.yml +58 -0
- nat_engine-1/docker-compose.yml +72 -0
- nat_engine-1/docs/README.md +119 -0
- nat_engine-1/docs/api-reference/github-action.md +294 -0
- nat_engine-1/docs/api-reference/python-api.md +638 -0
- nat_engine-1/docs/api-reference/rest-api.md +980 -0
- nat_engine-1/docs/assets/.gitkeep +0 -0
- nat_engine-1/docs/assets/cli-scan-output.png +0 -0
- nat_engine-1/docs/assets/cli-security-output.png +0 -0
- nat_engine-1/docs/assets/dashboad-overview-00.png +0 -0
- nat_engine-1/docs/assets/dashboard-agents-02.png +0 -0
- nat_engine-1/docs/assets/dashboard-agents-03.png +0 -0
- nat_engine-1/docs/assets/dashboard-agents-dark.png +0 -0
- nat_engine-1/docs/assets/dashboard-dark-mode-off.png +0 -0
- nat_engine-1/docs/assets/dashboard-history.png +0 -0
- nat_engine-1/docs/assets/dashboard-overview-000.png +0 -0
- nat_engine-1/docs/assets/dashboard-overview-02.png +0 -0
- nat_engine-1/docs/assets/dashboard-overview-03.png +0 -0
- nat_engine-1/docs/assets/dashboard-overview-top.png +0 -0
- nat_engine-1/docs/assets/dashboard-security-detail.png +0 -0
- nat_engine-1/docs/assets/dashboard-security.png +0 -0
- nat_engine-1/docs/assets/demo-assets-manifest.json +11 -0
- nat_engine-1/docs/assets/security-detail.png +0 -0
- nat_engine-1/docs/changelog.md +274 -0
- nat_engine-1/docs/concepts/architecture.md +314 -0
- nat_engine-1/docs/concepts/bdi-agents.md +204 -0
- nat_engine-1/docs/concepts/ecnp-protocol.md +180 -0
- nat_engine-1/docs/concepts/neural-networks.md +317 -0
- nat_engine-1/docs/concepts/security-model.md +327 -0
- nat_engine-1/docs/contributing.md +448 -0
- nat_engine-1/docs/demo/README.md +200 -0
- nat_engine-1/docs/demo/report-template.html +1284 -0
- nat_engine-1/docs/demo/sample-reports/accessibility-report.json +125 -0
- nat_engine-1/docs/demo/sample-reports/functional-test-report.json +464 -0
- nat_engine-1/docs/demo/sample-reports/performance-report.json +164 -0
- nat_engine-1/docs/demo/sample-reports/security-scan-report.json +270 -0
- nat_engine-1/docs/demo/sample-reports/unified-report.json +139 -0
- nat_engine-1/docs/demo/sample-reports/visual-regression-report.json +186 -0
- nat_engine-1/docs/demos/orangehrm.md +312 -0
- nat_engine-1/docs/faq.md +310 -0
- nat_engine-1/docs/getting-started/first-scan.md +246 -0
- nat_engine-1/docs/getting-started/installation.md +307 -0
- nat_engine-1/docs/getting-started/quickstart.md +191 -0
- nat_engine-1/docs/getting-started/setup-wizard.md +223 -0
- nat_engine-1/docs/guides/authentication.md +953 -0
- nat_engine-1/docs/guides/belief-driven-prioritization.md +235 -0
- nat_engine-1/docs/guides/billing.md +775 -0
- nat_engine-1/docs/guides/ci-cd-integration.md +894 -0
- nat_engine-1/docs/guides/cli-reference.md +904 -0
- nat_engine-1/docs/guides/confidence-calibration.md +181 -0
- nat_engine-1/docs/guides/custom-check-plugins.md +347 -0
- nat_engine-1/docs/guides/dashboard.md +232 -0
- nat_engine-1/docs/guides/demo-mode.md +451 -0
- nat_engine-1/docs/guides/docker-deployment.md +485 -0
- nat_engine-1/docs/guides/e2e-billing-runbook.md +350 -0
- nat_engine-1/docs/guides/e2e-results-hub.md +199 -0
- nat_engine-1/docs/guides/exporter-plugins.md +852 -0
- nat_engine-1/docs/guides/graphql-testing.md +308 -0
- nat_engine-1/docs/guides/grpc-scanning.md +338 -0
- nat_engine-1/docs/guides/ingestor-plugins.md +970 -0
- nat_engine-1/docs/guides/llm-augmented-testing.md +238 -0
- nat_engine-1/docs/guides/metering.md +222 -0
- nat_engine-1/docs/guides/notifications.md +288 -0
- nat_engine-1/docs/guides/releasing.md +183 -0
- nat_engine-1/docs/guides/rest-api-testing.md +872 -0
- nat_engine-1/docs/guides/risk-scoring.md +374 -0
- nat_engine-1/docs/guides/scheduled-scans.md +437 -0
- nat_engine-1/docs/guides/security-scanning.md +400 -0
- nat_engine-1/docs/guides/self-healing-test-suites.md +257 -0
- nat_engine-1/docs/guides/testbed.md +141 -0
- nat_engine-1/docs/guides/transfer-learning.md +216 -0
- nat_engine-1/docs/guides/worker-pools.md +190 -0
- nat_engine-1/docs/how-to/customize-security-checks.md +277 -0
- nat_engine-1/docs/how-to/deploy-with-docker.md +402 -0
- nat_engine-1/docs/how-to/integrate-with-github-actions.md +447 -0
- nat_engine-1/docs/how-to/read-risk-reports.md +274 -0
- nat_engine-1/docs/how-to/run-security-audit.md +276 -0
- nat_engine-1/docs/how-to/setup-oauth2.md +282 -0
- nat_engine-1/docs/how-to/test-graphql-api.md +266 -0
- nat_engine-1/docs/how-to/test-openapi-spec.md +235 -0
- nat_engine-1/docs/ip/README.md +115 -0
- nat_engine-1/docs/ip/disclosure-001-bounded-belief-revision.md +344 -0
- nat_engine-1/docs/ip/disclosure-002-extended-contract-net-protocol.md +322 -0
- nat_engine-1/docs/ip/disclosure-003-adaptive-test-allocation.md +350 -0
- nat_engine-1/docs/ip/disclosure-004-multi-agent-bdi-architecture.md +404 -0
- nat_engine-1/docs/legal/licensing.md +187 -0
- nat_engine-1/docs/marketing/README.md +102 -0
- nat_engine-1/docs/marketing/demo-script.md +166 -0
- nat_engine-1/docs/marketing/feature-matrix.md +99 -0
- nat_engine-1/docs/marketing/launch-announcement.md +209 -0
- nat_engine-1/docs/sales/competitor-matrix.md +108 -0
- nat_engine-1/docs/sales/email-templates.md +264 -0
- nat_engine-1/docs/sales/ipad-demo-playbook.md +314 -0
- nat_engine-1/docs/sales/onboarding-faq.md +197 -0
- nat_engine-1/docs/sales/sales-playbook.md +187 -0
- nat_engine-1/docs/sales/value-proposition.md +95 -0
- nat_engine-1/docs/troubleshooting/auth-issues.md +252 -0
- nat_engine-1/docs/troubleshooting/ci-cd-issues.md +421 -0
- nat_engine-1/docs/troubleshooting/common-issues.md +274 -0
- nat_engine-1/docs/troubleshooting/connection-errors.md +265 -0
- nat_engine-1/docs/troubleshooting/docker-issues.md +416 -0
- nat_engine-1/docs/vision/functional-testing-saas.md +607 -0
- nat_engine-1/docs/whitepaper.md +699 -0
- nat_engine-1/e2e-results/coverage-matrix.md +33 -0
- nat_engine-1/e2e-results/latest.json +123 -0
- nat_engine-1/e2e-results/trend-report.html +210 -0
- nat_engine-1/examples/.natrc.example +243 -0
- nat_engine-1/examples/demo.py +172 -0
- nat_engine-1/examples/exporters/console_exporter.py +65 -0
- nat_engine-1/examples/graphql-schema.graphql +197 -0
- nat_engine-1/examples/ingestors/csv_ingestor.py +298 -0
- nat_engine-1/examples/petstore-openapi.yaml +567 -0
- nat_engine-1/examples/pipeline.yaml +75 -0
- nat_engine-1/examples/plugins/rate_limit_check.py +55 -0
- nat_engine-1/examples/python/basic_scan.py +206 -0
- nat_engine-1/examples/python/graphql_scan.py +215 -0
- nat_engine-1/examples/python/oauth2_scan.py +267 -0
- nat_engine-1/examples/python/security_audit.py +294 -0
- nat_engine-1/examples/workflows/README.md +79 -0
- nat_engine-1/examples/workflows/nat-example.yml +63 -0
- nat_engine-1/examples/workflows/nat-matrix.yml +81 -0
- nat_engine-1/examples/workflows/nat-pr-comment.yml +81 -0
- nat_engine-1/examples/workflows/nat-scheduled.yml +132 -0
- nat_engine-1/examples/workflows/nat-security-gate.yml +84 -0
- nat_engine-1/nginx/certs/README.md +16 -0
- nat_engine-1/nginx/nginx.conf +61 -0
- nat_engine-1/pyproject.toml +122 -0
- nat_engine-1/releases/v1.0.0.md +58 -0
- nat_engine-1/scripts/compare_manifests.py +333 -0
- nat_engine-1/scripts/demo.bat +115 -0
- nat_engine-1/scripts/demo.sh +130 -0
- nat_engine-1/scripts/demo_orangehrm.py +433 -0
- nat_engine-1/scripts/e2e_staging_validation.py +605 -0
- nat_engine-1/scripts/extract_demo_assets.py +234 -0
- nat_engine-1/scripts/generate_coverage_matrix.py +320 -0
- nat_engine-1/scripts/generate_manifest.py +309 -0
- nat_engine-1/scripts/generate_trend_report.py +434 -0
- nat_engine-1/scripts/go_live_checklist.py +843 -0
- nat_engine-1/scripts/pre_launch_check.py +298 -0
- nat_engine-1/scripts/prepare-release.sh +195 -0
- nat_engine-1/scripts/seed_demo_data.py +431 -0
- nat_engine-1/scripts/update_baseline.py +102 -0
- nat_engine-1/setup.cfg +4 -0
- nat_engine-1/src/mannf/__init__.py +33 -0
- nat_engine-1/src/mannf/__main__.py +10 -0
- nat_engine-1/src/mannf/_version.py +8 -0
- nat_engine-1/src/mannf/agents/__init__.py +7 -0
- nat_engine-1/src/mannf/agents/analyzer_agent.py +9 -0
- nat_engine-1/src/mannf/agents/base.py +9 -0
- nat_engine-1/src/mannf/agents/bdi_agent.py +9 -0
- nat_engine-1/src/mannf/agents/belief_state.py +9 -0
- nat_engine-1/src/mannf/agents/coordinator_agent.py +9 -0
- nat_engine-1/src/mannf/agents/executor_agent.py +9 -0
- nat_engine-1/src/mannf/agents/monitor_agent.py +9 -0
- nat_engine-1/src/mannf/agents/oracle_agent.py +9 -0
- nat_engine-1/src/mannf/agents/planner_agent.py +9 -0
- nat_engine-1/src/mannf/agents/test_agent.py +9 -0
- nat_engine-1/src/mannf/anomaly/__init__.py +7 -0
- nat_engine-1/src/mannf/anomaly/enhanced_detector.py +9 -0
- nat_engine-1/src/mannf/cli.py +9 -0
- nat_engine-1/src/mannf/core/__init__.py +26 -0
- nat_engine-1/src/mannf/core/agents/__init__.py +52 -0
- nat_engine-1/src/mannf/core/agents/accessibility_scanner_agent.py +245 -0
- nat_engine-1/src/mannf/core/agents/analyzer_agent.py +224 -0
- nat_engine-1/src/mannf/core/agents/autonomous_loop_agent.py +1086 -0
- nat_engine-1/src/mannf/core/agents/autonomous_loop_models.py +62 -0
- nat_engine-1/src/mannf/core/agents/autonomous_run_differ.py +427 -0
- nat_engine-1/src/mannf/core/agents/base.py +128 -0
- nat_engine-1/src/mannf/core/agents/bdi_agent.py +330 -0
- nat_engine-1/src/mannf/core/agents/belief_state.py +202 -0
- nat_engine-1/src/mannf/core/agents/browser_coordinator_agent.py +224 -0
- nat_engine-1/src/mannf/core/agents/browser_executor_agent.py +410 -0
- nat_engine-1/src/mannf/core/agents/coordinator_agent.py +262 -0
- nat_engine-1/src/mannf/core/agents/executor_agent.py +222 -0
- nat_engine-1/src/mannf/core/agents/monitor_agent.py +188 -0
- nat_engine-1/src/mannf/core/agents/oracle_agent.py +150 -0
- nat_engine-1/src/mannf/core/agents/performance_testing_agent.py +279 -0
- nat_engine-1/src/mannf/core/agents/planner_agent.py +128 -0
- nat_engine-1/src/mannf/core/agents/test_agent.py +249 -0
- nat_engine-1/src/mannf/core/agents/visual_regression_agent.py +311 -0
- nat_engine-1/src/mannf/core/agents/web_crawler_agent.py +510 -0
- nat_engine-1/src/mannf/core/agents/worker_pool.py +366 -0
- nat_engine-1/src/mannf/core/anomaly/__init__.py +14 -0
- nat_engine-1/src/mannf/core/anomaly/enhanced_detector.py +541 -0
- nat_engine-1/src/mannf/core/browser/__init__.py +63 -0
- nat_engine-1/src/mannf/core/browser/accessibility_scanner.py +424 -0
- nat_engine-1/src/mannf/core/browser/discovery_model.py +178 -0
- nat_engine-1/src/mannf/core/browser/dom_snapshot.py +349 -0
- nat_engine-1/src/mannf/core/browser/ingestor_bridge.py +371 -0
- nat_engine-1/src/mannf/core/browser/performance_metrics.py +217 -0
- nat_engine-1/src/mannf/core/browser/reflection_analyzer.py +442 -0
- nat_engine-1/src/mannf/core/browser/scenario_generator.py +1100 -0
- nat_engine-1/src/mannf/core/browser/security_scenario_generator.py +695 -0
- nat_engine-1/src/mannf/core/browser/visual_comparer.py +159 -0
- nat_engine-1/src/mannf/core/diagnostics/__init__.py +28 -0
- nat_engine-1/src/mannf/core/diagnostics/failure_clusterer.py +211 -0
- nat_engine-1/src/mannf/core/diagnostics/flake_detector.py +233 -0
- nat_engine-1/src/mannf/core/diagnostics/root_cause_analyzer.py +273 -0
- nat_engine-1/src/mannf/core/distributed/__init__.py +16 -0
- nat_engine-1/src/mannf/core/distributed/endpoint.py +139 -0
- nat_engine-1/src/mannf/core/distributed/system_under_test.py +207 -0
- nat_engine-1/src/mannf/core/functional_orchestrator.py +428 -0
- nat_engine-1/src/mannf/core/messaging/__init__.py +11 -0
- nat_engine-1/src/mannf/core/messaging/bus.py +113 -0
- nat_engine-1/src/mannf/core/messaging/messages.py +89 -0
- nat_engine-1/src/mannf/core/nat_orchestrator.py +342 -0
- nat_engine-1/src/mannf/core/neural/__init__.py +183 -0
- nat_engine-1/src/mannf/core/orchestrator.py +272 -0
- nat_engine-1/src/mannf/core/prioritization/__init__.py +17 -0
- nat_engine-1/src/mannf/core/prioritization/adaptive_controller.py +509 -0
- nat_engine-1/src/mannf/core/prioritization/belief_prioritizer.py +231 -0
- nat_engine-1/src/mannf/core/prioritization/risk_scorer.py +430 -0
- nat_engine-1/src/mannf/core/reporting/__init__.py +12 -0
- nat_engine-1/src/mannf/core/reporting/unified_report.py +664 -0
- nat_engine-1/src/mannf/core/testing/__init__.py +17 -0
- nat_engine-1/src/mannf/core/testing/adaptive_controller.py +149 -0
- nat_engine-1/src/mannf/core/testing/models.py +179 -0
- nat_engine-1/src/mannf/core/validation/__init__.py +10 -0
- nat_engine-1/src/mannf/core/validation/self_validation_runner.py +180 -0
- nat_engine-1/src/mannf/dashboard/__init__.py +7 -0
- nat_engine-1/src/mannf/dashboard/app.py +9 -0
- nat_engine-1/src/mannf/dashboard/models.py +9 -0
- nat_engine-1/src/mannf/dashboard/static/index.html +2538 -0
- nat_engine-1/src/mannf/dashboard/telemetry.py +9 -0
- nat_engine-1/src/mannf/distributed/__init__.py +7 -0
- nat_engine-1/src/mannf/distributed/endpoint.py +9 -0
- nat_engine-1/src/mannf/distributed/system_under_test.py +9 -0
- nat_engine-1/src/mannf/healing/__init__.py +7 -0
- nat_engine-1/src/mannf/healing/graphql_schema_diff.py +9 -0
- nat_engine-1/src/mannf/healing/healer.py +9 -0
- nat_engine-1/src/mannf/healing/models.py +9 -0
- nat_engine-1/src/mannf/healing/schema_diff.py +9 -0
- nat_engine-1/src/mannf/integrations/__init__.py +7 -0
- nat_engine-1/src/mannf/integrations/auth.py +9 -0
- nat_engine-1/src/mannf/integrations/graphql_parser.py +9 -0
- nat_engine-1/src/mannf/integrations/graphql_sut.py +9 -0
- nat_engine-1/src/mannf/integrations/http_sut.py +9 -0
- nat_engine-1/src/mannf/integrations/openapi_parser.py +9 -0
- nat_engine-1/src/mannf/integrations/postman_parser.py +9 -0
- nat_engine-1/src/mannf/llm/__init__.py +7 -0
- nat_engine-1/src/mannf/llm/anthropic_provider.py +9 -0
- nat_engine-1/src/mannf/llm/base.py +9 -0
- nat_engine-1/src/mannf/llm/config.py +9 -0
- nat_engine-1/src/mannf/llm/factory.py +9 -0
- nat_engine-1/src/mannf/llm/openai_provider.py +9 -0
- nat_engine-1/src/mannf/llm/prompts.py +9 -0
- nat_engine-1/src/mannf/messaging/__init__.py +7 -0
- nat_engine-1/src/mannf/messaging/bus.py +9 -0
- nat_engine-1/src/mannf/messaging/messages.py +9 -0
- nat_engine-1/src/mannf/nat_orchestrator.py +9 -0
- nat_engine-1/src/mannf/neural/__init__.py +7 -0
- nat_engine-1/src/mannf/orchestrator.py +9 -0
- nat_engine-1/src/mannf/prioritization/__init__.py +7 -0
- nat_engine-1/src/mannf/prioritization/adaptive_controller.py +9 -0
- nat_engine-1/src/mannf/prioritization/belief_prioritizer.py +9 -0
- nat_engine-1/src/mannf/prioritization/risk_scorer.py +9 -0
- nat_engine-1/src/mannf/product/__init__.py +29 -0
- nat_engine-1/src/mannf/product/admin/__init__.py +3 -0
- nat_engine-1/src/mannf/product/admin/routes.py +514 -0
- nat_engine-1/src/mannf/product/auth/__init__.py +5 -0
- nat_engine-1/src/mannf/product/auth/saml.py +212 -0
- nat_engine-1/src/mannf/product/billing/__init__.py +5 -0
- nat_engine-1/src/mannf/product/billing/audit.py +160 -0
- nat_engine-1/src/mannf/product/billing/feature_gates.py +180 -0
- nat_engine-1/src/mannf/product/billing/metering.py +179 -0
- nat_engine-1/src/mannf/product/billing/notifications.py +181 -0
- nat_engine-1/src/mannf/product/billing/plans.py +133 -0
- nat_engine-1/src/mannf/product/billing/rate_limits.py +35 -0
- nat_engine-1/src/mannf/product/billing/stripe_billing.py +906 -0
- nat_engine-1/src/mannf/product/billing/tenant_auth.py +233 -0
- nat_engine-1/src/mannf/product/billing/tenant_manager.py +873 -0
- nat_engine-1/src/mannf/product/cli.py +3900 -0
- nat_engine-1/src/mannf/product/cli_admin.py +408 -0
- nat_engine-1/src/mannf/product/dashboard/__init__.py +61 -0
- nat_engine-1/src/mannf/product/dashboard/app.py +3567 -0
- nat_engine-1/src/mannf/product/dashboard/models.py +460 -0
- nat_engine-1/src/mannf/product/dashboard/static/index.html +6347 -0
- nat_engine-1/src/mannf/product/dashboard/static/manifest.json +25 -0
- nat_engine-1/src/mannf/product/dashboard/static/pwa-icon-192.png +0 -0
- nat_engine-1/src/mannf/product/dashboard/static/pwa-icon-512.png +0 -0
- nat_engine-1/src/mannf/product/dashboard/static/sw.js +64 -0
- nat_engine-1/src/mannf/product/dashboard/telemetry.py +547 -0
- nat_engine-1/src/mannf/product/database.py +145 -0
- nat_engine-1/src/mannf/product/demo.py +844 -0
- nat_engine-1/src/mannf/product/doctor.py +509 -0
- nat_engine-1/src/mannf/product/exporters/__init__.py +65 -0
- nat_engine-1/src/mannf/product/exporters/azuredevops_exporter.py +257 -0
- nat_engine-1/src/mannf/product/exporters/base.py +307 -0
- nat_engine-1/src/mannf/product/exporters/bugzilla_exporter.py +200 -0
- nat_engine-1/src/mannf/product/exporters/dedup.py +275 -0
- nat_engine-1/src/mannf/product/exporters/finding_adapter.py +216 -0
- nat_engine-1/src/mannf/product/exporters/github_exporter.py +197 -0
- nat_engine-1/src/mannf/product/exporters/gitlab_exporter.py +215 -0
- nat_engine-1/src/mannf/product/exporters/jira_exporter.py +180 -0
- nat_engine-1/src/mannf/product/exporters/linear_exporter.py +195 -0
- nat_engine-1/src/mannf/product/exporters/loader.py +233 -0
- nat_engine-1/src/mannf/product/exporters/pagerduty_exporter.py +363 -0
- nat_engine-1/src/mannf/product/exporters/sentry_exporter.py +322 -0
- nat_engine-1/src/mannf/product/exporters/servicenow_exporter.py +240 -0
- nat_engine-1/src/mannf/product/exporters/shortcut_exporter.py +231 -0
- nat_engine-1/src/mannf/product/exporters/webhook_exporter.py +383 -0
- nat_engine-1/src/mannf/product/formatters/__init__.py +18 -0
- nat_engine-1/src/mannf/product/formatters/allure_formatter.py +161 -0
- nat_engine-1/src/mannf/product/formatters/ctrf_formatter.py +149 -0
- nat_engine-1/src/mannf/product/healing/__init__.py +30 -0
- nat_engine-1/src/mannf/product/healing/graphql_schema_diff.py +152 -0
- nat_engine-1/src/mannf/product/healing/healer.py +141 -0
- nat_engine-1/src/mannf/product/healing/models.py +175 -0
- nat_engine-1/src/mannf/product/healing/schema_diff.py +251 -0
- nat_engine-1/src/mannf/product/ingestors/__init__.py +77 -0
- nat_engine-1/src/mannf/product/ingestors/base.py +256 -0
- nat_engine-1/src/mannf/product/ingestors/bgstm_ingestor.py +764 -0
- nat_engine-1/src/mannf/product/ingestors/curl_ingestor.py +1019 -0
- nat_engine-1/src/mannf/product/ingestors/cypress_ingestor.py +487 -0
- nat_engine-1/src/mannf/product/ingestors/gherkin_ingestor.py +967 -0
- nat_engine-1/src/mannf/product/ingestors/graphql_ingestor.py +845 -0
- nat_engine-1/src/mannf/product/ingestors/grpc_ingestor.py +591 -0
- nat_engine-1/src/mannf/product/ingestors/har_ingestor.py +976 -0
- nat_engine-1/src/mannf/product/ingestors/loader.py +284 -0
- nat_engine-1/src/mannf/product/ingestors/models.py +146 -0
- nat_engine-1/src/mannf/product/ingestors/openapi_ingestor.py +606 -0
- nat_engine-1/src/mannf/product/ingestors/playwright_ingestor.py +449 -0
- nat_engine-1/src/mannf/product/ingestors/postman_ingestor.py +631 -0
- nat_engine-1/src/mannf/product/ingestors/traffic_ingestor.py +679 -0
- nat_engine-1/src/mannf/product/ingestors/websocket_ingestor.py +526 -0
- nat_engine-1/src/mannf/product/integrations/__init__.py +21 -0
- nat_engine-1/src/mannf/product/integrations/auth.py +190 -0
- nat_engine-1/src/mannf/product/integrations/graphql_parser.py +436 -0
- nat_engine-1/src/mannf/product/integrations/graphql_sut.py +247 -0
- nat_engine-1/src/mannf/product/integrations/grpc_sut.py +469 -0
- nat_engine-1/src/mannf/product/integrations/http_sut.py +237 -0
- nat_engine-1/src/mannf/product/integrations/kafka_adapter.py +342 -0
- nat_engine-1/src/mannf/product/integrations/openapi_parser.py +513 -0
- nat_engine-1/src/mannf/product/integrations/postman_parser.py +467 -0
- nat_engine-1/src/mannf/product/integrations/webhook_receiver.py +344 -0
- nat_engine-1/src/mannf/product/integrations/websocket_sut.py +434 -0
- nat_engine-1/src/mannf/product/llm/__init__.py +25 -0
- nat_engine-1/src/mannf/product/llm/anthropic_provider.py +94 -0
- nat_engine-1/src/mannf/product/llm/base.py +267 -0
- nat_engine-1/src/mannf/product/llm/config.py +48 -0
- nat_engine-1/src/mannf/product/llm/factory.py +42 -0
- nat_engine-1/src/mannf/product/llm/openai_provider.py +93 -0
- nat_engine-1/src/mannf/product/llm/prompts.py +403 -0
- nat_engine-1/src/mannf/product/llm/root_cause_service.py +311 -0
- nat_engine-1/src/mannf/product/llm/test_plan_models.py +78 -0
- nat_engine-1/src/mannf/product/metrics.py +149 -0
- nat_engine-1/src/mannf/product/middleware/__init__.py +3 -0
- nat_engine-1/src/mannf/product/middleware/audit_middleware.py +112 -0
- nat_engine-1/src/mannf/product/middleware/tenant_isolation.py +114 -0
- nat_engine-1/src/mannf/product/models.py +347 -0
- nat_engine-1/src/mannf/product/notifications/__init__.py +24 -0
- nat_engine-1/src/mannf/product/notifications/dispatcher.py +411 -0
- nat_engine-1/src/mannf/product/onboarding.py +190 -0
- nat_engine-1/src/mannf/product/orchestration/__init__.py +39 -0
- nat_engine-1/src/mannf/product/orchestration/ingest_scan_orchestrator.py +339 -0
- nat_engine-1/src/mannf/product/orchestration/pipeline.py +401 -0
- nat_engine-1/src/mannf/product/orchestrator.py +987 -0
- nat_engine-1/src/mannf/product/orchestrator_models.py +269 -0
- nat_engine-1/src/mannf/product/regression/__init__.py +36 -0
- nat_engine-1/src/mannf/product/regression/differ.py +172 -0
- nat_engine-1/src/mannf/product/regression/masking.py +100 -0
- nat_engine-1/src/mannf/product/regression/models.py +232 -0
- nat_engine-1/src/mannf/product/regression/recorder.py +124 -0
- nat_engine-1/src/mannf/product/regression/replayer.py +168 -0
- nat_engine-1/src/mannf/product/reports/__init__.py +10 -0
- nat_engine-1/src/mannf/product/reports/pdf.py +132 -0
- nat_engine-1/src/mannf/product/scheduling/__init__.py +57 -0
- nat_engine-1/src/mannf/product/scheduling/cron_utils.py +251 -0
- nat_engine-1/src/mannf/product/scheduling/engine.py +473 -0
- nat_engine-1/src/mannf/product/scheduling/models.py +86 -0
- nat_engine-1/src/mannf/product/scheduling/queue.py +894 -0
- nat_engine-1/src/mannf/product/scheduling/store.py +235 -0
- nat_engine-1/src/mannf/product/security/__init__.py +21 -0
- nat_engine-1/src/mannf/product/security/belief_guided.py +143 -0
- nat_engine-1/src/mannf/product/security/checks/__init__.py +55 -0
- nat_engine-1/src/mannf/product/security/checks/base.py +69 -0
- nat_engine-1/src/mannf/product/security/checks/bfla.py +77 -0
- nat_engine-1/src/mannf/product/security/checks/bola.py +77 -0
- nat_engine-1/src/mannf/product/security/checks/bopla.py +80 -0
- nat_engine-1/src/mannf/product/security/checks/broken_auth.py +86 -0
- nat_engine-1/src/mannf/product/security/checks/graphql_security.py +299 -0
- nat_engine-1/src/mannf/product/security/checks/inventory.py +70 -0
- nat_engine-1/src/mannf/product/security/checks/misconfig.py +158 -0
- nat_engine-1/src/mannf/product/security/checks/resource_consumption.py +70 -0
- nat_engine-1/src/mannf/product/security/checks/sensitive_flows.py +80 -0
- nat_engine-1/src/mannf/product/security/checks/ssrf.py +101 -0
- nat_engine-1/src/mannf/product/security/checks/unsafe_consumption.py +120 -0
- nat_engine-1/src/mannf/product/security/models.py +92 -0
- nat_engine-1/src/mannf/product/security/plugin_loader.py +182 -0
- nat_engine-1/src/mannf/product/security/reporter.py +92 -0
- nat_engine-1/src/mannf/product/security/scanner.py +183 -0
- nat_engine-1/src/mannf/product/server.py +6220 -0
- nat_engine-1/src/mannf/product/setup_wizard.py +873 -0
- nat_engine-1/src/mannf/product/status.py +404 -0
- nat_engine-1/src/mannf/product/storage/__init__.py +10 -0
- nat_engine-1/src/mannf/product/storage/artifact_store.py +343 -0
- nat_engine-1/src/mannf/product/telemetry.py +300 -0
- nat_engine-1/src/mannf/product/uninstall.py +169 -0
- nat_engine-1/src/mannf/product/upgrade.py +139 -0
- nat_engine-1/src/mannf/product/weights/__init__.py +13 -0
- nat_engine-1/src/mannf/product/weights/blob_store.py +299 -0
- nat_engine-1/src/mannf/product/weights/factory.py +42 -0
- nat_engine-1/src/mannf/product/weights/registry.py +159 -0
- nat_engine-1/src/mannf/product/weights/store.py +210 -0
- nat_engine-1/src/mannf/regression/__init__.py +7 -0
- nat_engine-1/src/mannf/regression/differ.py +9 -0
- nat_engine-1/src/mannf/regression/masking.py +9 -0
- nat_engine-1/src/mannf/regression/models.py +9 -0
- nat_engine-1/src/mannf/regression/recorder.py +9 -0
- nat_engine-1/src/mannf/regression/replayer.py +9 -0
- nat_engine-1/src/mannf/security/__init__.py +7 -0
- nat_engine-1/src/mannf/security/belief_guided.py +9 -0
- nat_engine-1/src/mannf/security/checks/__init__.py +7 -0
- nat_engine-1/src/mannf/security/checks/base.py +9 -0
- nat_engine-1/src/mannf/security/checks/bfla.py +9 -0
- nat_engine-1/src/mannf/security/checks/bola.py +9 -0
- nat_engine-1/src/mannf/security/checks/bopla.py +9 -0
- nat_engine-1/src/mannf/security/checks/broken_auth.py +9 -0
- nat_engine-1/src/mannf/security/checks/graphql_security.py +9 -0
- nat_engine-1/src/mannf/security/checks/inventory.py +9 -0
- nat_engine-1/src/mannf/security/checks/misconfig.py +9 -0
- nat_engine-1/src/mannf/security/checks/resource_consumption.py +9 -0
- nat_engine-1/src/mannf/security/checks/sensitive_flows.py +9 -0
- nat_engine-1/src/mannf/security/checks/ssrf.py +9 -0
- nat_engine-1/src/mannf/security/checks/unsafe_consumption.py +9 -0
- nat_engine-1/src/mannf/security/models.py +9 -0
- nat_engine-1/src/mannf/security/reporter.py +9 -0
- nat_engine-1/src/mannf/security/scanner.py +9 -0
- nat_engine-1/src/mannf/server.py +9 -0
- nat_engine-1/src/mannf/testing/__init__.py +7 -0
- nat_engine-1/src/mannf/testing/adaptive_controller.py +9 -0
- nat_engine-1/src/mannf/testing/models.py +9 -0
- nat_engine-1/src/mannf/weights/__init__.py +7 -0
- nat_engine-1/src/mannf/weights/registry.py +9 -0
- nat_engine-1/src/mannf/weights/store.py +9 -0
- nat_engine-1/src/nat_engine.egg-info/PKG-INFO +555 -0
- nat_engine-1/src/nat_engine.egg-info/SOURCES.txt +862 -0
- nat_engine-1/src/nat_engine.egg-info/dependency_links.txt +1 -0
- nat_engine-1/src/nat_engine.egg-info/entry_points.txt +4 -0
- nat_engine-1/src/nat_engine.egg-info/requires.txt +42 -0
- nat_engine-1/src/nat_engine.egg-info/top_level.txt +1 -0
- nat_engine-1/testbed/Dockerfile +7 -0
- nat_engine-1/testbed/README.md +117 -0
- nat_engine-1/testbed/__init__.py +0 -0
- nat_engine-1/testbed/app.py +583 -0
- nat_engine-1/testbed/conftest.py +20 -0
- nat_engine-1/testbed/docker-compose.yml +14 -0
- nat_engine-1/testbed/openapi_override.json +229 -0
- nat_engine-1/testbed/requirements.txt +10 -0
- nat_engine-1/testbed/static/style.css +102 -0
- nat_engine-1/testbed/templates/accessible.html +42 -0
- nat_engine-1/testbed/templates/base.html +22 -0
- nat_engine-1/testbed/templates/dashboard.html +38 -0
- nat_engine-1/testbed/templates/inaccessible.html +49 -0
- nat_engine-1/testbed/templates/login.html +23 -0
- nat_engine-1/testbed/templates/settings.html +31 -0
- nat_engine-1/testbed/templates/user_form.html +31 -0
- nat_engine-1/testbed/templates/users.html +28 -0
- nat_engine-1/testbed/tests/__init__.py +0 -0
- nat_engine-1/testbed/tests/test_vulnapi.py +231 -0
- nat_engine-1/testbed/vulnapi.proto +15 -0
- nat_engine-1/tests/__init__.py +18 -0
- nat_engine-1/tests/conftest.py +39 -0
- nat_engine-1/tests/e2e/__init__.py +4 -0
- nat_engine-1/tests/e2e/conftest.py +297 -0
- nat_engine-1/tests/e2e/dashboard/__init__.py +22 -0
- nat_engine-1/tests/e2e/dashboard/conftest.py +339 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/billing_panel.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/billing_plan_badge.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nav_billing.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nav_functional.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nav_history.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nav_overview.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nav_schedules.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nav_security.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nav_settings.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nav_team.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nav_test-plans.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nav_testing_collapsed.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nav_testing_section.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nl_description_filled.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/nl_generation_result.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/overview_default.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/overview_scan_count.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/pdf_button_visible.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/pdf_history_panel.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/plans_generate_btn.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/plans_nl_generated.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/plans_panel.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/responsive_breakpoint.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/responsive_desktop.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/responsive_mobile.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/responsive_sidebar_open.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/responsive_toggle.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/rootcause_after_fail.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/rootcause_api_verified.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/rootcause_panel.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/scans_export_buttons.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/scans_json_download.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/scans_panel.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/schedules_panel.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/security_findings_injected.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/security_panel.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/settings_panel.png +0 -0
- nat_engine-1/tests/e2e/dashboard/screenshots/team_panel.png +0 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_billing.py +102 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_nav.py +133 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_nl.py +102 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_overview.py +85 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_pdf.py +97 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_plans.py +106 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_responsive.py +166 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_rootcause.py +134 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_scans.py +132 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_schedules.py +176 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_security.py +115 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_settings.py +115 -0
- nat_engine-1/tests/e2e/dashboard/test_e2e_dashboard_team.py +87 -0
- nat_engine-1/tests/e2e/test_e2e_api.py +479 -0
- nat_engine-1/tests/e2e/test_e2e_demo.py +212 -0
- nat_engine-1/tests/e2e/test_e2e_exports.py +412 -0
- nat_engine-1/tests/e2e/test_e2e_nl_test.py +313 -0
- nat_engine-1/tests/e2e/test_e2e_plan.py +313 -0
- nat_engine-1/tests/e2e/test_e2e_scan_graphql.py +182 -0
- nat_engine-1/tests/e2e/test_e2e_scan_grpc.py +181 -0
- nat_engine-1/tests/e2e/test_e2e_scan_rest.py +283 -0
- nat_engine-1/tests/e2e/test_e2e_schedules.py +310 -0
- nat_engine-1/tests/smoke/README.md +186 -0
- nat_engine-1/tests/smoke/__init__.py +0 -0
- nat_engine-1/tests/smoke/conftest.py +177 -0
- nat_engine-1/tests/smoke/test_billing_increment.py +135 -0
- nat_engine-1/tests/smoke/test_dashboard.py +174 -0
- nat_engine-1/tests/smoke/test_functional_scan.py +154 -0
- nat_engine-1/tests/smoke/test_report_export.py +156 -0
- nat_engine-1/tests/smoke/test_security_scan.py +161 -0
- nat_engine-1/tests/smoke/test_signup_billing.py +190 -0
- nat_engine-1/tests/smoke/test_usage_metering.py +154 -0
- nat_engine-1/tests/test_accessibility_scanner.py +921 -0
- nat_engine-1/tests/test_action/__init__.py +17 -0
- nat_engine-1/tests/test_action/test_entrypoint.py +343 -0
- nat_engine-1/tests/test_action/test_parse_results.py +811 -0
- nat_engine-1/tests/test_admin/__init__.py +3 -0
- nat_engine-1/tests/test_admin/test_admin_api.py +422 -0
- nat_engine-1/tests/test_admin/test_cli_admin.py +483 -0
- nat_engine-1/tests/test_admin/test_tenant_manager.py +452 -0
- nat_engine-1/tests/test_agents.py +160 -0
- nat_engine-1/tests/test_anomaly/__init__.py +18 -0
- nat_engine-1/tests/test_anomaly/test_enhanced_detector.py +321 -0
- nat_engine-1/tests/test_artifact_blob.py +449 -0
- nat_engine-1/tests/test_auth_layer.py +509 -0
- nat_engine-1/tests/test_autonomous_loop.py +1149 -0
- nat_engine-1/tests/test_autonomous_run_differ.py +750 -0
- nat_engine-1/tests/test_belief_state.py +151 -0
- nat_engine-1/tests/test_billing_audit.py +426 -0
- nat_engine-1/tests/test_billing_bridge.py +1151 -0
- nat_engine-1/tests/test_billing_models.py +195 -0
- nat_engine-1/tests/test_billing_notifications.py +275 -0
- nat_engine-1/tests/test_billing_status.py +296 -0
- nat_engine-1/tests/test_browser_agent.py +536 -0
- nat_engine-1/tests/test_calibration.py +794 -0
- nat_engine-1/tests/test_canary_health.py +200 -0
- nat_engine-1/tests/test_cli_help.py +398 -0
- nat_engine-1/tests/test_concurrency_enforcement.py +384 -0
- nat_engine-1/tests/test_cypress_ingestor.py +783 -0
- nat_engine-1/tests/test_dashboard/__init__.py +17 -0
- nat_engine-1/tests/test_dashboard/test_bug_filing.py +341 -0
- nat_engine-1/tests/test_dashboard/test_dashboard_models.py +197 -0
- nat_engine-1/tests/test_dashboard/test_dashboard_routes.py +495 -0
- nat_engine-1/tests/test_dashboard/test_diagnostics_endpoints.py +493 -0
- nat_engine-1/tests/test_dashboard/test_telemetry.py +461 -0
- nat_engine-1/tests/test_dashboard_import.py +522 -0
- nat_engine-1/tests/test_dashboard_scenarios.py +542 -0
- nat_engine-1/tests/test_dashboard_ui.py +1345 -0
- nat_engine-1/tests/test_demo/__init__.py +18 -0
- nat_engine-1/tests/test_demo/test_cli_demo.py +547 -0
- nat_engine-1/tests/test_demo_mode.py +190 -0
- nat_engine-1/tests/test_demo_orangehrm.py +585 -0
- nat_engine-1/tests/test_demo_seeder.py +292 -0
- nat_engine-1/tests/test_diagnostics.py +576 -0
- nat_engine-1/tests/test_distributed.py +121 -0
- nat_engine-1/tests/test_e2e_billing_happy_path.py +1015 -0
- nat_engine-1/tests/test_e2e_billing_onboarding.py +980 -0
- nat_engine-1/tests/test_e2e_onboarding.py +612 -0
- nat_engine-1/tests/test_exporters/__init__.py +4 -0
- nat_engine-1/tests/test_exporters/test_azuredevops_exporter.py +604 -0
- nat_engine-1/tests/test_exporters/test_bugzilla_exporter.py +485 -0
- nat_engine-1/tests/test_exporters/test_dedup.py +383 -0
- nat_engine-1/tests/test_exporters/test_exporter_loader.py +813 -0
- nat_engine-1/tests/test_exporters/test_finding_adapter.py +242 -0
- nat_engine-1/tests/test_exporters/test_github_exporter.py +400 -0
- nat_engine-1/tests/test_exporters/test_gitlab_exporter.py +487 -0
- nat_engine-1/tests/test_exporters/test_jira_exporter.py +296 -0
- nat_engine-1/tests/test_exporters/test_linear_exporter.py +313 -0
- nat_engine-1/tests/test_exporters/test_pagerduty_exporter.py +709 -0
- nat_engine-1/tests/test_exporters/test_sentry_exporter.py +535 -0
- nat_engine-1/tests/test_exporters/test_servicenow_exporter.py +537 -0
- nat_engine-1/tests/test_exporters/test_shortcut_exporter.py +483 -0
- nat_engine-1/tests/test_exporters/test_test_connection.py +544 -0
- nat_engine-1/tests/test_exporters/test_webhook_exporter.py +666 -0
- nat_engine-1/tests/test_formatters/__init__.py +4 -0
- nat_engine-1/tests/test_formatters/test_allure_formatter.py +172 -0
- nat_engine-1/tests/test_formatters/test_ctrf_formatter.py +173 -0
- nat_engine-1/tests/test_functional_orchestrator.py +528 -0
- nat_engine-1/tests/test_go_live_checklist.py +494 -0
- nat_engine-1/tests/test_grpc_e2e.py +603 -0
- nat_engine-1/tests/test_healing/__init__.py +17 -0
- nat_engine-1/tests/test_healing/test_cli_healing.py +156 -0
- nat_engine-1/tests/test_healing/test_healer.py +163 -0
- nat_engine-1/tests/test_healing/test_schema_diff.py +161 -0
- nat_engine-1/tests/test_healing/test_server_healing.py +108 -0
- nat_engine-1/tests/test_ingest_orchestrator.py +1381 -0
- nat_engine-1/tests/test_ingestor_bridge.py +491 -0
- nat_engine-1/tests/test_ingestors/__init__.py +4 -0
- nat_engine-1/tests/test_ingestors/test_bgstm_ingestor.py +926 -0
- nat_engine-1/tests/test_ingestors/test_curl_ingestor.py +1146 -0
- nat_engine-1/tests/test_ingestors/test_gherkin_ingestor.py +949 -0
- nat_engine-1/tests/test_ingestors/test_graphql_ingestor.py +723 -0
- nat_engine-1/tests/test_ingestors/test_grpc_ingestor.py +499 -0
- nat_engine-1/tests/test_ingestors/test_har_ingestor.py +1195 -0
- nat_engine-1/tests/test_ingestors/test_ingestor_base.py +430 -0
- nat_engine-1/tests/test_ingestors/test_ingestor_loader.py +449 -0
- nat_engine-1/tests/test_ingestors/test_openapi_ingestor.py +776 -0
- nat_engine-1/tests/test_ingestors/test_postman_ingestor.py +773 -0
- nat_engine-1/tests/test_ingestors/test_traffic_ingestor.py +415 -0
- nat_engine-1/tests/test_ingestors/test_websocket_ingestor.py +418 -0
- nat_engine-1/tests/test_integrations/__init__.py +18 -0
- nat_engine-1/tests/test_integrations/test_auth.py +84 -0
- nat_engine-1/tests/test_integrations/test_cli.py +876 -0
- nat_engine-1/tests/test_integrations/test_cli_graphql.py +148 -0
- nat_engine-1/tests/test_integrations/test_graphql_parser.py +218 -0
- nat_engine-1/tests/test_integrations/test_graphql_sut.py +186 -0
- nat_engine-1/tests/test_integrations/test_grpc_sut.py +215 -0
- nat_engine-1/tests/test_integrations/test_http_sut.py +193 -0
- nat_engine-1/tests/test_integrations/test_oauth2_auth.py +136 -0
- nat_engine-1/tests/test_integrations/test_openapi_parser.py +352 -0
- nat_engine-1/tests/test_integrations/test_postman_parser.py +698 -0
- nat_engine-1/tests/test_integrations/test_server_graphql.py +113 -0
- nat_engine-1/tests/test_integrations/test_websocket_sut.py +348 -0
- nat_engine-1/tests/test_llm/__init__.py +18 -0
- nat_engine-1/tests/test_llm/test_cli_llm.py +157 -0
- nat_engine-1/tests/test_llm/test_integration.py +236 -0
- nat_engine-1/tests/test_llm/test_nl_test_authoring.py +432 -0
- nat_engine-1/tests/test_llm/test_prompts.py +102 -0
- nat_engine-1/tests/test_llm/test_providers.py +297 -0
- nat_engine-1/tests/test_llm/test_root_cause_service.py +562 -0
- nat_engine-1/tests/test_llm/test_server_llm.py +137 -0
- nat_engine-1/tests/test_llm/test_test_plan_generator.py +590 -0
- nat_engine-1/tests/test_messaging.py +100 -0
- nat_engine-1/tests/test_nat_agents.py +292 -0
- nat_engine-1/tests/test_nat_orchestrator.py +99 -0
- nat_engine-1/tests/test_neural.py +134 -0
- nat_engine-1/tests/test_observability.py +344 -0
- nat_engine-1/tests/test_orchestration/__init__.py +4 -0
- nat_engine-1/tests/test_orchestration/test_ingest_scan_orchestrator.py +1189 -0
- nat_engine-1/tests/test_orchestrator.py +85 -0
- nat_engine-1/tests/test_pdf_export.py +238 -0
- nat_engine-1/tests/test_performance_testing.py +904 -0
- nat_engine-1/tests/test_persistence_pause_resume.py +618 -0
- nat_engine-1/tests/test_plans_api.py +243 -0
- nat_engine-1/tests/test_playwright_ingestor.py +515 -0
- nat_engine-1/tests/test_prioritization/__init__.py +18 -0
- nat_engine-1/tests/test_prioritization/test_adaptive_controller.py +288 -0
- nat_engine-1/tests/test_prioritization/test_belief_prioritizer.py +235 -0
- nat_engine-1/tests/test_prioritization/test_risk_scorer.py +387 -0
- nat_engine-1/tests/test_product_notifications.py +693 -0
- nat_engine-1/tests/test_quota_enforcement.py +1271 -0
- nat_engine-1/tests/test_regression/__init__.py +18 -0
- nat_engine-1/tests/test_regression/test_cli_regression.py +233 -0
- nat_engine-1/tests/test_regression/test_differ.py +177 -0
- nat_engine-1/tests/test_regression/test_masking.py +126 -0
- nat_engine-1/tests/test_regression/test_recorder.py +164 -0
- nat_engine-1/tests/test_regression/test_replayer.py +174 -0
- nat_engine-1/tests/test_regression/test_server_regression.py +245 -0
- nat_engine-1/tests/test_scenario_generator.py +1579 -0
- nat_engine-1/tests/test_scheduling/__init__.py +3 -0
- nat_engine-1/tests/test_scheduling/test_api.py +446 -0
- nat_engine-1/tests/test_scheduling/test_cron_utils.py +184 -0
- nat_engine-1/tests/test_scheduling/test_engine.py +337 -0
- nat_engine-1/tests/test_scheduling/test_models.py +156 -0
- nat_engine-1/tests/test_scheduling/test_schedule_dashboard.py +359 -0
- nat_engine-1/tests/test_scheduling/test_scheduler_integration.py +444 -0
- nat_engine-1/tests/test_scheduling/test_store.py +240 -0
- nat_engine-1/tests/test_security/__init__.py +17 -0
- nat_engine-1/tests/test_security/test_adaptive_cli.py +82 -0
- nat_engine-1/tests/test_security/test_belief_guided.py +257 -0
- nat_engine-1/tests/test_security/test_checks/__init__.py +17 -0
- nat_engine-1/tests/test_security/test_checks/test_bola.py +183 -0
- nat_engine-1/tests/test_security/test_checks/test_broken_auth.py +194 -0
- nat_engine-1/tests/test_security/test_checks/test_graphql_security.py +193 -0
- nat_engine-1/tests/test_security/test_checks/test_misconfig.py +270 -0
- nat_engine-1/tests/test_security/test_cli_security.py +297 -0
- nat_engine-1/tests/test_security/test_models.py +243 -0
- nat_engine-1/tests/test_security/test_plugin_loader.py +585 -0
- nat_engine-1/tests/test_security/test_reporter.py +254 -0
- nat_engine-1/tests/test_security/test_scanner.py +501 -0
- nat_engine-1/tests/test_security/test_server_security.py +509 -0
- nat_engine-1/tests/test_security_scenario_generator.py +1189 -0
- nat_engine-1/tests/test_server.py +989 -0
- nat_engine-1/tests/test_server_risk.py +284 -0
- nat_engine-1/tests/test_setup_wizard.py +345 -0
- nat_engine-1/tests/test_staging_status.py +242 -0
- nat_engine-1/tests/test_status.py +475 -0
- nat_engine-1/tests/test_stripe_billing.py +1083 -0
- nat_engine-1/tests/test_team_collaboration.py +1016 -0
- nat_engine-1/tests/test_telemetry.py +319 -0
- nat_engine-1/tests/test_tenant_isolation.py +444 -0
- nat_engine-1/tests/test_tenant_scoped_scans.py +505 -0
- nat_engine-1/tests/test_testing.py +163 -0
- nat_engine-1/tests/test_unified_report.py +571 -0
- nat_engine-1/tests/test_usage_metering.py +786 -0
- nat_engine-1/tests/test_visual_regression.py +487 -0
- nat_engine-1/tests/test_web_crawler_agent.py +879 -0
- nat_engine-1/tests/test_weights/__init__.py +17 -0
- nat_engine-1/tests/test_weights/test_blob_store.py +322 -0
- nat_engine-1/tests/test_weights/test_cli_weights.py +252 -0
- nat_engine-1/tests/test_weights/test_registry.py +135 -0
- nat_engine-1/tests/test_weights/test_server_weights.py +194 -0
- nat_engine-1/tests/test_weights/test_store.py +192 -0
- nat_engine-1/tests/test_worker_pool/__init__.py +3 -0
- nat_engine-1/tests/test_worker_pool/test_cli_worker.py +156 -0
- nat_engine-1/tests/test_worker_pool/test_job_queue.py +401 -0
- nat_engine-1/tests/test_worker_pool/test_worker_pool.py +334 -0
- nat_engine-1/tests/unit/__init__.py +0 -0
- nat_engine-1/tests/unit/product/__init__.py +0 -0
- nat_engine-1/tests/unit/product/test_database_url_warning.py +130 -0
- nat_engine-1/tests/unit/product/test_doctor.py +636 -0
- nat_engine-1/tests/unit/product/test_uninstall.py +235 -0
- nat_engine-1/tests/unit/product/test_upgrade.py +180 -0
- nat_engine-1/tests/unit/test_plans.py +499 -0
- nat_engine-1/website/.eslintrc.json +3 -0
- nat_engine-1/website/.gitignore +21 -0
- nat_engine-1/website/README.md +77 -0
- nat_engine-1/website/next.config.js +7 -0
- nat_engine-1/website/package-lock.json +6269 -0
- nat_engine-1/website/package.json +27 -0
- nat_engine-1/website/postcss.config.js +6 -0
- nat_engine-1/website/public/assets/dashboard-agents-dark.png +0 -0
- nat_engine-1/website/public/assets/dashboard-overview-top.png +0 -0
- nat_engine-1/website/public/assets/dashboard-security-detail.png +0 -0
- nat_engine-1/website/public/assets/dashboard-security.png +0 -0
- nat_engine-1/website/public/favicon-16x16.svg +15 -0
- nat_engine-1/website/public/favicon-32x32.svg +19 -0
- nat_engine-1/website/public/favicon.svg +18 -0
- nat_engine-1/website/public/og-image.svg +24 -0
- nat_engine-1/website/src/app/commercial-license/page.tsx +131 -0
- nat_engine-1/website/src/app/demo/DemoPageClient.tsx +721 -0
- nat_engine-1/website/src/app/demo/page.tsx +21 -0
- nat_engine-1/website/src/app/globals.css +76 -0
- nat_engine-1/website/src/app/layout.tsx +74 -0
- nat_engine-1/website/src/app/license/page.tsx +715 -0
- nat_engine-1/website/src/app/page.tsx +41 -0
- nat_engine-1/website/src/app/privacy/page.tsx +265 -0
- nat_engine-1/website/src/app/terms/page.tsx +264 -0
- nat_engine-1/website/src/components/ComparisonTable.tsx +186 -0
- nat_engine-1/website/src/components/CtaBanner.tsx +68 -0
- nat_engine-1/website/src/components/FAQ.tsx +162 -0
- nat_engine-1/website/src/components/Features.tsx +45 -0
- nat_engine-1/website/src/components/Footer.tsx +131 -0
- nat_engine-1/website/src/components/FunctionalFeatures.tsx +42 -0
- nat_engine-1/website/src/components/FunctionalPricing.tsx +108 -0
- nat_engine-1/website/src/components/Hero.tsx +161 -0
- nat_engine-1/website/src/components/HowItWorks.tsx +119 -0
- nat_engine-1/website/src/components/NatLogo.tsx +120 -0
- nat_engine-1/website/src/components/Navbar.tsx +207 -0
- nat_engine-1/website/src/components/PricingGrid.tsx +116 -0
- nat_engine-1/website/src/components/SaasOnboarding.tsx +141 -0
- nat_engine-1/website/src/components/ScanModules.tsx +66 -0
- nat_engine-1/website/src/components/Screenshots.tsx +228 -0
- nat_engine-1/website/src/components/StatsBar.tsx +57 -0
- nat_engine-1/website/src/data/products.ts +310 -0
- nat_engine-1/website/tailwind.config.ts +52 -0
- nat_engine-1/website/tsconfig.json +27 -0
- 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}"
|