Skip to content

Commit 473f70c

Browse files
phernandezclaude
andauthored
chore: Cloud auth (#213)
Signed-off-by: phernandez <paul@basicmachines.co> Co-authored-by: Claude <noreply@anthropic.com>
1 parent 2c29dcc commit 473f70c

64 files changed

Lines changed: 1003 additions & 3609 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

justfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,4 +179,4 @@ beta version:
179179

180180
# List all available recipes
181181
default:
182-
@just --list
182+
@just --list

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ dependencies = [
3030
"alembic>=1.14.1",
3131
"pillow>=11.1.0",
3232
"pybars3>=0.9.7",
33-
"fastmcp>=2.3.4,<2.10.0",
33+
"fastmcp==2.10.2",
3434
"pyjwt>=2.10.1",
3535
"python-dotenv>=1.1.0",
3636
"pytest-aio>=1.9.0",
@@ -52,7 +52,7 @@ build-backend = "hatchling.build"
5252

5353
[tool.pytest.ini_options]
5454
pythonpath = ["src", "tests"]
55-
addopts = "--cov=basic_memory --cov-report term-missing -ra -q"
55+
addopts = "--cov=basic_memory --cov-report term-missing"
5656
testpaths = ["tests"]
5757
asyncio_mode = "strict"
5858
asyncio_default_fixture_loop_scope = "function"

src/basic_memory/alembic/env.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,19 @@
88

99
from alembic import context
1010

11+
from basic_memory.config import ConfigManager
12+
1113
# set config.env to "test" for pytest to prevent logging to file in utils.setup_logging()
1214
os.environ["BASIC_MEMORY_ENV"] = "test"
1315

1416
# Import after setting environment variable # noqa: E402
15-
from basic_memory.config import app_config # noqa: E402
1617
from basic_memory.models import Base # noqa: E402
1718

1819
# this is the Alembic Config object, which provides
1920
# access to the values within the .ini file in use.
2021
config = context.config
2122

23+
app_config = ConfigManager().config
2224
# Set the SQLAlchemy URL from our app config
2325
sqlalchemy_url = f"sqlite:///{app_config.database_path}"
2426
config.set_main_option("sqlalchemy.url", sqlalchemy_url)

src/basic_memory/api/app.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,18 @@
2020
search,
2121
prompt_router,
2222
)
23-
from basic_memory.config import app_config
23+
from basic_memory.config import ConfigManager
2424
from basic_memory.services.initialization import initialize_app, initialize_file_sync
2525

2626

2727
@asynccontextmanager
2828
async def lifespan(app: FastAPI): # pragma: no cover
2929
"""Lifecycle manager for the FastAPI app."""
30+
31+
app_config = ConfigManager().config
3032
# Initialize app and database
3133
logger.info("Starting Basic Memory API")
34+
print(f"fastapi {app_config.projects}")
3235
await initialize_app(app_config)
3336

3437
logger.info(f"Sync changes enabled: {app_config.sync_changes}")

src/basic_memory/api/routers/management_router.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from loguru import logger
77
from pydantic import BaseModel
88

9-
from basic_memory.config import app_config
9+
from basic_memory.config import ConfigManager
1010
from basic_memory.deps import SyncServiceDep, ProjectRepositoryDep
1111

1212
router = APIRouter(prefix="/management", tags=["management"])
@@ -41,6 +41,8 @@ async def start_watch_service(
4141
# Watch service is already running
4242
return WatchStatusResponse(running=True)
4343

44+
app_config = ConfigManager().config
45+
4446
# Create and start a new watch service
4547
logger.info("Starting watch service via management API")
4648

src/basic_memory/cli/app.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22

33
import typer
44

5-
from basic_memory.config import get_project_config
5+
from basic_memory.config import get_project_config, ConfigManager
66
from basic_memory.mcp.project_session import session
77

88

99
def version_callback(value: bool) -> None:
1010
"""Show version and exit."""
1111
if value: # pragma: no cover
1212
import basic_memory
13-
from basic_memory.config import config
1413

14+
config = get_project_config()
1515
typer.echo(f"Basic Memory version: {basic_memory.__version__}")
1616
typer.echo(f"Current project: {config.project}")
1717
typer.echo(f"Project path: {config.home}")
@@ -44,9 +44,9 @@ def app_callback(
4444

4545
# Run initialization for every command unless --version was specified
4646
if not version and ctx.invoked_subcommand is not None:
47-
from basic_memory.config import app_config
4847
from basic_memory.services.initialization import ensure_initialization
4948

49+
app_config = ConfigManager().config
5050
ensure_initialization(app_config)
5151

5252
# Initialize MCP session with the specified project or default

src/basic_memory/cli/commands/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
"""CLI commands for basic-memory."""
22

3-
from . import auth, status, sync, db, import_memory_json, mcp, import_claude_conversations
3+
from . import status, sync, db, import_memory_json, mcp, import_claude_conversations
44
from . import import_claude_projects, import_chatgpt, tool, project
55

66
__all__ = [
7-
"auth",
87
"status",
98
"sync",
109
"db",

src/basic_memory/cli/commands/auth.py

Lines changed: 0 additions & 136 deletions
This file was deleted.

src/basic_memory/cli/commands/db.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
"""Database management commands."""
22

33
import asyncio
4-
from pathlib import Path
54

65
import typer
76
from loguru import logger
87

98
from basic_memory import db
109
from basic_memory.cli.app import app
11-
from basic_memory.config import app_config, config_manager
10+
from basic_memory.config import ConfigManager, BasicMemoryConfig, save_basic_memory_config
1211

1312

1413
@app.command()
@@ -18,6 +17,8 @@ def reset(
1817
"""Reset database (drop all tables and recreate)."""
1918
if typer.confirm("This will delete all data in your db. Are you sure?"):
2019
logger.info("Resetting database...")
20+
config_manager = ConfigManager()
21+
app_config = config_manager.config
2122
# Get database path
2223
db_path = app_config.app_database_path
2324

@@ -27,9 +28,8 @@ def reset(
2728
logger.info(f"Database file deleted: {db_path}")
2829

2930
# Reset project configuration
30-
config_manager.config.projects = {"main": str(Path.home() / "basic-memory")}
31-
config_manager.config.default_project = "main"
32-
config_manager.save_config(config_manager.config)
31+
config = BasicMemoryConfig()
32+
save_basic_memory_config(config_manager.config_file, config)
3333
logger.info("Project configuration reset to default")
3434

3535
# Create a new empty database

src/basic_memory/cli/commands/import_chatgpt.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import typer
99
from basic_memory.cli.app import import_app
10-
from basic_memory.config import config
10+
from basic_memory.config import get_project_config
1111
from basic_memory.importers import ChatGPTImporter
1212
from basic_memory.markdown import EntityParser, MarkdownProcessor
1313
from loguru import logger
@@ -19,6 +19,7 @@
1919

2020
async def get_markdown_processor() -> MarkdownProcessor:
2121
"""Get MarkdownProcessor instance."""
22+
config = get_project_config()
2223
entity_parser = EntityParser(config.home)
2324
return MarkdownProcessor(entity_parser)
2425

@@ -49,7 +50,7 @@ def import_chatgpt(
4950

5051
# Get markdown processor
5152
markdown_processor = asyncio.run(get_markdown_processor())
52-
53+
config = get_project_config()
5354
# Process the file
5455
base_path = config.home / folder
5556
console.print(f"\nImporting chats from {conversations_json}...writing to {base_path}")

0 commit comments

Comments
 (0)