Skip to content

roampal-ai/roampal-core

v0.5.3.1 Feature

This release adds 2 notable features for engineering teams evaluating rollout.

Published 1mo MCP Developer Tools
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

agent-memory ai-assistant ai-coding ai-coding-assistant ai-memory ai-tools
+14 more
chromadb claude-code coding-assistant developer-tools llm long-term-memory mcp mcp-server memory model-context-protocol opencode persistent-memory python semantic-search

Summary

AI summary

Fixed JSON extraction bugs in facts and summary paths for reasoning models on local sidecar setups.

Full changelog

Hotfix for v0.5.3 — facts and summary extraction broken on thinking models

Three bugs in the OpenCode plugin's JSON extraction logic. All three only manifested with reasoning/thinking models on local sidecar setups.

What was broken

Bug 1 — Facts extraction silently failing on every exchange (latent since v0.4.8). The facts extraction path used a greedy regex that swallowed trailing markdown code fences. Models that wrap JSON in ```json ... ``` blocks broke JSON.parse() with Unrecognized token '\``'. Errors were logged as non-fatal so it was silently invisible — no facts ever landed in memory for fence-wrapping models.

Bug 2 — Summary/scoring path nested-brace fragility (latent). The summary path used a non-greedy single-match regex which stops at the first }. On responses with nested memory_scores: {...} objects or strings containing }, it captured a fragment and JSON.parse() failed with Expected '}'. Latent until per-memory scoring started returning nested objects in real exchanges.

Bug 3 — max_tokens too low for verbose reasoning models. Scoring max_tokens=2000 was sometimes insufficient for verbose summaries — output got truncated mid-string with no closing brace anywhere for any regex to find.

Fix

  • New extractJson() helper in the plugin — tries whole-text parse → greedy match → non-greedy multi-match validation. Handles backtick fences, nested objects, embedded brace characters in one place.
  • Both lanes (scoring + facts) refactored onto the helper.
  • max_tokens bumped: scoring 2000 → 4000, facts 1000 → 2000.

Verified end-to-end

Manual testing with a thinking sidecar model on LM Studio confirmed multiple consecutive exchanges with SUCCESS + SUMMARY stored + FACTS extracted + per-memory scoring, zero JSON Parse errors.

Sidecar model recommendation

Prefer a non-thinking sidecar model. Reasoning-by-default models emit their chain-of-thought into a separate reasoning_content field while the structured answer goes in content. With longer summaries the model sometimes runs over its token budget mid-reason, leaving content truncated or empty. The hotfix gives thinking models more room to finish and the parser recovers from most partial outputs — but model-side truncation ultimately can't be fixed in the plugin. Pick a non-thinking model in roampal sidecar setup to eliminate this class of failure entirely.

Plus: CI test isolation cleanup

Bundled with this release: a separate test-only commit consolidating Linux + Python 3.10 isolation fixes — XDG_CONFIG_HOME env-var leakage in cli tests, and a skipif for one async dedup test that hangs only on Linux + Python 3.10 (unrelated asyncio quirk; production code unchanged).

Migration

None required. Just pip install --upgrade roampal==0.5.3.1 and restart any running OpenCode session so the plugin reloads.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track roampal-ai/roampal-core

Get notified when new releases ship.

Sign up free

About roampal-ai/roampal-core

Outcome-based persistent memory for AI coding tools. Memories that help get promoted, memories that mislead get demoted. Works with Claude Code and OpenCode via hooks + MCP.

All releases →

Beta — feedback welcome: [email protected]