mirror of
https://github.com/codeflash-ai/codeflash-agent.git
synced 2026-05-04 18:25:19 +00:00
* feat(blackbox): add package with models, CLI, and HTMX dashboard * test(blackbox): add comprehensive test coverage for dashboard * feat(blackbox): cache session scanning via watcher invalidation * docs(blackbox): add README and use fastapi[standard] for dev server * refactor(blackbox): extract presentation logic into formatter classes * refactor(blackbox): extract classify_error helpers * feat(blackbox): wire analytics into session detail view Show token usage, tool breakdowns, and session stats in a collapsible panel when viewing a session. * feat(blackbox): add codeflash plugin detection Detect codeflash agent names, skills, and commands in transcripts. Surface language, optimization domain, and capability badges in the analytics panel. * refactor(blackbox): remove underscore prefixes from internal functions * chore: add ty python-version to root pyproject.toml * chore(blackbox): fix lint errors in test files * style(blackbox): apply ruff formatting to analytics * feat(blackbox): add Playwright E2E tests for dashboard Refactor app.py to expose create_app() factory accepting a projects_dir override, enabling tests to run against fixture data instead of the real ~/.claude/projects/ directory. Routes now read projects_dir from app.state instead of the module-level constant. Add 26 Playwright tests across 5 files covering dashboard loading, session list, session detail with filters and analytics, sidebar collapse/localStorage persistence, and SSE log streaming. All tests pass on chromium, firefox, and webkit (78 total). CI gets a new e2e-blackbox job with a browser matrix strategy running all three engines in parallel, conditional on blackbox path changes, with trace upload on failure. * fix(ci): sync only blackbox package in e2e job * fix(ci): exclude e2e tests from unit test job The test job doesn't install Playwright browsers, so e2e tests error when pytest collects them. Ignore tests/e2e/ directories in the test job — those are handled by the dedicated e2e-blackbox job.
95 lines
1.5 KiB
TOML
95 lines
1.5 KiB
TOML
[project]
|
|
name = "blackbox"
|
|
version = "0.1.0"
|
|
description = "Flight data recorder for AI coding agent sessions"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"attrs>=24.2.0",
|
|
"danom>=0.13.0",
|
|
"fastapi[standard]>=0.115.0",
|
|
"jinja2>=3.1.0",
|
|
"sse-starlette>=2.0.0",
|
|
"uvicorn>=0.30.0",
|
|
"watchdog>=4.0.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
blackbox = "blackbox.cli:main"
|
|
|
|
[build-system]
|
|
requires = ["uv_build>=0.7.2,<0.8"]
|
|
build-backend = "uv_build"
|
|
|
|
[tool.uv.sources]
|
|
danom = { git = "https://github.com/KRRT7/danom.git", branch = "feat/add-py-typed" }
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"pytest>=9.0.3",
|
|
"pytest-cov>=6.2.1",
|
|
"ruff>=0.15.12",
|
|
"interrogate>=1.7.0",
|
|
"pytest-asyncio>=1.3.0",
|
|
"ty>=0.0.33",
|
|
"pytest-playwright>=0.7.2",
|
|
]
|
|
typing = [
|
|
"mypy>=1.20.2",
|
|
]
|
|
|
|
[tool.ty.environment]
|
|
python-version = "3.12"
|
|
|
|
[tool.mypy]
|
|
strict = true
|
|
warn_return_any = true
|
|
warn_unused_configs = true
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
markers = [
|
|
"e2e: end-to-end browser tests (requires playwright)",
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
source = ["blackbox"]
|
|
branch = true
|
|
|
|
[tool.coverage.report]
|
|
show_missing = true
|
|
skip_empty = true
|
|
|
|
[tool.interrogate]
|
|
fail-under = 100
|
|
verbose = 2
|
|
|
|
[tool.ruff]
|
|
line-length = 120
|
|
|
|
[tool.ruff.lint]
|
|
select = ["ALL"]
|
|
ignore = [
|
|
"A",
|
|
"ANN",
|
|
"ARG",
|
|
"ASYNC240",
|
|
"COM812",
|
|
"D",
|
|
"E501",
|
|
"EM",
|
|
"FBT",
|
|
"ISC001",
|
|
"PLR2004",
|
|
"RET504",
|
|
"S",
|
|
"SIM300",
|
|
"TC003",
|
|
"TRY003",
|
|
]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"tests/**" = [
|
|
"PLC0415",
|
|
"SIM300",
|
|
"SLF001",
|
|
]
|