kekkai-cli 1.0.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.
Files changed (150) hide show
  1. kekkai_cli-1.0.0/PKG-INFO +135 -0
  2. kekkai_cli-1.0.0/README.md +124 -0
  3. kekkai_cli-1.0.0/pyproject.toml +69 -0
  4. kekkai_cli-1.0.0/setup.cfg +4 -0
  5. kekkai_cli-1.0.0/src/kekkai/__init__.py +7 -0
  6. kekkai_cli-1.0.0/src/kekkai/cli.py +1038 -0
  7. kekkai_cli-1.0.0/src/kekkai/config.py +403 -0
  8. kekkai_cli-1.0.0/src/kekkai/dojo.py +419 -0
  9. kekkai_cli-1.0.0/src/kekkai/dojo_import.py +213 -0
  10. kekkai_cli-1.0.0/src/kekkai/github/__init__.py +16 -0
  11. kekkai_cli-1.0.0/src/kekkai/github/commenter.py +198 -0
  12. kekkai_cli-1.0.0/src/kekkai/github/models.py +56 -0
  13. kekkai_cli-1.0.0/src/kekkai/github/sanitizer.py +112 -0
  14. kekkai_cli-1.0.0/src/kekkai/installer/__init__.py +39 -0
  15. kekkai_cli-1.0.0/src/kekkai/installer/errors.py +23 -0
  16. kekkai_cli-1.0.0/src/kekkai/installer/extract.py +161 -0
  17. kekkai_cli-1.0.0/src/kekkai/installer/manager.py +252 -0
  18. kekkai_cli-1.0.0/src/kekkai/installer/manifest.py +189 -0
  19. kekkai_cli-1.0.0/src/kekkai/installer/verify.py +86 -0
  20. kekkai_cli-1.0.0/src/kekkai/manifest.py +77 -0
  21. kekkai_cli-1.0.0/src/kekkai/output.py +218 -0
  22. kekkai_cli-1.0.0/src/kekkai/paths.py +46 -0
  23. kekkai_cli-1.0.0/src/kekkai/policy.py +326 -0
  24. kekkai_cli-1.0.0/src/kekkai/runner.py +70 -0
  25. kekkai_cli-1.0.0/src/kekkai/scanners/__init__.py +67 -0
  26. kekkai_cli-1.0.0/src/kekkai/scanners/backends/__init__.py +14 -0
  27. kekkai_cli-1.0.0/src/kekkai/scanners/backends/base.py +73 -0
  28. kekkai_cli-1.0.0/src/kekkai/scanners/backends/docker.py +178 -0
  29. kekkai_cli-1.0.0/src/kekkai/scanners/backends/native.py +240 -0
  30. kekkai_cli-1.0.0/src/kekkai/scanners/base.py +110 -0
  31. kekkai_cli-1.0.0/src/kekkai/scanners/container.py +144 -0
  32. kekkai_cli-1.0.0/src/kekkai/scanners/falco.py +237 -0
  33. kekkai_cli-1.0.0/src/kekkai/scanners/gitleaks.py +237 -0
  34. kekkai_cli-1.0.0/src/kekkai/scanners/semgrep.py +227 -0
  35. kekkai_cli-1.0.0/src/kekkai/scanners/trivy.py +246 -0
  36. kekkai_cli-1.0.0/src/kekkai/scanners/url_policy.py +163 -0
  37. kekkai_cli-1.0.0/src/kekkai/scanners/zap.py +340 -0
  38. kekkai_cli-1.0.0/src/kekkai/threatflow/__init__.py +94 -0
  39. kekkai_cli-1.0.0/src/kekkai/threatflow/artifacts.py +476 -0
  40. kekkai_cli-1.0.0/src/kekkai/threatflow/chunking.py +361 -0
  41. kekkai_cli-1.0.0/src/kekkai/threatflow/core.py +438 -0
  42. kekkai_cli-1.0.0/src/kekkai/threatflow/mermaid.py +374 -0
  43. kekkai_cli-1.0.0/src/kekkai/threatflow/model_adapter.py +491 -0
  44. kekkai_cli-1.0.0/src/kekkai/threatflow/prompts.py +277 -0
  45. kekkai_cli-1.0.0/src/kekkai/threatflow/redaction.py +228 -0
  46. kekkai_cli-1.0.0/src/kekkai/threatflow/sanitizer.py +643 -0
  47. kekkai_cli-1.0.0/src/kekkai/triage/__init__.py +33 -0
  48. kekkai_cli-1.0.0/src/kekkai/triage/app.py +168 -0
  49. kekkai_cli-1.0.0/src/kekkai/triage/audit.py +203 -0
  50. kekkai_cli-1.0.0/src/kekkai/triage/ignore.py +269 -0
  51. kekkai_cli-1.0.0/src/kekkai/triage/models.py +185 -0
  52. kekkai_cli-1.0.0/src/kekkai/triage/screens.py +341 -0
  53. kekkai_cli-1.0.0/src/kekkai/triage/widgets.py +169 -0
  54. kekkai_cli-1.0.0/src/kekkai_cli.egg-info/PKG-INFO +135 -0
  55. kekkai_cli-1.0.0/src/kekkai_cli.egg-info/SOURCES.txt +148 -0
  56. kekkai_cli-1.0.0/src/kekkai_cli.egg-info/dependency_links.txt +1 -0
  57. kekkai_cli-1.0.0/src/kekkai_cli.egg-info/entry_points.txt +3 -0
  58. kekkai_cli-1.0.0/src/kekkai_cli.egg-info/requires.txt +4 -0
  59. kekkai_cli-1.0.0/src/kekkai_cli.egg-info/top_level.txt +3 -0
  60. kekkai_cli-1.0.0/src/kekkai_core/__init__.py +3 -0
  61. kekkai_cli-1.0.0/src/kekkai_core/ci/__init__.py +11 -0
  62. kekkai_cli-1.0.0/src/kekkai_core/ci/benchmarks.py +354 -0
  63. kekkai_cli-1.0.0/src/kekkai_core/ci/metadata.py +104 -0
  64. kekkai_cli-1.0.0/src/kekkai_core/ci/validators.py +92 -0
  65. kekkai_cli-1.0.0/src/kekkai_core/docker/__init__.py +17 -0
  66. kekkai_cli-1.0.0/src/kekkai_core/docker/metadata.py +153 -0
  67. kekkai_cli-1.0.0/src/kekkai_core/docker/sbom.py +173 -0
  68. kekkai_cli-1.0.0/src/kekkai_core/docker/security.py +158 -0
  69. kekkai_cli-1.0.0/src/kekkai_core/docker/signing.py +135 -0
  70. kekkai_cli-1.0.0/src/kekkai_core/redaction.py +84 -0
  71. kekkai_cli-1.0.0/src/kekkai_core/slsa/__init__.py +13 -0
  72. kekkai_cli-1.0.0/src/kekkai_core/slsa/verify.py +121 -0
  73. kekkai_cli-1.0.0/src/kekkai_core/windows/__init__.py +29 -0
  74. kekkai_cli-1.0.0/src/kekkai_core/windows/chocolatey.py +335 -0
  75. kekkai_cli-1.0.0/src/kekkai_core/windows/installer.py +256 -0
  76. kekkai_cli-1.0.0/src/kekkai_core/windows/scoop.py +165 -0
  77. kekkai_cli-1.0.0/src/kekkai_core/windows/validators.py +220 -0
  78. kekkai_cli-1.0.0/src/portal/__init__.py +19 -0
  79. kekkai_cli-1.0.0/src/portal/api.py +155 -0
  80. kekkai_cli-1.0.0/src/portal/auth.py +103 -0
  81. kekkai_cli-1.0.0/src/portal/enterprise/__init__.py +32 -0
  82. kekkai_cli-1.0.0/src/portal/enterprise/audit.py +435 -0
  83. kekkai_cli-1.0.0/src/portal/enterprise/licensing.py +342 -0
  84. kekkai_cli-1.0.0/src/portal/enterprise/rbac.py +276 -0
  85. kekkai_cli-1.0.0/src/portal/enterprise/saml.py +595 -0
  86. kekkai_cli-1.0.0/src/portal/ops/__init__.py +53 -0
  87. kekkai_cli-1.0.0/src/portal/ops/backup.py +553 -0
  88. kekkai_cli-1.0.0/src/portal/ops/log_shipper.py +469 -0
  89. kekkai_cli-1.0.0/src/portal/ops/monitoring.py +517 -0
  90. kekkai_cli-1.0.0/src/portal/ops/restore.py +469 -0
  91. kekkai_cli-1.0.0/src/portal/ops/secrets.py +408 -0
  92. kekkai_cli-1.0.0/src/portal/ops/upgrade.py +591 -0
  93. kekkai_cli-1.0.0/src/portal/tenants.py +340 -0
  94. kekkai_cli-1.0.0/src/portal/uploads.py +259 -0
  95. kekkai_cli-1.0.0/src/portal/web.py +384 -0
  96. kekkai_cli-1.0.0/tests/test_cli_output.py +179 -0
  97. kekkai_cli-1.0.0/tests/test_dojo_import.py +83 -0
  98. kekkai_cli-1.0.0/tests/test_enterprise_audit.py +288 -0
  99. kekkai_cli-1.0.0/tests/test_enterprise_licensing.py +314 -0
  100. kekkai_cli-1.0.0/tests/test_enterprise_rbac.py +224 -0
  101. kekkai_cli-1.0.0/tests/test_enterprise_saml.py +326 -0
  102. kekkai_cli-1.0.0/tests/test_github_commenter_filter.py +224 -0
  103. kekkai_cli-1.0.0/tests/test_github_commenter_format.py +151 -0
  104. kekkai_cli-1.0.0/tests/test_github_commenter_limit.py +218 -0
  105. kekkai_cli-1.0.0/tests/test_github_commenter_sanitize.py +191 -0
  106. kekkai_cli-1.0.0/tests/test_installer_checksum.py +74 -0
  107. kekkai_cli-1.0.0/tests/test_installer_extract.py +176 -0
  108. kekkai_cli-1.0.0/tests/test_installer_manager.py +143 -0
  109. kekkai_cli-1.0.0/tests/test_installer_manifest.py +98 -0
  110. kekkai_cli-1.0.0/tests/test_installer_platform.py +100 -0
  111. kekkai_cli-1.0.0/tests/test_kekkai_cli.py +54 -0
  112. kekkai_cli-1.0.0/tests/test_kekkai_config.py +50 -0
  113. kekkai_cli-1.0.0/tests/test_kekkai_dojo.py +153 -0
  114. kekkai_cli-1.0.0/tests/test_kekkai_dojo_cli.py +102 -0
  115. kekkai_cli-1.0.0/tests/test_kekkai_manifest.py +33 -0
  116. kekkai_cli-1.0.0/tests/test_kekkai_paths.py +36 -0
  117. kekkai_cli-1.0.0/tests/test_kekkai_runner.py +43 -0
  118. kekkai_cli-1.0.0/tests/test_mermaid.py +374 -0
  119. kekkai_cli-1.0.0/tests/test_ops_backup.py +318 -0
  120. kekkai_cli-1.0.0/tests/test_ops_log_shipper.py +366 -0
  121. kekkai_cli-1.0.0/tests/test_ops_monitoring.py +379 -0
  122. kekkai_cli-1.0.0/tests/test_ops_restore.py +299 -0
  123. kekkai_cli-1.0.0/tests/test_ops_secrets.py +331 -0
  124. kekkai_cli-1.0.0/tests/test_ops_upgrade.py +418 -0
  125. kekkai_cli-1.0.0/tests/test_policy.py +359 -0
  126. kekkai_cli-1.0.0/tests/test_portal_api.py +157 -0
  127. kekkai_cli-1.0.0/tests/test_portal_auth.py +226 -0
  128. kekkai_cli-1.0.0/tests/test_portal_tenants.py +347 -0
  129. kekkai_cli-1.0.0/tests/test_portal_uploads.py +378 -0
  130. kekkai_cli-1.0.0/tests/test_portal_web.py +386 -0
  131. kekkai_cli-1.0.0/tests/test_redaction.py +16 -0
  132. kekkai_cli-1.0.0/tests/test_scanner_backends.py +201 -0
  133. kekkai_cli-1.0.0/tests/test_scanner_base.py +99 -0
  134. kekkai_cli-1.0.0/tests/test_scanner_container.py +69 -0
  135. kekkai_cli-1.0.0/tests/test_scanner_falco.py +179 -0
  136. kekkai_cli-1.0.0/tests/test_scanner_gitleaks.py +74 -0
  137. kekkai_cli-1.0.0/tests/test_scanner_native.py +186 -0
  138. kekkai_cli-1.0.0/tests/test_scanner_semgrep.py +72 -0
  139. kekkai_cli-1.0.0/tests/test_scanner_trivy.py +118 -0
  140. kekkai_cli-1.0.0/tests/test_scanner_zap.py +168 -0
  141. kekkai_cli-1.0.0/tests/test_slsa_provenance.py +210 -0
  142. kekkai_cli-1.0.0/tests/test_threatflow_chunking.py +192 -0
  143. kekkai_cli-1.0.0/tests/test_threatflow_model_adapter.py +229 -0
  144. kekkai_cli-1.0.0/tests/test_threatflow_prompts.py +156 -0
  145. kekkai_cli-1.0.0/tests/test_threatflow_redaction.py +170 -0
  146. kekkai_cli-1.0.0/tests/test_threatflow_sanitizer.py +495 -0
  147. kekkai_cli-1.0.0/tests/test_triage_audit.py +183 -0
  148. kekkai_cli-1.0.0/tests/test_triage_ignore.py +174 -0
  149. kekkai_cli-1.0.0/tests/test_triage_models.py +231 -0
  150. kekkai_cli-1.0.0/tests/test_url_policy.py +158 -0
@@ -0,0 +1,135 @@
1
+ Metadata-Version: 2.4
2
+ Name: kekkai-cli
3
+ Version: 1.0.0
4
+ Summary: Kekkai/Regulon monorepo (local-first AppSec orchestration + compliance checker)
5
+ Requires-Python: >=3.12
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: rich>=13.0.0
8
+ Requires-Dist: jsonschema>=4.20.0
9
+ Requires-Dist: textual>=0.50.0
10
+ Requires-Dist: httpx>=0.24.0
11
+
12
+ <p align="center">
13
+ <img src="https://raw.githubusercontent.com/kademoslabs/assets/main/logos/kekkai-slim.png" alt="Kekkai CLI Logo" width="250"/>
14
+ </p>
15
+ <p align="center"><i>One command. Clean AppSec reports.</i></p>
16
+ <p align="center">
17
+ <img src="https://img.shields.io/badge/license-MIT-blue.svg"/>
18
+ <img src="https://img.shields.io/badge/status-active-brightgreen"/>
19
+ </p>
20
+
21
+ # Kekkai 🛡️
22
+
23
+ **Security that moves at developer speed.**
24
+ *Local-first orchestration for Trivy, Semgrep, and DefectDojo.*
25
+
26
+ ![Hero GIF](https://raw.githubusercontent.com/kademoslabs/assets/main/screenshots/kekkai-recording.gif)
27
+
28
+ ---
29
+
30
+ ## ⚡ Quick Start
31
+
32
+ Stop fighting with Docker Compose. Start scanning in 30 seconds.
33
+
34
+ ### Installation
35
+
36
+ **Option 1: pipx (Recommended - Isolated Environment)**
37
+
38
+ ```bash
39
+ pipx install kekkai-cli
40
+ ```
41
+
42
+ **Option 2: Homebrew (macOS/Linux)**
43
+
44
+ ```bash
45
+ brew tap kademoslabs/tap
46
+ brew install kekkai
47
+ ```
48
+
49
+ **Option 3: Docker (No Python Required)**
50
+
51
+ ```bash
52
+ # Build image
53
+ docker build -t kademoslabs/kekkai:latest -f apps/kekkai/Dockerfile .
54
+
55
+ # Run via wrapper script
56
+ ./scripts/kekkai-docker --help
57
+
58
+ # Or set up alias
59
+ alias kekkai="$(pwd)/scripts/kekkai-docker"
60
+ ```
61
+
62
+ **Option 4: Scoop (Windows)**
63
+
64
+ ```powershell
65
+ scoop bucket add kademoslabs https://github.com/kademoslabs/scoop-bucket
66
+ scoop install kekkai
67
+ ```
68
+
69
+ **Option 5: pip (Traditional)**
70
+
71
+ ```bash
72
+ pip install kekkai-cli
73
+ ```
74
+
75
+
76
+
77
+ ### 1. Scan your project (Local)
78
+
79
+ Run industry-standard scanners (Trivy, Semgrep, Gitleaks) in unified Docker containers without installing them individually.
80
+
81
+ ```bash
82
+ cd your-repo
83
+ kekkai scan
84
+
85
+ ```
86
+
87
+ ### 2. Spin up DefectDojo
88
+
89
+ Launch a full local vulnerability management platform (Nginx, Postgres, Redis, Celery) with one command.
90
+
91
+ ```bash
92
+ kekkai dojo up --wait --open
93
+
94
+ ```
95
+
96
+ ### 3. Generate a Threat Model (AI)
97
+
98
+ Generate a STRIDE threat model and Data Flow Diagram using your local LLM.
99
+
100
+ ```bash
101
+ kekkai threatflow --repo . --model-mode local
102
+
103
+ ```
104
+
105
+ ---
106
+
107
+ ## 🛑 The Problem vs. Kekkai
108
+
109
+ | Feature | The Old Way | The Kekkai Way |
110
+ | --- | --- | --- |
111
+ | **Tooling** | Manually install/update 5+ tools (Trivy, Semgrep, etc.) | **One Binary.** `kekkai scan` auto-pulls and runs the latest scanner containers. |
112
+ | **Reporting** | Parse 5 different JSON formats manually. | **Unified Output.** One deduplicated `kekkai-report.json` for all findings. |
113
+ | **DefectDojo** | Write a 200-line `docker-compose.yml` and debug networking. | **One Command.** `kekkai dojo up` automates the entire stack setup. |
114
+ | **Threat Modeling** | Expensive consultants or manual whiteboarding. | **AI Agent.** `kekkai threatflow` generates `THREATS.md` locally. |
115
+ | **CI/CD** | Write complex bash scripts to break builds. | **Policy Engine.** `kekkai scan --ci --fail-on high`. |
116
+
117
+ ---
118
+
119
+ ## 🔒 Enterprise Features (Portal)
120
+
121
+ For teams that need centralized management, **Kekkai Portal** offers:
122
+
123
+ * **SAML 2.0 SSO** with Replay Protection
124
+ * **Role-Based Access Control (RBAC)**
125
+ * **Cryptographically Signed Audit Logs**
126
+
127
+ *Built by Kademos Labs.*
128
+
129
+ ---
130
+
131
+ ## 📚 Documentation
132
+
133
+ - **[Automated Distribution Updates](docs/ci/automated-distributions.md)** - CI/CD distribution triggers
134
+ - **[CI Architecture](/.docs/development/ci-architecture.md)** - Developer guide for distribution automation
135
+ - **[Homebrew Maintenance](docs/ci/homebrew-maintenance.md)** - Homebrew tap management
@@ -0,0 +1,124 @@
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/kademoslabs/assets/main/logos/kekkai-slim.png" alt="Kekkai CLI Logo" width="250"/>
3
+ </p>
4
+ <p align="center"><i>One command. Clean AppSec reports.</i></p>
5
+ <p align="center">
6
+ <img src="https://img.shields.io/badge/license-MIT-blue.svg"/>
7
+ <img src="https://img.shields.io/badge/status-active-brightgreen"/>
8
+ </p>
9
+
10
+ # Kekkai 🛡️
11
+
12
+ **Security that moves at developer speed.**
13
+ *Local-first orchestration for Trivy, Semgrep, and DefectDojo.*
14
+
15
+ ![Hero GIF](https://raw.githubusercontent.com/kademoslabs/assets/main/screenshots/kekkai-recording.gif)
16
+
17
+ ---
18
+
19
+ ## ⚡ Quick Start
20
+
21
+ Stop fighting with Docker Compose. Start scanning in 30 seconds.
22
+
23
+ ### Installation
24
+
25
+ **Option 1: pipx (Recommended - Isolated Environment)**
26
+
27
+ ```bash
28
+ pipx install kekkai-cli
29
+ ```
30
+
31
+ **Option 2: Homebrew (macOS/Linux)**
32
+
33
+ ```bash
34
+ brew tap kademoslabs/tap
35
+ brew install kekkai
36
+ ```
37
+
38
+ **Option 3: Docker (No Python Required)**
39
+
40
+ ```bash
41
+ # Build image
42
+ docker build -t kademoslabs/kekkai:latest -f apps/kekkai/Dockerfile .
43
+
44
+ # Run via wrapper script
45
+ ./scripts/kekkai-docker --help
46
+
47
+ # Or set up alias
48
+ alias kekkai="$(pwd)/scripts/kekkai-docker"
49
+ ```
50
+
51
+ **Option 4: Scoop (Windows)**
52
+
53
+ ```powershell
54
+ scoop bucket add kademoslabs https://github.com/kademoslabs/scoop-bucket
55
+ scoop install kekkai
56
+ ```
57
+
58
+ **Option 5: pip (Traditional)**
59
+
60
+ ```bash
61
+ pip install kekkai-cli
62
+ ```
63
+
64
+
65
+
66
+ ### 1. Scan your project (Local)
67
+
68
+ Run industry-standard scanners (Trivy, Semgrep, Gitleaks) in unified Docker containers without installing them individually.
69
+
70
+ ```bash
71
+ cd your-repo
72
+ kekkai scan
73
+
74
+ ```
75
+
76
+ ### 2. Spin up DefectDojo
77
+
78
+ Launch a full local vulnerability management platform (Nginx, Postgres, Redis, Celery) with one command.
79
+
80
+ ```bash
81
+ kekkai dojo up --wait --open
82
+
83
+ ```
84
+
85
+ ### 3. Generate a Threat Model (AI)
86
+
87
+ Generate a STRIDE threat model and Data Flow Diagram using your local LLM.
88
+
89
+ ```bash
90
+ kekkai threatflow --repo . --model-mode local
91
+
92
+ ```
93
+
94
+ ---
95
+
96
+ ## 🛑 The Problem vs. Kekkai
97
+
98
+ | Feature | The Old Way | The Kekkai Way |
99
+ | --- | --- | --- |
100
+ | **Tooling** | Manually install/update 5+ tools (Trivy, Semgrep, etc.) | **One Binary.** `kekkai scan` auto-pulls and runs the latest scanner containers. |
101
+ | **Reporting** | Parse 5 different JSON formats manually. | **Unified Output.** One deduplicated `kekkai-report.json` for all findings. |
102
+ | **DefectDojo** | Write a 200-line `docker-compose.yml` and debug networking. | **One Command.** `kekkai dojo up` automates the entire stack setup. |
103
+ | **Threat Modeling** | Expensive consultants or manual whiteboarding. | **AI Agent.** `kekkai threatflow` generates `THREATS.md` locally. |
104
+ | **CI/CD** | Write complex bash scripts to break builds. | **Policy Engine.** `kekkai scan --ci --fail-on high`. |
105
+
106
+ ---
107
+
108
+ ## 🔒 Enterprise Features (Portal)
109
+
110
+ For teams that need centralized management, **Kekkai Portal** offers:
111
+
112
+ * **SAML 2.0 SSO** with Replay Protection
113
+ * **Role-Based Access Control (RBAC)**
114
+ * **Cryptographically Signed Audit Logs**
115
+
116
+ *Built by Kademos Labs.*
117
+
118
+ ---
119
+
120
+ ## 📚 Documentation
121
+
122
+ - **[Automated Distribution Updates](docs/ci/automated-distributions.md)** - CI/CD distribution triggers
123
+ - **[CI Architecture](/.docs/development/ci-architecture.md)** - Developer guide for distribution automation
124
+ - **[Homebrew Maintenance](docs/ci/homebrew-maintenance.md)** - Homebrew tap management
@@ -0,0 +1,69 @@
1
+ [project]
2
+ name = "kekkai-cli"
3
+ version = "1.0.0"
4
+ description = "Kekkai/Regulon monorepo (local-first AppSec orchestration + compliance checker)"
5
+ readme = "README.md"
6
+ requires-python = ">=3.12"
7
+ dependencies = [
8
+ "rich>=13.0.0",
9
+ "jsonschema>=4.20.0",
10
+ "textual>=0.50.0",
11
+ "httpx>=0.24.0",
12
+ ]
13
+
14
+ [project.scripts]
15
+ kekkai = "kekkai.cli:main"
16
+ kekkai-portal = "portal.web:main"
17
+
18
+ [tool.ruff]
19
+ target-version = "py312"
20
+ line-length = 100
21
+ extend-exclude = ["dist", "build", ".venv"]
22
+ lint.select = ["E", "F", "I", "B", "UP", "S", "SIM"]
23
+ lint.ignore = ["S101"] # allow asserts in tests
24
+ lint.per-file-ignores = { "tests/**" = ["S"], "src/kekkai_core/docker/**" = ["S603"], "src/kekkai_core/slsa/**" = ["S603", "S607"], "src/kekkai/github/**" = ["S105"] }
25
+
26
+ [tool.mypy]
27
+ python_version = "3.12"
28
+ mypy_path = "src"
29
+ strict = true
30
+ warn_unused_configs = true
31
+ warn_return_any = true
32
+ disallow_any_generics = true
33
+ no_implicit_optional = true
34
+ check_untyped_defs = true
35
+ exclude = ["apps/"]
36
+
37
+ [tool.pytest.ini_options]
38
+ addopts = "-q"
39
+ testpaths = ["tests"]
40
+ markers = [
41
+ "integration: integration tests",
42
+ "e2e: end-to-end tests",
43
+ "regression: regression/golden tests",
44
+ "benchmark: performance benchmark tests",
45
+ "requires_admin: tests requiring admin privileges"
46
+ ]
47
+
48
+ [tool.coverage.run]
49
+ branch = true
50
+ source = ["src"]
51
+
52
+ [tool.coverage.report]
53
+ show_missing = true
54
+ skip_covered = false
55
+ fail_under = 69
56
+ exclude_lines = [
57
+ "pragma: no cover",
58
+ "if TYPE_CHECKING:",
59
+ ]
60
+
61
+ [build-system]
62
+ requires = ["setuptools>=69", "wheel"]
63
+ build-backend = "setuptools.build_meta"
64
+
65
+ [tool.setuptools]
66
+ package-dir = {"" = "src"}
67
+
68
+ [tool.setuptools.packages.find]
69
+ where = ["src"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,7 @@
1
+ from __future__ import annotations
2
+
3
+ from .cli import main
4
+ from .output import VERSION
5
+
6
+ __version__ = VERSION
7
+ __all__ = ["main", "__version__"]