Run extraction under the Max OAuth subscription via `claude -p` instead of the per-token Anthropic API. The new src/second_brain/llm/claude_cli.py spawns the CLI in a hermetic tempdir so the host project's CLAUDE.md, hooks, MCP config, and settings don't leak into the prompt. Uses --json-schema with LLMExtraction.model_json_schema() so the CLI guarantees valid structured output — replaces the brittle markdown-fence stripping in the old engine. The Anthropic SDK is preserved as an optional "api" backend selectable via config. While in here, fix a handful of blockers that the smoke test surfaced: - scheduler filtered ANALYZED instead of TRANSCRIBED, so it never actually advanced any sources - process command read sources in a closed session, raising DetachedInstanceError before any work happened - config.prompts_dir walked one parent too many, resolving outside the project and forcing the fallback prompt for every domain - compiler called git rev-parse against a vault that was never git-init'd; now auto-inits with an empty seed commit and skips empty commits cleanly - datetime.utcnow() deprecated in 3.12+ — single utcnow() helper in models.py keeps naive UTC semantics so no DB migration is needed - sess.query(...).get() deprecated in SA 2.x → sess.get(...) - dead `import anthropic` removed from compiler Smoke test (article → process → accept → compile) succeeds end-to-end with ANTHROPIC_API_KEY unset. a-review run saved under reviews/. Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
35 lines
929 B
TOML
35 lines
929 B
TOML
[project]
|
|
name = "second-brain"
|
|
version = "0.1.0"
|
|
description = "Personal knowledge system: video/article extraction pipeline + LLM-maintained wiki"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"click>=8.1.0",
|
|
"fastapi>=0.115.0",
|
|
"jinja2>=3.1.0",
|
|
"openai-whisper",
|
|
"pydantic>=2.0.0",
|
|
"python-dotenv>=1.0.0",
|
|
"sqlalchemy>=2.0.0",
|
|
"tomli>=2.0.0",
|
|
"trafilatura>=1.9.0",
|
|
"uvicorn[standard]>=0.30.0",
|
|
"yt-dlp>=2024.1.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
# Only required when extractor.backend = "api" in settings.toml.
|
|
# The default "cli" backend shells out to the Claude Code CLI under your
|
|
# Max OAuth subscription and has no Python-side Anthropic dependency.
|
|
api = ["anthropic>=0.40.0"]
|
|
|
|
[project.scripts]
|
|
second-brain = "second_brain.main:cli"
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/second_brain"]
|