The guard banned any github.event.pull_request reference, but the
recheck job legitimately needs the numeric PR id. Allow exactly
.number and keep forbidding head checkout and attacker-controlled
string fields.
Signed-off-by: phernandez <paul@basicmachines.co>
Mirror the ProjectUpdateContext shape the basic-memory.yml capture flow
collects: the image prompt now receives a compact change-shape digest —
labels, linked issues with titles, commit subjects (the PR's narrative
arc), and a churn-ranked changed-files summary with totals — from a
single 'gh pr view --json' call passed as --pr-context-file (replacing
--pr-title/--pr-body-file). The digest is explicitly context, not
captions: the prompt forbids rendering paths, stats, issue numbers, or
commit subjects verbatim in the image.
Signed-off-by: phernandez <paul@basicmachines.co>
Two BM Bossbot fixes:
1. Unresolved review threads now block approval. The review prompt only
sees metadata+diff, so an approve verdict said nothing about
outstanding feedback — #932 merged with two open Codex P2 threads.
finalize now counts unresolved reviewThreads via GraphQL and fails
the status when any remain. A new recheck command, triggered by
pull_request_review / review_comment / review_thread events, flips
the status to failure when feedback arrives after approval and
restores a previously earned approval for the same head SHA once
every thread is resolved. Review and recheck jobs use separate
job-level concurrency groups so neither cancels the other.
2. PR images depict the PR's content, not the review outcome. The image
prompt previously used the BM Bossbot review summary (verdict/status)
as its only source material, so every image rendered an APPROVED
stamp. The prompt now sources the PR title and the author's own
description (managed bot blocks stripped) and explicitly bans
approval stamps, verdict wording, badges, checkmarks, and Bossbot
branding. Theme selection seeds on PR number+title for stability
across re-reviews.
Signed-off-by: phernandez <paul@basicmachines.co>
Disable the silently-on semantic embedding stack in default test fixtures and deselect on-demand benchmarks from CI int jobs. int SQLite 337s -> 110s, Postgres unit ~25min -> ~13min.
Signed-off-by: phernandez <paul@basicmemory.com>
Adds additive, git-style `bm cloud push`/`pull` that are safe on shared Team workspaces (never delete on the destination; conflicts abort by default with `--on-conflict {fail|keep-local|keep-cloud|keep-both}`), and gates the destructive `bm cloud sync`/`bisync` mirrors to Personal workspaces. Closes#858. Longer-term Team-safe reconciler tracked in #862; workspace-scoped mount info (Codex P1) tracked as a follow-up.
L2-normalizes FastEmbed output vectors at the provider boundary so SQLite vector scoring keeps its unit-vector contract for custom FastEmbed models such as multilingual MiniLM variants.
Zero vectors are preserved as-is to avoid division errors, and the provider tests cover both non-unit vectors and zero-vector behavior.
Verification:
- uv run pytest tests/repository/test_fastembed_provider.py -q
- uv run ruff check src/basic_memory/repository/fastembed_provider.py tests/repository/test_fastembed_provider.py
- uv run ruff format --check src/basic_memory/repository/fastembed_provider.py tests/repository/test_fastembed_provider.py
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: tk-pkm111 <133480534+tk-pkm111@users.noreply.github.com>
Signed-off-by: phernandez <paul@basicmachines.co>
Adds LiteLLM as a semantic embedding provider, including provider configuration, vector normalization, live-provider evaluation tooling, and documentation for OpenAI, Cohere, Azure Foundry, Azure OpenAI, and NVIDIA NIM-style cases.
Maintainer follow-up on this PR added provider hardening, asymmetric document/query embedding support, dimension-forwarding controls, SQLite/Postgres vector invalidation coverage, and the repeatable live LiteLLM harness.
Verification:
- Full base-repo Tests workflow passed for 3d4e092ceb: https://github.com/basicmachines-co/basic-memory/actions/runs/27072071785
- Live LiteLLM harness passed locally for OpenAI, Cohere, and Azure Foundry.
Co-authored-by: Aarish Alam <arishalam121@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: RheagalFire <arishalam121@gmail.com>
Signed-off-by: phernandez <paul@basicmachines.co>