sentrik 1.5.0__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.
- sentrik-1.5.0/.dockerignore +24 -0
- sentrik-1.5.0/.github/DISCUSSION_TEMPLATE/feature-request.yml +32 -0
- sentrik-1.5.0/.github/DISCUSSION_TEMPLATE/q-a.yml +19 -0
- sentrik-1.5.0/.github/DISCUSSION_TEMPLATE/show-and-tell.yml +14 -0
- sentrik-1.5.0/.github/ISSUE_TEMPLATE/bug_report.yml +37 -0
- sentrik-1.5.0/.github/ISSUE_TEMPLATE/config.yml +11 -0
- sentrik-1.5.0/.github/workflows/auto-merge.yml +92 -0
- sentrik-1.5.0/.github/workflows/docs.yml +36 -0
- sentrik-1.5.0/.github/workflows/guard-gate.yml +79 -0
- sentrik-1.5.0/.github/workflows/release.yml +88 -0
- sentrik-1.5.0/.gitignore +42 -0
- sentrik-1.5.0/.guard.yaml +102 -0
- sentrik-1.5.0/.mcp.json +9 -0
- sentrik-1.5.0/.pre-commit-config.yaml +9 -0
- sentrik-1.5.0/AI_SDLC_Guard_UX_Changelog.docx +0 -0
- sentrik-1.5.0/CHANGELOG-v1.1.0.md +149 -0
- sentrik-1.5.0/CLAUDE.md +515 -0
- sentrik-1.5.0/CODE_OF_CONDUCT.md +30 -0
- sentrik-1.5.0/CONTRIBUTING.md +189 -0
- sentrik-1.5.0/DEPLOYMENT.md +230 -0
- sentrik-1.5.0/Dockerfile +63 -0
- sentrik-1.5.0/Dockerfile.demo +22 -0
- sentrik-1.5.0/LICENSE_PROPRIETARY.txt +100 -0
- sentrik-1.5.0/PKG-INFO +241 -0
- sentrik-1.5.0/README.md +187 -0
- sentrik-1.5.0/agent-reports/content-drafts/2026-03-24.md +85 -0
- sentrik-1.5.0/agent-reports/market-intel/security-log-2026-03.md +101 -0
- sentrik-1.5.0/automation/.env.example +17 -0
- sentrik-1.5.0/automation/COMMANDS.md +28 -0
- sentrik-1.5.0/automation/config.yaml +106 -0
- sentrik-1.5.0/automation/e2e/package-lock.json +76 -0
- sentrik-1.5.0/automation/e2e/package.json +13 -0
- sentrik-1.5.0/automation/e2e/playwright.config.ts +34 -0
- sentrik-1.5.0/automation/e2e/tests/regression.spec.ts +115 -0
- sentrik-1.5.0/automation/e2e/tests/smoke.spec.ts +108 -0
- sentrik-1.5.0/automation/nemoclaw-skill/SKILL.md +157 -0
- sentrik-1.5.0/automation/nemoclaw-skill/bug-triage/SKILL.md +54 -0
- sentrik-1.5.0/automation/nemoclaw-skill/customer-support/SKILL.md +51 -0
- sentrik-1.5.0/automation/nemoclaw-skill/docs-manager/SKILL.md +56 -0
- sentrik-1.5.0/automation/nemoclaw-skill/market-research/SKILL.md +48 -0
- sentrik-1.5.0/automation/nemoclaw-skill/memory.md +60 -0
- sentrik-1.5.0/automation/nemoclaw-skill/release-manager/SKILL.md +182 -0
- sentrik-1.5.0/automation/nemoclaw-skill/sales-business/SKILL.md +47 -0
- sentrik-1.5.0/automation/nemoclaw-skill/security-maintenance/SKILL.md +65 -0
- sentrik-1.5.0/automation/nemoclaw-skill/sentrik-coordinator/SKILL.md +27 -0
- sentrik-1.5.0/automation/nemoclaw-skill/socials-content/SKILL.md +46 -0
- sentrik-1.5.0/automation/prompts/bug_fix.md +92 -0
- sentrik-1.5.0/automation/prompts/default.md +103 -0
- sentrik-1.5.0/automation/prompts/market_research.md +94 -0
- sentrik-1.5.0/automation/prompts/security.md +103 -0
- sentrik-1.5.0/automation/scripts/install-service.sh +99 -0
- sentrik-1.5.0/automation/scripts/nemoclaw-hook.sh +35 -0
- sentrik-1.5.0/automation/scripts/restore-sandbox.sh +91 -0
- sentrik-1.5.0/automation/scripts/run_handler.sh +53 -0
- sentrik-1.5.0/automation/scripts/sentrik-approval.service +24 -0
- sentrik-1.5.0/automation/scripts/setup.sh +68 -0
- sentrik-1.5.0/automation/telegram/approval_handler.py +515 -0
- sentrik-1.5.0/azure-pipelines.yml +72 -0
- sentrik-1.5.0/demo/.guard.yaml +16 -0
- sentrik-1.5.0/demo/requirements.yaml +68 -0
- sentrik-1.5.0/demo/run_demo.sh +277 -0
- sentrik-1.5.0/demo/sprint_backlog.json +24 -0
- sentrik-1.5.0/demo/src/__init__.py +5 -0
- sentrik-1.5.0/demo/src/anonymize.py +51 -0
- sentrik-1.5.0/demo/src/app.py +40 -0
- sentrik-1.5.0/demo/src/audit.py +46 -0
- sentrik-1.5.0/demo/src/auth.py +11 -0
- sentrik-1.5.0/demo/src/auth_fixed.py +13 -0
- sentrik-1.5.0/demo/src/export_fhir.py +72 -0
- sentrik-1.5.0/demo/src/ingest.py +48 -0
- sentrik-1.5.0/demo/src/signup.py +12 -0
- sentrik-1.5.0/demo/src/signup_fixed.py +13 -0
- sentrik-1.5.0/demo/standards.yaml +28 -0
- sentrik-1.5.0/demo/work_items.json +26 -0
- sentrik-1.5.0/docker-compose.yml +31 -0
- sentrik-1.5.0/docs/DEMO_CLI.md +1168 -0
- sentrik-1.5.0/docs/DEMO_DASHBOARD.md +277 -0
- sentrik-1.5.0/docs/FUTURE_OUTLOOK.md +185 -0
- sentrik-1.5.0/docs/HOW_SENTRIK_WORKS.md +260 -0
- sentrik-1.5.0/docs/LAUNCH_SUBMISSIONS.md +262 -0
- sentrik-1.5.0/docs/MANUAL_TEST_PLAN.md +331 -0
- sentrik-1.5.0/docs/SENTRA_BENEFITS.md +306 -0
- sentrik-1.5.0/docs/Sentra_Auth0_Integration_Plan.docx +0 -0
- sentrik-1.5.0/docs/SentrikSEOStrategy.md +247 -0
- sentrik-1.5.0/docs/TOOL_QUALIFICATION.md +437 -0
- sentrik-1.5.0/docs/TOOL_QUALIFICATION_CHECKLIST.md +191 -0
- sentrik-1.5.0/docs/api/authentication.md +72 -0
- sentrik-1.5.0/docs/api/rbac.md +57 -0
- sentrik-1.5.0/docs/api/reference.md +442 -0
- sentrik-1.5.0/docs/architecture.md +302 -0
- sentrik-1.5.0/docs/assets/extra.css +7 -0
- sentrik-1.5.0/docs/assets/favicon.svg +8 -0
- sentrik-1.5.0/docs/assets/images/docs-ai-integration.png +0 -0
- sentrik-1.5.0/docs/assets/images/docs-audit-page.png +0 -0
- sentrik-1.5.0/docs/assets/images/docs-cli-gate-fail.png +0 -0
- sentrik-1.5.0/docs/assets/images/docs-cli-vulns.png +0 -0
- sentrik-1.5.0/docs/assets/images/docs-dashboard-overview.png +0 -0
- sentrik-1.5.0/docs/assets/images/docs-findings-filtered.png +0 -0
- sentrik-1.5.0/docs/assets/images/docs-history-page.png +0 -0
- sentrik-1.5.0/docs/assets/images/docs-licenses-page.png +0 -0
- sentrik-1.5.0/docs/assets/images/docs-mcp-conversation.png +0 -0
- sentrik-1.5.0/docs/assets/images/docs-policies-page.png +0 -0
- sentrik-1.5.0/docs/assets/images/docs-rules-grouped.png +0 -0
- sentrik-1.5.0/docs/assets/images/docs-vulns-page.png +0 -0
- sentrik-1.5.0/docs/assets/logo.svg +23 -0
- sentrik-1.5.0/docs/distribution-and-infrastructure.md +75 -0
- sentrik-1.5.0/docs/getting-started/configuration.md +208 -0
- sentrik-1.5.0/docs/getting-started/installation.md +25 -0
- sentrik-1.5.0/docs/getting-started/quickstart.md +109 -0
- sentrik-1.5.0/docs/guides/auto-patching.md +152 -0
- sentrik-1.5.0/docs/guides/ci-cd-integration.md +173 -0
- sentrik-1.5.0/docs/guides/cli-reference.md +953 -0
- sentrik-1.5.0/docs/guides/compliance-evidence-map.md +182 -0
- sentrik-1.5.0/docs/guides/dashboard.md +176 -0
- sentrik-1.5.0/docs/guides/docker-deployment.md +88 -0
- sentrik-1.5.0/docs/guides/mcp-integration.md +206 -0
- sentrik-1.5.0/docs/guides/securing-ai-generated-code.md +211 -0
- sentrik-1.5.0/docs/guides/vscode-extension-tutorial.md +298 -0
- sentrik-1.5.0/docs/index.md +71 -0
- sentrik-1.5.0/docs/sdlc_openclaw_plan.docx +0 -0
- sentrik-1.5.0/docs/sentrik_improvements.md +301 -0
- sentrik-1.5.0/docs/standards-packs/authoring-custom-packs.md +198 -0
- sentrik-1.5.0/docs/standards-packs/cmmc.md +51 -0
- sentrik-1.5.0/docs/standards-packs/do-178c.md +57 -0
- sentrik-1.5.0/docs/standards-packs/eu-ai-act.md +54 -0
- sentrik-1.5.0/docs/standards-packs/fda-21cfr11.md +51 -0
- sentrik-1.5.0/docs/standards-packs/gdpr.md +58 -0
- sentrik-1.5.0/docs/standards-packs/go-security.md +41 -0
- sentrik-1.5.0/docs/standards-packs/hipaa.md +56 -0
- sentrik-1.5.0/docs/standards-packs/iec-62304.md +117 -0
- sentrik-1.5.0/docs/standards-packs/iec-81001-5-1.md +64 -0
- sentrik-1.5.0/docs/standards-packs/iso-14971.md +50 -0
- sentrik-1.5.0/docs/standards-packs/iso-26262.md +58 -0
- sentrik-1.5.0/docs/standards-packs/iso-27001.md +63 -0
- sentrik-1.5.0/docs/standards-packs/kotlin-security.md +37 -0
- sentrik-1.5.0/docs/standards-packs/misra-c.md +51 -0
- sentrik-1.5.0/docs/standards-packs/nist-800-53.md +53 -0
- sentrik-1.5.0/docs/standards-packs/nist-ai-rmf.md +46 -0
- sentrik-1.5.0/docs/standards-packs/overview.md +136 -0
- sentrik-1.5.0/docs/standards-packs/owasp-top-10.md +132 -0
- sentrik-1.5.0/docs/standards-packs/pci-dss.md +65 -0
- sentrik-1.5.0/docs/standards-packs/php-security.md +42 -0
- sentrik-1.5.0/docs/standards-packs/python-security.md +44 -0
- sentrik-1.5.0/docs/standards-packs/soc2.md +61 -0
- sentrik-1.5.0/docs/standards-packs/supply-chain-security.md +53 -0
- sentrik-1.5.0/docs/tutorials/medical-device-walkthrough.md +159 -0
- sentrik-1.5.0/docs/use-cases/fintech.md +183 -0
- sentrik-1.5.0/docs/use-cases/medical-devices.md +148 -0
- sentrik-1.5.0/docs/use-cases/saas.md +223 -0
- sentrik-1.5.0/examples/sample_standards.yaml +32 -0
- sentrik-1.5.0/examples/sample_work_items.json +433 -0
- sentrik-1.5.0/fly.toml +20 -0
- sentrik-1.5.0/frontend/index.html +13 -0
- sentrik-1.5.0/frontend/package-lock.json +1859 -0
- sentrik-1.5.0/frontend/package.json +22 -0
- sentrik-1.5.0/frontend/src/App.vue +262 -0
- sentrik-1.5.0/frontend/src/components/AppHeader.vue +125 -0
- sentrik-1.5.0/frontend/src/components/AppSidebar.vue +215 -0
- sentrik-1.5.0/frontend/src/components/DataTable.vue +168 -0
- sentrik-1.5.0/frontend/src/components/HelpOverlay.vue +167 -0
- sentrik-1.5.0/frontend/src/components/LoadingSkeleton.vue +128 -0
- sentrik-1.5.0/frontend/src/components/ModalDialog.vue +149 -0
- sentrik-1.5.0/frontend/src/components/SearchOverlay.vue +268 -0
- sentrik-1.5.0/frontend/src/components/SeverityBar.vue +67 -0
- sentrik-1.5.0/frontend/src/components/SeverityPills.vue +128 -0
- sentrik-1.5.0/frontend/src/components/ToastNotification.vue +102 -0
- sentrik-1.5.0/frontend/src/composables/useApi.ts +79 -0
- sentrik-1.5.0/frontend/src/composables/useKeyboard.ts +111 -0
- sentrik-1.5.0/frontend/src/composables/useTheme.ts +45 -0
- sentrik-1.5.0/frontend/src/composables/useToast.ts +32 -0
- sentrik-1.5.0/frontend/src/env.d.ts +7 -0
- sentrik-1.5.0/frontend/src/main.ts +16 -0
- sentrik-1.5.0/frontend/src/pages/ApprovalsPage.vue +126 -0
- sentrik-1.5.0/frontend/src/pages/AuditPage.vue +120 -0
- sentrik-1.5.0/frontend/src/pages/DevOpsPage.vue +184 -0
- sentrik-1.5.0/frontend/src/pages/FindingsPage.vue +227 -0
- sentrik-1.5.0/frontend/src/pages/HistoryPage.vue +143 -0
- sentrik-1.5.0/frontend/src/pages/LicensesPage.vue +124 -0
- sentrik-1.5.0/frontend/src/pages/OverviewPage.vue +172 -0
- sentrik-1.5.0/frontend/src/pages/PacksPage.vue +164 -0
- sentrik-1.5.0/frontend/src/pages/PoliciesPage.vue +144 -0
- sentrik-1.5.0/frontend/src/pages/ReportsPage.vue +110 -0
- sentrik-1.5.0/frontend/src/pages/RulesPage.vue +184 -0
- sentrik-1.5.0/frontend/src/pages/SettingsPage.vue +195 -0
- sentrik-1.5.0/frontend/src/pages/VulnsPage.vue +131 -0
- sentrik-1.5.0/frontend/src/pages/WorkItemsPage.vue +144 -0
- sentrik-1.5.0/frontend/src/stores/dashboard.ts +305 -0
- sentrik-1.5.0/frontend/src/styles/variables.css +159 -0
- sentrik-1.5.0/frontend/tsconfig.json +19 -0
- sentrik-1.5.0/frontend/tsconfig.node.json +10 -0
- sentrik-1.5.0/frontend/vite.config.ts +24 -0
- sentrik-1.5.0/guard.spec +135 -0
- sentrik-1.5.0/licenses-page.png +0 -0
- sentrik-1.5.0/logos/sentrik-icon-b.svg +8 -0
- sentrik-1.5.0/logos/sentrik-logo-b-dark.svg +23 -0
- sentrik-1.5.0/logos/sentrik-logo-b-light.svg +23 -0
- sentrik-1.5.0/mkdocs.yml +133 -0
- sentrik-1.5.0/npm-package/.npmignore +2 -0
- sentrik-1.5.0/npm-package/README.md +22 -0
- sentrik-1.5.0/npm-package/install.js +147 -0
- sentrik-1.5.0/npm-package/package.json +46 -0
- sentrik-1.5.0/npm-package/run.js +30 -0
- sentrik-1.5.0/project_management/.~lock.AI_SDLC_Guard_Task_Tracker.xlsx# +1 -0
- sentrik-1.5.0/project_management/AI_SDLC_Guard_Demo_Plan.docx +0 -0
- sentrik-1.5.0/project_management/AI_SDLC_Guard_Product_Plan.pptx +0 -0
- sentrik-1.5.0/project_management/AI_SDLC_Guard_Task_Tracker.xlsx +0 -0
- sentrik-1.5.0/project_management/AI_SDLC_Guard_Technology_Briefing.docx +0 -0
- sentrik-1.5.0/project_management/DEMO_GUIDE.md +336 -0
- sentrik-1.5.0/project_management/MILESTONE_TIMELINE.md +134 -0
- sentrik-1.5.0/project_management/PRODUCT_PLAN.md +126 -0
- sentrik-1.5.0/project_management/PROJECT_PLAN.md +941 -0
- sentrik-1.5.0/project_management/RISK_REGISTER.md +135 -0
- sentrik-1.5.0/project_management/STATUS_REPORT_TEMPLATE.md +68 -0
- sentrik-1.5.0/pypi-package/README.md +65 -0
- sentrik-1.5.0/pypi-package/pyproject.toml +36 -0
- sentrik-1.5.0/pypi-package/sentrik/__init__.py +3 -0
- sentrik-1.5.0/pypi-package/sentrik/wrapper.py +106 -0
- sentrik-1.5.0/pyproject.toml +105 -0
- sentrik-1.5.0/requirements.yaml +508 -0
- sentrik-1.5.0/scripts/Dockerfile.sandbox +14 -0
- sentrik-1.5.0/scripts/build-binary.ps1 +43 -0
- sentrik-1.5.0/scripts/build-binary.sh +42 -0
- sentrik-1.5.0/scripts/produce_video.py +409 -0
- sentrik-1.5.0/scripts/run_manual_tests.py +182 -0
- sentrik-1.5.0/scripts/setup-dev.ps1 +25 -0
- sentrik-1.5.0/scripts/setup-dev.sh +41 -0
- sentrik-1.5.0/scripts/sync_work_items.py +161 -0
- sentrik-1.5.0/scripts/test-sandbox.ps1 +60 -0
- sentrik-1.5.0/server.json +32 -0
- sentrik-1.5.0/setup.cfg +4 -0
- sentrik-1.5.0/src/guard/__init__.py +3 -0
- sentrik-1.5.0/src/guard/__main__.py +5 -0
- sentrik-1.5.0/src/guard/assets/logo.svg +45 -0
- sentrik-1.5.0/src/guard/auditor_portal.html +415 -0
- sentrik-1.5.0/src/guard/auth/__init__.py +1 -0
- sentrik-1.5.0/src/guard/auth/device_flow.py +246 -0
- sentrik-1.5.0/src/guard/auth/jwt_handler.py +191 -0
- sentrik-1.5.0/src/guard/auth/models.py +111 -0
- sentrik-1.5.0/src/guard/auth/oidc.py +222 -0
- sentrik-1.5.0/src/guard/authz/__init__.py +14 -0
- sentrik-1.5.0/src/guard/authz/checks.py +39 -0
- sentrik-1.5.0/src/guard/authz/fga_client.py +30 -0
- sentrik-1.5.0/src/guard/authz/models.py +87 -0
- sentrik-1.5.0/src/guard/authz/policy.py +86 -0
- sentrik-1.5.0/src/guard/authz/sync.py +31 -0
- sentrik-1.5.0/src/guard/cli.py +5349 -0
- sentrik-1.5.0/src/guard/cli_output.py +499 -0
- sentrik-1.5.0/src/guard/config.py +710 -0
- sentrik-1.5.0/src/guard/core/__init__.py +0 -0
- sentrik-1.5.0/src/guard/core/agent.py +110 -0
- sentrik-1.5.0/src/guard/core/approvals.py +159 -0
- sentrik-1.5.0/src/guard/core/architecture.py +509 -0
- sentrik-1.5.0/src/guard/core/attestation.py +169 -0
- sentrik-1.5.0/src/guard/core/auditor_portal.py +170 -0
- sentrik-1.5.0/src/guard/core/auto_detect.py +136 -0
- sentrik-1.5.0/src/guard/core/cache.py +103 -0
- sentrik-1.5.0/src/guard/core/code_metrics.py +164 -0
- sentrik-1.5.0/src/guard/core/comparison.py +88 -0
- sentrik-1.5.0/src/guard/core/confidence_scorer.py +118 -0
- sentrik-1.5.0/src/guard/core/context_builder.py +49 -0
- sentrik-1.5.0/src/guard/core/cpp_analyzer.py +383 -0
- sentrik-1.5.0/src/guard/core/design_reviewer.py +290 -0
- sentrik-1.5.0/src/guard/core/diff_parser.py +162 -0
- sentrik-1.5.0/src/guard/core/drift_analyzer.py +544 -0
- sentrik-1.5.0/src/guard/core/error_helper.py +294 -0
- sentrik-1.5.0/src/guard/core/evidence_export.py +894 -0
- sentrik-1.5.0/src/guard/core/evidence_mapper.py +675 -0
- sentrik-1.5.0/src/guard/core/expertise_tracker.py +238 -0
- sentrik-1.5.0/src/guard/core/gap_analysis.py +186 -0
- sentrik-1.5.0/src/guard/core/governance.py +372 -0
- sentrik-1.5.0/src/guard/core/grc_integration.py +325 -0
- sentrik-1.5.0/src/guard/core/impact_analysis.py +211 -0
- sentrik-1.5.0/src/guard/core/license_scanner.py +335 -0
- sentrik-1.5.0/src/guard/core/licensing.py +404 -0
- sentrik-1.5.0/src/guard/core/mcp_audit.py +247 -0
- sentrik-1.5.0/src/guard/core/metrics.py +240 -0
- sentrik-1.5.0/src/guard/core/metrics_db.py +287 -0
- sentrik-1.5.0/src/guard/core/models.py +133 -0
- sentrik-1.5.0/src/guard/core/notifications.py +332 -0
- sentrik-1.5.0/src/guard/core/orchestrator.py +109 -0
- sentrik-1.5.0/src/guard/core/org_dashboard.py +600 -0
- sentrik-1.5.0/src/guard/core/patcher.py +294 -0
- sentrik-1.5.0/src/guard/core/pipeline.py +845 -0
- sentrik-1.5.0/src/guard/core/posture.py +173 -0
- sentrik-1.5.0/src/guard/core/pr_decorator.py +260 -0
- sentrik-1.5.0/src/guard/core/project_profile.py +414 -0
- sentrik-1.5.0/src/guard/core/pull_reqs.py +197 -0
- sentrik-1.5.0/src/guard/core/quality_scorer.py +440 -0
- sentrik-1.5.0/src/guard/core/reconciler.py +294 -0
- sentrik-1.5.0/src/guard/core/renderer.py +105 -0
- sentrik-1.5.0/src/guard/core/repo_reader.py +108 -0
- sentrik-1.5.0/src/guard/core/requirement_tracker.py +136 -0
- sentrik-1.5.0/src/guard/core/requirements_generator.py +509 -0
- sentrik-1.5.0/src/guard/core/requirements_verifier.py +262 -0
- sentrik-1.5.0/src/guard/core/sbom.py +654 -0
- sentrik-1.5.0/src/guard/core/secrets_scanner.py +276 -0
- sentrik-1.5.0/src/guard/core/status_reporter.py +168 -0
- sentrik-1.5.0/src/guard/core/suppression.py +69 -0
- sentrik-1.5.0/src/guard/core/threat_modeler.py +259 -0
- sentrik-1.5.0/src/guard/core/traceability.py +203 -0
- sentrik-1.5.0/src/guard/core/vuln_fixer.py +404 -0
- sentrik-1.5.0/src/guard/core/vuln_pr.py +179 -0
- sentrik-1.5.0/src/guard/core/vuln_scanner.py +537 -0
- sentrik-1.5.0/src/guard/core/watcher.py +503 -0
- sentrik-1.5.0/src/guard/dashboard.html +6174 -0
- sentrik-1.5.0/src/guard/lsp_server.py +231 -0
- sentrik-1.5.0/src/guard/mcp_server.py +597 -0
- sentrik-1.5.0/src/guard/ml/__init__.py +1 -0
- sentrik-1.5.0/src/guard/ml/severity_estimator.py +444 -0
- sentrik-1.5.0/src/guard/oauth/__init__.py +6 -0
- sentrik-1.5.0/src/guard/oauth/manager.py +222 -0
- sentrik-1.5.0/src/guard/oauth/models.py +53 -0
- sentrik-1.5.0/src/guard/oauth/providers.py +270 -0
- sentrik-1.5.0/src/guard/oauth/store.py +213 -0
- sentrik-1.5.0/src/guard/packs/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/cmmc/__init__.py +0 -0
- sentrik-1.5.0/src/guard/packs/cmmc/pack.yaml +276 -0
- sentrik-1.5.0/src/guard/packs/do_178c/__init__.py +0 -0
- sentrik-1.5.0/src/guard/packs/do_178c/pack.yaml +331 -0
- sentrik-1.5.0/src/guard/packs/eu_ai_act/__init__.py +0 -0
- sentrik-1.5.0/src/guard/packs/eu_ai_act/pack.yaml +309 -0
- sentrik-1.5.0/src/guard/packs/fda_21cfr11/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/fda_21cfr11/pack.yaml +245 -0
- sentrik-1.5.0/src/guard/packs/fda_iec_62304/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/fda_iec_62304/pack.yaml +424 -0
- sentrik-1.5.0/src/guard/packs/gdpr/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/gdpr/pack.yaml +358 -0
- sentrik-1.5.0/src/guard/packs/go_security/__init__.py +0 -0
- sentrik-1.5.0/src/guard/packs/go_security/pack.yaml +214 -0
- sentrik-1.5.0/src/guard/packs/hipaa/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/hipaa/pack.yaml +358 -0
- sentrik-1.5.0/src/guard/packs/iec_81001_5_1/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/iec_81001_5_1/pack.yaml +305 -0
- sentrik-1.5.0/src/guard/packs/iso_14971/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/iso_14971/pack.yaml +217 -0
- sentrik-1.5.0/src/guard/packs/iso_26262/__init__.py +0 -0
- sentrik-1.5.0/src/guard/packs/iso_26262/pack.yaml +352 -0
- sentrik-1.5.0/src/guard/packs/iso_27001/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/iso_27001/pack.yaml +437 -0
- sentrik-1.5.0/src/guard/packs/kotlin_security/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/kotlin_security/pack.yaml +189 -0
- sentrik-1.5.0/src/guard/packs/misra_c/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/misra_c/pack.yaml +295 -0
- sentrik-1.5.0/src/guard/packs/nist_800_53/__init__.py +0 -0
- sentrik-1.5.0/src/guard/packs/nist_800_53/pack.yaml +302 -0
- sentrik-1.5.0/src/guard/packs/nist_ai_rmf/__init__.py +0 -0
- sentrik-1.5.0/src/guard/packs/nist_ai_rmf/pack.yaml +214 -0
- sentrik-1.5.0/src/guard/packs/owasp_top_10/__init__.py +0 -0
- sentrik-1.5.0/src/guard/packs/owasp_top_10/pack.yaml +955 -0
- sentrik-1.5.0/src/guard/packs/pci_dss/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/pci_dss/pack.yaml +474 -0
- sentrik-1.5.0/src/guard/packs/php_security/__init__.py +1 -0
- sentrik-1.5.0/src/guard/packs/php_security/pack.yaml +232 -0
- sentrik-1.5.0/src/guard/packs/python_security/__init__.py +0 -0
- sentrik-1.5.0/src/guard/packs/python_security/pack.yaml +253 -0
- sentrik-1.5.0/src/guard/packs/registry.py +525 -0
- sentrik-1.5.0/src/guard/packs/soc2/__init__.py +0 -0
- sentrik-1.5.0/src/guard/packs/soc2/pack.yaml +418 -0
- sentrik-1.5.0/src/guard/packs/supply_chain_security/__init__.py +0 -0
- sentrik-1.5.0/src/guard/packs/supply_chain_security/pack.yaml +353 -0
- sentrik-1.5.0/src/guard/providers/__init__.py +0 -0
- sentrik-1.5.0/src/guard/providers/devops_azure.py +545 -0
- sentrik-1.5.0/src/guard/providers/devops_base.py +45 -0
- sentrik-1.5.0/src/guard/providers/devops_github.py +310 -0
- sentrik-1.5.0/src/guard/providers/devops_jira.py +395 -0
- sentrik-1.5.0/src/guard/providers/devops_stub.py +24 -0
- sentrik-1.5.0/src/guard/providers/factory.py +300 -0
- sentrik-1.5.0/src/guard/providers/llm_anthropic.py +113 -0
- sentrik-1.5.0/src/guard/providers/llm_base.py +33 -0
- sentrik-1.5.0/src/guard/providers/llm_ollama.py +106 -0
- sentrik-1.5.0/src/guard/providers/llm_openai.py +130 -0
- sentrik-1.5.0/src/guard/providers/llm_stub.py +19 -0
- sentrik-1.5.0/src/guard/providers/scanners_base.py +14 -0
- sentrik-1.5.0/src/guard/providers/scanners_composite.py +52 -0
- sentrik-1.5.0/src/guard/providers/scanners_llm.py +125 -0
- sentrik-1.5.0/src/guard/providers/scanners_sarif.py +216 -0
- sentrik-1.5.0/src/guard/providers/scanners_stub.py +14 -0
- sentrik-1.5.0/src/guard/providers/standards_azure.py +91 -0
- sentrik-1.5.0/src/guard/providers/standards_base.py +18 -0
- sentrik-1.5.0/src/guard/providers/standards_github.py +76 -0
- sentrik-1.5.0/src/guard/providers/standards_jira.py +112 -0
- sentrik-1.5.0/src/guard/providers/standards_stub.py +25 -0
- sentrik-1.5.0/src/guard/reporters/__init__.py +1 -0
- sentrik-1.5.0/src/guard/reporters/base.py +22 -0
- sentrik-1.5.0/src/guard/reporters/compliance_report.py +402 -0
- sentrik-1.5.0/src/guard/reporters/csv_reporter.py +40 -0
- sentrik-1.5.0/src/guard/reporters/executive_summary.py +171 -0
- sentrik-1.5.0/src/guard/reporters/factory.py +59 -0
- sentrik-1.5.0/src/guard/reporters/html.py +344 -0
- sentrik-1.5.0/src/guard/reporters/junit.py +63 -0
- sentrik-1.5.0/src/guard/reporters/sarif_output.py +86 -0
- sentrik-1.5.0/src/guard/reporters/trust_center.py +451 -0
- sentrik-1.5.0/src/guard/rules/__init__.py +0 -0
- sentrik-1.5.0/src/guard/rules/ast_checks.py +221 -0
- sentrik-1.5.0/src/guard/rules/builtins.py +94 -0
- sentrik-1.5.0/src/guard/rules/engine.py +726 -0
- sentrik-1.5.0/src/guard/rules/policy_engine.py +613 -0
- sentrik-1.5.0/src/guard/rules/rule_schema.py +30 -0
- sentrik-1.5.0/src/guard/sdk/__init__.py +34 -0
- sentrik-1.5.0/src/guard/sdk/checker.py +405 -0
- sentrik-1.5.0/src/guard/server.py +3327 -0
- sentrik-1.5.0/src/guard/spec_importer.py +531 -0
- sentrik-1.5.0/src/sentrik.egg-info/PKG-INFO +241 -0
- sentrik-1.5.0/src/sentrik.egg-info/SOURCES.txt +510 -0
- sentrik-1.5.0/src/sentrik.egg-info/dependency_links.txt +1 -0
- sentrik-1.5.0/src/sentrik.egg-info/entry_points.txt +2 -0
- sentrik-1.5.0/src/sentrik.egg-info/requires.txt +39 -0
- sentrik-1.5.0/src/sentrik.egg-info/top_level.txt +1 -0
- sentrik-1.5.0/standards.yaml +74 -0
- sentrik-1.5.0/templates/gitlab-ci-sentrik.yml +68 -0
- sentrik-1.5.0/tests/__init__.py +0 -0
- sentrik-1.5.0/tests/conftest.py +67 -0
- sentrik-1.5.0/tests/helpers.py +96 -0
- sentrik-1.5.0/tests/test_agent.py +82 -0
- sentrik-1.5.0/tests/test_approvals.py +280 -0
- sentrik-1.5.0/tests/test_architecture.py +505 -0
- sentrik-1.5.0/tests/test_ast_checks.py +330 -0
- sentrik-1.5.0/tests/test_attestation.py +118 -0
- sentrik-1.5.0/tests/test_auditor_portal.py +339 -0
- sentrik-1.5.0/tests/test_auth.py +330 -0
- sentrik-1.5.0/tests/test_authz.py +363 -0
- sentrik-1.5.0/tests/test_auto_detect.py +384 -0
- sentrik-1.5.0/tests/test_binary_smoke.py +56 -0
- sentrik-1.5.0/tests/test_cache.py +177 -0
- sentrik-1.5.0/tests/test_chat_api.py +292 -0
- sentrik-1.5.0/tests/test_cli_commands.py +1077 -0
- sentrik-1.5.0/tests/test_cli_output.py +41 -0
- sentrik-1.5.0/tests/test_code_metrics.py +90 -0
- sentrik-1.5.0/tests/test_comparison.py +191 -0
- sentrik-1.5.0/tests/test_compliance_report.py +210 -0
- sentrik-1.5.0/tests/test_conditional_obligations.py +139 -0
- sentrik-1.5.0/tests/test_confidence_scorer.py +150 -0
- sentrik-1.5.0/tests/test_config_validation.py +616 -0
- sentrik-1.5.0/tests/test_context_builder.py +90 -0
- sentrik-1.5.0/tests/test_cpp_analyzer.py +298 -0
- sentrik-1.5.0/tests/test_csv_reporter.py +138 -0
- sentrik-1.5.0/tests/test_custom_rules.py +409 -0
- sentrik-1.5.0/tests/test_device_flow.py +295 -0
- sentrik-1.5.0/tests/test_devops_azure.py +718 -0
- sentrik-1.5.0/tests/test_devops_github.py +348 -0
- sentrik-1.5.0/tests/test_devops_jira.py +426 -0
- sentrik-1.5.0/tests/test_diff_parser.py +260 -0
- sentrik-1.5.0/tests/test_drift_analyzer.py +313 -0
- sentrik-1.5.0/tests/test_evidence_export.py +595 -0
- sentrik-1.5.0/tests/test_gap_analysis.py +143 -0
- sentrik-1.5.0/tests/test_governance.py +514 -0
- sentrik-1.5.0/tests/test_grc_integration.py +346 -0
- sentrik-1.5.0/tests/test_impact_analysis.py +270 -0
- sentrik-1.5.0/tests/test_install_check.py +42 -0
- sentrik-1.5.0/tests/test_license_scanner.py +329 -0
- sentrik-1.5.0/tests/test_licensing.py +515 -0
- sentrik-1.5.0/tests/test_llm_anthropic.py +139 -0
- sentrik-1.5.0/tests/test_lsp_server.py +103 -0
- sentrik-1.5.0/tests/test_main_module.py +37 -0
- sentrik-1.5.0/tests/test_mcp_audit.py +170 -0
- sentrik-1.5.0/tests/test_mcp_server.py +290 -0
- sentrik-1.5.0/tests/test_metrics_db.py +373 -0
- sentrik-1.5.0/tests/test_models.py +400 -0
- sentrik-1.5.0/tests/test_new_features.py +894 -0
- sentrik-1.5.0/tests/test_notifications.py +420 -0
- sentrik-1.5.0/tests/test_oauth.py +371 -0
- sentrik-1.5.0/tests/test_orchestrator.py +119 -0
- sentrik-1.5.0/tests/test_org_dashboard.py +341 -0
- sentrik-1.5.0/tests/test_pack_diff.py +100 -0
- sentrik-1.5.0/tests/test_packs.py +1066 -0
- sentrik-1.5.0/tests/test_patcher.py +303 -0
- sentrik-1.5.0/tests/test_performance.py +424 -0
- sentrik-1.5.0/tests/test_pipeline.py +545 -0
- sentrik-1.5.0/tests/test_pipeline_progress.py +144 -0
- sentrik-1.5.0/tests/test_platform_polish.py +376 -0
- sentrik-1.5.0/tests/test_policy_engine.py +522 -0
- sentrik-1.5.0/tests/test_posture.py +77 -0
- sentrik-1.5.0/tests/test_pr_decorator.py +350 -0
- sentrik-1.5.0/tests/test_providers.py +403 -0
- sentrik-1.5.0/tests/test_pull_reqs.py +415 -0
- sentrik-1.5.0/tests/test_rbac_enforcement.py +490 -0
- sentrik-1.5.0/tests/test_reconciler.py +441 -0
- sentrik-1.5.0/tests/test_renderer.py +257 -0
- sentrik-1.5.0/tests/test_repo_reader.py +199 -0
- sentrik-1.5.0/tests/test_reporters.py +470 -0
- sentrik-1.5.0/tests/test_requirement_tracker.py +230 -0
- sentrik-1.5.0/tests/test_requirements_generator.py +415 -0
- sentrik-1.5.0/tests/test_requirements_verifier.py +339 -0
- sentrik-1.5.0/tests/test_rules_engine.py +774 -0
- sentrik-1.5.0/tests/test_sbom.py +792 -0
- sentrik-1.5.0/tests/test_scanners_composite.py +216 -0
- sentrik-1.5.0/tests/test_scanners_sarif.py +453 -0
- sentrik-1.5.0/tests/test_sdk.py +383 -0
- sentrik-1.5.0/tests/test_secrets_scanner.py +160 -0
- sentrik-1.5.0/tests/test_server.py +1102 -0
- sentrik-1.5.0/tests/test_severity_estimator.py +553 -0
- sentrik-1.5.0/tests/test_smoke.py +857 -0
- sentrik-1.5.0/tests/test_spec_importer.py +526 -0
- sentrik-1.5.0/tests/test_standards_azure.py +384 -0
- sentrik-1.5.0/tests/test_standards_github.py +159 -0
- sentrik-1.5.0/tests/test_standards_jira.py +226 -0
- sentrik-1.5.0/tests/test_status_reporter.py +221 -0
- sentrik-1.5.0/tests/test_suppression.py +106 -0
- sentrik-1.5.0/tests/test_sync_work_items.py +221 -0
- sentrik-1.5.0/tests/test_traceability.py +322 -0
- sentrik-1.5.0/tests/test_trust_center.py +245 -0
- sentrik-1.5.0/tests/test_vuln_fixer.py +347 -0
- sentrik-1.5.0/tests/test_vuln_pr.py +338 -0
- sentrik-1.5.0/tests/test_vuln_scanner.py +389 -0
- sentrik-1.5.0/tests/test_watcher.py +410 -0
- sentrik-1.5.0/vscode-extension/.vscodeignore +7 -0
- sentrik-1.5.0/vscode-extension/README.md +94 -0
- sentrik-1.5.0/vscode-extension/icon.png +0 -0
- sentrik-1.5.0/vscode-extension/package.json +220 -0
- sentrik-1.5.0/vscode-extension/src/extension.ts +1335 -0
- sentrik-1.5.0/vscode-extension/tsconfig.json +15 -0
- sentrik-1.5.0/work_items.json +46 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
__pycache__
|
|
2
|
+
*.pyc
|
|
3
|
+
*.pyo
|
|
4
|
+
.pytest_cache
|
|
5
|
+
.mypy_cache
|
|
6
|
+
.ruff_cache
|
|
7
|
+
out/
|
|
8
|
+
dist/
|
|
9
|
+
build/
|
|
10
|
+
*.egg-info
|
|
11
|
+
.venv/
|
|
12
|
+
venv/
|
|
13
|
+
.env
|
|
14
|
+
.git
|
|
15
|
+
.github
|
|
16
|
+
demo/
|
|
17
|
+
tests/
|
|
18
|
+
project_management/
|
|
19
|
+
guard.spec
|
|
20
|
+
scripts/
|
|
21
|
+
vscode-extension/
|
|
22
|
+
LICENSE_PROPRIETARY.txt
|
|
23
|
+
*.md
|
|
24
|
+
!README.md
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
title: "[Feature] "
|
|
2
|
+
labels: ["enhancement"]
|
|
3
|
+
body:
|
|
4
|
+
- type: markdown
|
|
5
|
+
attributes:
|
|
6
|
+
value: |
|
|
7
|
+
Suggest a new feature or improvement for SENTRIK.
|
|
8
|
+
- type: textarea
|
|
9
|
+
id: description
|
|
10
|
+
attributes:
|
|
11
|
+
label: Feature description
|
|
12
|
+
description: What would you like SENTRIK to do?
|
|
13
|
+
validations:
|
|
14
|
+
required: true
|
|
15
|
+
- type: textarea
|
|
16
|
+
id: use-case
|
|
17
|
+
attributes:
|
|
18
|
+
label: Use case
|
|
19
|
+
description: How would you use this feature? What problem does it solve?
|
|
20
|
+
- type: dropdown
|
|
21
|
+
id: area
|
|
22
|
+
attributes:
|
|
23
|
+
label: Area
|
|
24
|
+
options:
|
|
25
|
+
- CLI
|
|
26
|
+
- Dashboard
|
|
27
|
+
- API
|
|
28
|
+
- Standards Packs
|
|
29
|
+
- CI/CD Integration
|
|
30
|
+
- DevOps Integration
|
|
31
|
+
- Governance
|
|
32
|
+
- Other
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
title: "[Q&A] "
|
|
2
|
+
labels: ["question"]
|
|
3
|
+
body:
|
|
4
|
+
- type: markdown
|
|
5
|
+
attributes:
|
|
6
|
+
value: |
|
|
7
|
+
Ask a question about SENTRIK — installation, configuration, standards packs, CI/CD integration, or anything else.
|
|
8
|
+
- type: textarea
|
|
9
|
+
id: question
|
|
10
|
+
attributes:
|
|
11
|
+
label: Question
|
|
12
|
+
description: What would you like to know?
|
|
13
|
+
validations:
|
|
14
|
+
required: true
|
|
15
|
+
- type: textarea
|
|
16
|
+
id: context
|
|
17
|
+
attributes:
|
|
18
|
+
label: Context
|
|
19
|
+
description: Any relevant details (SENTRIK version, OS, config, error messages).
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
title: "[Show] "
|
|
2
|
+
labels: ["show-and-tell"]
|
|
3
|
+
body:
|
|
4
|
+
- type: markdown
|
|
5
|
+
attributes:
|
|
6
|
+
value: |
|
|
7
|
+
Share how you're using SENTRIK! Custom packs, CI/CD setups, interesting findings, compliance workflows — we'd love to see it.
|
|
8
|
+
- type: textarea
|
|
9
|
+
id: description
|
|
10
|
+
attributes:
|
|
11
|
+
label: What are you sharing?
|
|
12
|
+
description: Tell us about your setup, custom pack, workflow, or results.
|
|
13
|
+
validations:
|
|
14
|
+
required: true
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Report a bug in SENTRIK
|
|
3
|
+
title: "[Bug] "
|
|
4
|
+
labels: ["bug"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
id: description
|
|
8
|
+
attributes:
|
|
9
|
+
label: Bug description
|
|
10
|
+
description: What happened? What did you expect?
|
|
11
|
+
validations:
|
|
12
|
+
required: true
|
|
13
|
+
- type: textarea
|
|
14
|
+
id: reproduce
|
|
15
|
+
attributes:
|
|
16
|
+
label: Steps to reproduce
|
|
17
|
+
description: How can we reproduce this?
|
|
18
|
+
placeholder: |
|
|
19
|
+
1. Run `sentrik scan`
|
|
20
|
+
2. ...
|
|
21
|
+
validations:
|
|
22
|
+
required: true
|
|
23
|
+
- type: input
|
|
24
|
+
id: version
|
|
25
|
+
attributes:
|
|
26
|
+
label: SENTRIK version
|
|
27
|
+
placeholder: "1.0.0"
|
|
28
|
+
- type: input
|
|
29
|
+
id: python
|
|
30
|
+
attributes:
|
|
31
|
+
label: Python version
|
|
32
|
+
placeholder: "3.12"
|
|
33
|
+
- type: input
|
|
34
|
+
id: os
|
|
35
|
+
attributes:
|
|
36
|
+
label: Operating system
|
|
37
|
+
placeholder: "Ubuntu 22.04 / macOS 14 / Windows 11"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Question / Support
|
|
4
|
+
url: https://github.com/maxgerhardson/sentrik/discussions/categories/q-a
|
|
5
|
+
about: Ask questions in GitHub Discussions
|
|
6
|
+
- name: Feature Request
|
|
7
|
+
url: https://github.com/maxgerhardson/sentrik/discussions/categories/feature-requests
|
|
8
|
+
about: Suggest features in GitHub Discussions
|
|
9
|
+
- name: Documentation
|
|
10
|
+
url: https://docs.sentrik.dev
|
|
11
|
+
about: Read the documentation
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
name: Auto-Merge Bot PRs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request_review:
|
|
5
|
+
types: [submitted]
|
|
6
|
+
check_suite:
|
|
7
|
+
types: [completed]
|
|
8
|
+
status: {}
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: write
|
|
12
|
+
pull-requests: write
|
|
13
|
+
checks: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
auto-merge:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
# Only run for PRs with the auto-merge label
|
|
19
|
+
if: >
|
|
20
|
+
github.event_name == 'check_suite' ||
|
|
21
|
+
github.event_name == 'status' ||
|
|
22
|
+
(github.event_name == 'pull_request_review' && github.event.review.state == 'approved')
|
|
23
|
+
|
|
24
|
+
steps:
|
|
25
|
+
- name: Checkout
|
|
26
|
+
uses: actions/checkout@v4
|
|
27
|
+
|
|
28
|
+
- name: Find auto-merge PRs
|
|
29
|
+
id: find-prs
|
|
30
|
+
env:
|
|
31
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
32
|
+
run: |
|
|
33
|
+
# Find open PRs with auto-merge label where all checks pass
|
|
34
|
+
prs=$(gh pr list \
|
|
35
|
+
--label "auto-merge" \
|
|
36
|
+
--state open \
|
|
37
|
+
--json number,headRefName,statusCheckRollup,labels \
|
|
38
|
+
--jq '
|
|
39
|
+
.[] |
|
|
40
|
+
select(
|
|
41
|
+
.statusCheckRollup != null and
|
|
42
|
+
(.statusCheckRollup | all(.conclusion == "SUCCESS" or .conclusion == "NEUTRAL"))
|
|
43
|
+
) |
|
|
44
|
+
.number
|
|
45
|
+
')
|
|
46
|
+
|
|
47
|
+
echo "prs=$prs" >> $GITHUB_OUTPUT
|
|
48
|
+
echo "Found auto-merge candidates: $prs"
|
|
49
|
+
|
|
50
|
+
- name: Merge passing PRs
|
|
51
|
+
if: steps.find-prs.outputs.prs != ''
|
|
52
|
+
env:
|
|
53
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
54
|
+
run: |
|
|
55
|
+
for pr_number in ${{ steps.find-prs.outputs.prs }}; do
|
|
56
|
+
echo "Attempting to merge PR #$pr_number"
|
|
57
|
+
|
|
58
|
+
# Double-check all checks pass
|
|
59
|
+
checks_pass=$(gh pr checks "$pr_number" --json bucket \
|
|
60
|
+
--jq '[.[] | select(.bucket != "pass" and .bucket != "skip")] | length')
|
|
61
|
+
|
|
62
|
+
if [ "$checks_pass" = "0" ]; then
|
|
63
|
+
gh pr merge "$pr_number" \
|
|
64
|
+
--squash \
|
|
65
|
+
--auto \
|
|
66
|
+
--delete-branch \
|
|
67
|
+
--subject "auto-merge: PR #$pr_number" || \
|
|
68
|
+
echo "Failed to merge PR #$pr_number — may need manual review"
|
|
69
|
+
else
|
|
70
|
+
echo "PR #$pr_number has failing checks, skipping"
|
|
71
|
+
fi
|
|
72
|
+
done
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
# Notify Telegram on merge
|
|
76
|
+
notify:
|
|
77
|
+
needs: auto-merge
|
|
78
|
+
runs-on: ubuntu-latest
|
|
79
|
+
if: success()
|
|
80
|
+
steps:
|
|
81
|
+
- name: Send Telegram notification
|
|
82
|
+
env:
|
|
83
|
+
BOT_TOKEN: ${{ secrets.SENTRIK_BOT_TOKEN }}
|
|
84
|
+
CHAT_ID: ${{ secrets.SENTRIK_CHAT_ID }}
|
|
85
|
+
run: |
|
|
86
|
+
if [ -n "$BOT_TOKEN" ] && [ -n "$CHAT_ID" ]; then
|
|
87
|
+
curl -s -X POST \
|
|
88
|
+
"https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
|
|
89
|
+
-d chat_id="$CHAT_ID" \
|
|
90
|
+
-d parse_mode="Markdown" \
|
|
91
|
+
-d text="✅ *Auto-merged* PR from automation pipeline. Main branch updated and deployed."
|
|
92
|
+
fi
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Deploy Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
paths:
|
|
8
|
+
- "docs/**"
|
|
9
|
+
- "mkdocs.yml"
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
deploy:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Set up Python
|
|
19
|
+
uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.12"
|
|
22
|
+
|
|
23
|
+
- name: Install MkDocs Material
|
|
24
|
+
run: pip install mkdocs-material
|
|
25
|
+
|
|
26
|
+
- name: Build docs
|
|
27
|
+
run: mkdocs build --strict
|
|
28
|
+
|
|
29
|
+
- name: Deploy to sentrik-docs repo
|
|
30
|
+
uses: peaceiris/actions-gh-pages@v4
|
|
31
|
+
with:
|
|
32
|
+
personal_token: ${{ secrets.DOCS_DEPLOY_TOKEN }}
|
|
33
|
+
external_repository: maxgerhardson/sentrik-docs
|
|
34
|
+
publish_branch: gh-pages
|
|
35
|
+
publish_dir: ./site
|
|
36
|
+
commit_message: "docs: deploy from sentrik@${{ github.sha }}"
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: Sentrik Gate
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
sentrik-gate:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
with:
|
|
16
|
+
fetch-depth: 0 # Full history for git range
|
|
17
|
+
|
|
18
|
+
- uses: actions/setup-python@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: "3.12"
|
|
21
|
+
|
|
22
|
+
- name: Install dependencies
|
|
23
|
+
run: |
|
|
24
|
+
python -m pip install --upgrade pip setuptools
|
|
25
|
+
pip install -e ".[dev]"
|
|
26
|
+
|
|
27
|
+
- name: Run tests with coverage
|
|
28
|
+
run: pytest --junitxml=out/test-results.xml
|
|
29
|
+
|
|
30
|
+
- name: Validate config
|
|
31
|
+
run: sentrik validate-config
|
|
32
|
+
|
|
33
|
+
- name: Run sentrik gate on PR changes
|
|
34
|
+
if: github.event_name == 'pull_request'
|
|
35
|
+
env:
|
|
36
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
37
|
+
GUARD_GITHUB_OWNER: ${{ github.repository_owner }}
|
|
38
|
+
GUARD_GITHUB_REPO: ${{ github.event.repository.name }}
|
|
39
|
+
run: sentrik gate --git-range "origin/main...HEAD" --decorate-pr --status-check
|
|
40
|
+
|
|
41
|
+
- name: Run sentrik gate (full scan)
|
|
42
|
+
if: github.event_name == 'push'
|
|
43
|
+
run: sentrik gate
|
|
44
|
+
|
|
45
|
+
- name: Generate SARIF report
|
|
46
|
+
if: always()
|
|
47
|
+
run: sentrik scan --git-range "origin/main...HEAD" 2>/dev/null || true
|
|
48
|
+
env:
|
|
49
|
+
GUARD_PROVIDER: stub
|
|
50
|
+
|
|
51
|
+
- name: Upload SARIF to GitHub Code Scanning
|
|
52
|
+
uses: github/codeql-action/upload-sarif@v3
|
|
53
|
+
if: always()
|
|
54
|
+
continue-on-error: true
|
|
55
|
+
with:
|
|
56
|
+
sarif_file: out/findings.sarif
|
|
57
|
+
|
|
58
|
+
- name: Upload test results
|
|
59
|
+
uses: actions/upload-artifact@v4
|
|
60
|
+
if: always()
|
|
61
|
+
with:
|
|
62
|
+
name: test-results
|
|
63
|
+
path: out/test-results.xml
|
|
64
|
+
|
|
65
|
+
- name: Upload sentrik reports
|
|
66
|
+
uses: actions/upload-artifact@v4
|
|
67
|
+
if: always()
|
|
68
|
+
with:
|
|
69
|
+
name: sentrik-reports
|
|
70
|
+
path: out/
|
|
71
|
+
|
|
72
|
+
- name: Sync work items to GitHub Issues
|
|
73
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
74
|
+
env:
|
|
75
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
76
|
+
GUARD_DEVOPS_PROVIDER: github
|
|
77
|
+
GUARD_GITHUB_OWNER: ${{ github.repository_owner }}
|
|
78
|
+
GUARD_GITHUB_REPO: ${{ github.event.repository.name }}
|
|
79
|
+
run: sentrik sync
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
packages: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
# -----------------------------------------------------------------------
|
|
14
|
+
# Binary: matrix build (Linux, macOS x64, macOS arm64, Windows)
|
|
15
|
+
# -----------------------------------------------------------------------
|
|
16
|
+
binary:
|
|
17
|
+
strategy:
|
|
18
|
+
matrix:
|
|
19
|
+
include:
|
|
20
|
+
- os: ubuntu-latest
|
|
21
|
+
artifact: sentrik-linux-x64
|
|
22
|
+
binary: dist/sentrik
|
|
23
|
+
- os: macos-latest
|
|
24
|
+
artifact: sentrik-darwin-x64
|
|
25
|
+
binary: dist/sentrik
|
|
26
|
+
- os: macos-14
|
|
27
|
+
artifact: sentrik-darwin-arm64
|
|
28
|
+
binary: dist/sentrik
|
|
29
|
+
- os: windows-latest
|
|
30
|
+
artifact: sentrik-win32-x64.exe
|
|
31
|
+
binary: dist/sentrik.exe
|
|
32
|
+
runs-on: ${{ matrix.os }}
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v4
|
|
35
|
+
|
|
36
|
+
- name: Set up Python
|
|
37
|
+
uses: actions/setup-python@v5
|
|
38
|
+
with:
|
|
39
|
+
python-version: "3.12"
|
|
40
|
+
|
|
41
|
+
- name: Install dependencies
|
|
42
|
+
run: |
|
|
43
|
+
pip install -e ".[dev]"
|
|
44
|
+
pip install pyinstaller
|
|
45
|
+
|
|
46
|
+
- name: Build binary
|
|
47
|
+
run: python -m PyInstaller guard.spec
|
|
48
|
+
|
|
49
|
+
- name: Smoke test
|
|
50
|
+
run: ${{ matrix.binary }} --help
|
|
51
|
+
|
|
52
|
+
- name: Upload artifact
|
|
53
|
+
uses: actions/upload-artifact@v4
|
|
54
|
+
with:
|
|
55
|
+
name: ${{ matrix.artifact }}
|
|
56
|
+
path: ${{ matrix.binary }}
|
|
57
|
+
|
|
58
|
+
# -----------------------------------------------------------------------
|
|
59
|
+
# Release: create GitHub Release with platform binaries
|
|
60
|
+
# -----------------------------------------------------------------------
|
|
61
|
+
release:
|
|
62
|
+
needs: [binary]
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
steps:
|
|
65
|
+
- uses: actions/checkout@v4
|
|
66
|
+
|
|
67
|
+
- name: Download all artifacts
|
|
68
|
+
uses: actions/download-artifact@v4
|
|
69
|
+
with:
|
|
70
|
+
path: release-artifacts
|
|
71
|
+
|
|
72
|
+
- name: Rename binaries for platform identification
|
|
73
|
+
run: |
|
|
74
|
+
mkdir -p release-binaries
|
|
75
|
+
cp release-artifacts/sentrik-linux-x64/sentrik release-binaries/sentrik-linux-x64
|
|
76
|
+
cp release-artifacts/sentrik-darwin-x64/sentrik release-binaries/sentrik-darwin-x64
|
|
77
|
+
cp release-artifacts/sentrik-darwin-arm64/sentrik release-binaries/sentrik-darwin-arm64
|
|
78
|
+
cp release-artifacts/sentrik-win32-x64.exe/sentrik.exe release-binaries/sentrik-win32-x64.exe
|
|
79
|
+
|
|
80
|
+
- name: Create GitHub Release
|
|
81
|
+
uses: softprops/action-gh-release@v2
|
|
82
|
+
with:
|
|
83
|
+
generate_release_notes: true
|
|
84
|
+
files: |
|
|
85
|
+
release-binaries/sentrik-linux-x64
|
|
86
|
+
release-binaries/sentrik-darwin-x64
|
|
87
|
+
release-binaries/sentrik-darwin-arm64
|
|
88
|
+
release-binaries/sentrik-win32-x64.exe
|
sentrik-1.5.0/.gitignore
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
*.egg-info/
|
|
4
|
+
dist/
|
|
5
|
+
build/
|
|
6
|
+
.eggs/
|
|
7
|
+
*.egg
|
|
8
|
+
.pytest_cache/
|
|
9
|
+
out/
|
|
10
|
+
.venv/
|
|
11
|
+
site/
|
|
12
|
+
.coverage
|
|
13
|
+
.env
|
|
14
|
+
.sentrik/local/
|
|
15
|
+
~$*
|
|
16
|
+
_dash_debug.*
|
|
17
|
+
|
|
18
|
+
# Root-level screenshots (not source code)
|
|
19
|
+
/*.png
|
|
20
|
+
|
|
21
|
+
# VS Code extension build artifacts
|
|
22
|
+
vscode-extension/node_modules/
|
|
23
|
+
vscode-extension/*.vsix
|
|
24
|
+
vscode-extension/package-lock.json
|
|
25
|
+
|
|
26
|
+
# npm binary
|
|
27
|
+
npm-package/bin/
|
|
28
|
+
|
|
29
|
+
# License server
|
|
30
|
+
license-server/
|
|
31
|
+
|
|
32
|
+
# Frontend build
|
|
33
|
+
frontend/node_modules/
|
|
34
|
+
frontend/dist/
|
|
35
|
+
|
|
36
|
+
# Automation pipeline
|
|
37
|
+
automation/logs/
|
|
38
|
+
automation/e2e/node_modules/
|
|
39
|
+
automation/e2e/test-results/
|
|
40
|
+
automation/e2e/report/
|
|
41
|
+
automation/e2e/screenshots/
|
|
42
|
+
automation/.env
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
output_dir: out
|
|
2
|
+
standards_file: examples/sample_standards.yaml
|
|
3
|
+
work_items_file: examples/sample_work_items.json
|
|
4
|
+
llm_enabled: false
|
|
5
|
+
llm_provider: stub
|
|
6
|
+
llm_model: ''
|
|
7
|
+
llm_base_url: ''
|
|
8
|
+
confidence_scoring_enabled: false
|
|
9
|
+
confidence_scoring_max_findings: 50
|
|
10
|
+
provider: stub
|
|
11
|
+
sarif_files: []
|
|
12
|
+
reporters: []
|
|
13
|
+
cache_enabled: false
|
|
14
|
+
cache_dir: .guard_cache
|
|
15
|
+
gate_fail_on:
|
|
16
|
+
- critical
|
|
17
|
+
- high
|
|
18
|
+
devops_provider: github
|
|
19
|
+
azure_devops_org: ''
|
|
20
|
+
azure_devops_project: ''
|
|
21
|
+
azure_devops_team: ''
|
|
22
|
+
azure_devops_iteration: ''
|
|
23
|
+
azure_devops_repo: ''
|
|
24
|
+
azure_devops_work_item_type: Issue
|
|
25
|
+
azure_devops_work_item_types: []
|
|
26
|
+
jira_issue_types: []
|
|
27
|
+
standards_provider: stub
|
|
28
|
+
azure_devops_standards_repo: ''
|
|
29
|
+
azure_devops_standards_file: standards.yaml
|
|
30
|
+
github_owner: ''
|
|
31
|
+
github_repo: ''
|
|
32
|
+
github_label: ''
|
|
33
|
+
github_milestone: ''
|
|
34
|
+
github_standards_repo: ''
|
|
35
|
+
github_standards_file: standards.yaml
|
|
36
|
+
github_standards_ref: main
|
|
37
|
+
jira_base_url: ''
|
|
38
|
+
jira_project_key: ''
|
|
39
|
+
jira_jql: ''
|
|
40
|
+
jira_standards_issue_key: ''
|
|
41
|
+
standards_packs:
|
|
42
|
+
- fda-iec-62304
|
|
43
|
+
- soc2
|
|
44
|
+
- owasp-top-10
|
|
45
|
+
pack_overrides: {}
|
|
46
|
+
severity_rescoring_enabled: false
|
|
47
|
+
ml_severity_enabled: false
|
|
48
|
+
parallel_scan: false
|
|
49
|
+
max_workers: 4
|
|
50
|
+
agent_scan: false
|
|
51
|
+
agent_max_concurrency: 0
|
|
52
|
+
governance:
|
|
53
|
+
profile: standard
|
|
54
|
+
license_key: ''
|
|
55
|
+
auth: {}
|
|
56
|
+
scan_exclude: []
|
|
57
|
+
suppressions: []
|
|
58
|
+
oauth: {}
|
|
59
|
+
async_approval: {}
|
|
60
|
+
notifications:
|
|
61
|
+
slack_webhook_url: ''
|
|
62
|
+
teams_webhook_url: ''
|
|
63
|
+
notify_on:
|
|
64
|
+
- gate_failed
|
|
65
|
+
online_license_check: true
|
|
66
|
+
portal_url: https://portal.sentrik.dev
|
|
67
|
+
requirements_output_file: requirements.yaml
|
|
68
|
+
cpp_analysis_enabled: false
|
|
69
|
+
cpp_analysis_tool: clang-tidy
|
|
70
|
+
cpp_analysis_checks: ''
|
|
71
|
+
grc_webhook_url: ''
|
|
72
|
+
grc_platform: generic
|
|
73
|
+
grc_events: []
|
|
74
|
+
requirement_coverage_enabled: false
|
|
75
|
+
requirement_coverage_exclude:
|
|
76
|
+
- tests/*
|
|
77
|
+
- test_*
|
|
78
|
+
- '*.md'
|
|
79
|
+
- '*.txt'
|
|
80
|
+
- '*.yaml'
|
|
81
|
+
- '*.yml'
|
|
82
|
+
- '*.json'
|
|
83
|
+
- '*.toml'
|
|
84
|
+
- '*.cfg'
|
|
85
|
+
- '*.ini'
|
|
86
|
+
- '*.lock'
|
|
87
|
+
- __init__.py
|
|
88
|
+
- __pycache__/*
|
|
89
|
+
- '*.pyc'
|
|
90
|
+
- '*.pyo'
|
|
91
|
+
- '*.db'
|
|
92
|
+
- '*.db-shm'
|
|
93
|
+
- '*.db-wal'
|
|
94
|
+
- '*.sqlite*'
|
|
95
|
+
- out/*
|
|
96
|
+
- dist/*
|
|
97
|
+
- build/*
|
|
98
|
+
- '*.egg-info/*'
|
|
99
|
+
- '*.patch'
|
|
100
|
+
- '*.html'
|
|
101
|
+
- '*.css'
|
|
102
|
+
- '*.min.*'
|
sentrik-1.5.0/.mcp.json
ADDED
|
Binary file
|