Commit Graph
4 Commits
Author SHA1 Message Date
codingetandClaude ec6c4e8df0 add Dockerfile + deployment docs; make config dbPath optional
node:24-bookworm-slim image with git for the read-only vault endpoints,
non-root user with system-wide git safe.directory (mounted vaults are
usually owned by a host uid), /config + /data + /vaults mount
conventions baked in via BRAINDUMP_CONFIG/BRAINDUMP_DB, and an
/api/health healthcheck. README gains a Deployment section (mounts,
claude-sdk skill/auth requirements in-container, compose example,
reverse-proxy SSE buffering notes).

dbPath in the config file now defaults to ./braindump.sqlite instead of
being required — it was validated before the BRAINDUMP_DB env override
was applied, so the image's baked-in db path couldn't rescue a config
that omitted it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 02:44:06 +00:00
codingetandClaude 9d71692402 add vault-aware tools: list_vault_tags, check_wikilinks, search_notes
Shared read-only implementations in src/vault/noteTools.ts, exposed to
both backends: as an in-process SDK MCP server (mcp__vault__*, stripped
to plain names in SSE events) for claude-sdk, and as chat-completions
tool defs for openai-compat. Wikilink resolution follows Obsidian
semantics incl. path-links resolved relative to the linking file's
folder; tags come from frontmatter (list + array forms) and inline
#tags, excluding code fences. zod added as a direct dependency
(pinned to the SDK's transitively-resolved v4).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 02:14:31 +00:00
codingetandClaude a5f62512e8 initial implementation: brain-dump session server with dual LLM backends
Headless Koa v3 server exposing REST + SSE around the brain-dump skill:
- AgentBackend adapter seam with two implementations: Claude Agent SDK
  (skill loading, session resume via sdk_session_id) and a hand-rolled
  OpenAI-compatible tool-calling loop (vault-scoped file tools, SKILL.md
  injected into the system prompt, history persisted in SQLite)
- session CRUD + one-turn-at-a-time SSE streaming (text deltas, file_write
  events, turn_complete), per-session lock, abort on disconnect
- node:sqlite storage (sessions, messages, turn_events) with migrations
- vault allow-list + symlink-aware path-escape prevention (incl. dangling
  symlink defense), read-only git status/diff endpoints, configurable CORS
- deterministic mock chat-completions server (scripts/mock-openai.ts) for
  end-to-end testing without a real model

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 13:48:17 +00:00
codinget d579ac744e Initial commit 2026-07-17 17:07:33 +02:00