Drew Cain
c6cdf147c2
fix(cli): fix build-context Rich formatter to use real nested ContextResult shape
...
_display_build_context was reading top-level item.get("title")/item.get("type")
on each results[i], but the real GraphContext.model_dump() shape wraps every item
as a ContextResult with primary_result + related_results nested inside. This
made every related note render as an empty tree node.
Fix:
- Rewrite _display_build_context to iterate context_items, build a primary-result
node from item["primary_result"], then add each item["related_results"] entry as
a child with relation_type/type/title rendered.
- Update _display_search_results to use the real SearchResponse key "current_page"
(not "page"), pass query from the CLI argument, add Score and Snippet columns
(score + matched_chunk/content truncated to 200 chars) as the issue requested.
- Update test fixtures in test_cli_tool_rich_output.py to match the real payload
shapes (nested ContextResult, current_page, score/matched_chunk fields, no
updated_at in recent-activity).
- Fix test_build_context_json_flag_overrides_tty assertion to navigate the nested
primary_result/related_results shape.
Co-Authored-By: Claude <noreply@anthropic.com >
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-06-11 01:23:47 -05:00
Drew Cain
cc49468d0c
feat(cli): add Rich human-readable output to bm tool commands
...
search-notes, read-note, build-context, and recent-activity now display
formatted Rich output (tables, panels, Markdown rendering) when stdout is
an interactive TTY. When piped or redirected the commands continue to emit
raw JSON exactly as before. A new --json flag is available on each command
to force JSON output even in a TTY.
Follows the bm status / bm project list precedent: Rich by default for
humans, JSON for machines.
Closes #678
Co-Authored-By: Claude <noreply@anthropic.com >
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-06-11 01:12:37 -05:00
Paul Hernandez
650f88a2c5
docs(cli): document personal-vs-team cloud sync semantics ( #947 )
...
Folds in the intent of #857 reconciled with the post-#920 push/pull reality. Closes #851 .
Co-authored-by: Drew Cain <groksrc@users.noreply.github.com >
Signed-off-by: phernandez <paul@basicmemory.com >
2026-06-10 14:50:28 -05:00
Paul Hernandez
8cbe1634b6
fix(cli): don't let bm cloud setup overwrite an existing rclone remote ( #923 )
...
Closes #922
Signed-off-by: phernandez <paul@basicmemory.com >
2026-06-10 01:02:43 -05:00
Paul Hernandez
de53e0ecc5
feat(cli): per-workspace rclone remotes for Team push/pull ( #920 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-08 17:39:37 -05:00
Paul Hernandez
9b53d7863f
feat(cli): add Team-safe cloud push/pull and gate sync to Personal workspaces ( #917 )
...
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.
2026-06-08 14:08:49 -05:00
Paul Hernandez
0ef03edde6
feat(cli): add --type to the write-note tool command ( #907 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 20:06:44 -05:00
Paul Hernandez
efe43a10ea
feat(cli): add --wait and --timeout to bm status ( #906 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 19:58:02 -05:00
Paul Hernandez
f7304bf553
feat(cli): improve workspace and cloud bisync command discoverability ( #905 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 18:18:17 -05:00
Paul Hernandez
816ee85fb9
fix(core): prevent asyncpg engine-dispose crash on Postgres backend ( #902 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 17:37:23 -05:00
Paul Hernandez
1667cdc000
test(ci): normalize setup overwrite assertion ( #898 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-06 23:20:06 -05:00
Adit Karode
476239d878
feat(cli): add delete-note tool command
2026-06-06 21:41:46 -05:00
Paul Hernandez
8887267256
fix(ci): improve auto bm note narrative ( #893 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-04 22:34:57 -05:00
phernandez
b386502020
fix(cli): show copyable workspace identifiers
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-04 20:20:56 -05:00
phernandez
16ba55d7b4
feat(cli): add auto bm github ci
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-06-04 20:14:59 -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
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
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
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
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
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
0b335476d6
fix(mcp): resolve projects by external_id, remove workspace from MCP tools ( #777 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-01 05:15:44 -05:00
Paul Hernandez
2fccc74a20
feat(cli): refuse db reset while basic-memory mcp processes run ( #776 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 15:48:19 -05:00
Paul Hernandez
c4956cac16
fix(cli): cleanup local DB state on set-cloud/set-local ( #775 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 11:50:14 -05:00
Paul Hernandez
128c2da40c
fix(cli): clear default_workspace on cloud logout ( #773 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-29 09:53:09 -05:00
Paul Hernandez
799dd6c629
fix(mcp): remove no-op pagination params from read_note and view_note ( #768 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-28 23:05:14 -05:00
Paul Hernandez
f3e46d7984
feat(mcp): discover projects across workspaces ( #757 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-18 14:04:57 -05:00
Paul Hernandez
1b39062ecd
refactor(core): rip telemetry wrappers, use logfire directly ( #754 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-17 13:58:19 -05:00
Drew Cain
e2e65575d6
fix(core): honor BASIC_MEMORY_CONFIG_DIR across remaining call sites ( #744 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-15 22:55:25 -05:00
phernandez
8f2b25f0e0
test(core): stabilize postgres fixtures
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-13 14:25:26 -05:00
Paul Hernandez
052545b661
chore(core): make ty the default typechecker ( #736 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-13 10:34:01 -05:00
Paul Hernandez
a872947e03
fix(cli): show cloud index freshness in project info ( #734 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-10 09:22:35 -05:00
Paul Hernandez
093c94fea5
fix(core): clean up delete vectors and cloud sync ( #733 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-09 21:23:45 -05:00
Paul Hernandez
7945c1e2f7
perf(core): speed up vector sync and tune fastembed defaults ( #731 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-09 00:20:12 -05:00
Paul Hernandez
8c81d3ce17
perf(core): reduce postgres vector sync work ( #723 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-07 19:00:19 -05:00
Drew Cain
b3403e96b3
fix: add workspace routing to cloud upload and API client ( #704 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
Co-authored-by: phernandez <paul@basicmachines.co >
2026-04-06 18:18:40 -05:00
jope-bm
86ad639890
fix(cli): show display_name instead of UUID for private projects in CLI ( #718 )
...
Signed-off-by: Joe P <joe@basicmemory.com >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-06 10:14:46 -06:00
Paul Hernandez
cff31c5797
feat(cli): support cloud project visibility on add ( #715 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-03 17:30:09 -05:00
Paul Hernandez
e6b98a15c7
fix(cli): propagate cloud workspace routing and incremental sync ( #712 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
2026-04-03 14:25:02 -05:00
Paul Hernandez
d1320f671e
fix: (cloud) CLI cloud commands now use API key when configured ( #698 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-26 22:56:45 -05:00
Paul Hernandez
4791e19685
feat: add Logfire phased instrumentation ( #692 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-24 20:39:42 -05:00
Drew Cain
7c96a0777d
fix(cli): handle brew outdated exit code 1 as outdated, not error
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
2026-03-10 23:13:54 -05:00
Drew Cain
db60942267
fix(core): invalidate config cache when file is modified by another process ( #662 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:05:55 -05:00
Drew Cain
7bfac158df
fix(cli): project list MCP column shows transport type instead of DB presence ( #661 )
...
Signed-off-by: Drew Cain <groksrc@gmail.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 23:05:48 -05:00
Paul Hernandez
a94a717b1b
feat(cli): add default-on auto-update system and bm update command ( #643 )
...
Signed-off-by: phernandez <paul@basicmachines.co >
Signed-off-by: Drew Cain <groksrc@users.noreply.github.com >
Co-authored-by: Drew Cain <groksrc@users.noreply.github.com >
2026-03-10 22:06:33 -05:00