fin-hub/.claude/rules/stack-and-commands.md
tegwick ce4f791a63 feat: book monthly AI-plan invoices as facts and commitments
Add ai-plan ingest that stores one current booked fact per
provider-account × plan × period. Subscriptions become recurring
commitments; usage top-ups do not. Session-level rows are rejected.
2026-08-15 19:09:14 +02:00

1.3 KiB

Stack

  • Language: Python 3.12+
  • Package manager: uv
  • Key deps: hub-core (generic hub primitives), pydantic, httpx

Dev Commands

# Install dependencies
uv sync

# Run tests
uv run pytest

# CLI — runway projection
uv run finhub runway --balance 12000 --monthly-burn 2100,2200,2000

# CLI — import cost CSVs
uv run finhub import-cloud tests/fixtures/cloud-costs.csv
uv run finhub import-anthropic tests/fixtures/anthropic-billing.csv
uv run finhub import-hosteurope tests/fixtures/hosteurope.csv
uv run finhub import-ai-plan tests/fixtures/ai-plans.csv

# CLI — ledger (SQLite at .fin-hub/ledger.db)
uv run finhub ledger set-balance 12000
uv run finhub ledger import cloud tests/fixtures/cloud-costs.csv
uv run finhub ledger import ai-plan tests/fixtures/ai-plans.csv
uv run finhub ledger commitments
uv run finhub ledger summary

# CLI — scheduled evaluation (cron/systemd friendly)
uv run finhub evaluate --emit

# CLI — dogfood evidence artefact
uv run finhub evidence --seed-fixtures

# HTTP read API
uv run finhub serve
# GET http://127.0.0.1:8080/runway/summary
# GET http://127.0.0.1:8080/runway/monthly-burn

# CLI — emit cross-hub signals (requires STATE_HUB_API)
uv run finhub runway --balance 12000 --monthly-burn 2100 --emit