Introduce a shared ConversationService (steward/bot/core.py) that owns the LLM call, history, knowledge-base search, and thread-memory keying behind a normalized ThreadKey, so both Telegram and Matrix drive the same pipeline. - Add steward/bot/matrix.py: a mautrix-python appservice bot that receives Synapse transactions and replies via the client-server API. - Refactor telegram.py handlers into thin wrappers over ConversationService. - Generalize ThreadMemoryStore/ThreadSummary to platform-scoped keys with legacy chat_id:thread_id migration. - Add a matrix config section (homeserver, tokens, room/user allowlists). - Rewrite main.py as async, starting Telegram and/or Matrix on one event loop. - Add mautrix>=0.21.0 dependency. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
59 lines
1.1 KiB
TOML
59 lines
1.1 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "steward"
|
|
version = "0.4.2"
|
|
description = "A long-running, AI-assisted personal operations platform"
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"python-telegram-bot>=21.0",
|
|
"openai>=1.30",
|
|
"httpx>=0.27",
|
|
"python-dotenv>=1.0",
|
|
"apscheduler>=3.10",
|
|
"pydantic>=2.7",
|
|
"pydantic-settings>=2.3",
|
|
"omegaconf>=2.3",
|
|
"mautrix>=0.21.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8.2",
|
|
"pytest-asyncio>=0.23",
|
|
"pytest-mock>=3.14",
|
|
"ruff>=0.4",
|
|
"mypy>=1.10",
|
|
"respx>=0.21",
|
|
"pre-commit>=3.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
steward = "steward.main:run"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["steward*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
steward = ["config_schema.yaml"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py312"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "UP"]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.12"
|
|
strict = true
|
|
ignore_missing_imports = true
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
testpaths = ["tests"]
|