dfb6425395
Lyra now switches register based on what she's doing at the table instead of
being a wishy-washy companion mid-session.
Modes (lyra/modes.py):
- Talk (default companion) + Cash (live cash copilot); a mode = prompt card +
tool allow-list. Tool gating via tools.specs(allow=).
- Two-register Cash voice: act-first one-line logging when fed facts; full warm
companion voice for strategy / tilt / mental game.
- mode persisted per chat session (new sessions.mode column); auto-switch into
Cash when start_session fires; UI forces cloud backend in Cash (tools only
fire there).
Stack tracking + HUD:
- log_stack tool + poker_stack_log table; live net while sitting (stack - buy-in).
- poker.hud() bundle; /session HUD page (stack sparkline, hands, villains, notes,
stats) polling /session/data every 5s; Talk/Cash switcher + Session nav.
Endpoints: /session, /session/data, GET/POST /sessions/{id}/mode, /modes.
tests/test_modes.py (gating, mode roundtrip, stack/HUD); 36 tests green. v0.3.0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
47 lines
948 B
TOML
47 lines
948 B
TOML
[project]
|
|
name = "lyra"
|
|
version = "0.3.0"
|
|
description = "Persistent, autonomous AI assistant"
|
|
readme = "README.md"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"fastapi>=0.115",
|
|
"httpx>=0.28.1",
|
|
"numpy>=2.4.5",
|
|
"openai>=2.37.0",
|
|
"python-dotenv>=1.2.2",
|
|
"treys>=0.1.8",
|
|
"uvicorn[standard]>=0.34",
|
|
]
|
|
|
|
[project.scripts]
|
|
lyra = "lyra.__main__:main"
|
|
lyra-web = "lyra.web.server:serve"
|
|
lyra-import = "lyra.ingest:main"
|
|
lyra-summarize = "lyra.summary:main"
|
|
lyra-profile = "lyra.profile:main"
|
|
lyra-era = "lyra.era:main"
|
|
lyra-narrative = "lyra.narrative:main"
|
|
lyra-reflect = "lyra.self_state:main"
|
|
lyra-dream = "lyra.dream:main"
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"pytest>=8.0",
|
|
"ruff>=0.6",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["lyra"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|