Major changes: - Config-driven adapters: all channels (Slack, Discord, Telegram, WebChat, Webhooks) controlled via config.json with enabled flags and token auto-detection, no CLI flags required - Runtime engine field: runtime.engine selects opencode/claude from config - Interactive install script: 8-phase setup wizard with AI runtime detection/installation, token setup, identity file personalization (personality presets), aetheel CLI command, background service (launchd/systemd) - Live runtime switching: /engine, /model, /provider commands hot-swap the AI runtime from chat without restart, changes persisted to config.json - Usage tracking: per-request cost extraction from Claude Code JSON output, cumulative stats via /usage command - Auto-failover: rate limit detection on both runtimes, automatic switch to other engine on quota errors with user notification - Chat commands work without / prefix (Slack intercepts / in channels), commands: engine, model, provider, config, usage, reload, cron, subagents, status, help - /config set for editing config.json from chat with dotted key notation - Security audit saved to docs/security-audit.md - Full command reference in docs/commands.md - Future changes doc with NanoClaw agent teams analysis - Logo added to README and WebChat UI - README fully rewritten with all features documented
33 lines
867 B
TOML
33 lines
867 B
TOML
[project]
|
|
name = "aetheel"
|
|
version = "0.1.0"
|
|
description = "A personal AI assistant that lives in Slack — with persistent memory, dual runtimes, and zero cloud dependencies."
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"apscheduler>=3.10.0,<4.0.0",
|
|
"fastembed>=0.7.4",
|
|
"python-dotenv>=1.2.1,<2.0.0",
|
|
"python-telegram-bot>=21.0",
|
|
"discord.py>=2.4.0",
|
|
"slack-bolt>=1.27.0,<2.0.0",
|
|
"slack-sdk>=3.40.0,<4.0.0",
|
|
"watchdog>=6.0.0",
|
|
"click>=8.1.0",
|
|
"aiohttp>=3.9.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
test = [
|
|
"pytest>=8.0",
|
|
"pytest-asyncio>=0.24",
|
|
"hypothesis>=6.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
aetheel = "cli:cli"
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["agent*", "adapters*", "memory*", "skills*", "scheduler*", "heartbeat*", "hooks*", "webhooks*"]
|
|
exclude = ["tests*", "archive*", "inspiration*"]
|