md-first memory extraction framework for AI agents. Markdown is the single source of truth; SQLite holds state and LanceDB provides the rebuildable vector + BM25 + scalar index. The codebase follows a single-direction DDD layering (entrypoints -> service -> memory -> infra, with component / core / config cross-cutting) enforced by import-linter. Engineering surface: - Coding conventions in .claude/rules/ (path-scoped) and workflows in .claude/skills/ (/commit, /new-branch, /pr). - GitHub Actions CI runs make lint + test + integration; pre-commit mirrors the gates locally (ruff, hygiene hooks, gitlint commit-msg). - Commit messages follow Conventional Commits, enforced by gitlint. - make lint also enforces datetime two-zone discipline and OpenAPI drift.
35 lines
926 B
Python
35 lines
926 B
Python
"""everos CLI root entry point.
|
|
|
|
Exposed as the ``everos`` console script in ``pyproject.toml``. Subcommand
|
|
groups live under :mod:`everos.entrypoints.cli.commands` and are registered
|
|
here.
|
|
|
|
CLI subcommands run **in-process** — they call into the service layer
|
|
directly rather than through the HTTP API. The HTTP API and CLI are two
|
|
sibling surfaces over the same service layer.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import typer
|
|
|
|
from .commands import cascade, init_cmd, server
|
|
|
|
app = typer.Typer(
|
|
name="everos",
|
|
help="everos — md-first memory extraction framework",
|
|
no_args_is_help=True,
|
|
add_completion=False,
|
|
)
|
|
|
|
app.add_typer(server.app, name="server")
|
|
app.add_typer(cascade.app, name="cascade")
|
|
|
|
# ``init`` is a top-level leaf command (not a Typer group) — match the
|
|
# idiomatic ``alembic init`` / ``django-admin startproject`` shape.
|
|
init_cmd.register(app)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app()
|