Tags: alash3al/stash
Tags
fix: improve consolidation quality + add MCP client setup docs Remove ungrounded word validation that rejected valid generalized facts, tune reasoner prompt to preserve specifics over vagueness, lower dedup threshold from 0.95 to 0.85, boost confidence for structured facts, and add MCP client setup section to README with configs for Cursor, Claude Desktop, OpenCode, and Windsurf.
feat: enforce fact synthesis + proactive memory prompts Prompt & consolidation fixes: - Reasoner: extract→synthesize with anti-verbatim rules, bad/good examples, first-person stripping, and grounding validation for substring & >80% copies. MCP prompt enhancements: - Server: added Proactivity Clause + Tool Decision Tree. - remember: added Trash Filter (no session noise / unverified hunches / generic platitudes) + 'ASK BEFORE STORING' quality gate. - consolidate: clarified that query_facts/query_relationships return EMPTY for unconsolidated namespaces. - create_goal: added QUALITY GATE filtering one-off tasks that don't need persistence across sessions. Version bump: MCP server 0.2.0 → 0.2.7.
feat: return full consolidation result from MCP tool - Include all ConsolidationResult fields in the consolidate MCP tool response - Added: episodes_read, facts_deduplicated, causal_links_found, contradictions, goals_annotated, failure_patterns, hypotheses, decay stats, duration, errors - Previously only returned namespace, facts_created, relationships_found, patterns_found
fix: only advance consolidation checkpoints on success (bullet-proof … …solution) - Last Episode/Fact/Pattern IDs only advance when consolidation completes without errors - If any error occurs during a consolidation stage, checkpoint is not updated - Failed episodes/facts/patterns are retried on the next consolidation run - Deduplication prevents duplicate facts from already-succeeded clusters - Prevents losing episodes/facts/relationships on consolidation errors - Makes consolidation fully idempotent and safe from data loss Changes: - consolidateEpisodesToFacts: Only update LastEpisodeID if len(errs) == 0 - consolidateFactsToRelationships: Only update LastFactID if len(errs) == 0 - consolidateToPatterns: Pass success flag to updatePatternCheckpoint - updatePatternCheckpoint: Only advance on success = true
feat: make namespace creation idempotent (no error on duplicate) - Add ON CONFLICT (slug) DO UPDATE clause to final namespace creation - Allows calling CreateNamespace multiple times without error - Matches behavior of parent namespace auto-creation (already used ON CONFLICT) - If namespace exists: updates name/description and returns id - If namespace new: creates it as normal - Enables auto-initialization of /self namespaces without failures
fix: convert dimension to string for TEXT column storage - Settings table stores all values as TEXT - Convert expectedDim int to string with fmt.Sprintf() before INSERT - Parse stored dimension string back to int with strconv.Atoi() when reading - Add strconv import to db.go - Fixes: 'unable to encode 1536 into text format' error
feat: allow flexible embedding model switching with dimension validation - Change validation from model-specific to dimension-based - Users can now switch between different embedding models as long as they output the same dimension - Store vector_dimension in settings table (actual storage constraint) - Store embedding_model metadata separately for audit/monitoring purposes - Update error message to explain dimension compatibility and model flexibility - Existing databases work seamlessly (no migration needed) - Enables switching from gemini-embedding-001 to text-embedding-3-small (both 1536D) without data loss
PreviousNext