Commit Graph

1356 Commits

Author SHA1 Message Date
phernandez c717d9997e chore: implement path scoping in adversarial-review (was broken-as-advertised)
Addresses follow-up PR review: the Inputs section advertised a path-scope
arg, but BASE=${ARG:-main} treated it only as a ref, so passing a path
produced `git diff <path>...HEAD` → fatal: ambiguous argument.

Root-causes both review findings (this one and the prior $BASE issue): the
diff command was spelled inline in many places and drifted. Now BASE (ref)
and SCOPE (pathspec) are separate inputs, combined once into a canonical
$DIFF command in preflight and reused everywhere — single source of truth.

Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-30 14:14:35 -05:00
phernandez f865d39d3d chore: make adversarial-review prompts base-agnostic
Addresses PR review: the prompt bodies hardcoded `git diff main...HEAD`,
which contradicted the orchestrator's parameterized `git diff $BASE...HEAD`
when run against a non-main base. The prompts now defer to the exact diff
command the orchestrator appends, and Phase 2 passes that command alongside
the findings so the refuter judges against the correct base.

Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-30 14:14:35 -05:00
phernandez 6a667dd3f8 chore: add cross-vendor adversarial-review skill
Adds an agent skill that runs adversarial code review across two model
families (Claude + Codex/GPT). Whichever runtime invokes it reviews the
branch diff natively and shells out to the other vendor for an independent
pass; each model then tries to refute the other's findings, and survivors
are reported by cross-model confidence. Report-only — never auto-applies
fixes.

- Canonical skill in .agents/skills/, symlinked from .claude/skills/
  (matches the existing instrumentation skill layout); discoverable by
  both Claude Code and Codex.
- Symmetric orchestration: run from Claude -> calls codex exec; run from
  Codex -> calls claude -p. The skill auto-detects which side it is on.
- Deterministic gate layer (ruff + grep) for negation-style house rules,
  since models underweight "never do X" constraints.
- Structured findings/verdicts via JSON schemas (codex --output-schema).

Deliberately omits the loop-until-converged state machine and auto-fix
behavior found in similar tools — convergence between models is not
correctness, so it surfaces a ranked list for a human gate instead.

Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-30 14:14:35 -05:00
phernandez 8d21a38588 fix(cli): handle non-subscription errors in cloud login
`bm cloud login` only caught SubscriptionRequiredError after the
post-login `/proxy/health` subscription check. OAuth succeeds and tokens
are saved, but if that check returns anything else — a 5xx while the
tenant instance is still provisioning, a 403/401 whose body doesn't match
the subscription_required shape, or a transport error — make_api_request
raises a generic CloudAPIError that escaped uncaught, dumping a raw
httpx.raise_for_status traceback. Users read this as "login failed" even
though authentication actually worked.

Add a CloudAPIError handler that prints a clean, actionable message and
exits non-zero. make_api_request wraps every httpx error (status and
transport) in CloudAPIError, so the single handler covers them all.

Fixes #863.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-30 14:13:32 -05:00
Paul Hernandez 597b12fcd1 Update README.md
update all pricing

Signed-off-by: Paul Hernandez <60959+phernandez@users.noreply.github.com>
2026-05-29 08:19:52 -05:00
Paul Hernandez c86f4402f6 Update README.md
add teams info. update pricing

Signed-off-by: Paul Hernandez <60959+phernandez@users.noreply.github.com>
2026-05-29 08:18:01 -05:00
Drew Cain f07643d3a8 feat(cli): expose project sync support metadata
Signed-off-by: Drew Cain <groksrc@gmail.com>
2026-05-28 15:00:05 -05:00
Drew Cain 8bf7bdbc0d fix(cli): limit team workspace guard to bisync
Signed-off-by: Drew Cain <groksrc@gmail.com>
2026-05-28 14:59:48 -05:00
Drew Cain d0ae373f45 docs(cli): clarify team mirror sync guard
Signed-off-by: Drew Cain <groksrc@gmail.com>
2026-05-28 14:59:48 -05:00
Drew Cain 1acec0a69d test(cli): cover workspace sync guard branches
Signed-off-by: Drew Cain <groksrc@gmail.com>
2026-05-28 14:59:48 -05:00
Drew Cain a2276a8a04 fix(cli): block team workspace rclone sync
Signed-off-by: Drew Cain <groksrc@gmail.com>
2026-05-28 14:59:48 -05:00
Drew Cain ff5d872a8c chore: update version to 0.21.5 for v0.21.5 release v0.21.5 2026-05-26 10:58:09 -05:00
Drew Cain 96ee4eafd2 docs: add v0.21.5 changelog entry
Signed-off-by: Drew Cain <groksrc@gmail.com>
2026-05-26 10:57:55 -05:00
Drew Cain b109b7337f fix(mcp): attach local state to one workspace project row (#854)
Signed-off-by: Drew Cain <groksrc@gmail.com>
2026-05-26 10:54:44 -05:00
Drew Cain 36b51b676e fix(mcp): return workspace-qualified write permalinks (#853)
Signed-off-by: Drew Cain <groksrc@gmail.com>
2026-05-26 00:33:21 -05:00
Drew Cain 9af320187c fix(core): load sqlite-vec before vector table cleanup (#852)
Signed-off-by: Drew Cain <groksrc@gmail.com>
2026-05-26 00:27:47 -05:00
Paul Hernandez 5a34a420c9 fix(mcp): preinitialize local ASGI database (#838)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-25 15:57:00 -05:00
Drew Cain a7e2368f9e chore: update version to 0.21.4 for v0.21.4 release v0.21.4 2026-05-23 14:55:49 -05:00
Sean Campbell c755127317 fix(cli): ignore CancelledError in background task done callback (#839) (#842)
Signed-off-by: rudi193-cmd <rudi193@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-23 14:27:59 -05:00
Sean Campbell 94c04ee456 fix(mcp): restore write_note overwrite schema for external clients (#818) (#841)
Signed-off-by: rudi193-cmd <rudi193@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-23 14:19:43 -05:00
Drew Cain d4ed02ba74 docs(core): move release process from CONTRIBUTING.md to AGENTS.md (#846)
Signed-off-by: Drew Cain <groksrc@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 14:00:01 -05:00
Drew Cain 40ed7129c8 chore: update version to 0.21.3 for v0.21.3 release v0.21.3 2026-05-23 13:46:48 -05:00
Drew Cain c4ef7abff5 test(core): isolate XDG_CONFIG_HOME so host env can't leak into tests (#845)
Signed-off-by: Drew Cain <groksrc@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 13:34:41 -05:00
Paul Hernandez c75f45f3cf Update README.md
update cloud description to remove link to private cloud repo

Signed-off-by: Paul Hernandez <60959+phernandez@users.noreply.github.com>
2026-05-23 12:22:18 -05:00
Drew Cain 5ae8a733ea fix(mcp): route mixed local/cloud projects correctly (#837)
Signed-off-by: Drew Cain <groksrc@gmail.com>
v0.21.2
2026-05-23 11:31:13 -05:00
Rafael Madriz b94ef01f82 feat(core): add XDG_CONFIG_HOME support (#844)
Signed-off-by: Rafael Madriz <rafa@rafaelmadriz.com>
2026-05-22 15:18:06 -05:00
Sean Campbell 12af7930de docs(installer): use pgvector image for Postgres compose (#840)
Signed-off-by: rudi193-cmd <rudi193@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Drew Cain <groksrc@gmail.com>
2026-05-22 08:54:18 -05:00
phernandez 60ec6728de chore: update version to 0.21.1 for v0.21.1 release v0.21.1 2026-05-16 18:56:38 -05:00
phernandez a84e77f4af docs: add v0.21.1 changelog entry
CI-only point release to validate #833's inline Homebrew bump end-to-end
on a real tag push.

Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-16 18:56:30 -05:00
Paul Hernandez 6910620968 ci(installer): inline Homebrew formula bump (#833)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-16 18:55:25 -05:00
phernandez 214a54d740 chore: update version to 0.21.0 for v0.21.0 release v0.21.0 2026-05-16 17:15:53 -05:00
phernandez 5a90c7cedf docs: add v0.21.0 changelog entry
Promotes the Unreleased breaking-change note and adds the full v0.21.0
section covering ~80 commits since v0.20.3: workspace-routing fixes
across MCP/CLI/API, recent_activity ordering and search opt-in changes,
sync hardening, sqlite-vec graceful degrade, perf wins on CLI startup
and sync, and the project-delete cleanup landed in #832.

Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-16 17:15:43 -05:00
Paul Hernandez 9e3fe26a83 fix(core): purge SQLite search_index on project delete (#832)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-16 16:47:24 -05:00
Paul Hernandez 47ee982041 perf(cli): defer local ASGI app import (#828)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-15 17:59:58 -05:00
Paul Hernandez 4d22c398c6 fix(sync): preserve bmignore rclone filters (#827)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-15 17:48:49 -05:00
phernandez 8ac2d975f9 update README.md
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-15 17:13:34 -05:00
Paul Hernandez 34830bfad7 Update README.md
update agent matrix

Signed-off-by: Paul Hernandez <60959+phernandez@users.noreply.github.com>
2026-05-15 14:55:00 -05:00
Paul Hernandez f5e0c42047 Update README.md
remove sync commands from cli examples

Signed-off-by: Paul Hernandez <60959+phernandez@users.noreply.github.com>
2026-05-15 14:52:27 -05:00
phernandez 3f98da8c67 update README.md
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-15 14:50:35 -05:00
phernandez 14ff77d1c2 update to fastmcp 3.3.1
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-15 12:28:03 -05:00
phernandez 4e4da6128d ci: run github actions on node 24
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-15 12:14:06 -05:00
Paul Hernandez 3bed6d8890 chore(deps): update deps and harden security (#825)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-15 10:45:14 -05:00
Paul Hernandez 4cba7ba01c fix(core): parse prose wikilinks as inline links (#824)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-14 11:43:11 -05:00
Drew Cain 8eeec64e28 fix: basic-memory project list does not list projects from all workspaces (#822)
Signed-off-by: Drew Cain <groksrc@gmail.com>
2026-05-14 09:46:02 -05:00
Paul Hernandez c6fa185bf3 fix(mcp): route edit_note workspace-qualified permalinks (#813)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-11 12:56:26 -05:00
Paul Hernandez 415c2b3d6e feat(cli): add orphan entity command (#816)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-11 12:13:14 -05:00
Paul Hernandez 4aa0cbdd62 fix(sync): ignore hidden paths relative to watched project (#815)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-11 11:14:03 -05:00
Paul Hernandez 55f314237d fix(sync): avoid shell for scan subprocesses (#814)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-11 09:20:11 -05:00
Drew Cain 9862ef5411 fix(core): use updated_at for recent_activity filter and ordering (#812)
Signed-off-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Signed-off-by: Drew Cain <groksrc@gmail.com>
Signed-off-by: phernandez <paul@basicmachines.co>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: phernandez <paul@basicmachines.co>
2026-05-11 09:14:06 -05:00
Paul Hernandez df5e8d805f fix(mcp): centralize workspace permalink routing (#808)
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-08 16:44:57 -05:00