Store mixed measured/estimated/superseded aggregates as session-token evidence. Map kinds onto the evidence-basis vocabulary, keep unknown months unknown, and refuse to post the snapshot as booked spend or resource-control usage.
1.6 KiB
1.6 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 set-entitlement --provider anthropic --plan claude-max --period 2026-08 --unit plan --plan-label "Max 20x" --source vendor-plan
uv run finhub ledger plan-month --period 2026-08
uv run finhub ledger ingest-session-tokens tests/fixtures/session-tokens-2026-08.json
uv run finhub ledger session-tokens --period 2026-08
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