meshai/work/pyproject.toml

71 lines
1.7 KiB
TOML
Raw Permalink Normal View History

[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "meshai"
version = "0.1.0"
description = "LLM-powered Meshtastic mesh network assistant"
readme = "README.md"
license = {text = "MIT"}
requires-python = ">=3.10"
authors = [
{name = "K7ZVX", email = "matt@echo6.co"}
]
keywords = ["meshtastic", "llm", "mesh", "lora", "chatbot"]
classifiers = [
"Development Status :: 3 - Alpha",
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: End Users/Desktop",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Communications",
]
dependencies = [
"meshtastic>=2.3.0",
feat(transport): MeshCoreTransport over pyMC companion TCP (Phase 2) (#4) * feat(transport): MeshCoreTransport over pyMC companion TCP (Phase 2) Implements MeshCoreTransport (MeshTransport impl) using the meshcore lib over TCP to a pyMC companion frame server, bridged behind the sync interface via a dedicated event-loop thread. Outbound channel/DM sends, inbound message normalization into MeshMessage(transport="meshcore"), contact/self lookups. Factory wires transport="meshcore"; supervisor is now transport-aware (Meshtastic watchdog guarded). Dormant unless configured; meshtastic path unchanged; full suite matches baseline. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(transport): sync loop-thread readiness before dispatch (MeshCore) Wait on a threading.Event set from inside the event loop (via call_soon) before dispatching the first coroutine in connect(), eliminating a startup race where run_coroutine_threadsafe could be rejected by an is_running() pre-check before run_forever() had begun spinning. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(transport): MeshCore broadcasts use configured channel index The channel arg carries Meshtastic-index semantics that don't map to MeshCore's channel table; broadcasts now always use the configured meshcore_channel_index (also fixes explicit channel=0 being treated as falsy). DM path unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Matt Johnson <mj@k7zvx.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 10:15:39 -06:00
"meshcore>=2.3.7",
"pyyaml>=6.0",
"aiosqlite>=0.19.0",
"openai>=1.0.0",
"anthropic>=0.18.0",
"google-genai>=1.0.0",
"httpx>=0.25.0",
"fastapi>=0.110.0",
"uvicorn[standard]>=0.27.0",
"aiomqtt>=2.0.0",
"nats-py>=2.0.0",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0.0",
"pytest-asyncio>=0.21.0",
"black>=23.0.0",
"ruff>=0.1.0",
]
[project.scripts]
meshai = "meshai.main:main"
[project.urls]
Homepage = "https://github.com/zvx-echo6/meshai"
Repository = "https://github.com/zvx-echo6/meshai"
[tool.setuptools.packages.find]
where = ["."]
include = ["meshai*"]
[tool.black]
line-length = 100
target-version = ["py310"]
[tool.ruff]
line-length = 100
target-version = "py310"
select = ["E", "F", "I", "N", "W", "UP"]