Releases: PatrickNoFilter/eling-python
Releases · PatrickNoFilter/eling-python
Release list
v0.2.3
Changelog
Highlights
- Verbose tool output — full tool args/results visible in TUI, toggleable via
verbose_tool_outputconfig - Auto-pytest — automatically runs pytest on touched test files after each tool round, injects failures for model to fix
- Auto-fix lint — Ruff auto-fixes safe issues, re-checks, reports remaining unfixable issues
@toolplugin decorator — auto-generates JSON schemas from Python type hints
Stability & Resilience
- Provider retry coverage — retries on connection errors, timeouts, and 5xx (not just 429)
- Graceful model failure — friendly error message instead of crash when provider is down
- Wall-clock timeout — configurable
max_turn_duration(default 300s) prevents runaway tool loops
Memory & Skills
- Memory pruning —
prune_old+prune_duplicateson startup, auto-wired in agent - Recency blend — 20% recency signal in memory relevance (7-day half-life)
- Skill body indexing — BM25 retrieval now includes body content (not just name+trigger)
- min_score diagnostic ring buffer — logs query/score stats every 25 queries for threshold tuning
MCP
- Stderr logging — MCP server stderr is now captured and logged as warnings
Test Suite
- 446 tests all passing (fixed stale test_no_subcommand assertion)
v0.2.2 — Smarter skills, better paste handling
🧠 Smarter skill self-learning
- Better prompt: Example-driven system prompt (live-elapsed-timer, system-health-check) — more relevent skills extracted
- Quality gate: Rejects skills with <50 char body or generic names (e.g. "fix", "debug", "help")
- Auto-forget: Unused skills (0 uses) pruned after 30 days — DB stays lean
- Temperature bump: 0.2 → 0.3 for slightly more creative skill detection
- Dead code removed: learn_skill hook handler (was never registered) — cleaner codebase
⌨️ Better input handling
- Multi-line paste fix:
multiline=Trueadded to PromptSession — pasted text no longer splits into separate inputs - Use
Esc+Enterto submit multi-line input
📦 Changes
5 files changed, 48 insertions(+), 84 deletions(-)
See the full diff
v0.2.1
v0.2.1 — Documentation update
- Updated README version badge, commands table, config table, features list, setup instructions, and project structure
- Added
themekey to docs/configuration.md
v0.2.0
What's New in v0.2.0
Theme System
- Theme-aware TUI with 10 color palettes (blue, pink, green, yellow, red, white, ocean, twilight, pastel, cobalt)
- Selectable via
eling setup → [2] Theme - All UI chrome (borders, panels, markdown, spinner, toolbar) respects the chosen theme
Improved Memory
- Content dedup via SHA-256 hash (avoids storing duplicate exchanges)
- New
count()method for fast entry count - Clean WAL/SHM file cleanup on close
MCP Client
- Environment variable support for MCP subprocesses via
envconfig key
Setup UX
- Pressing Ctrl+C in TUI now raises KeyboardInterrupt (was clearing buffer)
eling setupprints ✓ Done! after each completed section
Chores
- Bump version to 0.2.0
v0.1.6
What's Changed
- 🧠 Enhanced README — Added Dependencies table, expanded Credits section with project/contribution tables, updated project structure listing and version badge to 0.1.6
- 📚 New docs/ directory — 6 documentation files: index, architecture, configuration, plugins, memory, and MCP guide
- 🏷️ Updated repository description — "Personal auto-learning agent CLI — memory, skills, MCP tools, workspace manager, and terminal UI. Built on Hermes Agent patterns."
- 🔧 Dependency cleanup — pyproject.toml updated to reflect core vs optional dependencies
- 🎨 Credits maintained — CREDITS.md and CREDITS.library.md kept current
Install
pip install elingOr clone and run:
git clone https://github.com/PatrickNoFilter/eling-agent.git
cd eling-agent
pip install -e .
python agent.pyv0.1.5
What's Changed
- /new command — restart session with screen clear
- Workspace fixes — handle circular symlinks
- TUI threading fix — add missing import threading
- Banner timer polish — hide 0s on startup banner
- Compact mode clear — clear screen on non-TUI startup
v0.1.2
🎯 Eling Memory Library + MCP Servers
Brings the full eling ecosystem into the agent repo:
- 🧠 8-Layer Memory: Builtin, Blackbox (flight recorder), Facts/HRR, Code (AST), KB (FTS5), Notion, Continuum, Markdownify
- 🔌 4 MCP Servers:
as_brain,blackbox,continuum,markdownify - 📊 Blackbox: 11-metric context efficiency scoring, causal timelines
- 👥 Continuum: Multi-agent orchestration with git worktrees
- 📝 Markdownify: Convert PDF/DOCX/XLSX/PPTX/images/audio to Markdown
- ✅ 115 tests — all passing
Also in this release:
- Steel-blue color palette in TUI
- Version now reads dynamically from
.agent-versionorpyproject.toml - Consolidated to single folder:
/root/Eling/deleted, everything ineling-agent/ - Auto clear screen on startup
- Graceful summarization when tool rounds exhaust
v0.1.1
What's New
- Agent/Model display — model name shown with 🤖 icon in banner
- Session timer — ⏱ counter on every turn (banner, user input, assistant panel)
- Reasoning panels — model's chain-of-thought displayed in compact dim panels
- Conversation history — agent remembers past turns ("continue" now works)
- Auto ruff check — automatically lints modified .py files after tool calls
- Graceful summarization — when tool rounds exhaust, model summarizes findings
- Bumped max_tool_rounds from 6 → 15 for complex research tasks
- Default max_tokens bumped to 16384 for DeepSeek models
v0.1.0 — Eling Agent
Initial release of Eling Agent — a personal autonomous agent CLI.
Features
- 🧠 Local memory — BM25 + cosine similarity retrieval
- 📚 Skill library — auto-learns reusable patterns
- 🔧 MCP tools — connect any MCP server (Firecrawl, filesystem, etc.)
- 🎨 Rich TUI — banner, thinking spinner, plan panel, markdown
- 🧩 Plugin system — extend with Python plugins
- ⏱ Session persistence — tracks uptime, plan steps, timings
- ☁️ OpenCode Zen API — free, fast LLM inference
Install
git clone https://github.com/PatrickNoFilter/eling-agent.git
cd eling-agent
pip install -r requirements.txt
cp config.example.json config.json
# Edit config.json with your Zen API key
python3 agent.py