diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml deleted file mode 100644 index 6eb02b6ca..000000000 --- a/.github/workflows/dependency-review.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Dependency Review - -on: - pull_request: - paths: - - 'pyproject.toml' - - 'uv.lock' - -permissions: - contents: read - -jobs: - dependency-review: - name: Dependency Review - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Dependency Review Action - uses: actions/dependency-review-action@v4 - with: - fail-on-severity: high - allow-licenses: 'MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, PSF-2.0' - deny-licenses: 'GPL-2.0, GPL-3.0, AGPL-3.0' diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 5a4bffc19..a30c29e15 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -132,6 +132,10 @@ jobs: name: File Changes Analysis runs-on: ubuntu-latest if: github.event_name == 'pull_request' + permissions: + contents: read + issues: write + pull-requests: write steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index 8c87cf504..1bd911172 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -496,6 +496,10 @@ jobs: runs-on: ubuntu-latest needs: [dependency-scan, bandit-scan, license-scan] if: always() + permissions: + contents: read + issues: write + pull-requests: write steps: - name: Download all security artifacts uses: actions/download-artifact@v4 diff --git a/pyproject.toml b/pyproject.toml index 46dd7b51f..b9d37c06d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -84,6 +84,7 @@ dependencies = [ "email-validator>=2.3.0", "mlx-lm>=0.31.1", "wasmtime>=42.0.0", + "matplotlib>=3.10.8", ] [project.optional-dependencies] diff --git a/src/codomyrmex/agentic_memory/cognilayer_bridge.py b/src/codomyrmex/agentic_memory/cognilayer_bridge.py index f4d7a5ec1..75a933780 100644 --- a/src/codomyrmex/agentic_memory/cognilayer_bridge.py +++ b/src/codomyrmex/agentic_memory/cognilayer_bridge.py @@ -160,11 +160,17 @@ def recall_memory( except sqlite3.OperationalError: # Fallback to LIKE search search_terms = [f"%{word}%" for word in query.split()] - where_clauses = " OR ".join(["content LIKE ?"] * len(search_terms)) - rows = conn.execute( - f"SELECT * FROM memories WHERE {where_clauses} LIMIT ?", - [*search_terms, top_k], - ).fetchall() + if not search_terms: + rows = conn.execute( + "SELECT * FROM memories LIMIT ?", + (top_k,), + ).fetchall() + else: + where_clauses = " OR ".join(["content LIKE ?"] * len(search_terms)) + rows = conn.execute( + f"SELECT * FROM memories WHERE {where_clauses} LIMIT ?", + [*search_terms, top_k], + ).fetchall() results = [] for row in rows: diff --git a/uv.lock b/uv.lock index 5dee74d80..80579a2a2 100644 --- a/uv.lock +++ b/uv.lock @@ -787,6 +787,7 @@ dependencies = [ { name = "loguru" }, { name = "mako" }, { name = "markdownify" }, + { name = "matplotlib" }, { name = "mlx-lm" }, { name = "psutil" }, { name = "pydantic" }, @@ -1044,6 +1045,7 @@ requires-dist = [ { name = "mako", specifier = ">=1.2.0" }, { name = "markdownify", specifier = ">=1.2.2" }, { name = "marshmallow", marker = "extra == 'physical-management'", specifier = ">=3.0.0" }, + { name = "matplotlib", specifier = ">=3.10.8" }, { name = "matplotlib", marker = "extra == 'data-visualization'", specifier = ">=3.10.0" }, { name = "mkdocs", marker = "extra == 'physical-management'", specifier = ">=1.2.0" }, { name = "mkdocs-material", marker = "extra == 'physical-management'", specifier = ">=7.3.0" },