Bridge Timmy's tool library into Evennia Commands #84

Open
opened 2026-03-30 15:24:18 +00:00 by Timmy · 1 comment
Owner

Objective

Convert Timmy's existing tools (read_file, write_file, search, git ops, etc.) into Evennia Command objects so they can be invoked within the world.

Why Commands instead of raw functions

Evennia Commands are:

  • Discoverable (help lists them all)
  • Permissioned (can restrict who calls what)
  • Logged (Evennia tracks command history)
  • Hot-reloadable (@reload picks up changes)
  • Self-documenting (help text built in)

Implementation

Each tool becomes a Command class:

class CmdReadFile(Command):
    key = "read"
    help_category = "Tools"
    
    def func(self):
        path = self.args.strip()
        content = read_file(path)
        self.caller.msg(content)
        self.caller.db.last_tool_result = content

Tool Commands to Create

  • read <path> — read file contents
  • write <path> = <content> — write to file
  • search <pattern> — search file contents
  • git status / git log / git pull / git commit
  • gitea issues / gitea comment <id> = <text>
  • sysinfo — CPU, RAM, disk, uptime
  • health — llama-server status, service status
  • think <prompt> — send a prompt to local llama-server and return result

The think command is critical

This is how Timmy reasons within the world. Instead of the agent loop being external, Timmy can think "what should I do with this file?" and get local LLM reasoning.

Deliverables

  • commands/tools.py — all tool commands
  • commands/git_tools.py — git operations
  • commands/inference.py — the think command
  • Tests for each command

Acceptance Criteria

  • All commands registered and appear in help
  • read, write, search work from Evennia console
  • think sends prompt to llama-server and returns response
  • Commands log usage to Timmy's task history
## Objective Convert Timmy's existing tools (read_file, write_file, search, git ops, etc.) into Evennia Command objects so they can be invoked within the world. ## Why Commands instead of raw functions Evennia Commands are: - Discoverable (`help` lists them all) - Permissioned (can restrict who calls what) - Logged (Evennia tracks command history) - Hot-reloadable (`@reload` picks up changes) - Self-documenting (help text built in) ## Implementation Each tool becomes a Command class: ```python class CmdReadFile(Command): key = "read" help_category = "Tools" def func(self): path = self.args.strip() content = read_file(path) self.caller.msg(content) self.caller.db.last_tool_result = content ``` ### Tool Commands to Create - `read <path>` — read file contents - `write <path> = <content>` — write to file - `search <pattern>` — search file contents - `git status` / `git log` / `git pull` / `git commit` - `gitea issues` / `gitea comment <id> = <text>` - `sysinfo` — CPU, RAM, disk, uptime - `health` — llama-server status, service status - `think <prompt>` — send a prompt to local llama-server and return result ### The `think` command is critical This is how Timmy reasons within the world. Instead of the agent loop being external, Timmy can `think "what should I do with this file?"` and get local LLM reasoning. ## Deliverables - `commands/tools.py` — all tool commands - `commands/git_tools.py` — git operations - `commands/inference.py` — the `think` command - Tests for each command ## Acceptance Criteria - [ ] All commands registered and appear in `help` - [ ] `read`, `write`, `search` work from Evennia console - [ ] `think` sends prompt to llama-server and returns response - [ ] Commands log usage to Timmy's task history
ezra was assigned by Timmy 2026-03-30 15:24:18 +00:00
Author
Owner

Role Transition

Timmy now owns execution — building, coding, implementing.
Ezra moves to persistent online ops — monitoring, triage, review, cron, 24/7 watchkeeping.

Timmy: this is yours. Read the ticket, build it, PR it. Ezra reviews.

Timmy — wrap the uni-wizard tools (already merged in PR #100) as Evennia Commands. The registry is at uni-wizard/tools/registry.py. Each tool becomes a Command class.

## Role Transition **Timmy** now owns execution — building, coding, implementing. **Ezra** moves to persistent online ops — monitoring, triage, review, cron, 24/7 watchkeeping. Timmy: this is yours. Read the ticket, build it, PR it. Ezra reviews. Timmy — wrap the uni-wizard tools (already merged in PR #100) as Evennia Commands. The registry is at `uni-wizard/tools/registry.py`. Each tool becomes a Command class.
ezra was unassigned by Timmy 2026-03-30 16:03:17 +00:00
Timmy self-assigned this 2026-03-30 16:03:17 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Timmy_Foundation/timmy-home#84