nat-engine 1.0.5__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.0.5/.dockerignore +44 -0
- nat_engine-1.0.5/CHANGELOG.md +179 -0
- nat_engine-1.0.5/CLA.md +114 -0
- nat_engine-1.0.5/COMMERCIAL_LICENSE.md +76 -0
- nat_engine-1.0.5/CONTRIBUTING.md +60 -0
- nat_engine-1.0.5/Dockerfile +77 -0
- nat_engine-1.0.5/LICENSE +651 -0
- nat_engine-1.0.5/MANIFEST.in +42 -0
- nat_engine-1.0.5/NOTICE +178 -0
- nat_engine-1.0.5/PKG-INFO +441 -0
- nat_engine-1.0.5/README.md +381 -0
- nat_engine-1.0.5/action/Dockerfile +36 -0
- nat_engine-1.0.5/action/README.md +246 -0
- nat_engine-1.0.5/action/entrypoint.sh +90 -0
- nat_engine-1.0.5/action/parse_results.py +430 -0
- nat_engine-1.0.5/action.yml +227 -0
- nat_engine-1.0.5/ci-templates/azure/README.md +179 -0
- nat_engine-1.0.5/ci-templates/azure/azure-pipelines-nat.yml +226 -0
- nat_engine-1.0.5/ci-templates/gitlab/.gitlab-ci-nat.yml +152 -0
- nat_engine-1.0.5/ci-templates/gitlab/README.md +143 -0
- nat_engine-1.0.5/ci-templates/jenkins/Jenkinsfile.example +61 -0
- nat_engine-1.0.5/ci-templates/jenkins/README.md +201 -0
- nat_engine-1.0.5/ci-templates/jenkins/vars/natScan.groovy +183 -0
- nat_engine-1.0.5/deploy/azure/container-app.yaml +135 -0
- nat_engine-1.0.5/deploy/k8s/configmap.yaml +17 -0
- nat_engine-1.0.5/deploy/k8s/deployment.yaml +84 -0
- nat_engine-1.0.5/deploy/k8s/service.yaml +22 -0
- nat_engine-1.0.5/docker-compose.dev.yml +45 -0
- nat_engine-1.0.5/docker-compose.prod.yml +58 -0
- nat_engine-1.0.5/docker-compose.yml +72 -0
- nat_engine-1.0.5/docs/README.md +123 -0
- nat_engine-1.0.5/docs/api-reference/github-action.md +284 -0
- nat_engine-1.0.5/docs/api-reference/python-api.md +638 -0
- nat_engine-1.0.5/docs/api-reference/rest-api.md +980 -0
- nat_engine-1.0.5/docs/assets/cli-scan-output.png +0 -0
- nat_engine-1.0.5/docs/assets/cli-security-output.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboad-overview-00.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboard-agents-02.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboard-agents-03.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboard-agents-dark.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboard-dark-mode-off.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboard-history.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboard-overview-000.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboard-overview-02.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboard-overview-03.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboard-overview-top.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboard-security-detail.png +0 -0
- nat_engine-1.0.5/docs/assets/dashboard-security.png +0 -0
- nat_engine-1.0.5/docs/assets/security-detail.png +0 -0
- nat_engine-1.0.5/docs/changelog.md +223 -0
- nat_engine-1.0.5/docs/concepts/architecture.md +314 -0
- nat_engine-1.0.5/docs/concepts/bdi-agents.md +204 -0
- nat_engine-1.0.5/docs/concepts/ecnp-protocol.md +180 -0
- nat_engine-1.0.5/docs/concepts/neural-networks.md +317 -0
- nat_engine-1.0.5/docs/concepts/security-model.md +327 -0
- nat_engine-1.0.5/docs/contributing.md +448 -0
- nat_engine-1.0.5/docs/demo/README.md +200 -0
- nat_engine-1.0.5/docs/faq.md +310 -0
- nat_engine-1.0.5/docs/getting-started/first-scan.md +246 -0
- nat_engine-1.0.5/docs/getting-started/installation.md +234 -0
- nat_engine-1.0.5/docs/getting-started/quickstart.md +166 -0
- nat_engine-1.0.5/docs/guides/authentication.md +953 -0
- nat_engine-1.0.5/docs/guides/belief-driven-prioritization.md +235 -0
- nat_engine-1.0.5/docs/guides/billing.md +775 -0
- nat_engine-1.0.5/docs/guides/ci-cd-integration.md +725 -0
- nat_engine-1.0.5/docs/guides/cli-reference.md +509 -0
- nat_engine-1.0.5/docs/guides/custom-check-plugins.md +347 -0
- nat_engine-1.0.5/docs/guides/dashboard.md +232 -0
- nat_engine-1.0.5/docs/guides/demo-mode.md +449 -0
- nat_engine-1.0.5/docs/guides/docker-deployment.md +485 -0
- nat_engine-1.0.5/docs/guides/e2e-billing-runbook.md +350 -0
- nat_engine-1.0.5/docs/guides/exporter-plugins.md +543 -0
- nat_engine-1.0.5/docs/guides/graphql-testing.md +308 -0
- nat_engine-1.0.5/docs/guides/ingestor-plugins.md +970 -0
- nat_engine-1.0.5/docs/guides/llm-augmented-testing.md +238 -0
- nat_engine-1.0.5/docs/guides/metering.md +222 -0
- nat_engine-1.0.5/docs/guides/notifications.md +288 -0
- nat_engine-1.0.5/docs/guides/releasing.md +183 -0
- nat_engine-1.0.5/docs/guides/rest-api-testing.md +872 -0
- nat_engine-1.0.5/docs/guides/risk-scoring.md +374 -0
- nat_engine-1.0.5/docs/guides/scheduled-scans.md +437 -0
- nat_engine-1.0.5/docs/guides/security-scanning.md +400 -0
- nat_engine-1.0.5/docs/guides/self-healing-test-suites.md +257 -0
- nat_engine-1.0.5/docs/guides/transfer-learning.md +216 -0
- nat_engine-1.0.5/docs/how-to/customize-security-checks.md +277 -0
- nat_engine-1.0.5/docs/how-to/deploy-with-docker.md +402 -0
- nat_engine-1.0.5/docs/how-to/integrate-with-github-actions.md +447 -0
- nat_engine-1.0.5/docs/how-to/read-risk-reports.md +274 -0
- nat_engine-1.0.5/docs/how-to/run-security-audit.md +276 -0
- nat_engine-1.0.5/docs/how-to/setup-oauth2.md +282 -0
- nat_engine-1.0.5/docs/how-to/test-graphql-api.md +266 -0
- nat_engine-1.0.5/docs/how-to/test-openapi-spec.md +235 -0
- nat_engine-1.0.5/docs/ip/README.md +115 -0
- nat_engine-1.0.5/docs/ip/disclosure-001-bounded-belief-revision.md +344 -0
- nat_engine-1.0.5/docs/ip/disclosure-002-extended-contract-net-protocol.md +322 -0
- nat_engine-1.0.5/docs/ip/disclosure-003-adaptive-test-allocation.md +350 -0
- nat_engine-1.0.5/docs/ip/disclosure-004-multi-agent-bdi-architecture.md +404 -0
- nat_engine-1.0.5/docs/legal/licensing.md +187 -0
- nat_engine-1.0.5/docs/sales/competitor-matrix.md +108 -0
- nat_engine-1.0.5/docs/sales/email-templates.md +264 -0
- nat_engine-1.0.5/docs/sales/onboarding-faq.md +197 -0
- nat_engine-1.0.5/docs/sales/sales-playbook.md +187 -0
- nat_engine-1.0.5/docs/sales/value-proposition.md +95 -0
- nat_engine-1.0.5/docs/troubleshooting/auth-issues.md +252 -0
- nat_engine-1.0.5/docs/troubleshooting/ci-cd-issues.md +421 -0
- nat_engine-1.0.5/docs/troubleshooting/common-issues.md +274 -0
- nat_engine-1.0.5/docs/troubleshooting/connection-errors.md +265 -0
- nat_engine-1.0.5/docs/troubleshooting/docker-issues.md +416 -0
- nat_engine-1.0.5/docs/vision/functional-testing-saas.md +607 -0
- nat_engine-1.0.5/docs/whitepaper.md +699 -0
- nat_engine-1.0.5/examples/demo.py +172 -0
- nat_engine-1.0.5/examples/exporters/console_exporter.py +65 -0
- nat_engine-1.0.5/examples/ingestors/csv_ingestor.py +298 -0
- nat_engine-1.0.5/examples/petstore-openapi.yaml +567 -0
- nat_engine-1.0.5/examples/pipeline.yaml +75 -0
- nat_engine-1.0.5/examples/plugins/rate_limit_check.py +55 -0
- nat_engine-1.0.5/examples/python/basic_scan.py +206 -0
- nat_engine-1.0.5/examples/python/graphql_scan.py +215 -0
- nat_engine-1.0.5/examples/python/oauth2_scan.py +267 -0
- nat_engine-1.0.5/examples/python/security_audit.py +294 -0
- nat_engine-1.0.5/examples/workflows/README.md +79 -0
- nat_engine-1.0.5/pyproject.toml +111 -0
- nat_engine-1.0.5/setup.cfg +4 -0
- nat_engine-1.0.5/src/mannf/__init__.py +33 -0
- nat_engine-1.0.5/src/mannf/__main__.py +10 -0
- nat_engine-1.0.5/src/mannf/_version.py +8 -0
- nat_engine-1.0.5/src/mannf/agents/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/agents/analyzer_agent.py +9 -0
- nat_engine-1.0.5/src/mannf/agents/base.py +9 -0
- nat_engine-1.0.5/src/mannf/agents/bdi_agent.py +9 -0
- nat_engine-1.0.5/src/mannf/agents/belief_state.py +9 -0
- nat_engine-1.0.5/src/mannf/agents/coordinator_agent.py +9 -0
- nat_engine-1.0.5/src/mannf/agents/executor_agent.py +9 -0
- nat_engine-1.0.5/src/mannf/agents/monitor_agent.py +9 -0
- nat_engine-1.0.5/src/mannf/agents/oracle_agent.py +9 -0
- nat_engine-1.0.5/src/mannf/agents/planner_agent.py +9 -0
- nat_engine-1.0.5/src/mannf/agents/test_agent.py +9 -0
- nat_engine-1.0.5/src/mannf/anomaly/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/anomaly/enhanced_detector.py +9 -0
- nat_engine-1.0.5/src/mannf/cli.py +9 -0
- nat_engine-1.0.5/src/mannf/core/__init__.py +26 -0
- nat_engine-1.0.5/src/mannf/core/agents/__init__.py +46 -0
- nat_engine-1.0.5/src/mannf/core/agents/accessibility_scanner_agent.py +245 -0
- nat_engine-1.0.5/src/mannf/core/agents/analyzer_agent.py +224 -0
- nat_engine-1.0.5/src/mannf/core/agents/base.py +128 -0
- nat_engine-1.0.5/src/mannf/core/agents/bdi_agent.py +315 -0
- nat_engine-1.0.5/src/mannf/core/agents/belief_state.py +167 -0
- nat_engine-1.0.5/src/mannf/core/agents/browser_coordinator_agent.py +224 -0
- nat_engine-1.0.5/src/mannf/core/agents/browser_executor_agent.py +410 -0
- nat_engine-1.0.5/src/mannf/core/agents/coordinator_agent.py +262 -0
- nat_engine-1.0.5/src/mannf/core/agents/executor_agent.py +222 -0
- nat_engine-1.0.5/src/mannf/core/agents/monitor_agent.py +188 -0
- nat_engine-1.0.5/src/mannf/core/agents/oracle_agent.py +150 -0
- nat_engine-1.0.5/src/mannf/core/agents/performance_testing_agent.py +279 -0
- nat_engine-1.0.5/src/mannf/core/agents/planner_agent.py +128 -0
- nat_engine-1.0.5/src/mannf/core/agents/test_agent.py +249 -0
- nat_engine-1.0.5/src/mannf/core/agents/visual_regression_agent.py +311 -0
- nat_engine-1.0.5/src/mannf/core/anomaly/__init__.py +14 -0
- nat_engine-1.0.5/src/mannf/core/anomaly/enhanced_detector.py +541 -0
- nat_engine-1.0.5/src/mannf/core/browser/__init__.py +50 -0
- nat_engine-1.0.5/src/mannf/core/browser/accessibility_scanner.py +424 -0
- nat_engine-1.0.5/src/mannf/core/browser/dom_snapshot.py +265 -0
- nat_engine-1.0.5/src/mannf/core/browser/performance_metrics.py +217 -0
- nat_engine-1.0.5/src/mannf/core/browser/visual_comparer.py +159 -0
- nat_engine-1.0.5/src/mannf/core/distributed/__init__.py +16 -0
- nat_engine-1.0.5/src/mannf/core/distributed/endpoint.py +76 -0
- nat_engine-1.0.5/src/mannf/core/distributed/system_under_test.py +207 -0
- nat_engine-1.0.5/src/mannf/core/functional_orchestrator.py +375 -0
- nat_engine-1.0.5/src/mannf/core/messaging/__init__.py +11 -0
- nat_engine-1.0.5/src/mannf/core/messaging/bus.py +113 -0
- nat_engine-1.0.5/src/mannf/core/messaging/messages.py +81 -0
- nat_engine-1.0.5/src/mannf/core/nat_orchestrator.py +342 -0
- nat_engine-1.0.5/src/mannf/core/neural/__init__.py +183 -0
- nat_engine-1.0.5/src/mannf/core/orchestrator.py +272 -0
- nat_engine-1.0.5/src/mannf/core/prioritization/__init__.py +17 -0
- nat_engine-1.0.5/src/mannf/core/prioritization/adaptive_controller.py +509 -0
- nat_engine-1.0.5/src/mannf/core/prioritization/belief_prioritizer.py +231 -0
- nat_engine-1.0.5/src/mannf/core/prioritization/risk_scorer.py +305 -0
- nat_engine-1.0.5/src/mannf/core/reporting/__init__.py +12 -0
- nat_engine-1.0.5/src/mannf/core/reporting/unified_report.py +577 -0
- nat_engine-1.0.5/src/mannf/core/testing/__init__.py +17 -0
- nat_engine-1.0.5/src/mannf/core/testing/adaptive_controller.py +149 -0
- nat_engine-1.0.5/src/mannf/core/testing/models.py +179 -0
- nat_engine-1.0.5/src/mannf/dashboard/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/dashboard/app.py +9 -0
- nat_engine-1.0.5/src/mannf/dashboard/models.py +9 -0
- nat_engine-1.0.5/src/mannf/dashboard/static/index.html +2538 -0
- nat_engine-1.0.5/src/mannf/dashboard/telemetry.py +9 -0
- nat_engine-1.0.5/src/mannf/distributed/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/distributed/endpoint.py +9 -0
- nat_engine-1.0.5/src/mannf/distributed/system_under_test.py +9 -0
- nat_engine-1.0.5/src/mannf/healing/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/healing/graphql_schema_diff.py +9 -0
- nat_engine-1.0.5/src/mannf/healing/healer.py +9 -0
- nat_engine-1.0.5/src/mannf/healing/models.py +9 -0
- nat_engine-1.0.5/src/mannf/healing/schema_diff.py +9 -0
- nat_engine-1.0.5/src/mannf/integrations/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/integrations/auth.py +9 -0
- nat_engine-1.0.5/src/mannf/integrations/graphql_parser.py +9 -0
- nat_engine-1.0.5/src/mannf/integrations/graphql_sut.py +9 -0
- nat_engine-1.0.5/src/mannf/integrations/http_sut.py +9 -0
- nat_engine-1.0.5/src/mannf/integrations/openapi_parser.py +9 -0
- nat_engine-1.0.5/src/mannf/integrations/postman_parser.py +9 -0
- nat_engine-1.0.5/src/mannf/llm/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/llm/anthropic_provider.py +9 -0
- nat_engine-1.0.5/src/mannf/llm/base.py +9 -0
- nat_engine-1.0.5/src/mannf/llm/config.py +9 -0
- nat_engine-1.0.5/src/mannf/llm/factory.py +9 -0
- nat_engine-1.0.5/src/mannf/llm/openai_provider.py +9 -0
- nat_engine-1.0.5/src/mannf/llm/prompts.py +9 -0
- nat_engine-1.0.5/src/mannf/messaging/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/messaging/bus.py +9 -0
- nat_engine-1.0.5/src/mannf/messaging/messages.py +9 -0
- nat_engine-1.0.5/src/mannf/nat_orchestrator.py +9 -0
- nat_engine-1.0.5/src/mannf/neural/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/orchestrator.py +9 -0
- nat_engine-1.0.5/src/mannf/prioritization/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/prioritization/adaptive_controller.py +9 -0
- nat_engine-1.0.5/src/mannf/prioritization/belief_prioritizer.py +9 -0
- nat_engine-1.0.5/src/mannf/prioritization/risk_scorer.py +9 -0
- nat_engine-1.0.5/src/mannf/product/__init__.py +29 -0
- nat_engine-1.0.5/src/mannf/product/admin/__init__.py +3 -0
- nat_engine-1.0.5/src/mannf/product/admin/routes.py +234 -0
- nat_engine-1.0.5/src/mannf/product/billing/__init__.py +5 -0
- nat_engine-1.0.5/src/mannf/product/billing/audit.py +160 -0
- nat_engine-1.0.5/src/mannf/product/billing/feature_gates.py +155 -0
- nat_engine-1.0.5/src/mannf/product/billing/metering.py +179 -0
- nat_engine-1.0.5/src/mannf/product/billing/notifications.py +181 -0
- nat_engine-1.0.5/src/mannf/product/billing/plans.py +127 -0
- nat_engine-1.0.5/src/mannf/product/billing/rate_limits.py +35 -0
- nat_engine-1.0.5/src/mannf/product/billing/stripe_billing.py +906 -0
- nat_engine-1.0.5/src/mannf/product/billing/tenant_auth.py +233 -0
- nat_engine-1.0.5/src/mannf/product/billing/tenant_manager.py +422 -0
- nat_engine-1.0.5/src/mannf/product/cli.py +2113 -0
- nat_engine-1.0.5/src/mannf/product/cli_admin.py +408 -0
- nat_engine-1.0.5/src/mannf/product/dashboard/__init__.py +44 -0
- nat_engine-1.0.5/src/mannf/product/dashboard/app.py +870 -0
- nat_engine-1.0.5/src/mannf/product/dashboard/models.py +195 -0
- nat_engine-1.0.5/src/mannf/product/dashboard/static/index.html +4453 -0
- nat_engine-1.0.5/src/mannf/product/dashboard/static/manifest.json +25 -0
- nat_engine-1.0.5/src/mannf/product/dashboard/static/pwa-icon-192.png +0 -0
- nat_engine-1.0.5/src/mannf/product/dashboard/static/pwa-icon-512.png +0 -0
- nat_engine-1.0.5/src/mannf/product/dashboard/static/sw.js +64 -0
- nat_engine-1.0.5/src/mannf/product/dashboard/telemetry.py +259 -0
- nat_engine-1.0.5/src/mannf/product/database.py +145 -0
- nat_engine-1.0.5/src/mannf/product/demo.py +737 -0
- nat_engine-1.0.5/src/mannf/product/doctor.py +509 -0
- nat_engine-1.0.5/src/mannf/product/exporters/__init__.py +59 -0
- nat_engine-1.0.5/src/mannf/product/exporters/azuredevops_exporter.py +257 -0
- nat_engine-1.0.5/src/mannf/product/exporters/base.py +307 -0
- nat_engine-1.0.5/src/mannf/product/exporters/github_exporter.py +185 -0
- nat_engine-1.0.5/src/mannf/product/exporters/gitlab_exporter.py +215 -0
- nat_engine-1.0.5/src/mannf/product/exporters/jira_exporter.py +180 -0
- nat_engine-1.0.5/src/mannf/product/exporters/linear_exporter.py +195 -0
- nat_engine-1.0.5/src/mannf/product/exporters/loader.py +233 -0
- nat_engine-1.0.5/src/mannf/product/exporters/pagerduty_exporter.py +363 -0
- nat_engine-1.0.5/src/mannf/product/exporters/servicenow_exporter.py +240 -0
- nat_engine-1.0.5/src/mannf/product/exporters/shortcut_exporter.py +231 -0
- nat_engine-1.0.5/src/mannf/product/exporters/webhook_exporter.py +383 -0
- nat_engine-1.0.5/src/mannf/product/healing/__init__.py +30 -0
- nat_engine-1.0.5/src/mannf/product/healing/graphql_schema_diff.py +152 -0
- nat_engine-1.0.5/src/mannf/product/healing/healer.py +141 -0
- nat_engine-1.0.5/src/mannf/product/healing/models.py +175 -0
- nat_engine-1.0.5/src/mannf/product/healing/schema_diff.py +251 -0
- nat_engine-1.0.5/src/mannf/product/ingestors/__init__.py +62 -0
- nat_engine-1.0.5/src/mannf/product/ingestors/base.py +249 -0
- nat_engine-1.0.5/src/mannf/product/ingestors/bgstm_ingestor.py +764 -0
- nat_engine-1.0.5/src/mannf/product/ingestors/curl_ingestor.py +1019 -0
- nat_engine-1.0.5/src/mannf/product/ingestors/gherkin_ingestor.py +967 -0
- nat_engine-1.0.5/src/mannf/product/ingestors/graphql_ingestor.py +845 -0
- nat_engine-1.0.5/src/mannf/product/ingestors/har_ingestor.py +883 -0
- nat_engine-1.0.5/src/mannf/product/ingestors/loader.py +284 -0
- nat_engine-1.0.5/src/mannf/product/ingestors/models.py +146 -0
- nat_engine-1.0.5/src/mannf/product/ingestors/openapi_ingestor.py +606 -0
- nat_engine-1.0.5/src/mannf/product/ingestors/postman_ingestor.py +631 -0
- nat_engine-1.0.5/src/mannf/product/integrations/__init__.py +21 -0
- nat_engine-1.0.5/src/mannf/product/integrations/auth.py +190 -0
- nat_engine-1.0.5/src/mannf/product/integrations/graphql_parser.py +436 -0
- nat_engine-1.0.5/src/mannf/product/integrations/graphql_sut.py +247 -0
- nat_engine-1.0.5/src/mannf/product/integrations/http_sut.py +237 -0
- nat_engine-1.0.5/src/mannf/product/integrations/openapi_parser.py +513 -0
- nat_engine-1.0.5/src/mannf/product/integrations/postman_parser.py +467 -0
- nat_engine-1.0.5/src/mannf/product/llm/__init__.py +25 -0
- nat_engine-1.0.5/src/mannf/product/llm/anthropic_provider.py +94 -0
- nat_engine-1.0.5/src/mannf/product/llm/base.py +120 -0
- nat_engine-1.0.5/src/mannf/product/llm/config.py +48 -0
- nat_engine-1.0.5/src/mannf/product/llm/factory.py +42 -0
- nat_engine-1.0.5/src/mannf/product/llm/openai_provider.py +93 -0
- nat_engine-1.0.5/src/mannf/product/llm/prompts.py +88 -0
- nat_engine-1.0.5/src/mannf/product/metrics.py +149 -0
- nat_engine-1.0.5/src/mannf/product/middleware/__init__.py +3 -0
- nat_engine-1.0.5/src/mannf/product/middleware/tenant_isolation.py +62 -0
- nat_engine-1.0.5/src/mannf/product/models.py +238 -0
- nat_engine-1.0.5/src/mannf/product/notifications/__init__.py +24 -0
- nat_engine-1.0.5/src/mannf/product/notifications/dispatcher.py +387 -0
- nat_engine-1.0.5/src/mannf/product/onboarding.py +190 -0
- nat_engine-1.0.5/src/mannf/product/orchestration/__init__.py +39 -0
- nat_engine-1.0.5/src/mannf/product/orchestration/ingest_scan_orchestrator.py +339 -0
- nat_engine-1.0.5/src/mannf/product/orchestration/pipeline.py +401 -0
- nat_engine-1.0.5/src/mannf/product/orchestrator.py +913 -0
- nat_engine-1.0.5/src/mannf/product/orchestrator_models.py +266 -0
- nat_engine-1.0.5/src/mannf/product/regression/__init__.py +36 -0
- nat_engine-1.0.5/src/mannf/product/regression/differ.py +172 -0
- nat_engine-1.0.5/src/mannf/product/regression/masking.py +100 -0
- nat_engine-1.0.5/src/mannf/product/regression/models.py +232 -0
- nat_engine-1.0.5/src/mannf/product/regression/recorder.py +124 -0
- nat_engine-1.0.5/src/mannf/product/regression/replayer.py +168 -0
- nat_engine-1.0.5/src/mannf/product/scheduling/__init__.py +36 -0
- nat_engine-1.0.5/src/mannf/product/scheduling/cron_utils.py +251 -0
- nat_engine-1.0.5/src/mannf/product/scheduling/engine.py +418 -0
- nat_engine-1.0.5/src/mannf/product/scheduling/models.py +86 -0
- nat_engine-1.0.5/src/mannf/product/scheduling/store.py +215 -0
- nat_engine-1.0.5/src/mannf/product/security/__init__.py +21 -0
- nat_engine-1.0.5/src/mannf/product/security/belief_guided.py +130 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/__init__.py +55 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/base.py +69 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/bfla.py +77 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/bola.py +77 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/bopla.py +80 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/broken_auth.py +86 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/graphql_security.py +299 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/inventory.py +70 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/misconfig.py +158 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/resource_consumption.py +70 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/sensitive_flows.py +80 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/ssrf.py +101 -0
- nat_engine-1.0.5/src/mannf/product/security/checks/unsafe_consumption.py +120 -0
- nat_engine-1.0.5/src/mannf/product/security/models.py +92 -0
- nat_engine-1.0.5/src/mannf/product/security/plugin_loader.py +182 -0
- nat_engine-1.0.5/src/mannf/product/security/reporter.py +92 -0
- nat_engine-1.0.5/src/mannf/product/security/scanner.py +183 -0
- nat_engine-1.0.5/src/mannf/product/server.py +5071 -0
- nat_engine-1.0.5/src/mannf/product/setup_wizard.py +873 -0
- nat_engine-1.0.5/src/mannf/product/status.py +292 -0
- nat_engine-1.0.5/src/mannf/product/storage/__init__.py +10 -0
- nat_engine-1.0.5/src/mannf/product/storage/artifact_store.py +343 -0
- nat_engine-1.0.5/src/mannf/product/telemetry.py +300 -0
- nat_engine-1.0.5/src/mannf/product/uninstall.py +169 -0
- nat_engine-1.0.5/src/mannf/product/upgrade.py +139 -0
- nat_engine-1.0.5/src/mannf/product/weights/__init__.py +13 -0
- nat_engine-1.0.5/src/mannf/product/weights/blob_store.py +299 -0
- nat_engine-1.0.5/src/mannf/product/weights/factory.py +42 -0
- nat_engine-1.0.5/src/mannf/product/weights/registry.py +159 -0
- nat_engine-1.0.5/src/mannf/product/weights/store.py +210 -0
- nat_engine-1.0.5/src/mannf/regression/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/regression/differ.py +9 -0
- nat_engine-1.0.5/src/mannf/regression/masking.py +9 -0
- nat_engine-1.0.5/src/mannf/regression/models.py +9 -0
- nat_engine-1.0.5/src/mannf/regression/recorder.py +9 -0
- nat_engine-1.0.5/src/mannf/regression/replayer.py +9 -0
- nat_engine-1.0.5/src/mannf/security/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/security/belief_guided.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/security/checks/base.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/bfla.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/bola.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/bopla.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/broken_auth.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/graphql_security.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/inventory.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/misconfig.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/resource_consumption.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/sensitive_flows.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/ssrf.py +9 -0
- nat_engine-1.0.5/src/mannf/security/checks/unsafe_consumption.py +9 -0
- nat_engine-1.0.5/src/mannf/security/models.py +9 -0
- nat_engine-1.0.5/src/mannf/security/reporter.py +9 -0
- nat_engine-1.0.5/src/mannf/security/scanner.py +9 -0
- nat_engine-1.0.5/src/mannf/server.py +9 -0
- nat_engine-1.0.5/src/mannf/testing/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/testing/adaptive_controller.py +9 -0
- nat_engine-1.0.5/src/mannf/testing/models.py +9 -0
- nat_engine-1.0.5/src/mannf/weights/__init__.py +7 -0
- nat_engine-1.0.5/src/mannf/weights/registry.py +9 -0
- nat_engine-1.0.5/src/mannf/weights/store.py +9 -0
- nat_engine-1.0.5/src/nat_engine.egg-info/PKG-INFO +441 -0
- nat_engine-1.0.5/src/nat_engine.egg-info/SOURCES.txt +418 -0
- nat_engine-1.0.5/src/nat_engine.egg-info/dependency_links.txt +1 -0
- nat_engine-1.0.5/src/nat_engine.egg-info/entry_points.txt +4 -0
- nat_engine-1.0.5/src/nat_engine.egg-info/requires.txt +33 -0
- nat_engine-1.0.5/src/nat_engine.egg-info/top_level.txt +1 -0
- nat_engine-1.0.5/tests/test_accessibility_scanner.py +921 -0
- nat_engine-1.0.5/tests/test_agents.py +160 -0
- nat_engine-1.0.5/tests/test_artifact_blob.py +449 -0
- nat_engine-1.0.5/tests/test_auth_layer.py +509 -0
- nat_engine-1.0.5/tests/test_belief_state.py +151 -0
- nat_engine-1.0.5/tests/test_billing_audit.py +426 -0
- nat_engine-1.0.5/tests/test_billing_bridge.py +1151 -0
- nat_engine-1.0.5/tests/test_billing_models.py +195 -0
- nat_engine-1.0.5/tests/test_billing_notifications.py +275 -0
- nat_engine-1.0.5/tests/test_browser_agent.py +536 -0
- nat_engine-1.0.5/tests/test_concurrency_enforcement.py +384 -0
- nat_engine-1.0.5/tests/test_dashboard_ui.py +933 -0
- nat_engine-1.0.5/tests/test_distributed.py +121 -0
- nat_engine-1.0.5/tests/test_e2e_billing_happy_path.py +1015 -0
- nat_engine-1.0.5/tests/test_e2e_billing_onboarding.py +980 -0
- nat_engine-1.0.5/tests/test_e2e_onboarding.py +612 -0
- nat_engine-1.0.5/tests/test_functional_orchestrator.py +528 -0
- nat_engine-1.0.5/tests/test_ingest_orchestrator.py +1361 -0
- nat_engine-1.0.5/tests/test_messaging.py +100 -0
- nat_engine-1.0.5/tests/test_nat_agents.py +292 -0
- nat_engine-1.0.5/tests/test_nat_orchestrator.py +99 -0
- nat_engine-1.0.5/tests/test_neural.py +134 -0
- nat_engine-1.0.5/tests/test_observability.py +344 -0
- nat_engine-1.0.5/tests/test_orchestrator.py +85 -0
- nat_engine-1.0.5/tests/test_performance_testing.py +904 -0
- nat_engine-1.0.5/tests/test_product_notifications.py +693 -0
- nat_engine-1.0.5/tests/test_quota_enforcement.py +1271 -0
- nat_engine-1.0.5/tests/test_server.py +989 -0
- nat_engine-1.0.5/tests/test_server_risk.py +284 -0
- nat_engine-1.0.5/tests/test_setup_wizard.py +345 -0
- nat_engine-1.0.5/tests/test_status.py +475 -0
- nat_engine-1.0.5/tests/test_stripe_billing.py +1083 -0
- nat_engine-1.0.5/tests/test_telemetry.py +319 -0
- nat_engine-1.0.5/tests/test_tenant_isolation.py +444 -0
- nat_engine-1.0.5/tests/test_tenant_scoped_scans.py +505 -0
- nat_engine-1.0.5/tests/test_testing.py +163 -0
- nat_engine-1.0.5/tests/test_unified_report.py +571 -0
- nat_engine-1.0.5/tests/test_usage_metering.py +786 -0
- nat_engine-1.0.5/tests/test_visual_regression.py +487 -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,179 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## [Unreleased]
|
|
11
|
+
|
|
12
|
+
_Nothing yet._
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## [1.0.0] — 2026-03-22
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
#### Multi-Agent BDI Architecture
|
|
21
|
+
- `PlannerAgent` — generates and reorders test plans based on belief state; produces ECNP call-for-proposals.
|
|
22
|
+
- `ExecutorAgent` — executes individual test tasks; submits ECNP bids; records results back to the `BeliefState`.
|
|
23
|
+
- `AnalyzerAgent` — consumes raw results; runs anomaly detection; updates belief scores.
|
|
24
|
+
- `CoordinatorAgent` — orchestrates the full scan lifecycle; manages agent pool and task dispatch.
|
|
25
|
+
- `NATOrchestrator` — top-level orchestrator that wires together all agents and coordinates the scan lifecycle.
|
|
26
|
+
- `BeliefState` — thread-safe key-value store for per-endpoint agent beliefs (error rates, latency profiles, anomaly flags).
|
|
27
|
+
- `BeliefPrioritizer` — scores pending operations using belief state; returns an ordered list for the `PlannerAgent`.
|
|
28
|
+
|
|
29
|
+
#### ECNP Protocol
|
|
30
|
+
- `ECNPMessage`, `ECNPCallForProposal`, `ECNPBid`, `ECNPAward` message types.
|
|
31
|
+
- `ECNPBroker` — routes messages between agents with priority queuing.
|
|
32
|
+
- Enables concurrent multi-worker test execution with minimal coordination overhead.
|
|
33
|
+
|
|
34
|
+
#### Neural Network Oracles
|
|
35
|
+
- `NeuralNetwork` — NumPy-based feedforward neural network with Xavier weight initialization, sigmoid/ReLU activations, mini-batch gradient descent, and backpropagation.
|
|
36
|
+
- `RiskScorer` — combines security-finding penalties, anomaly signals, and pass-rate into a composite score in `[0.0, 1.0]`.
|
|
37
|
+
- Neural oracle per endpoint that predicts risk level and guides adaptive test allocation.
|
|
38
|
+
|
|
39
|
+
#### Adaptive Test Allocation
|
|
40
|
+
- `TestCaseGenerator` — produces boundary-value, null-field, type-mismatch, and happy-path test cases from operation schemas.
|
|
41
|
+
- Adaptive budget allocation: high-belief-risk endpoints receive more test cases; low-risk endpoints are sampled.
|
|
42
|
+
- Belief-driven prioritization integrates security findings, anomaly counts, and historical pass rates.
|
|
43
|
+
|
|
44
|
+
#### Security Scanning (OWASP API Top 10)
|
|
45
|
+
- All 10 OWASP API Security Top 10 (2023) checks:
|
|
46
|
+
- `API1` — Broken Object Level Authorization (BOLA/IDOR)
|
|
47
|
+
- `API2` — Broken Authentication
|
|
48
|
+
- `API3` — Broken Object Property Level Authorization (mass assignment)
|
|
49
|
+
- `API4` — Unrestricted Resource Consumption (rate limiting)
|
|
50
|
+
- `API5` — Broken Function Level Authorization
|
|
51
|
+
- `API6` — Unrestricted Access to Sensitive Business Flows
|
|
52
|
+
- `API7` — Server Side Request Forgery (SSRF)
|
|
53
|
+
- `API8` — Security Misconfiguration
|
|
54
|
+
- `API9` — Improper Inventory Management
|
|
55
|
+
- `API10` — Unsafe Consumption of APIs
|
|
56
|
+
- 5 GraphQL-specific security checks (GRAPHQL-1 through GRAPHQL-5): introspection, depth limits, batch attacks, field suggestion leakage, alias-based rate-limit bypass.
|
|
57
|
+
- `SecurityCheck` base class for custom check plugins.
|
|
58
|
+
- Adaptive security prioritization: `prioritize_for_security()` scores endpoints by risk and belief state.
|
|
59
|
+
|
|
60
|
+
#### LLM-Powered Test Generation
|
|
61
|
+
- `LLMProvider` ABC with `OpenAIProvider` and `AnthropicProvider` implementations.
|
|
62
|
+
- `LLMConfig` and `get_provider()` factory for easy initialization.
|
|
63
|
+
- Prompt templates for test scenario generation, edge-case discovery, and security probe crafting.
|
|
64
|
+
- CLI: `--use-llm`, `--llm-provider`, `--llm-model`, `--llm-api-key` flags; `nat test-gen` subcommand.
|
|
65
|
+
- Server: `POST /api/v1/llm/generate` endpoint.
|
|
66
|
+
|
|
67
|
+
#### CLI — All Subcommands
|
|
68
|
+
- `nat scan` — run adaptive functional tests against an OpenAPI/Swagger or GraphQL spec.
|
|
69
|
+
- `nat security-scan` — run OWASP and GraphQL security checks.
|
|
70
|
+
- `nat heal` — generate a healing report from spec diff (`--old-spec`, `--new-spec`).
|
|
71
|
+
- `nat weights` — list, save, and inspect named weight snapshots.
|
|
72
|
+
- `nat test-gen` — LLM-powered test generation from a spec.
|
|
73
|
+
- `nat serve` — start the NAT REST API server.
|
|
74
|
+
- `nat completions bash|zsh|fish` — generate shell completion scripts.
|
|
75
|
+
- `.natrc` YAML config file for persistent defaults (`base_url`, `spec`, `output`, etc.).
|
|
76
|
+
- `--output text|json|html|junit` and `--output-file` for flexible reporting.
|
|
77
|
+
- Exit codes: `0` = all tests passed, `1` = test failures, `2` = scan error, `3` = config error.
|
|
78
|
+
|
|
79
|
+
#### REST API Server
|
|
80
|
+
- FastAPI-based server with all NAT capabilities exposed as HTTP endpoints.
|
|
81
|
+
- `X-API-Key` authentication (configured via `NAT_API_KEY` environment variable).
|
|
82
|
+
- Webhooks with HMAC-SHA256 signatures (`webhook_url`, `webhook_secret`, `webhook_headers`).
|
|
83
|
+
- Queue management: `NAT_MAX_CONCURRENT_SCANS`, `NAT_MAX_QUEUE_DEPTH`, `GET /api/v1/queue`.
|
|
84
|
+
- Rate limiting (`NAT_RATE_LIMIT`, e.g. `100/minute`).
|
|
85
|
+
- Scan timeout (`NAT_SCAN_TIMEOUT`).
|
|
86
|
+
- `DELETE /api/v1/scan/{id}` for scan cancellation.
|
|
87
|
+
- Structured error responses: `{"error": {"code", "message", "details"}}`.
|
|
88
|
+
- OpenAPI schema at `/api/v1/openapi.json`, Swagger UI at `/api/v1/docs`, ReDoc at `/api/v1/redoc`.
|
|
89
|
+
- `ScanStatus` values: `QUEUED`, `RUNNING`, `COMPLETED`, `FAILED`, `CANCELLED`, `TIMED_OUT`.
|
|
90
|
+
|
|
91
|
+
#### Web Dashboard
|
|
92
|
+
- Single-page dashboard with 5 tabs: Overview, Agents, Security, History, Settings.
|
|
93
|
+
- Summary cards: total scans, pass rate, active agents, open findings.
|
|
94
|
+
- Live scan queue with real-time WebSocket updates.
|
|
95
|
+
- Export: HTML, JSON, and CSV report formats.
|
|
96
|
+
- Settings tab: view server/auth/queue/webhook configuration.
|
|
97
|
+
- Scan history with comparison across runs.
|
|
98
|
+
- Dark mode and fully responsive layout.
|
|
99
|
+
- `GET /api/v1/dashboard/settings` — server configuration introspection endpoint.
|
|
100
|
+
- `GET /api/v1/scan/{id}/export?format=html|json|csv` — on-demand report export.
|
|
101
|
+
|
|
102
|
+
#### Docker / Compose / Kubernetes
|
|
103
|
+
- Multi-stage `Dockerfile`: builder stage installs deps and builds wheel; final stage uses `python:3.11-slim`.
|
|
104
|
+
- Multi-platform builds: `linux/amd64` and `linux/arm64`.
|
|
105
|
+
- `docker-compose.yml` — single-service deployment; `docker-compose.prod.yml` — engine + dashboard + Redis.
|
|
106
|
+
- Kubernetes manifests in `deploy/k8s/`: Deployment, Service, ConfigMap, HPA.
|
|
107
|
+
- GHCR publish workflow (`.github/workflows/docker-publish.yml`).
|
|
108
|
+
- Non-root runtime user `nat` (UID 1000); `HEALTHCHECK` against `GET /health`.
|
|
109
|
+
|
|
110
|
+
#### GitHub Action + CI/CD Templates
|
|
111
|
+
- `action.yml` — composite GitHub Action, marketplace-ready with 22 inputs and 9 outputs.
|
|
112
|
+
- Docker-based Action variant for faster startup in self-hosted runners.
|
|
113
|
+
- `.github/workflows/action-release.yml` — automated GitHub Marketplace release with major version tag tracking.
|
|
114
|
+
- Jenkins shared library (`ci-templates/jenkins/`): `natScan()` pipeline step, Jenkinsfile examples.
|
|
115
|
+
- GitLab CI template (`ci-templates/gitlab/.gitlab-ci-nat.yml`) with MR pipeline support and JUnit artifact upload.
|
|
116
|
+
- Azure Pipelines template (`ci-templates/azure/azure-pipelines-nat.yml`) with `PublishTestResults@2`.
|
|
117
|
+
- Example workflows for security gates, scheduled nightly scans, and matrix strategies.
|
|
118
|
+
|
|
119
|
+
#### AGPL-3.0 Dual-License
|
|
120
|
+
- `LICENSE` — GNU Affero General Public License v3.0.
|
|
121
|
+
- `COMMERCIAL_LICENSE.md` — enterprise commercial license terms with AGPL vs. commercial comparison.
|
|
122
|
+
- `CLA.md` — Individual and Corporate Contributor License Agreements.
|
|
123
|
+
- `CLA_SIGNATORIES.md` — signed CLA tracking file.
|
|
124
|
+
- `.github/workflows/cla.yml` — automated CLA check on pull requests.
|
|
125
|
+
- AGPL-3.0 license headers on all Python source files.
|
|
126
|
+
- `NOTICE` — third-party dependency license notices.
|
|
127
|
+
|
|
128
|
+
#### Self-Healing Test Suites
|
|
129
|
+
- `SchemaDiffer` and `GraphQLSchemaDiffer` — compute structural diffs between spec versions.
|
|
130
|
+
- `TestHealer` — automatically updates broken test cases to match new schema.
|
|
131
|
+
- `HealingReport` with per-endpoint patch summaries.
|
|
132
|
+
- CLI: `nat heal --old-spec`/`--new-spec`; server: `POST/GET /api/v1/heal`.
|
|
133
|
+
|
|
134
|
+
#### Regression Recording & Replay
|
|
135
|
+
- `RegressionRecorder` — captures request/response pairs during a scan.
|
|
136
|
+
- `RegressionReplayer` — replays a baseline recording against the live API.
|
|
137
|
+
- `RegressionDiffer` — diffs current vs. baseline recordings with configurable masking.
|
|
138
|
+
- CLI: `--record-regression FILE`, `--replay FILE`, `--regression-diff-only`, `--mask-sensitive`.
|
|
139
|
+
- Server: `POST/GET /api/v1/regression/{record,replay,diff,baselines}`.
|
|
140
|
+
|
|
141
|
+
#### Weight Persistence
|
|
142
|
+
- `WeightStore` — JSON-based save/load for neural network weights.
|
|
143
|
+
- `WeightRegistry` — named snapshot management with metadata.
|
|
144
|
+
- CLI: `nat scan --save-weights`, `--load-weights`, `--weights-dir`; `nat weights list/save/info`.
|
|
145
|
+
- Server: `POST/GET/DELETE /api/v1/weights/`.
|
|
146
|
+
|
|
147
|
+
#### Authentication Strategies
|
|
148
|
+
- `NoAuth`, `ApiKeyAuth`, `BearerTokenAuth`, `OAuth2Auth` (client_credentials + password grant).
|
|
149
|
+
- All strategies implement the `AuthStrategy` interface for pluggable composition.
|
|
150
|
+
|
|
151
|
+
#### Testing Infrastructure
|
|
152
|
+
- 993 automated tests covering all modules.
|
|
153
|
+
- Test matrix: Python 3.10, 3.11, 3.12, 3.13.
|
|
154
|
+
- `pytest-asyncio` for async test support; `respx` for HTTP mocking.
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## [0.1.0] — Initial Release
|
|
159
|
+
|
|
160
|
+
### Added
|
|
161
|
+
|
|
162
|
+
- Initial multi-agent BDI framework with `PlannerAgent`, `ExecutorAgent`, `AnalyzerAgent`, `CoordinatorAgent`.
|
|
163
|
+
- `NeuralNetwork` — NumPy-based feedforward network with backpropagation.
|
|
164
|
+
- ECNP protocol for agent coordination.
|
|
165
|
+
- `BeliefState` and `BeliefPrioritizer`.
|
|
166
|
+
- `OpenAPIParser` and `TestCaseGenerator` for REST API testing.
|
|
167
|
+
- `GraphQLParser` and `GraphQLSUT` for GraphQL testing.
|
|
168
|
+
- OWASP API Top 10 and GraphQL security checks.
|
|
169
|
+
- `nat scan` and `nat security-scan` CLI subcommands.
|
|
170
|
+
- FastAPI REST server (`nat-server`).
|
|
171
|
+
- Basic web dashboard.
|
|
172
|
+
- `Dockerfile` and `docker-compose.yml`.
|
|
173
|
+
- `action.yml` — composite GitHub Action.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
[Unreleased]: https://github.com/bg-playground/MultiAgent-Neural-Network-Framework/compare/v1.0.0...HEAD
|
|
178
|
+
[1.0.0]: https://github.com/bg-playground/MultiAgent-Neural-Network-Framework/compare/v0.1.0...v1.0.0
|
|
179
|
+
[0.1.0]: https://github.com/bg-playground/MultiAgent-Neural-Network-Framework/releases/tag/v0.1.0
|
nat_engine-1.0.5/CLA.md
ADDED
|
@@ -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,76 @@
|
|
|
1
|
+
# Commercial License — NeuroAgentTest (NAT)
|
|
2
|
+
|
|
3
|
+
## Dual-License Model
|
|
4
|
+
|
|
5
|
+
NeuroAgentTest (NAT) is dual-licensed:
|
|
6
|
+
|
|
7
|
+
| Use Case | License |
|
|
8
|
+
|---|---|
|
|
9
|
+
| Open-source projects, academic research, personal use | [AGPL-3.0-or-later](LICENSE) |
|
|
10
|
+
| Proprietary products, SaaS deployments, enterprise use | Commercial License (this document) |
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## When Do You Need a Commercial License?
|
|
15
|
+
|
|
16
|
+
You need a commercial license if **any** of the following apply:
|
|
17
|
+
|
|
18
|
+
- You want to incorporate NAT into a **proprietary product** or service without open-sourcing your modifications.
|
|
19
|
+
- You are deploying NAT as part of a **SaaS or hosted offering** and do not wish to comply with the AGPL-3.0 network-service copyleft requirement (which requires you to make your modified source available to users of your service).
|
|
20
|
+
- You want to distribute NAT as part of a **closed-source application**.
|
|
21
|
+
- You require **enterprise support, SLAs, or priority patches** not available under the open-source license.
|
|
22
|
+
- You want **custom neural network tuning** or professional services from the NAT team.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## What the Commercial License Grants
|
|
27
|
+
|
|
28
|
+
A NAT Commercial License provides:
|
|
29
|
+
|
|
30
|
+
1. **Proprietary Use** — You may incorporate NAT into closed-source, proprietary products without the copyleft obligations of the AGPL-3.0.
|
|
31
|
+
2. **No Copyleft Obligation** — You are not required to open-source modifications to NAT, even when deployed as a network service.
|
|
32
|
+
3. **Priority Support & SLAs** — Access to dedicated support channels with defined response-time SLAs.
|
|
33
|
+
4. **Custom Neural Network Tuning** — Professional services for tuning NAT's neural network parameters to your specific system under test.
|
|
34
|
+
5. **Indemnification** — Additional IP indemnification clauses available at the enterprise tier.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Licensing Tiers
|
|
39
|
+
|
|
40
|
+
| Tier | Scope | Pricing |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| **Per-Seat** | Individual developer license | Contact us |
|
|
43
|
+
| **Team** | Up to 25 developers | Contact us |
|
|
44
|
+
| **Enterprise-Wide** | Unlimited developers within a single legal entity | Contact us |
|
|
45
|
+
| **OEM / Reseller** | Embedding NAT in a product sold to third parties | Contact us |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## How to Obtain a Commercial License
|
|
50
|
+
|
|
51
|
+
To inquire about a commercial license, please contact:
|
|
52
|
+
|
|
53
|
+
**Email:** [licensing@nat-testing.io](mailto:licensing@nat-testing.io)
|
|
54
|
+
|
|
55
|
+
Please include:
|
|
56
|
+
- Your organization name
|
|
57
|
+
- A brief description of your intended use case
|
|
58
|
+
- Approximate team size or deployment scope
|
|
59
|
+
|
|
60
|
+
We will respond within 2 business days.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Contributor License Agreement
|
|
65
|
+
|
|
66
|
+
All contributors to NAT must sign the [Contributor License Agreement (CLA)](CLA.md) before their contributions can be accepted. The CLA grants NAT maintainers the rights necessary to offer NAT under both the AGPL-3.0 and this Commercial License.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Questions
|
|
71
|
+
|
|
72
|
+
For any licensing questions not answered here, contact [licensing@nat-testing.io](mailto:licensing@nat-testing.io).
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
See also: [README.md — License](README.md#license) · [LICENSE](LICENSE) · [CLA.md](CLA.md)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Contributing to NAT
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to **NeuroAgentTest (NAT)**!
|
|
4
|
+
|
|
5
|
+
> **⚠️ CLA Required** — Before your first pull request is merged, you must agree
|
|
6
|
+
> to the [Contributor License Agreement](.github/CLA.md). The CLA bot will
|
|
7
|
+
> prompt you automatically when you open your first PR. See
|
|
8
|
+
> [Signing the CLA](#signing-the-cla) below.
|
|
9
|
+
|
|
10
|
+
For full contribution guidelines — development environment setup, code style,
|
|
11
|
+
testing, and pull request process — see
|
|
12
|
+
**[docs/contributing.md](docs/contributing.md)**.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Clone and install in editable mode with dev extras
|
|
20
|
+
git clone https://github.com/bg-playground/MultiAgent-Neural-Network-Framework.git
|
|
21
|
+
cd MultiAgent-Neural-Network-Framework
|
|
22
|
+
python -m venv .venv && source .venv/bin/activate
|
|
23
|
+
pip install -e ".[dev]"
|
|
24
|
+
|
|
25
|
+
# Run the test suite
|
|
26
|
+
pytest tests/ -q
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Signing the CLA
|
|
32
|
+
|
|
33
|
+
NAT uses the [CLA Assistant](.github/workflows/cla.yml) GitHub Action to
|
|
34
|
+
manage CLA signatures. When you open your first pull request:
|
|
35
|
+
|
|
36
|
+
1. The bot will post a comment explaining the CLA.
|
|
37
|
+
2. Read the full [Contributor License Agreement](.github/CLA.md).
|
|
38
|
+
3. Reply to the bot's comment with:
|
|
39
|
+
> I have read the CLA Document and I hereby sign the CLA.
|
|
40
|
+
4. Your GitHub username is added to [CLA_SIGNATORIES.md](CLA_SIGNATORIES.md)
|
|
41
|
+
and the check turns green for all future PRs.
|
|
42
|
+
|
|
43
|
+
**Why a CLA?**
|
|
44
|
+
|
|
45
|
+
NAT is dual-licensed (AGPL-3.0 for open source, Commercial License for
|
|
46
|
+
enterprise). The CLA grants the project maintainers the rights needed to offer
|
|
47
|
+
both licenses while protecting your rights as a contributor. See
|
|
48
|
+
[docs/legal/licensing.md](docs/legal/licensing.md) for details.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Licensing
|
|
53
|
+
|
|
54
|
+
- NAT is licensed under **[AGPL-3.0-or-later](LICENSE)** for open-source use.
|
|
55
|
+
- A **[Commercial License](COMMERCIAL_LICENSE.md)** is available for proprietary
|
|
56
|
+
and SaaS deployments where AGPL copyleft obligations are not acceptable.
|
|
57
|
+
- All contributions are made under the CLA terms described above.
|
|
58
|
+
|
|
59
|
+
For commercial licensing inquiries, contact
|
|
60
|
+
[licensing@nat-testing.io](mailto:licensing@nat-testing.io).
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# NeuroAgentTest (NAT) — Multi-Agent Neural Network Framework
|
|
2
|
+
# Copyright (C) 2026 NAT Contributors
|
|
3
|
+
# AGPL-3.0-or-later — see LICENSE for details
|
|
4
|
+
# For commercial licensing: licensing@nat-testing.io
|
|
5
|
+
|
|
6
|
+
# ---------------------------------------------------------------------------
|
|
7
|
+
# Stage 1: Build — install dependencies and build the wheel
|
|
8
|
+
# ---------------------------------------------------------------------------
|
|
9
|
+
FROM python:3.11-slim-bookworm AS builder
|
|
10
|
+
|
|
11
|
+
WORKDIR /build
|
|
12
|
+
|
|
13
|
+
# Install build tooling
|
|
14
|
+
RUN pip install --no-cache-dir build==1.2.2
|
|
15
|
+
|
|
16
|
+
# Copy only the files needed to build the package
|
|
17
|
+
COPY pyproject.toml README.md LICENSE ./
|
|
18
|
+
COPY src/ ./src/
|
|
19
|
+
|
|
20
|
+
# Build the wheel
|
|
21
|
+
RUN python -m build --wheel --no-isolation
|
|
22
|
+
|
|
23
|
+
# ---------------------------------------------------------------------------
|
|
24
|
+
# Stage 2: Runtime — minimal production image
|
|
25
|
+
# ---------------------------------------------------------------------------
|
|
26
|
+
FROM python:3.11-slim-bookworm
|
|
27
|
+
|
|
28
|
+
ARG BUILD_DATE
|
|
29
|
+
ARG VCS_REF
|
|
30
|
+
ARG VERSION=1.0.0
|
|
31
|
+
|
|
32
|
+
LABEL org.opencontainers.image.title="NeuroAgentTest (NAT) API Server" \
|
|
33
|
+
org.opencontainers.image.description="REST API server for the NAT adaptive testing engine" \
|
|
34
|
+
org.opencontainers.image.licenses="AGPL-3.0-or-later" \
|
|
35
|
+
org.opencontainers.image.source="https://github.com/bg-playground/MultiAgent-Neural-Network-Framework" \
|
|
36
|
+
org.opencontainers.image.url="https://github.com/bg-playground/MultiAgent-Neural-Network-Framework" \
|
|
37
|
+
org.opencontainers.image.version="${VERSION}" \
|
|
38
|
+
org.opencontainers.image.revision="${VCS_REF}" \
|
|
39
|
+
org.opencontainers.image.created="${BUILD_DATE}" \
|
|
40
|
+
org.opencontainers.image.vendor="NAT Contributors"
|
|
41
|
+
|
|
42
|
+
# Create a non-root user for security
|
|
43
|
+
RUN addgroup --system nat && adduser --system --ingroup nat nat
|
|
44
|
+
|
|
45
|
+
WORKDIR /app
|
|
46
|
+
|
|
47
|
+
# Copy built wheel from builder stage and install it
|
|
48
|
+
COPY --from=builder /build/dist/*.whl /tmp/
|
|
49
|
+
|
|
50
|
+
RUN pip install --no-cache-dir /tmp/*.whl && rm /tmp/*.whl
|
|
51
|
+
|
|
52
|
+
# Create data directories owned by the nat user
|
|
53
|
+
RUN mkdir -p /app/data/scans /app/data/weights /app/data/regression && \
|
|
54
|
+
chown -R nat:nat /app/data
|
|
55
|
+
|
|
56
|
+
# Switch to non-root user
|
|
57
|
+
USER nat
|
|
58
|
+
|
|
59
|
+
# Expose the default port
|
|
60
|
+
EXPOSE 8080
|
|
61
|
+
|
|
62
|
+
# Environment variables with sensible defaults
|
|
63
|
+
ENV NAT_HOST=0.0.0.0 \
|
|
64
|
+
NAT_PORT=8080 \
|
|
65
|
+
NAT_LOG_LEVEL=info \
|
|
66
|
+
NAT_WORKERS=1
|
|
67
|
+
|
|
68
|
+
# Built-in health check (uses the default port 8080; override via NAT_PORT env var)
|
|
69
|
+
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
|
|
70
|
+
CMD python -c "import os,urllib.request; urllib.request.urlopen('http://localhost:'+os.environ.get('NAT_PORT','8080')+'/api/v1/health')" || exit 1
|
|
71
|
+
|
|
72
|
+
# Default command: run the FastAPI server with uvicorn
|
|
73
|
+
CMD uvicorn mannf.product.server:app \
|
|
74
|
+
--host "${NAT_HOST}" \
|
|
75
|
+
--port "${NAT_PORT}" \
|
|
76
|
+
--log-level "${NAT_LOG_LEVEL}" \
|
|
77
|
+
--workers "${NAT_WORKERS}"
|