asec 0.1.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 (74) hide show
  1. asec-0.1.0/.gitignore +277 -0
  2. asec-0.1.0/LICENSE +31 -0
  3. asec-0.1.0/Makefile +31 -0
  4. asec-0.1.0/PKG-INFO +80 -0
  5. asec-0.1.0/README.md +17 -0
  6. asec-0.1.0/pyproject.toml +87 -0
  7. asec-0.1.0/src/asec/__init__.py +1 -0
  8. asec-0.1.0/src/asec/api_client.py +186 -0
  9. asec-0.1.0/src/asec/cli.py +38 -0
  10. asec-0.1.0/src/asec/cli_api_key.py +64 -0
  11. asec-0.1.0/src/asec/cli_auth.py +220 -0
  12. asec-0.1.0/src/asec/cli_devsecops/__init__.py +28 -0
  13. asec-0.1.0/src/asec/cli_devsecops/asset.py +103 -0
  14. asec-0.1.0/src/asec/cli_devsecops/issue.py +59 -0
  15. asec-0.1.0/src/asec/cli_devsecops/product.py +89 -0
  16. asec-0.1.0/src/asec/cli_devsecops/revision.py +113 -0
  17. asec-0.1.0/src/asec/cli_devsecops/upload.py +73 -0
  18. asec-0.1.0/src/asec/cli_pentest/__init__.py +32 -0
  19. asec-0.1.0/src/asec/cli_pentest/run.py +189 -0
  20. asec-0.1.0/src/asec/cli_pentest/run_profile.py +284 -0
  21. asec-0.1.0/src/asec/cli_pentest/run_record.py +49 -0
  22. asec-0.1.0/src/asec/cli_pentest/run_record_decisions.py +40 -0
  23. asec-0.1.0/src/asec/cli_pentest/run_record_findings.py +83 -0
  24. asec-0.1.0/src/asec/cli_pentest/run_record_target_analysis.py +58 -0
  25. asec-0.1.0/src/asec/cli_pentest/run_record_task_board.py +50 -0
  26. asec-0.1.0/src/asec/cli_pentest/run_report.py +176 -0
  27. asec-0.1.0/src/asec/cli_pentest/supervisor.py +29 -0
  28. asec-0.1.0/src/asec/cli_pentest/target.py +103 -0
  29. asec-0.1.0/src/asec/cli_pentest/vpn.py +56 -0
  30. asec-0.1.0/src/asec/cli_pentest/web_login.py +111 -0
  31. asec-0.1.0/src/asec/cli_profile.py +45 -0
  32. asec-0.1.0/src/asec/cli_scanners.py +27 -0
  33. asec-0.1.0/src/asec/config.py +175 -0
  34. asec-0.1.0/src/asec/oidc_auth.py +220 -0
  35. asec-0.1.0/src/asec/output.py +10 -0
  36. asec-0.1.0/src/asec/templates/__init__.py +0 -0
  37. asec-0.1.0/src/asec/templates/callback_error.html +105 -0
  38. asec-0.1.0/src/asec/templates/callback_success.html +107 -0
  39. asec-0.1.0/src/asec/templates/svg/icon-check.svg +3 -0
  40. asec-0.1.0/src/asec/templates/svg/icon-cross.svg +4 -0
  41. asec-0.1.0/src/asec/templates/svg/icon-info.svg +5 -0
  42. asec-0.1.0/src/asec/templates/svg/icon-warning.svg +5 -0
  43. asec-0.1.0/src/asec/templates/svg/logo.svg +20 -0
  44. asec-0.1.0/tests/__init__.py +0 -0
  45. asec-0.1.0/tests/cli_devsecops/__init__.py +0 -0
  46. asec-0.1.0/tests/cli_devsecops/test_asset.py +100 -0
  47. asec-0.1.0/tests/cli_devsecops/test_product.py +96 -0
  48. asec-0.1.0/tests/cli_devsecops/test_revision.py +111 -0
  49. asec-0.1.0/tests/cli_devsecops/test_upload.py +80 -0
  50. asec-0.1.0/tests/cli_pentest/__init__.py +0 -0
  51. asec-0.1.0/tests/cli_pentest/test_run.py +407 -0
  52. asec-0.1.0/tests/cli_pentest/test_run_profile.py +549 -0
  53. asec-0.1.0/tests/cli_pentest/test_run_record.py +28 -0
  54. asec-0.1.0/tests/cli_pentest/test_run_record_decisions.py +60 -0
  55. asec-0.1.0/tests/cli_pentest/test_run_record_findings.py +133 -0
  56. asec-0.1.0/tests/cli_pentest/test_run_record_target_analysis.py +87 -0
  57. asec-0.1.0/tests/cli_pentest/test_run_record_task_board.py +65 -0
  58. asec-0.1.0/tests/cli_pentest/test_run_report.py +236 -0
  59. asec-0.1.0/tests/cli_pentest/test_supervisor.py +34 -0
  60. asec-0.1.0/tests/cli_pentest/test_target.py +142 -0
  61. asec-0.1.0/tests/cli_pentest/test_vpn.py +97 -0
  62. asec-0.1.0/tests/cli_pentest/test_web_login.py +85 -0
  63. asec-0.1.0/tests/test_api_client.py +146 -0
  64. asec-0.1.0/tests/test_api_client_requests.py +277 -0
  65. asec-0.1.0/tests/test_auth.py +336 -0
  66. asec-0.1.0/tests/test_cli.py +92 -0
  67. asec-0.1.0/tests/test_cli_api_key.py +80 -0
  68. asec-0.1.0/tests/test_cli_upload.py +108 -0
  69. asec-0.1.0/tests/test_config.py +222 -0
  70. asec-0.1.0/tests/test_oidc_auth.py +42 -0
  71. asec-0.1.0/tests/test_oidc_auth_flow.py +142 -0
  72. asec-0.1.0/tests/test_oidc_login_flow.py +110 -0
  73. asec-0.1.0/tests/test_output.py +25 -0
  74. asec-0.1.0/uv.lock +798 -0
asec-0.1.0/.gitignore ADDED
@@ -0,0 +1,277 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ # Python library directories (but not frontend lib)
18
+ lib/
19
+ !platform/web-ui/frontend/lib/
20
+ !platform/web-ui/lib/
21
+ !infra/ops-dashboard/app/lib/
22
+ !infra/ecspresso/lib/
23
+ lib64/
24
+ parts/
25
+ sdist/
26
+ var/
27
+ wheels/
28
+ share/python-wheels/
29
+ *.egg-info/
30
+ .installed.cfg
31
+ *.egg
32
+ MANIFEST
33
+
34
+ # PyInstaller
35
+ # Usually these files are written by a python script from a template
36
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
37
+ *.manifest
38
+ *.spec
39
+
40
+ # Installer logs
41
+ pip-log.txt
42
+ pip-delete-this-directory.txt
43
+
44
+ # Unit test / coverage reports
45
+ htmlcov/
46
+ .tox/
47
+ .nox/
48
+ .coverage
49
+ .coverage.*
50
+ .cache
51
+ .agenticsec_logs
52
+ nosetests.xml
53
+ coverage.xml
54
+ *.cover
55
+ *.py,cover
56
+ .hypothesis/
57
+ .pytest_cache/
58
+ cover/
59
+
60
+ # Translations
61
+ *.mo
62
+ *.pot
63
+
64
+ # Django stuff:
65
+ local_settings.py
66
+ db.sqlite3
67
+ db.sqlite3-journal
68
+
69
+ # Flask stuff:
70
+ instance/
71
+ .webassets-cache
72
+
73
+ # Scrapy stuff:
74
+ .scrapy
75
+
76
+ # Sphinx documentation
77
+ docs/_build/
78
+
79
+ # PyBuilder
80
+ .pybuilder/
81
+ /target/
82
+
83
+ # Jupyter Notebook
84
+ .ipynb_checkpoints
85
+
86
+ # IPython
87
+ profile_default/
88
+ ipython_config.py
89
+
90
+ # pyenv
91
+ # For a library or package, you might want to ignore these files since the code is
92
+ # intended to run in multiple environments; otherwise, check them in:
93
+ # .python-version
94
+
95
+ # pipenv
96
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
97
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
98
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
99
+ # install all needed dependencies.
100
+ #Pipfile.lock
101
+
102
+ # UV
103
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
104
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
105
+ # commonly ignored for libraries.
106
+ #uv.lock
107
+
108
+ # poetry
109
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
110
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
111
+ # commonly ignored for libraries.
112
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
113
+ #poetry.lock
114
+
115
+ # pdm
116
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
117
+ #pdm.lock
118
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
119
+ # in version control.
120
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
121
+ .pdm.toml
122
+ .pdm-python
123
+ .pdm-build/
124
+
125
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
126
+ __pypackages__/
127
+
128
+ # Celery stuff
129
+ celerybeat-schedule
130
+ celerybeat.pid
131
+
132
+ # SageMath parsed files
133
+ *.sage.py
134
+
135
+ # Environments
136
+ .env
137
+ .venv
138
+ env/
139
+ !**/src/**/env/
140
+ venv/
141
+ ENV/
142
+ env.bak/
143
+ venv.bak/
144
+
145
+ # Environment files
146
+ .env.*
147
+ !.env.example
148
+ !.env.enc
149
+
150
+ # commit tag
151
+ .commit-tag.env
152
+
153
+ # Spyder project settings
154
+ .spyderproject
155
+ .spyproject
156
+
157
+ # Rope project settings
158
+ .ropeproject
159
+
160
+ # mkdocs documentation
161
+ /site
162
+ docs/developer/site/
163
+ docs/user/site/
164
+ platform/web-ui/public/docs/
165
+
166
+ # mypy
167
+ .mypy_cache/
168
+ .dmypy.json
169
+ dmypy.json
170
+
171
+ # Pyre type checker
172
+ .pyre/
173
+
174
+ # pytype static type analyzer
175
+ .pytype/
176
+
177
+ # Cython debug symbols
178
+ cython_debug/
179
+
180
+ # PyCharm
181
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
182
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
183
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
184
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
185
+ #.idea/
186
+
187
+ # Ruff stuff:
188
+ .ruff_cache/
189
+
190
+ # PyPI configuration file
191
+ .pypirc
192
+
193
+ logs/
194
+ !pentest/cloud/agenticsec-run-entrypoint/logs/
195
+ !experiment/results/**/logs/
196
+ pentest/cloud/agenticsec-run-entrypoint/logs/*/inprogress/
197
+ pentest/cloud/agenticsec-run-entrypoint/logs/*/ng/
198
+ pentest/cloud/agenticsec-run-entrypoint/logs/agenticsec-run_*/master.jsonl
199
+
200
+ *.ovpn
201
+
202
+ # Grafana MCP tokens (all environments)
203
+ .grafana-mcp-token*
204
+
205
+ # Vendor directories
206
+ vendor/
207
+ **/vendor/
208
+
209
+ # AWS SAM build artifacts
210
+ .aws-sam/
211
+ **/.aws-sam/
212
+
213
+ # Additional build artifacts
214
+ *.egg-info/
215
+ **/*.egg-info/
216
+
217
+ # AgenticSec results
218
+ */agenticsec-results/*.json
219
+
220
+ # Hydra restore files
221
+ ./runner/hydra.restore
222
+
223
+ # sprout
224
+ .sprout/
225
+
226
+ # tmp
227
+ tmp/
228
+ runner/tmp/
229
+
230
+ # Playwright MCP working directory (auto-generated snapshots & console logs)
231
+ .playwright-mcp/
232
+
233
+ # serena
234
+ .serena/cache/
235
+
236
+ # Generated API documentation
237
+ platform/agenticsec-hub/docs/html/
238
+
239
+ # Generated test artifacts
240
+ pentest/cloud/agenticsec/nmap_scans/
241
+
242
+ # Development configuration files (generated from templates, modified at runtime)
243
+ pentest/edge/agenticsec-supervisor/dev-config/installer_config.json
244
+ pentest/edge/agenticsec-supervisor/dev-config/state.json
245
+
246
+ # Grafana dashboards (auto-generated from Jsonnet templates)
247
+ infra/local/grafana/dashboards/*.json
248
+ infra/cloud/grafana/dashboards/*.json
249
+
250
+ # Fluent Bit configuration (auto-generated from YAML template)
251
+ infra/local/fluent-bit/fluent-bit.conf
252
+
253
+ # Metabase dashboards/cards (exported from prd, not git-managed)
254
+ infra/local/metabase/dashboards/*.json
255
+ infra/local/metabase/cards/*.json
256
+ # Metasploit knowledge intermediate files
257
+ knowledges/metasploit/intermediate/
258
+
259
+ # Generated documentation
260
+ docs/developer/development/dependency-graph.html
261
+
262
+ # dbt build outputs
263
+ infra/data-pipeline/target/
264
+ infra/data-pipeline/dbt_packages/
265
+ infra/data-pipeline/logs/
266
+
267
+ # Semgrep scan results
268
+ semgrep-results.sarif
269
+
270
+ # Claude Code local settings (personal permission history)
271
+ .claude/settings.local.json
272
+
273
+ # Claude Code worktrees
274
+ .claude/worktrees/
275
+
276
+ # Miscellaneous
277
+ .DS_Store
asec-0.1.0/LICENSE ADDED
@@ -0,0 +1,31 @@
1
+ AgenticSec CLI (asec) — Proprietary Software License
2
+
3
+ Copyright (c) 2026 AgenticSec, Inc. All rights reserved.
4
+
5
+ This software, including its source code, binaries, and accompanying
6
+ documentation (collectively, the "Software"), is proprietary and confidential
7
+ to AgenticSec, Inc. ("AgenticSec"). It is not open-source software.
8
+
9
+ Use of the Software requires a valid AgenticSec account and an active
10
+ subscription or other written agreement with AgenticSec. Subject to such an
11
+ agreement, AgenticSec grants you a limited, non-exclusive, non-transferable,
12
+ revocable license to install and use the Software solely to access AgenticSec
13
+ services for your own internal business purposes.
14
+
15
+ Except as expressly permitted above or by applicable mandatory law, you may not:
16
+
17
+ - copy, reproduce, or distribute the Software;
18
+ - modify, adapt, translate, or create derivative works of the Software;
19
+ - reverse engineer, decompile, or disassemble the Software;
20
+ - sublicense, sell, rent, lease, or otherwise make the Software available to
21
+ any third party; or
22
+ - remove or alter any proprietary notices contained in the Software.
23
+
24
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
+ FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL
27
+ AGENTICSEC BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN
28
+ ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
29
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
+
31
+ For licensing inquiries, contact: dev@agenticsec.tech
asec-0.1.0/Makefile ADDED
@@ -0,0 +1,31 @@
1
+ .PHONY: help test format lint clean
2
+
3
+ # 現在のパッケージパスを取得
4
+ CURRENT_PACKAGE := cli/asec
5
+ ROOT_DIR := ../..
6
+
7
+ # デフォルトターゲット
8
+ help:
9
+ @echo "Usage: make [target]"
10
+ @echo ""
11
+ @echo "Targets:"
12
+ @echo " test Run all tests with coverage"
13
+ @echo " format Format code with ruff"
14
+ @echo " lint Run linting checks with ruff"
15
+ @echo " clean Clean cache and temporary files"
16
+
17
+ # テスト実行
18
+ test:
19
+ @$(MAKE) -C $(ROOT_DIR) _test_single PKG=$(CURRENT_PACKAGE)
20
+
21
+ # コードフォーマット
22
+ format:
23
+ @$(MAKE) -C $(ROOT_DIR) _format_single PKG=$(CURRENT_PACKAGE)
24
+
25
+ # リント実行
26
+ lint:
27
+ @$(MAKE) -C $(ROOT_DIR) _lint_single PKG=$(CURRENT_PACKAGE)
28
+
29
+ # クリーンアップ
30
+ clean:
31
+ @$(MAKE) -C $(ROOT_DIR) _clean_single PKG=$(CURRENT_PACKAGE)
asec-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,80 @@
1
+ Metadata-Version: 2.4
2
+ Name: asec
3
+ Version: 0.1.0
4
+ Summary: AgenticSec CLI
5
+ Project-URL: Homepage, https://app.agenticsec.tech
6
+ Project-URL: Documentation, https://app.agenticsec.tech/docs/
7
+ Author-email: "AgenticSec, Inc." <dev@agenticsec.tech>
8
+ Maintainer-email: "AgenticSec, Inc." <dev@agenticsec.tech>
9
+ License: AgenticSec CLI (asec) — Proprietary Software License
10
+
11
+ Copyright (c) 2026 AgenticSec, Inc. All rights reserved.
12
+
13
+ This software, including its source code, binaries, and accompanying
14
+ documentation (collectively, the "Software"), is proprietary and confidential
15
+ to AgenticSec, Inc. ("AgenticSec"). It is not open-source software.
16
+
17
+ Use of the Software requires a valid AgenticSec account and an active
18
+ subscription or other written agreement with AgenticSec. Subject to such an
19
+ agreement, AgenticSec grants you a limited, non-exclusive, non-transferable,
20
+ revocable license to install and use the Software solely to access AgenticSec
21
+ services for your own internal business purposes.
22
+
23
+ Except as expressly permitted above or by applicable mandatory law, you may not:
24
+
25
+ - copy, reproduce, or distribute the Software;
26
+ - modify, adapt, translate, or create derivative works of the Software;
27
+ - reverse engineer, decompile, or disassemble the Software;
28
+ - sublicense, sell, rent, lease, or otherwise make the Software available to
29
+ any third party; or
30
+ - remove or alter any proprietary notices contained in the Software.
31
+
32
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
33
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34
+ FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL
35
+ AGENTICSEC BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN
36
+ ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION
37
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38
+
39
+ For licensing inquiries, contact: dev@agenticsec.tech
40
+ License-File: LICENSE
41
+ Keywords: agentic,agenticsec,cli,devsecops,penetration-testing,security
42
+ Classifier: Development Status :: 4 - Beta
43
+ Classifier: Environment :: Console
44
+ Classifier: Intended Audience :: Developers
45
+ Classifier: Intended Audience :: Information Technology
46
+ Classifier: License :: Other/Proprietary License
47
+ Classifier: Operating System :: OS Independent
48
+ Classifier: Programming Language :: Python :: 3
49
+ Classifier: Programming Language :: Python :: 3.11
50
+ Classifier: Programming Language :: Python :: 3.12
51
+ Classifier: Programming Language :: Python :: 3.13
52
+ Classifier: Programming Language :: Python :: 3.14
53
+ Classifier: Topic :: Security
54
+ Classifier: Topic :: Software Development :: Quality Assurance
55
+ Requires-Python: >=3.11
56
+ Requires-Dist: click>=8.1.0
57
+ Requires-Dist: cryptography>=45.0.0
58
+ Requires-Dist: httpx>=0.28.0
59
+ Requires-Dist: playwright>=1.49.0
60
+ Requires-Dist: pyjwt>=2.10.0
61
+ Requires-Dist: tomli-w>=1.0.0
62
+ Description-Content-Type: text/markdown
63
+
64
+ # asec — the AgenticSec CLI
65
+
66
+ `asec` is the command-line interface for [AgenticSec](https://app.agenticsec.tech),
67
+ an AI-driven security platform for agentic penetration testing and DevSecOps
68
+ scanning.
69
+
70
+ **Proprietary software.** `asec` is commercial software and is **not**
71
+ open-source. Using it requires a valid AgenticSec account.
72
+
73
+ For access and installation instructions, please contact
74
+ **sales@agenticsec.tech**.
75
+
76
+ - Homepage: [app.agenticsec.tech](https://app.agenticsec.tech)
77
+
78
+ ## License
79
+
80
+ Proprietary. Copyright (c) 2026 AgenticSec, Inc. All rights reserved.
asec-0.1.0/README.md ADDED
@@ -0,0 +1,17 @@
1
+ # asec — the AgenticSec CLI
2
+
3
+ `asec` is the command-line interface for [AgenticSec](https://app.agenticsec.tech),
4
+ an AI-driven security platform for agentic penetration testing and DevSecOps
5
+ scanning.
6
+
7
+ **Proprietary software.** `asec` is commercial software and is **not**
8
+ open-source. Using it requires a valid AgenticSec account.
9
+
10
+ For access and installation instructions, please contact
11
+ **sales@agenticsec.tech**.
12
+
13
+ - Homepage: [app.agenticsec.tech](https://app.agenticsec.tech)
14
+
15
+ ## License
16
+
17
+ Proprietary. Copyright (c) 2026 AgenticSec, Inc. All rights reserved.
@@ -0,0 +1,87 @@
1
+ [project]
2
+ name = "asec"
3
+ version = "0.1.0"
4
+ description = "AgenticSec CLI"
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ license = { file = "LICENSE" }
8
+ authors = [
9
+ { name = "AgenticSec, Inc.", email = "dev@agenticsec.tech" },
10
+ ]
11
+ maintainers = [
12
+ { name = "AgenticSec, Inc.", email = "dev@agenticsec.tech" },
13
+ ]
14
+ keywords = ["security", "penetration-testing", "devsecops", "agentic", "cli", "agenticsec"]
15
+ classifiers = [
16
+ "Development Status :: 4 - Beta",
17
+ "Environment :: Console",
18
+ "Intended Audience :: Developers",
19
+ "Intended Audience :: Information Technology",
20
+ "License :: Other/Proprietary License",
21
+ "Operating System :: OS Independent",
22
+ "Programming Language :: Python :: 3",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ "Programming Language :: Python :: 3.13",
26
+ "Programming Language :: Python :: 3.14",
27
+ "Topic :: Security",
28
+ "Topic :: Software Development :: Quality Assurance",
29
+ ]
30
+ dependencies = [
31
+ "click>=8.1.0",
32
+ "httpx>=0.28.0",
33
+ "PyJWT>=2.10.0",
34
+ "cryptography>=45.0.0",
35
+ "tomli_w>=1.0.0",
36
+ # Drives a real browser for `asec pentest web-login` (interactive auth capture).
37
+ # After install, run `playwright install chromium` once to fetch the browser.
38
+ "playwright>=1.49.0",
39
+ ]
40
+
41
+ [project.urls]
42
+ Homepage = "https://app.agenticsec.tech"
43
+ Documentation = "https://app.agenticsec.tech/docs/"
44
+
45
+ [project.scripts]
46
+ asec = "asec.cli:main"
47
+
48
+ [dependency-groups]
49
+ dev = [
50
+ "pytest>=8.4.2",
51
+ "pytest-asyncio>=1.2.0",
52
+ "pytest-cov>=7.0.0",
53
+ "mypy>=1.18.2",
54
+ "ruff>=0.13.1",
55
+ ]
56
+
57
+ [build-system]
58
+ requires = ["hatchling"]
59
+ build-backend = "hatchling.build"
60
+
61
+ [tool.pytest.ini_options]
62
+ asyncio_mode = "auto"
63
+ testpaths = ["tests"]
64
+ python_files = ["test_*.py"]
65
+ python_functions = ["test_*"]
66
+
67
+ [tool.coverage.run]
68
+ omit = []
69
+
70
+ [tool.coverage.report]
71
+ exclude_lines = [
72
+ "pragma: no cover",
73
+ "if __name__ == .__main__.:",
74
+ "pass",
75
+ ]
76
+ fail_under = 90
77
+
78
+ [tool.ruff]
79
+ line-length = 120
80
+ target-version = "py311"
81
+
82
+ [tool.ruff.lint]
83
+ select = ["E", "F", "I", "N", "W", "UP", "B", "SIM", "C90"]
84
+ ignore = ["E501", "SIM117"]
85
+
86
+ [tool.hatch.build.targets.wheel]
87
+ packages = ["src/asec"]
@@ -0,0 +1 @@
1
+ """asec - AgenticSec DevSecOps CLI."""