You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Features
LiteLLM gateway / ChatGPT subscription support (experimental) (#126). Tomo still runs on the Claude Agent SDK, but ~/.tomo/config.json can now include a litellm gateway block that points the SDK child process at a LiteLLM proxy via ANTHROPIC_BASE_URL / ANTHROPIC_API_KEY (also overridable with TOMO_LITELLM_BASE_URL / _API_KEY / _MODE), keeping sessions, memory, workspace, MCP tools, and LCM behavior intact while routing model calls through the proxy. The config UI offers a first-class chatgpt-subscription mode (including the tested chatgpt/gpt-5.5 path and proxy setup notes) alongside generic Anthropic-compatible proxies; /model and the config model pickers accept LiteLLM provider/model names, and /status shows the active gateway/mode. Model alias/label resolution moved out of the Agent class into src/models.ts, and buildSdkEnv (src/agent/sdk-options.ts) composes the gateway env cleanly with the existing DISABLE_AUTO_COMPACT logic. Two guardrails added during review: /model and the config picker reject/hide LiteLLM model names when no gateway is configured (instead of silently saving an override the real Anthropic endpoint can't serve), and routing is mode-aware — an anthropic-compatible proxy routes all models, while a chatgpt-subscription proxy routes only LiteLLM models and lets Claude-model sessions hit Anthropic directly (so an Opus request never lands on a chatgpt-only proxy). The current model is now surfaced in the system prompt.
Virtual pet growth & recovery overhaul (#124). New pets now start as an actual egg and hatch into baby after 1 day, with slower stage gates: child at 7 days, teen at 14, adult at 30, and elder at 180. Care quality — not just raw affection — now drives evolution: a new care_mistakes counter feeds an effective_affection value (each mistake subtracts 5) that evolution checks read instead of raw affection. When health reaches 0 the pet enters a recovery state where it can't play or evolve until health climbs back to 25, and feed-based affection farming is blocked (food above 90 hunger is ignored; feed affection is only granted below 50 hunger and never while recovering). Recovery state, effective affection, and care mistakes are surfaced through pet_status.
Bug fixes
Prevent thinking blocks from leaking to chat (#128). Tomo streamed SDK partial text deltas straight to Telegram/iMessage without tracking the active content-block type, so thinking-like content exposed through a text-shaped partial event could be delivered as public reply text. Adaptive-thinking display is now omitted for supported Claude Sonnet/Opus models, live streaming forwards only deltas from active text blocks, and final assistant aggregation accepts explicit type: "text" blocks only — with regression coverage for thinking-block leakage.