mirror of
https://github.com/turnstonelabs/turnstone.git
synced 2026-08-12 23:12:23 -06:00
9be155b97a
* Quality overhaul: code tooling, CI/CD, architecture diagrams, UI redesign, and legacy cleanup - Add ruff (lint+format) and mypy (strict) with zero errors across 37 source files - Add GitHub Actions CI (lint, typecheck, test matrix 3.11/3.12/3.13) and PyPI publish workflow - Create 12 PlantUML architecture diagrams with PNG renders covering all subsystems - Refresh README and docs with badges, diagram links, and current descriptions - Refactor test_server_live.py with mock streaming helpers for deterministic CI testing - Update dependencies to current versions (openai>=2.24, httpx>=0.28, redis>=7.2) Console dashboard: - Move state indicators from top cards to fixed bottom status bar with cluster metrics - Replace flat 50-node list with hostname-prefix grouped nodes (expand/collapse, up to 1000) - Apply "Instrument Panel" visual redesign: IBM Plex Mono + Outfit fonts, warm amber accent, LED glow state indicators, deep charcoal surfaces, WCAG AA contrast compliance - Add render cache, stale indicator, active filter highlight, loading states Server web UI: - Apply matching Instrument Panel aesthetic for visual consistency with console - Fix branding (pcode → turnstone), extract inline styles to CSS classes - Rename pcode localStorage keys and history state to turnstone Legacy cleanup: - Remove persona-model-specific --persona flag and /persona slash command - Remove model_identity from chat_template_kwargs (vLLM-specific mechanism) - Refactor plan agent to use standard developer message instead of model_identity - Remove dead code (unused date/has_tools variables, noqa suppressions) * Fix CI typecheck: add mypy overrides for optional sympy/numpy imports The math sandbox optionally imports sympy and numpy at runtime (try/except ImportError). In CI these packages are not installed, so mypy raises import-not-found rather than import-untyped. Add mypy overrides to ignore missing imports for these optional dependencies. * Fix Copilot review findings: ARIA role, status bar cache, and pulse opacity - Change #node-table from role="tree" to role="list" and group elements from role="treeitem" to role="listitem" (proper ARIA semantics) - Include currentView and currentFilter.state in renderStatusBar cache key so active pill highlight updates when switching views - Align pulse animation to 0.35 opacity (already applied in CSS)
90 lines
2.4 KiB
TOML
90 lines
2.4 KiB
TOML
[build-system]
|
|
requires = ["hatchling>=1.29"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "turnstone"
|
|
version = "0.2.1"
|
|
description = "Multi-node AI orchestration platform with tool use, agent routing, and cluster simulation."
|
|
readme = "README.md"
|
|
license = "BUSL-1.1"
|
|
requires-python = ">=3.11"
|
|
authors = [{name = "Patrick Buckley", email = "buckleypm@gmail.com"}]
|
|
keywords = ["ai", "chat", "llm", "agent", "tools", "openai"]
|
|
classifiers = [
|
|
"Development Status :: 4 - Beta",
|
|
"Environment :: Console",
|
|
"Intended Audience :: Developers",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
]
|
|
dependencies = ["openai>=2.24", "httpx>=0.28"]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/turnstonelabs/turnstone"
|
|
Repository = "https://github.com/turnstonelabs/turnstone"
|
|
Issues = "https://github.com/turnstonelabs/turnstone/issues"
|
|
|
|
[project.optional-dependencies]
|
|
test = ["pytest>=9.0"]
|
|
dev = ["ruff>=0.9", "mypy>=1.14", "types-redis>=4.6"]
|
|
mq = ["redis>=7.2"]
|
|
console = ["redis>=7.2"]
|
|
sim = ["redis>=7.2"]
|
|
|
|
[project.scripts]
|
|
turnstone = "turnstone.cli:main"
|
|
turnstone-eval = "turnstone.eval:main"
|
|
turnstone-server = "turnstone.server:main"
|
|
turnstone-bridge = "turnstone.mq.bridge:main"
|
|
turnstone-console = "turnstone.console.server:main"
|
|
turnstone-sim = "turnstone.sim.cli:main"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
include = [
|
|
"turnstone/**/*.py",
|
|
"turnstone/tools/*.json",
|
|
"turnstone/ui/static/*.html",
|
|
"turnstone/ui/static/*.css",
|
|
"turnstone/ui/static/*.js",
|
|
"turnstone/console/static/*.html",
|
|
"turnstone/console/static/*.css",
|
|
"turnstone/console/static/*.js",
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
markers = ["live: requires a running LLM backend"]
|
|
|
|
[tool.ruff]
|
|
target-version = "py311"
|
|
line-length = 100
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "W", "I", "N", "UP", "B", "A", "SIM", "TCH"]
|
|
ignore = ["E501"]
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
|
|
[tool.mypy]
|
|
python_version = "3.11"
|
|
strict = true
|
|
warn_return_any = true
|
|
warn_unused_configs = true
|
|
disallow_untyped_defs = true
|
|
disallow_incomplete_defs = true
|
|
check_untyped_defs = true
|
|
no_implicit_optional = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = ["sympy", "sympy.*", "numpy", "numpy.*"]
|
|
ignore_missing_imports = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = "tests.*"
|
|
disallow_untyped_defs = false
|