Skip to content

feat: LLM-free CLI dispatcher + runtime custom-art loader - #128

Open
kitrakrev wants to merge 1 commit into
ramarivera:mainfrom
kitrakrev:feat/llm-free-cli-dispatcher
Open

feat: LLM-free CLI dispatcher + runtime custom-art loader#128
kitrakrev wants to merge 1 commit into
ramarivera:mainfrom
kitrakrev:feat/llm-free-cli-dispatcher

Conversation

@kitrakrev

Copy link
Copy Markdown

Move every typed /buddy command off the LLM. cli/buddy.ts mirrors each config/state MCP tool (show, pet, stats, list, rename, personality, achievements, xp, upgrades, mood, memory, summon, save, dismiss, skin, frequency, style/position/rarity/width/margin/rainbow, statusline, theme, mute/unmute) with identical state writes, output, and achievements. The slash command now shells out to it; only proactive react/suggest stay on the model. buddy_save's advertised overwrite is honored (MCP tool throws).

Add server/custom-art.ts: an override layer that loads validated species JSON from /custom-art/ at runtime. It is keyed by name and never joins the RNG SPECIES pool, so existing buddies' deterministic rolls are untouched (adding to SPECIES re-rolls everyone — golden tests guard it). Ship fox as custom-art/fox.json for exactly this reason.

Verified: tsc clean, 246 tests pass, all commands exercised live.

Move every typed /buddy command off the LLM. cli/buddy.ts mirrors each
config/state MCP tool (show, pet, stats, list, rename, personality,
achievements, xp, upgrades, mood, memory, summon, save, dismiss, skin,
frequency, style/position/rarity/width/margin/rainbow, statusline, theme,
mute/unmute) with identical state writes, output, and achievements. The
slash command now shells out to it; only proactive react/suggest stay on
the model. buddy_save's advertised overwrite is honored (MCP tool throws).

Add server/custom-art.ts: an override layer that loads validated species
JSON from <state-dir>/custom-art/ at runtime. It is keyed by name and never
joins the RNG SPECIES pool, so existing buddies' deterministic rolls are
untouched (adding to SPECIES re-rolls everyone — golden tests guard it).
Ship fox as custom-art/fox.json for exactly this reason.

Verified: tsc clean, 246 tests pass, all commands exercised live.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: karthikrajaanandan <karthikraja2k1@gmail.com>
@kitrakrev
kitrakrev force-pushed the feat/llm-free-cli-dispatcher branch from ae0d1a4 to 9005d72 Compare July 16, 2026 15:33
@ramarivera

Copy link
Copy Markdown
Owner

Hey @kitrakrev — nice feature set (the LLM-free dispatcher + runtime custom-art loader are both wanted). The PR currently conflicts with main, which recently absorbed a big rename (claude-buddy → coding-buddy), native Pi / Oh My Pi extensions, and npm publishing — package.json, server/art.ts, server/engine.ts, and skills/buddy/SKILL.md all moved under you. A rebase onto current main is the one blocker; CI is already approved to run here, and once it's green this is high on the review list.

🤖 Created with the help of AI (Claude Fable 5).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants