Skip to content

πŸ›‘οΈ Sentinel: [MEDIUM] Fix SQL syntax error / DoS vector on empty memory recall#164

Open
docxology wants to merge 8 commits intomainfrom
sentinel-fix-cognilayer-bridge-dos-18291660171048009927
Open

πŸ›‘οΈ Sentinel: [MEDIUM] Fix SQL syntax error / DoS vector on empty memory recall#164
docxology wants to merge 8 commits intomainfrom
sentinel-fix-cognilayer-bridge-dos-18291660171048009927

Conversation

@docxology
Copy link
Copy Markdown
Owner

🚨 Severity: MEDIUM
πŸ’‘ Vulnerability: Unhandled SQL syntax exception in recall_memory edge case
🎯 Impact: If query is an empty string or whitespace, query.split() creates an empty list, and where_clauses resolves to "". The resulting query SELECT * FROM memories WHERE LIMIT ? throws a fatal sqlite3.OperationalError, potentially causing application crash/Denial of Service.
πŸ”§ Fix: Added an explicit if not search_terms: condition to run a direct SELECT * FROM memories LIMIT ? if no parameters are available.
βœ… Verification: Ran uv run pytest src/codomyrmex/tests/unit/agentic_memory/ ensuring 100% stable execution and uv run ruff check for static validation.


PR created automatically by Jules for task 18291660171048009927 started by @docxology

…ry recall

* Update `src/codomyrmex/agentic_memory/cognilayer_bridge.py`
* Add explicit check for empty search terms to avoid generating invalid SQLite WHERE clauses (e.g. `WHERE  LIMIT ?`)
* Run full verification suite to ensure test stability

Co-authored-by: docxology <6911384+docxology@users.noreply.github.com>
@google-labs-jules
Copy link
Copy Markdown
Contributor

πŸ‘‹ Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a πŸ‘€ emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@github-actions
Copy link
Copy Markdown

πŸ€– Hi @docxology, I've received your request, and I'm working on it now! You can track my progress in the logs for more details.

@github-actions
Copy link
Copy Markdown

πŸ€– I'm sorry @docxology, but I was unable to process your request. Please see the logs for more details.

google-labs-jules Bot and others added 7 commits March 14, 2026 01:33
…ry recall

* Update `src/codomyrmex/agentic_memory/cognilayer_bridge.py`
* Add explicit check for empty search terms to avoid generating invalid SQLite WHERE clauses (e.g. `WHERE  LIMIT ?`)
* Run full verification suite to ensure test stability

Co-authored-by: docxology <6911384+docxology@users.noreply.github.com>
…memory recall

* Update `src/codomyrmex/agentic_memory/cognilayer_bridge.py`
* Add explicit check for empty search terms to avoid generating invalid SQLite WHERE clauses (e.g. `WHERE  LIMIT ?`)
* Run full verification suite to ensure test stability

Co-authored-by: docxology <6911384+docxology@users.noreply.github.com>
…memory recall

* Update `src/codomyrmex/agentic_memory/cognilayer_bridge.py`
* Add explicit check for empty search terms to avoid generating invalid SQLite WHERE clauses (e.g. `WHERE  LIMIT ?`)
* Run full verification suite to ensure test stability

Co-authored-by: docxology <6911384+docxology@users.noreply.github.com>
…memory recall

* Update `src/codomyrmex/agentic_memory/cognilayer_bridge.py`
* Add explicit check for empty search terms to avoid generating invalid SQLite WHERE clauses (e.g. `WHERE  LIMIT ?`)
* Run full verification suite to ensure test stability

Co-authored-by: docxology <6911384+docxology@users.noreply.github.com>
…memory recall

* Update `src/codomyrmex/agentic_memory/cognilayer_bridge.py`
* Add explicit check for empty search terms to avoid generating invalid SQLite WHERE clauses (e.g. `WHERE  LIMIT ?`)
* Run full verification suite to ensure test stability

Co-authored-by: docxology <6911384+docxology@users.noreply.github.com>
…memory recall

* Update `src/codomyrmex/agentic_memory/cognilayer_bridge.py`
* Add explicit check for empty search terms to avoid generating invalid SQLite WHERE clauses (e.g. `WHERE  LIMIT ?`)
* Run full verification suite to ensure test stability

Co-authored-by: docxology <6911384+docxology@users.noreply.github.com>
…memory recall

* Update `src/codomyrmex/agentic_memory/cognilayer_bridge.py`
* Add explicit check for empty search terms to avoid generating invalid SQLite WHERE clauses (e.g. `WHERE  LIMIT ?`)
* Fix GitHub Actions permissions for commenting on PRs

Co-authored-by: docxology <6911384+docxology@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown

πŸ“Š File Changes Analysis

Change Analysis

Source Code Changes

  • src/codomyrmex/agentic_memory/cognilayer_bridge.py

Configuration Changes

  • .github/workflows/dependency-review.yml
  • .github/workflows/pre-commit.yml
  • .github/workflows/security.yml
  • pyproject.toml

Analysis

⚠️ Dependencies changed - Review dependency updates carefully
πŸ”§ Workflow changes detected - Test workflows thoroughly
⚠️ Source code changed without test updates - Consider adding tests

@github-actions
Copy link
Copy Markdown

πŸ”’ Security Scan Results

πŸ”’ Comprehensive Security Report

Generated on: Sat Mar 14 02:59:54 UTC 2026
Repository: docxology/codomyrmex
Commit: ed1ed93

Summary

Dependency Security

Current Dependencies

codomyrmex v1.2.2
β”œβ”€β”€ aiohttp v3.13.3
β”‚   β”œβ”€β”€ aiohappyeyeballs v2.6.1
β”‚   β”œβ”€β”€ aiosignal v1.4.0
β”‚   β”‚   β”œβ”€β”€ frozenlist v1.8.0
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”œβ”€β”€ attrs v25.4.0
β”‚   β”œβ”€β”€ frozenlist v1.8.0
β”‚   β”œβ”€β”€ multidict v6.7.1
β”‚   β”œβ”€β”€ propcache v0.4.1
β”‚   └── yarl v1.22.0
β”‚       β”œβ”€β”€ idna v3.11
β”‚       β”œβ”€β”€ multidict v6.7.1
β”‚       └── propcache v0.4.1
β”œβ”€β”€ bandit v1.9.4
β”‚   β”œβ”€β”€ pyyaml v6.0.3
β”‚   β”œβ”€β”€ rich v14.3.3
β”‚   β”‚   β”œβ”€β”€ markdown-it-py v4.0.0
β”‚   β”‚   β”‚   β”œβ”€β”€ mdurl v0.1.2
β”‚   β”‚   β”‚   └── linkify-it-py v2.0.3 (extra: linkify)
β”‚   β”‚   β”‚       └── uc-micro-py v1.0.3
β”‚   β”‚   └── pygments v2.19.2
β”‚   └── stevedore v5.7.0
β”œβ”€β”€ beautifulsoup4 v4.14.3
β”‚   β”œβ”€β”€ soupsieve v2.8.3
β”‚   └── typing-extensions v4.15.0
β”œβ”€β”€ cased-kit v3.5.1
β”‚   β”œβ”€β”€ anthropic v0.84.0
β”‚   β”‚   β”œβ”€β”€ anyio v4.12.1
β”‚   β”‚   β”‚   β”œβ”€β”€ idna v3.11
β”‚   β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”‚   β”œβ”€β”€ distro v1.9.0
β”‚   β”‚   β”œβ”€β”€ docstring-parser v0.17.0
β”‚   β”‚   β”œβ”€β”€ httpx v0.28.1
β”‚   β”‚   β”‚   β”œβ”€β”€ anyio v4.12.1 (*)
β”‚   β”‚   β”‚   β”œβ”€β”€ certifi v2026.2.25
β”‚   β”‚   β”‚   β”œβ”€β”€ httpcore v1.0.9
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ certifi v2026.2.25
β”‚   β”‚   β”‚   β”‚   └── h11 v0.16.0
β”‚   β”‚   β”‚   └── idna v3.11
β”‚   β”‚   β”œβ”€β”€ jiter v0.13.0
β”‚   β”‚   β”œβ”€β”€ pydantic v2.12.5
β”‚   β”‚   β”‚   β”œβ”€β”€ annotated-types v0.7.0
β”‚   β”‚   β”‚   β”œβ”€β”€ pydantic-core v2.41.5
β”‚   β”‚   β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”‚   β”‚   β”œβ”€β”€ typing-extensions v4.15.0
β”‚   β”‚   β”‚   └── typing-inspection v0.4.2
β”‚   β”‚   β”‚       └── typing-extensions v4.15.0
β”‚   β”‚   β”œβ”€β”€ sniffio v1.3.1
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”œβ”€β”€ click v8.1.8
β”‚   β”œβ”€β”€ fastapi v0.133.1
β”‚   β”‚   β”œβ”€β”€ annotated-doc v0.0.4
β”‚   β”‚   β”œβ”€β”€ pydantic v2.12.5 (*)
β”‚   β”‚   β”œβ”€β”€ starlette v0.52.1
β”‚   β”‚   β”‚   β”œβ”€β”€ anyio v4.12.1 (*)
β”‚   β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”‚   β”œβ”€β”€ typing-extensions v4.15.0
β”‚   β”‚   └── typing-inspection v0.4.2 (*)
β”‚   β”œβ”€β”€ google-genai v1.65.0
β”‚   β”‚   β”œβ”€β”€ anyio v4.12.1 (*)
β”‚   β”‚   β”œβ”€β”€ distro v1.9.0
β”‚   β”‚   β”œβ”€β”€ google-auth[requests] v2.48.0
β”‚   β”‚   β”‚   β”œβ”€β”€ cryptography v46.0.5
β”‚   β”‚   β”‚   β”‚   └── cffi v2.0.0
β”‚   β”‚   β”‚   β”‚       └── pycparser v3.0
β”‚   β”‚   β”‚   β”œβ”€β”€ pyasn1-modules v0.4.2
β”‚   β”‚   β”‚   β”‚   └── pyasn1 v0.6.2
β”‚   β”‚   β”‚   β”œβ”€β”€ rsa v4.9.1
β”‚   β”‚   β”‚   β”‚   └── pyasn1 v0.6.2
β”‚   β”‚   β”‚   └── requests v2.32.5 (extra: requests)
β”‚   β”‚   β”‚       β”œβ”€β”€ certifi v2026.2.25
β”‚   β”‚   β”‚       β”œβ”€β”€ charset-normalizer v3.4.5
β”‚   β”‚   β”‚       β”œβ”€β”€ idna v3.11
β”‚   β”‚   β”‚       └── urllib3 v2.6.3
β”‚   β”‚   β”œβ”€β”€ httpx v0.28.1 (*)
β”‚   β”‚   β”œβ”€β”€ pydantic v2.12.5 (*)
β”‚   β”‚   β”œβ”€β”€ requests v2.32.5 (*)
β”‚   β”‚   β”œβ”€β”€ sniffio v1.3.1
β”‚   β”‚   β”œβ”€β”€ tenacity v9.1.4
β”‚   β”‚   β”œβ”€β”€ typing-extensions v4.15.0
β”‚   β”‚   └── websockets v16.0
β”‚   β”œβ”€β”€ ignore-python v0.3.2
β”‚   β”œβ”€β”€ mcp v1.26.0
β”‚   β”‚   β”œβ”€β”€ anyio v4.12.1 (*)
β”‚   β”‚   β”œβ”€β”€ httpx v0.28.1 (*)
β”‚   β”‚   β”œβ”€β”€ httpx-sse v0.4.3
β”‚   β”‚   β”œβ”€β”€ jsonschema v4.26.0
β”‚   β”‚   β”‚   β”œβ”€β”€ attrs v25.4.0
β”‚   β”‚   β”‚   β”œβ”€β”€ jsonschema-specifications v2025.9.1
β”‚   β”‚   β”‚   β”‚   └── referencing v0.37.0
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ attrs v25.4.0
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ rpds-py v0.30.0
β”‚   β”‚   β”‚   β”‚       └── typing-extensions v4.15.0
β”‚   β”‚   β”‚   β”œβ”€β”€ referencing v0.37.0 (*)
β”‚   β”‚   β”‚   └── rpds-py v0.30.0
β”‚   β”‚   β”œβ”€β”€ pydantic v2.12.5 (*)
β”‚   β”‚   β”œβ”€β”€ pydantic-settings v2.13.1
β”‚   β”‚   β”‚   β”œβ”€β”€ pydantic v2.12.5 (*)
β”‚   β”‚   β”‚   β”œβ”€β”€ python-dotenv v1.2.1
β”‚   β”‚   β”‚   └── typing-inspection v0.4.2 (*)
β”‚   β”‚   β”œβ”€β”€ pyjwt[crypto] v2.11.0
β”‚   β”‚   β”‚   └── cryptography v46.0.5 (extra: crypto) (*)
β”‚   β”‚   β”œβ”€β”€ python-multipart v0.0.22
β”‚   β”‚   β”œβ”€β”€ sse-starlette v3.2.0
β”‚   β”‚   β”‚   β”œβ”€β”€ anyio v4.12.1 (*)
β”‚   β”‚   β”‚   └── starlette v0.52.1 (*)
β”‚   β”‚   β”œβ”€β”€ starlette v0.52.1 (*)
β”‚   β”‚   β”œβ”€β”€ typing-extensions v4.15.0
β”‚   β”‚   β”œβ”€β”€ typing-inspection v0.4.2 (*)
β”‚   β”‚   └── uvicorn v0.41.0
β”‚   β”‚       β”œβ”€β”€ click v8.1.8
β”‚   β”‚       β”œβ”€β”€ h11 v0.16.0
β”‚   β”‚       β”œβ”€β”€ httptools v0.7.1 (extra: standard)
β”‚   β”‚       β”œβ”€β”€ python-dotenv v1.2.1 (extra: standard)
β”‚   β”‚       β”œβ”€β”€ pyyaml v6.0.3 (extra: standard)
β”‚   β”‚       β”œβ”€β”€ uvloop v0.22.1 (extra: standard)
β”‚   β”‚       β”œβ”€β”€ watchfiles v1.1.1 (extra: standard)
β”‚   β”‚       β”‚   └── anyio v4.12.1 (*)
β”‚   β”‚       └── websockets v16.0 (extra: standard)
β”‚   β”œβ”€β”€ numpy v2.4.2
β”‚   β”œβ”€β”€ openai v2.24.0
β”‚   β”‚   β”œβ”€β”€ anyio v4.12.1 (*)
β”‚   β”‚   β”œβ”€β”€ distro v1.9.0
β”‚   β”‚   β”œβ”€β”€ httpx v0.28.1 (*)
β”‚   β”‚   β”œβ”€β”€ jiter v0.13.0
β”‚   β”‚   β”œβ”€β”€ pydantic v2.12.5 (*)
β”‚   β”‚   β”œβ”€β”€ sniffio v1.3.1
β”‚   β”‚   β”œβ”€β”€ tqdm v4.67.3
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”œβ”€β”€ pathspec v1.0.4
β”‚   β”œβ”€β”€ python-hcl2 v7.3.1
β”‚   β”‚   β”œβ”€β”€ lark v1.3.1
β”‚   β”‚   └── regex v2026.2.19
β”‚   β”œβ”€β”€ pyyaml v6.0.3
β”‚   β”œβ”€β”€ redis v7.2.1
β”‚   β”œβ”€β”€ requests v2.32.5 (*)
β”‚   β”œβ”€β”€ tiktoken v0.12.0
β”‚   β”‚   β”œβ”€β”€ regex v2026.2.19
β”‚   β”‚   └── requests v2.32.5 (*)
β”‚   β”œβ”€β”€ tree-sitter v0.25.2
β”‚   β”œβ”€β”€ tree-sitter-language-pack v0.13.0
β”‚   β”‚   β”œβ”€β”€ tree-sitter v0.25.2
β”‚   β”‚   β”œβ”€β”€ tree-sitter-c-sharp v0.23.1
β”‚   β”‚   β”œβ”€β”€ tree-sitter-embedded-template v0.25.0
β”‚   β”‚   └── tree-sitter-yaml v0.7.2
β”‚   β”œβ”€β”€ typer v0.15.4
β”‚   β”‚   β”œβ”€β”€ click v8.1.8
β”‚   β”‚   β”œβ”€β”€ rich v14.3.3 (*)
β”‚   β”‚   β”œβ”€β”€ shellingham v1.5.4
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   └── uvicorn[standard] v0.41.0 (*)
β”œβ”€β”€ cryptography v46.0.5 (*)
β”œβ”€β”€ diff-match-patch v20241021
β”œβ”€β”€ email-validator v2.3.0
β”‚   β”œβ”€β”€ dnspython v2.8.0
β”‚   └── idna v3.11
β”œβ”€β”€ gitpython v3.1.46
β”‚   └── gitdb v4.0.12
β”‚       └── smmap v5.0.2
β”œβ”€β”€ jsonschema v4.26.0 (*)
β”œβ”€β”€ lizard v1.21.0
β”‚   β”œβ”€β”€ pathspec v1.0.4
β”‚   └── pygments v2.19.2
β”œβ”€β”€ loguru v0.7.3
β”œβ”€β”€ mako v1.3.10
β”‚   └── markupsafe v3.0.3
β”œβ”€β”€ markdownify v1.2.2
β”‚   β”œβ”€β”€ beautifulsoup4 v4.14.3 (*)
β”‚   └── six v1.17.0
β”œβ”€β”€ matplotlib v3.10.8
β”‚   β”œβ”€β”€ contourpy v1.3.3
β”‚   β”‚   └── numpy v2.4.2
β”‚   β”œβ”€β”€ cycler v0.12.1
β”‚   β”œβ”€β”€ fonttools v4.61.1
β”‚   β”œβ”€β”€ kiwisolver v1.4.9
β”‚   β”œβ”€β”€ numpy v2.4.2
β”‚   β”œβ”€β”€ packaging v26.0
β”‚   β”œβ”€β”€ pillow v11.3.0
β”‚   β”œβ”€β”€ pyparsing v3.3.2
β”‚   └── python-dateutil v2.9.0.post0
β”‚       └── six v1.17.0
β”œβ”€β”€ mlx-lm v0.31.1
β”‚   β”œβ”€β”€ jinja2 v3.1.6
β”‚   β”‚   └── markupsafe v3.0.3
β”‚   β”œβ”€β”€ numpy v2.4.2
β”‚   β”œβ”€β”€ protobuf v5.29.6
β”‚   β”œβ”€β”€ pyyaml v6.0.3
β”‚   β”œβ”€β”€ sentencepiece v0.2.1
β”‚   └── transformers v5.2.0
β”‚       β”œβ”€β”€ huggingface-hub v1.5.0
β”‚       β”‚   β”œβ”€β”€ filelock v3.12.4
β”‚       β”‚   β”œβ”€β”€ fsspec v2026.2.0
β”‚       β”‚   β”œβ”€β”€ hf-xet v1.3.2
β”‚       β”‚   β”œβ”€β”€ httpx v0.28.1 (*)
β”‚       β”‚   β”œβ”€β”€ packaging v26.0
β”‚       β”‚   β”œβ”€β”€ pyyaml v6.0.3
β”‚       β”‚   β”œβ”€β”€ tqdm v4.67.3
β”‚       β”‚   β”œβ”€β”€ typer v0.15.4 (*)
β”‚       β”‚   └── typing-extensions v4.15.0
β”‚       β”œβ”€β”€ numpy v2.4.2
β”‚       β”œβ”€β”€ packaging v26.0
β”‚       β”œβ”€β”€ pyyaml v6.0.3
β”‚       β”œβ”€β”€ regex v2026.2.19
β”‚       β”œβ”€β”€ safetensors v0.7.0
β”‚       β”œβ”€β”€ tokenizers v0.22.2
β”‚       β”‚   └── huggingface-hub v1.5.0 (*)
β”‚       β”œβ”€β”€ tqdm v4.67.3
β”‚       └── typer-slim v0.21.2
β”‚           β”œβ”€β”€ annotated-doc v0.0.4
β”‚           └── click v8.1.8
β”œβ”€β”€ psutil v6.0.0
β”œβ”€β”€ pydantic v2.12.5 (*)
β”œβ”€β”€ pygments v2.19.2
β”œβ”€β”€ pylint v4.0.5
β”‚   β”œβ”€β”€ astroid v4.0.4
β”‚   β”œβ”€β”€ dill v0.4.1
β”‚   β”œβ”€β”€ isort v8.0.0
β”‚   β”œβ”€β”€ mccabe v0.7.0
β”‚   β”œβ”€β”€ platformdirs v4.9.2
β”‚   └── tomlkit v0.14.0
β”œβ”€β”€ python-dotenv v1.2.1
β”œβ”€β”€ pytz v2025.2
β”œβ”€β”€ pyyaml v6.0.3
β”œβ”€β”€ radon v6.0.1
β”‚   β”œβ”€β”€ colorama v0.4.6
β”‚   └── mando v0.7.1
β”‚       └── six v1.17.0
β”œβ”€β”€ requests v2.32.5 (*)
β”œβ”€β”€ rich v14.3.3 (*)
β”œβ”€β”€ tqdm v4.67.3
β”œβ”€β”€ unidiff v0.7.5
β”œβ”€β”€ wasmtime v42.0.0
β”œβ”€β”€ watchdog v6.0.0
β”œβ”€β”€ fastapi v0.133.1 (extra: api) (*)
β”œβ”€β”€ uvicorn v0.41.0 (extra: api) (*)
β”œβ”€β”€ edge-tts v7.2.7 (extra: audio)
β”‚   β”œβ”€β”€ aiohttp v3.13.3 (*)
β”‚   β”œβ”€β”€ certifi v2026.2.25
β”‚   β”œβ”€β”€ tabulate v0.9.0
β”‚   └── typing-extensions v4.15.0
β”œβ”€β”€ faster-whisper v1.2.1 (extra: audio)
β”‚   β”œβ”€β”€ av v16.1.0
β”‚   β”œβ”€β”€ ctranslate2 v4.7.1
β”‚   β”‚   β”œβ”€β”€ numpy v2.4.2
β”‚   β”‚   β”œβ”€β”€ pyyaml v6.0.3
β”‚   β”‚   └── setuptools v82.0.0
β”‚   β”œβ”€β”€ huggingface-hub v1.5.0 (*)
β”‚   β”œβ”€β”€ onnxruntime v1.24.2
β”‚   β”‚   β”œβ”€β”€ flatbuffers v25.12.19
β”‚   β”‚   β”œβ”€β”€ numpy v2.4.2
β”‚   β”‚   β”œβ”€β”€ packaging v26.0
β”‚   β”‚   β”œβ”€β”€ protobuf v5.29.6
β”‚   β”‚   └── sympy v1.14.0
β”‚   β”‚       └── mpmath v1.3.0
β”‚   β”œβ”€β”€ tokenizers v0.22.2 (*)
β”‚   └── tqdm v4.67.3
β”œβ”€β”€ pydub v0.25.1 (extra: audio)
β”œβ”€β”€ pyttsx3 v2.99 (extra: audio)
β”œβ”€β”€ soundfile v0.13.1 (extra: audio)
β”‚   β”œβ”€β”€ cffi v2.0.0 (*)
β”‚   └── numpy v2.4.2
β”œβ”€β”€ redis v7.2.1 (extra: cache)
β”œβ”€β”€ google-api-python-client v2.190.0 (extra: calendar)
β”‚   β”œβ”€β”€ google-api-core v2.25.2
β”‚   β”‚   β”œβ”€β”€ google-auth v2.48.0 (*)
β”‚   β”‚   β”œβ”€β”€ googleapis-common-protos v1.72.0
β”‚   β”‚   β”‚   └── protobuf v5.29.6
β”‚   β”‚   β”œβ”€β”€ proto-plus v1.27.1
β”‚   β”‚   β”‚   └── protobuf v5.29.6
β”‚   β”‚   β”œβ”€β”€ protobuf v5.29.6
β”‚   β”‚   └── requests v2.32.5 (*)
β”‚   β”œβ”€β”€ google-auth v2.48.0 (*)
β”‚   β”œβ”€β”€ google-auth-httplib2 v0.3.0
β”‚   β”‚   β”œβ”€β”€ google-auth v2.48.0 (*)
β”‚   β”‚   └── httplib2 v0.31.2
β”‚   β”‚       └── pyparsing v3.3.2
β”‚   β”œβ”€β”€ httplib2 v0.31.2 (*)
β”‚   └── uritemplate v4.2.0
β”œβ”€β”€ google-auth-httplib2 v0.3.0 (extra: calendar) (*)
β”œβ”€β”€ google-auth-oauthlib v1.3.0 (extra: calendar)
β”‚   β”œβ”€β”€ google-auth v2.48.0 (*)
β”‚   └── requests-oauthlib v2.0.0
β”‚       β”œβ”€β”€ oauthlib v3.3.1
β”‚       └── requests v2.32.5 (*)
β”œβ”€β”€ azure-identity v1.25.2 (extra: cloud)
β”‚   β”œβ”€β”€ azure-core v1.38.2
β”‚   β”‚   β”œβ”€β”€ requests v2.32.5 (*)
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”œβ”€β”€ cryptography v46.0.5 (*)
β”‚   β”œβ”€β”€ msal v1.35.0
β”‚   β”‚   β”œβ”€β”€ cryptography v46.0.5 (*)
β”‚   β”‚   β”œβ”€β”€ pyjwt[crypto] v2.11.0 (*)
β”‚   β”‚   └── requests v2.32.5 (*)
β”‚   β”œβ”€β”€ msal-extensions v1.3.1
β”‚   β”‚   └── msal v1.35.0 (*)
β”‚   └── typing-extensions v4.15.0
β”œβ”€β”€ azure-storage-blob v12.28.0 (extra: cloud)
β”‚   β”œβ”€β”€ azure-core v1.38.2 (*)
β”‚   β”œβ”€β”€ cryptography v46.0.5 (*)
β”‚   β”œβ”€β”€ isodate v0.7.2
β”‚   └── typing-extensions v4.15.0
β”œβ”€β”€ boto3 v1.42.58 (extra: cloud)
β”‚   β”œβ”€β”€ botocore v1.42.58
β”‚   β”‚   β”œβ”€β”€ jmespath v1.1.0
β”‚   β”‚   β”œβ”€β”€ python-dateutil v2.9.0.post0 (*)
β”‚   β”‚   └── urllib3 v2.6.3
β”‚   β”œβ”€β”€ jmespath v1.1.0
β”‚   └── s3transfer v0.16.0
β”‚       └── botocore v1.42.58 (*)
β”œβ”€β”€ google-cloud-storage v3.4.1 (extra: cloud)
β”‚   β”œβ”€β”€ google-api-core v2.25.2 (*)
β”‚   β”œβ”€β”€ google-auth v2.48.0 (*)
β”‚   β”œβ”€β”€ google-cloud-core v2.5.0
β”‚   β”‚   β”œβ”€β”€ google-api-core v2.25.2 (*)
β”‚   β”‚   └── google-auth v2.48.0 (*)
β”‚   β”œβ”€β”€ google-crc32c v1.8.0
β”‚   β”œβ”€β”€ google-resumable-media v2.8.0
β”‚   β”‚   └── google-crc32c v1.8.0
β”‚   └── requests v2.32.5 (*)
β”œβ”€β”€ openstacksdk v4.10.0 (extra: cloud)
β”‚   β”œβ”€β”€ cryptography v46.0.5 (*)
β”‚   β”œβ”€β”€ decorator v5.2.1
β”‚   β”œβ”€β”€ dogpile-cache v1.5.0
β”‚   β”‚   β”œβ”€β”€ decorator v5.2.1
β”‚   β”‚   └── stevedore v5.7.0
β”‚   β”œβ”€β”€ iso8601 v2.1.0
β”‚   β”œβ”€β”€ jmespath v1.1.0
β”‚   β”œβ”€β”€ jsonpatch v1.33
β”‚   β”‚   └── jsonpointer v3.0.0
β”‚   β”œβ”€β”€ keystoneauth1 v5.13.1
β”‚   β”‚   β”œβ”€β”€ iso8601 v2.1.0
β”‚   β”‚   β”œβ”€β”€ os-service-types v1.8.2
β”‚   β”‚   β”‚   β”œβ”€β”€ pbr v7.0.3
β”‚   β”‚   β”‚   β”‚   └── setuptools v82.0.0
β”‚   β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”‚   β”œβ”€β”€ pbr v7.0.3 (*)
β”‚   β”‚   β”œβ”€β”€ requests v2.32.5 (*)
β”‚   β”‚   β”œβ”€β”€ stevedore v5.7.0
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”œβ”€β”€ os-service-types v1.8.2 (*)
β”‚   β”œβ”€β”€ pbr v7.0.3 (*)
β”‚   β”œβ”€β”€ platformdirs v4.9.2
β”‚   β”œβ”€β”€ psutil v6.0.0
β”‚   β”œβ”€β”€ pyyaml v6.0.3
β”‚   β”œβ”€β”€ requestsexceptions v1.4.0
β”‚   └── typing-extensions v4.15.0
β”œβ”€β”€ safety v3.2.11 (extra: code-review)
β”‚   β”œβ”€β”€ authlib v1.6.8
β”‚   β”‚   └── cryptography v46.0.5 (*)
β”‚   β”œβ”€β”€ click v8.1.8
β”‚   β”œβ”€β”€ dparse v0.6.4
β”‚   β”‚   └── packaging v26.0
β”‚   β”œβ”€β”€ filelock v3.12.4
β”‚   β”œβ”€β”€ jinja2 v3.1.6 (*)
β”‚   β”œβ”€β”€ marshmallow v4.2.2
β”‚   β”œβ”€β”€ packaging v26.0
β”‚   β”œβ”€β”€ psutil v6.0.0
β”‚   β”œβ”€β”€ pydantic v2.12.5 (*)
β”‚   β”œβ”€β”€ requests v2.32.5 (*)
β”‚   β”œβ”€β”€ rich v14.3.3 (*)
β”‚   β”œβ”€β”€ ruamel-yaml v0.19.1
β”‚   β”œβ”€β”€ safety-schemas v0.0.18
β”‚   β”‚   β”œβ”€β”€ dparse v0.6.4 (*)
β”‚   β”‚   β”œβ”€β”€ packaging v26.0
β”‚   β”‚   β”œβ”€β”€ pydantic v2.12.5 (*)
β”‚   β”‚   β”œβ”€β”€ ruamel-yaml v0.19.1
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”œβ”€β”€ setuptools v82.0.0
β”‚   β”œβ”€β”€ typer v0.15.4 (*)
β”‚   β”œβ”€β”€ typing-extensions v4.15.0
β”‚   └── urllib3 v2.6.3
β”œβ”€β”€ typing-extensions v4.15.0 (extra: code-review)
β”œβ”€β”€ vulture v2.14 (extra: code-review)
β”œβ”€β”€ docker v7.1.0 (extra: containerization)
β”‚   β”œβ”€β”€ requests v2.32.5 (*)
β”‚   └── urllib3 v2.6.3
β”œβ”€β”€ mnemonic v0.21 (extra: crypto)
β”œβ”€β”€ pillow v11.3.0 (extra: crypto)
β”œβ”€β”€ pillow v11.3.0 (extra: dark)
β”œβ”€β”€ pymupdf v1.27.1 (extra: dark)
β”œβ”€β”€ matplotlib v3.10.8 (extra: data-visualization) (*)
β”œβ”€β”€ seaborn v0.13.2 (extra: data-visualization)
β”‚   β”œβ”€β”€ matplotlib v3.10.8 (*)
β”‚   β”œβ”€β”€ numpy v2.4.2
β”‚   └── pandas v3.0.1
β”‚       β”œβ”€β”€ numpy v2.4.2
β”‚       └── python-dateutil v2.9.0.post0 (*)
β”œβ”€β”€ paramiko v4.0.0 (extra: deployment)
β”‚   β”œβ”€β”€ bcrypt v5.0.0
β”‚   β”œβ”€β”€ cryptography v46.0.5 (*)
β”‚   β”œβ”€β”€ invoke v2.2.1
β”‚   └── pynacl v1.6.2
β”‚       └── cffi v2.0.0 (*)
β”œβ”€β”€ chardet v6.0.0.post1 (extra: documents)
β”œβ”€β”€ pypdf v6.7.4 (extra: documents)
β”œβ”€β”€ agentmail v0.2.22 (extra: email)
β”‚   β”œβ”€β”€ httpx v0.28.1 (*)
β”‚   β”œβ”€β”€ pydantic v2.12.5 (*)
β”‚   β”œβ”€β”€ pydantic-core v2.41.5 (*)
β”‚   β”œβ”€β”€ typing-extensions v4.15.0
β”‚   └── websockets v16.0
β”œβ”€β”€ google-api-python-client v2.190.0 (extra: email) (*)
β”œβ”€β”€ google-auth-httplib2 v0.3.0 (extra: email) (*)
β”œβ”€β”€ google-auth-oauthlib v1.3.0 (extra: email) (*)
β”œβ”€β”€ chromadb v1.5.2 (extra: embedding)
β”‚   β”œβ”€β”€ bcrypt v5.0.0
β”‚   β”œβ”€β”€ build v1.4.0
β”‚   β”‚   β”œβ”€β”€ packaging v26.0
β”‚   β”‚   └── pyproject-hooks v1.2.0
β”‚   β”œβ”€β”€ grpcio v1.78.0
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”œβ”€β”€ httpx v0.28.1 (*)
β”‚   β”œβ”€β”€ importlib-resources v6.5.2
β”‚   β”œβ”€β”€ jsonschema v4.26.0 (*)
β”‚   β”œβ”€β”€ kubernetes v35.0.0
β”‚   β”‚   β”œβ”€β”€ certifi v2026.2.25
β”‚   β”‚   β”œβ”€β”€ durationpy v0.10
β”‚   β”‚   β”œβ”€β”€ python-dateutil v2.9.0.post0 (*)
β”‚   β”‚   β”œβ”€β”€ pyyaml v6.0.3
β”‚   β”‚   β”œβ”€β”€ requests v2.32.5 (*)
β”‚   β”‚   β”œβ”€β”€ requests-oauthlib v2.0.0 (*)
β”‚   β”‚   β”œβ”€β”€ six v1.17.0
β”‚   β”‚   β”œβ”€β”€ urllib3 v2.6.3
β”‚   β”‚   └── websocket-client v1.9.0
β”‚   β”œβ”€β”€ mmh3 v5.2.0
β”‚   β”œβ”€β”€ numpy v2.4.2
β”‚   β”œβ”€β”€ onnxruntime v1.24.2 (*)
β”‚   β”œβ”€β”€ opentelemetry-api v1.39.1
β”‚   β”‚   β”œβ”€β”€ importlib-metadata v8.7.1
β”‚   β”‚   β”‚   └── zipp v3.23.0
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”œβ”€β”€ opentelemetry-exporter-otlp-proto-grpc v1.39.1
β”‚   β”‚   β”œβ”€β”€ googleapis-common-protos v1.72.0 (*)
β”‚   β”‚   β”œβ”€β”€ grpcio v1.78.0 (*)
β”‚   β”‚   β”œβ”€β”€ opentelemetry-api v1.39.1 (*)
β”‚   β”‚   β”œβ”€β”€ opentelemetry-exporter-otlp-proto-common v1.39.1
β”‚   β”‚   β”‚   └── opentelemetry-proto v1.39.1
β”‚   β”‚   β”‚       └── protobuf v5.29.6
β”‚   β”‚   β”œβ”€β”€ opentelemetry-proto v1.39.1 (*)
β”‚   β”‚   β”œβ”€β”€ opentelemetry-sdk v1.39.1
β”‚   β”‚   β”‚   β”œβ”€β”€ opentelemetry-api v1.39.1 (*)
β”‚   β”‚   β”‚   β”œβ”€β”€ opentelemetry-semantic-conventions v0.60b1
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ opentelemetry-api v1.39.1 (*)
β”‚   β”‚   β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”œβ”€β”€ opentelemetry-sdk v1.39.1 (*)
β”‚   β”œβ”€β”€ orjson v3.11.7
β”‚   β”œβ”€β”€ overrides v7.7.0
β”‚   β”œβ”€β”€ posthog v5.4.0
β”‚   β”‚   β”œβ”€β”€ backoff v2.2.1
β”‚   β”‚   β”œβ”€β”€ distro v1.9.0
β”‚   β”‚   β”œβ”€β”€ python-dateutil v2.9.0.post0 (*)
β”‚   β”‚   β”œβ”€β”€ requests v2.32.5 (*)
β”‚   β”‚   └── six v1.17.0
β”‚   β”œβ”€β”€ pybase64 v1.4.3
β”‚   β”œβ”€β”€ pydantic v2.12.5 (*)
β”‚   β”œβ”€β”€ pypika v0.51.1
β”‚   β”œβ”€β”€ pyyaml v6.0.3
β”‚   β”œβ”€β”€ rich v14.3.3 (*)
β”‚   β”œβ”€β”€ tenacity v9.1.4
β”‚   β”œβ”€β”€ tokenizers v0.22.2 (*)
β”‚   β”œβ”€β”€ tqdm v4.67.3
β”‚   β”œβ”€β”€ typer v0.15.4 (*)
β”‚   β”œβ”€β”€ typing-extensions v4.15.0
β”‚   └── uvicorn[standard] v0.41.0 (*)
β”œβ”€β”€ sentence-transformers v5.2.3 (extra: embedding)
β”‚   β”œβ”€β”€ huggingface-hub v1.5.0 (*)
β”‚   β”œβ”€β”€ numpy v2.4.2
β”‚   β”œβ”€β”€ scikit-learn v1.8.0
β”‚   β”‚   β”œβ”€β”€ joblib v1.5.3
β”‚   β”‚   β”œβ”€β”€ numpy v2.4.2
β”‚   β”‚   β”œβ”€β”€ scipy v1.17.1
β”‚   β”‚   β”‚   └── numpy v2.4.2
β”‚   β”‚   └── threadpoolctl v3.6.0
β”‚   β”œβ”€β”€ scipy v1.17.1 (*)
β”‚   β”œβ”€β”€ torch v2.10.0
β”‚   β”‚   β”œβ”€β”€ cuda-bindings v12.9.4
β”‚   β”‚   β”‚   └── cuda-pathfinder v1.4.0
β”‚   β”‚   β”œβ”€β”€ filelock v3.12.4
β”‚   β”‚   β”œβ”€β”€ fsspec v2026.2.0
β”‚   β”‚   β”œβ”€β”€ jinja2 v3.1.6 (*)
β”‚   β”‚   β”œβ”€β”€ networkx v3.6.1
β”‚   β”‚   β”œβ”€β”€ nvidia-cublas-cu12 v12.8.4.1
β”‚   β”‚   β”œβ”€β”€ nvidia-cuda-cupti-cu12 v12.8.90
β”‚   β”‚   β”œβ”€β”€ nvidia-cuda-nvrtc-cu12 v12.8.93
β”‚   β”‚   β”œβ”€β”€ nvidia-cuda-runtime-cu12 v12.8.90
β”‚   β”‚   β”œβ”€β”€ nvidia-cudnn-cu12 v9.10.2.21
β”‚   β”‚   β”‚   └── nvidia-cublas-cu12 v12.8.4.1
β”‚   β”‚   β”œβ”€β”€ nvidia-cufft-cu12 v11.3.3.83
β”‚   β”‚   β”‚   └── nvidia-nvjitlink-cu12 v12.8.93
β”‚   β”‚   β”œβ”€β”€ nvidia-cufile-cu12 v1.13.1.3
β”‚   β”‚   β”œβ”€β”€ nvidia-curand-cu12 v10.3.9.90
β”‚   β”‚   β”œβ”€β”€ nvidia-cusolver-cu12 v11.7.3.90
β”‚   β”‚   β”‚   β”œβ”€β”€ nvidia-cublas-cu12 v12.8.4.1
β”‚   β”‚   β”‚   β”œβ”€β”€ nvidia-cusparse-cu12 v12.5.8.93
β”‚   β”‚   β”‚   β”‚   └── nvidia-nvjitlink-cu12 v12.8.93
β”‚   β”‚   β”‚   └── nvidia-nvjitlink-cu12 v12.8.93
β”‚   β”‚   β”œβ”€β”€ nvidia-cusparse-cu12 v12.5.8.93 (*)
β”‚   β”‚   β”œβ”€β”€ nvidia-cusparselt-cu12 v0.7.1
β”‚   β”‚   β”œβ”€β”€ nvidia-nccl-cu12 v2.27.5
β”‚   β”‚   β”œβ”€β”€ nvidia-nvjitlink-cu12 v12.8.93
β”‚   β”‚   β”œβ”€β”€ nvidia-nvshmem-cu12 v3.4.5
β”‚   β”‚   β”œβ”€β”€ nvidia-nvtx-cu12 v12.8.90
β”‚   β”‚   β”œβ”€β”€ sympy v1.14.0 (*)
β”‚   β”‚   β”œβ”€β”€ triton v3.6.0
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   β”œβ”€β”€ tqdm v4.67.3
β”‚   β”œβ”€β”€ transformers v5.2.0 (*)
β”‚   └── typing-extensions v4.15.0
β”œβ”€β”€ z3-solver v4.16.0.0 (extra: formal-verification)
β”œβ”€β”€ pillow v11.3.0 (extra: fpf)
β”œβ”€β”€ google-api-python-client v2.190.0 (extra: google-workspace) (*)
β”œβ”€β”€ google-auth v2.48.0 (extra: google-workspace) (*)
β”œβ”€β”€ google-auth-httplib2 v0.3.0 (extra: google-workspace) (*)
β”œβ”€β”€ google-auth-oauthlib v1.3.0 (extra: google-workspace) (*)
β”œβ”€β”€ certifi v2026.2.25 (extra: language-models)
β”œβ”€β”€ typing-extensions v4.15.0 (extra: language-models)
β”œβ”€β”€ urllib3 v2.6.3 (extra: language-models)
β”œβ”€β”€ anthropic v0.84.0 (extra: llm-providers) (*)
β”œβ”€β”€ google-genai v1.65.0 (extra: llm-providers) (*)
β”œβ”€β”€ openai v2.24.0 (extra: llm-providers) (*)
β”œβ”€β”€ tiktoken v0.12.0 (extra: llm-providers) (*)
β”œβ”€β”€ moderngl v5.12.0 (extra: modeling-3d)
β”‚   └── glcontext v3.0.0
β”œβ”€β”€ pillow v11.3.0 (extra: modeling-3d)
β”œβ”€β”€ pygame v2.6.1 (extra: modeling-3d)
β”œβ”€β”€ pyopengl v3.1.10 (extra: modeling-3d)
β”œβ”€β”€ pyrr v0.10.3 (extra: modeling-3d)
β”‚   β”œβ”€β”€ multipledispatch v1.0.0
β”‚   └── numpy v2.4.2
β”œβ”€β”€ trimesh v4.11.2 (extra: modeling-3d)
β”‚   └── numpy v2.4.2
β”œβ”€β”€ opentelemetry-api v1.39.1 (extra: observability) (*)
β”œβ”€β”€ opentelemetry-exporter-otlp v1.39.1 (extra: observability)
β”‚   β”œβ”€β”€ opentelemetry-exporter-otlp-proto-grpc v1.39.1 (*)
β”‚   └── opentelemetry-exporter-otlp-proto-http v1.39.1
β”‚       β”œβ”€β”€ googleapis-common-protos v1.72.0 (*)
β”‚       β”œβ”€β”€ opentelemetry-api v1.39.1 (*)
β”‚       β”œβ”€β”€ opentelemetry-exporter-otlp-proto-common v1.39.1 (*)
β”‚       β”œβ”€β”€ opentelemetry-proto v1.39.1 (*)
β”‚       β”œβ”€β”€ opentelemetry-sdk v1.39.1 (*)
β”‚       β”œβ”€β”€ requests v2.32.5 (*)
β”‚       └── typing-extensions v4.15.0
β”œβ”€β”€ opentelemetry-sdk v1.39.1 (extra: observability) (*)
β”œβ”€β”€ prometheus-client v0.24.1 (extra: observability)
β”œβ”€β”€ statsd v4.0.1 (extra: observability)
β”œβ”€β”€ python-frontmatter v1.1.0 (extra: obsidian)
β”‚   └── pyyaml v6.0.3
β”œβ”€β”€ pyyaml v6.0.3 (extra: obsidian)
β”œβ”€β”€ tree-sitter v0.25.2 (extra: parsing)
β”œβ”€β”€ psutil v6.0.0 (extra: performance)
β”œβ”€β”€ alembic v1.18.4 (extra: physical-management)
β”‚   β”œβ”€β”€ mako v1.3.10 (*)
β”‚   β”œβ”€β”€ sqlalchemy v2.0.47
β”‚   β”‚   β”œβ”€β”€ greenlet v3.3.2
β”‚   β”‚   └── typing-extensions v4.15.0
β”‚   └── typing-extensions v4.15.0
β”œβ”€β”€ dynaconf v3.2.12 (extra: physical-management)
β”œβ”€β”€ marshmallow v4.2.2 (extra: physical-management)
β”œβ”€β”€ mkdocs v1.6.1 (extra: physical-management)
β”‚   β”œβ”€β”€ click v8.1.8
β”‚   β”œβ”€β”€ ghp-import v2.1.0
β”‚   β”‚   └── python-dateutil v2.9.0.post0 (*)
β”‚   β”œβ”€β”€ jinja2 v3.1.6 (*)
β”‚   β”œβ”€β”€ markdown v3.10.2
β”‚   β”œβ”€β”€ markupsafe v3.0.3
β”‚   β”œβ”€β”€ mergedeep v1.3.4
β”‚   β”œβ”€β”€ mkdocs-get-deps v0.2.0
β”‚   β”‚   β”œβ”€β”€ mergedeep v1.3.4
β”‚   β”‚   β”œβ”€β”€ platformdirs v4.9.2
β”‚   β”‚   └── pyyaml v6.0.3
β”‚   β”œβ”€β”€ packaging v26.0
β”‚   β”œβ”€β”€ pathspec v1.0.4
β”‚   β”œβ”€β”€ pyyaml v6.0.3
β”‚   β”œβ”€β”€ pyyaml-env-tag v1.1
β”‚   β”‚   └── pyyaml v6.0.3
β”‚   └── watchdog v6.0.0
β”œβ”€β”€ mkdocs-material v9.7.3 (extra: physical-management)
β”‚   β”œβ”€β”€ babel v2.18.0
β”‚   β”œβ”€β”€ backrefs v6.2
β”‚   β”œβ”€β”€ colorama v0.4.6
β”‚   β”œβ”€β”€ jinja2 v3.1.6 (*)
β”‚   β”œβ”€β”€ markdown v3.10.2
β”‚   β”œβ”€β”€ mkdocs v1.6.1 (*)
β”‚   β”œβ”€β”€ mkdocs-material-extensions v1.3.1
β”‚   β”œβ”€β”€ paginate v0.5.7
β”‚   β”œβ”€β”€ pygments v2.19.2
β”‚   β”œβ”€β”€ pymdown-extensions v10.21
β”‚   β”‚   β”œβ”€β”€ markdown v3.10.2
β”‚   β”‚   └── pyyaml v6.0.3
β”‚   └── requests v2.32.5 (*)
β”œβ”€β”€ pyserial v3.5 (extra: physical-management)
β”œβ”€β”€ smbus2 v0.6.0 (extra: physical-management)
β”œβ”€β”€ sqlalchemy v2.0.47 (extra: physical-management) (*)
β”œβ”€β”€ websockets v16.0 (extra: physical-management)
β”œβ”€β”€ networkx v3.6.1 (extra: scientific)
β”œβ”€β”€ numpy v2.4.2 (extra: scientific)
β”œβ”€β”€ scipy v1.17.1 (extra: scientific) (*)
β”œβ”€β”€ firecrawl-py v4.18.0 (extra: scrape)
β”‚   β”œβ”€β”€ aiohttp v3.13.3 (*)
β”‚   β”œβ”€β”€ httpx v0.28.1 (*)
β”‚   β”œβ”€β”€ nest-asyncio v1.6.0
β”‚   β”œβ”€β”€ pydantic v2.12.5 (*)
β”‚   β”œβ”€β”€ python-dotenv v1.2.1
β”‚   β”œβ”€β”€ requests v2.32.5 (*)
β”‚   └── websockets v16.0
β”œβ”€β”€ cryptography v46.0.5 (extra: security-audit) (*)
β”œβ”€β”€ jinja2 v3.1.6 (extra: security-audit) (*)
β”œβ”€β”€ pyopenssl v25.3.0 (extra: security-audit)
β”‚   β”œβ”€β”€ cryptography v46.0.5 (*)
β”‚   └── typing-extensions v4.15.0
β”œβ”€β”€ safety v3.2.11 (extra: security-audit) (*)
β”œβ”€β”€ fastavro v1.12.1 (extra: serialization)
β”œβ”€β”€ msgpack v1.1.2 (extra: serialization)
β”œβ”€β”€ pandas v3.0.1 (extra: serialization) (*)
β”œβ”€β”€ protobuf v5.29.6 (extra: serialization)
β”œβ”€β”€ pyarrow v23.0.1 (extra: serialization)
β”œβ”€β”€ soul-agent v0.1.4 (extra: soul)
β”‚   └── requests v2.32.5 (*)
β”œβ”€β”€ pyrefly v0.54.0 (extra: static-analysis)
β”œβ”€β”€ moviepy v2.2.1 (extra: video)
β”‚   β”œβ”€β”€ decorator v5.2.1
β”‚   β”œβ”€β”€ imageio v2.37.2
β”‚   β”‚   β”œβ”€β”€ numpy v2.4.2
β”‚   β”‚   └── pillow v11.3.0
β”‚   β”œβ”€β”€ imageio-ffmpeg v0.6.0
β”‚   β”œβ”€β”€ numpy v2.4.2
β”‚   β”œβ”€β”€ pillow v11.3.0
β”‚   β”œβ”€β”€ proglog v0.1.12
β”‚   β”‚   └── tqdm v4.67.3
β”‚   └── python-dotenv v1.2.1
β”œβ”€β”€ opencv-python v4.13.0.92 (extra: video)
β”‚   └── numpy v2.4.2
β”œβ”€β”€ pillow v11.3.0 (extra: video)
β”œβ”€β”€ fakeredis v2.34.1 (group: dev)
β”‚   β”œβ”€β”€ redis v7.2.1
β”‚   └── sortedcontainers v2.4.0
β”œβ”€β”€ fire v0.7.1 (group: dev)
β”‚   └── termcolor v3.3.0
β”œβ”€β”€ hypothesis v6.151.9 (group: dev)
β”‚   └── sortedcontainers v2.4.0
β”œβ”€β”€ mutmut v3.5.0 (group: dev)
β”‚   β”œβ”€β”€ click v8.1.8
β”‚   β”œβ”€β”€ coverage v7.13.4
β”‚   β”œβ”€β”€ libcst v1.8.6
β”‚   β”‚   └── pyyaml v6.0.3
β”‚   β”œβ”€β”€ pytest v9.0.2
β”‚   β”‚   β”œβ”€β”€ iniconfig v2.3.0
β”‚   β”‚   β”œβ”€β”€ packaging v26.0
β”‚   β”‚   β”œβ”€β”€ pluggy v1.6.0
β”‚   β”‚   └── pygments v2.19.2
β”‚   β”œβ”€β”€ setproctitle v1.3.7
β”‚   └── textual v8.0.0
β”‚       β”œβ”€β”€ markdown-it-py[linkify] v4.0.0 (*)
β”‚       β”œβ”€β”€ mdit-py-plugins v0.5.0
β”‚       β”‚   └── markdown-it-py v4.0.0 (*)
β”‚       β”œβ”€β”€ platformdirs v4.9.2
β”‚       β”œβ”€β”€ pygments v2.19.2
β”‚       β”œβ”€β”€ rich v14.3.3 (*)
β”‚       └── typing-extensions v4.15.0
β”œβ”€β”€ pytest v9.0.2 (group: dev) (*)
β”œβ”€β”€ pytest-asyncio v1.3.0 (group: dev)
β”‚   β”œβ”€β”€ pytest v9.0.2 (*)
β”‚   └── typing-extensions v4.15.0
β”œβ”€β”€ pytest-benchmark v5.2.3 (group: dev)
β”‚   β”œβ”€β”€ py-cpuinfo v9.0.0
β”‚   └── pytest v9.0.2 (*)
β”œβ”€β”€ pytest-cov v7.0.0 (group: dev)
β”‚   β”œβ”€β”€ coverage[toml] v7.13.4
β”‚   β”œβ”€β”€ pluggy v1.6.0
β”‚   └── pytest v9.0.2 (*)
β”œβ”€β”€ pytest-timeout v2.4.0 (group: dev)
β”‚   └── pytest v9.0.2 (*)
β”œβ”€β”€ pyyaml v6.0.3 (group: dev)
β”œβ”€β”€ ruff v0.15.4 (group: dev)
└── ty v0.0.20 (group: dev)
(*) Package tree already displayed

Vulnerability Scan Results

No vulnerabilities found or scan failed

Safety Scan Results

Safety scan completed - check artifacts for full results

Static Security Analysis (Bandit)

Bandit Security Analysis Report

Generated on: Sat Mar 14 02:59:39 UTC 2026

Summary

Run started:2026-03-14 02:58:55.325591+00:00

Test results:
>> Issue: [B608:hardcoded_sql_expressions] Possible SQL injection vector through string-based query construction.
   Severity: Medium   Confidence: Medium
   CWE: CWE-89 (https://cwe.mitre.org/data/definitions/89.html)
   More Info: https://bandit.readthedocs.io/en/1.9.4/plugins/b608_hardcoded_sql_expressions.html
   Location: src/codomyrmex/agentic_memory/cognilayer_bridge.py:171:20
170	                rows = conn.execute(
171	                    f"SELECT * FROM memories WHERE {where_clauses} LIMIT ?",
172	                    [*search_terms, top_k],

--------------------------------------------------
>> Issue: [B404:blacklist] Consider possible security implications associated with the subprocess module.
   Severity: Low   Confidence: High
   CWE: CWE-78 (https://cwe.mitre.org/data/definitions/78.html)
   More Info: https://bandit.readthedocs.io/en/1.9.4/blacklists/blacklist_imports.html#b404-import-subprocess
   Location: src/codomyrmex/agentic_memory/obsidian/cli.py:14:0
13	import shutil
14	import subprocess

Key Metrics

Total lines of code: 556959

475 assert "Total Issues" in content
475 assert "Total Issues" in content
519 assert "Total Issues**: 0" in content
Total issues (by severity):
Total issues (by confidence):

License Compliance

License Compliance Report

Generated on: Sat Mar 14 02:57:25 UTC 2026

Dependencies and Their Licenses

License Summary

Recommendations

  1. Review all HIGH and MEDIUM severity vulnerabilities
  2. Update dependencies with known security issues
  3. Address any Bandit security warnings
  4. Ensure license compliance for all dependencies
  5. Review and rotate any exposed secrets

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant