Skip to content

Releases: alash3al/stash

v0.2.11

Choose a tag to compare

@alash3al alash3al released this 29 May 09:30
68beb3f

What's Changed

  • docs: Ollama local-first setup + pipeline stage count alignment by @rudi193-cmd in #9
  • fix(security): escape LIKE wildcards in namespace path resolution by @rudi193-cmd in #10

Full Changelog: v0.2.10...v0.2.11

v0.2.10

Choose a tag to compare

@alash3al alash3al released this 28 May 13:55
adf6f57

What's Changed

  • docs: post-install guide + fix MCP copy buttons (#6) by @rudi193-cmd in #8
  • fix: pattern stage silently drops all output due to && vs || in fallback logic by @ali-h-abbas in #7
  • docs(brain): align Consolidate docstring with the 8-stage pipeline by @truffle-dev in #1

New Contributors

Full Changelog: v0.2.9...v0.2.10

v0.2.9: Consolidation Quality & MCP Setup Docs

Choose a tag to compare

@alash3al alash3al released this 01 May 09:07

What Changed

Consolidation Quality Fixes

  • Removed ungrounded word validation — the old check rejected valid generalized facts. Generalization IS the point of consolidation; the system prompt already constrains the LLM, and downstream dedup/contradiction/decay catch real problems.
  • Improved reasoner prompt — now instructs the LLM to preserve specifics (proper nouns, library names, version numbers, file paths, quantities) instead of producing vague summaries.
  • Lowered dedup threshold from 0.95 → 0.85 — aligns with the similarity threshold used for clustering; the old 0.95 let near-identical facts through.
  • Boosted confidence for structured facts — facts with entity+property+value fields get a 30% confidence boost since structured extraction requires more LLM precision.

Documentation

  • Added MCP client setup section to README — SSE URL (http://localhost:8080/sse) plus example configs for Cursor, Claude Desktop, OpenCode, and Windsurf.

Results

  • Fact creation rate went from 1/24 to 5/5 in testing
  • Zero grounding rejections on valid facts
  • Specifics (numbers, names, thresholds) now preserved in fact content
  • Structured facts at confidence 0.53 vs old 0.33

v0.2.8: Explicit MCP Context Namespaces

Choose a tag to compare

@alash3al alash3al released this 29 Apr 23:10

Summary

  • Scopes MCP context tools to explicit namespaces instead of defaulting to /.
  • Tunes MCP prompts so context is optional short-lived working focus, while recall remains the primary durable-memory lookup path.
  • Updates runtime version metadata to 0.2.8.

Verification

  • go test ./...

v0.2.7: Fact Synthesis & Proactive Memory Prompts

Choose a tag to compare

@alash3al alash3al released this 29 Apr 15:15

What's New

Prompt & Consolidation Fixes

  • Reasoner: Changed → with strict anti-verbatim rules
    • First-person stripping (// removal)
    • Explicit bad/good JSON examples in prompt
    • Grounding validation now rejects substring copies and >80% word overlap with any source episode

MCP Prompt Enhancements

  • Server Description: Added Proactivity Clause + Tool Decision Tree for fast tool selection
  • remember: Added Trash Filter — session narration, unverified hunches, temporary states, and generic platitudes are now explicitly discouraged. Added gate.
  • consolidate: Clarified that and return EMPTY for unconsolidated namespaces — making clear why consolidation is non-optional.
  • create_goal: Added Quality Gate — one-off tasks finishing in a single conversation should not become goals.

Version

MCP server version: →

v0.2.6: Full Consolidation Result in MCP Tool

Choose a tag to compare

@alash3al alash3al released this 26 Apr 16:19

Feature

Added

  • Full consolidation result returned from the consolidate MCP tool
  • Previously: only 4 fields (namespace, facts_created, relationships_found, patterns_found)
  • Now: all 20 fields from ConsolidationResult

New Fields in Response

  • episodes_read - number of episodes processed
  • facts_deduplicated - duplicate facts skipped
  • causal_links_found - causal relationships extracted
  • contradictions_found / contradictions_auto_resolved
  • goals_annotated / goals_suggested_complete
  • failure_repeats_detected / failure_patterns_found
  • hypotheses_auto_confirmed / hypotheses_auto_rejected / hypotheses_updated
  • facts_decayed / facts_expired - confidence decay stats
  • llm_calls - number of LLM API calls made
  • duration - time taken (human-readable string)
  • errors - list of any errors encountered

Why

Agents using the consolidate tool can now see the full picture of what happened, including errors and all processing stages.

v0.2.5: Bullet-Proof Consolidation Error Handling

Choose a tag to compare

@alash3al alash3al released this 26 Apr 16:14

Bug Fix

Fixed

  • Consolidation now only advances checkpoints on success
    • Episodes, facts, patterns with failed extraction are NOT lost
    • If any error occurs during consolidation, the checkpoint is NOT advanced
    • Failed clusters are automatically retried on the next consolidation run
    • Commit: d4cf1e4

Technical Details

  • Modified consolidateEpisodesToFacts(): Only update LastEpisodeID if no errors
  • Modified consolidateFactsToRelationships(): Only update LastFactID if no errors
  • Modified consolidateToPatterns(): Added success flag to checkpoint update
  • Updated updatePatternCheckpoint(): Only advance LastPatternFactID/LastPatternRelID on success

Why This Matters

Before: If consolidation hit an error during extraction, the checkpoint still advanced. Next run would skip the failed episodes forever.

After: Checkpoint only advances when consolidation fully succeeds. Failed episodes are retried. Deduplication prevents duplicate facts from already-succeeded clusters.

Result: Consolidation is now fully idempotent and safe from data loss. Episodes/facts/patterns can never be silently dropped.

v0.2.4: Idempotent Namespace Creation

Choose a tag to compare

@alash3al alash3al released this 26 Apr 15:26

Feature

Added

  • Idempotent namespace creation: CreateNamespace now never fails on duplicate slugs
    • If namespace exists: updates name/description and returns id
    • If namespace new: creates it as normal
    • Commit: b782dd7

Technical Details

  • Added ON CONFLICT (slug) DO UPDATE clause to namespace INSERT
  • Updates name and description if namespace already exists
  • Also updates updated_at timestamp on update
  • Consistent with parent namespace auto-creation behavior

Benefit

  • Auto-initialization of /self and /self/* namespaces no longer fails on second run
  • Makes the initialization process fully idempotent
  • Enables safe re-runs of configuration/setup scripts

v0.2.3: Fix Database Type Conversion

Choose a tag to compare

@alash3al alash3al released this 26 Apr 15:25

Bug Fix

Fixed

  • Database type conversion error: Fixed 'unable to encode int into text' error when storing vector dimension
    • Settings table stores all values as TEXT columns
    • Dimension values now properly converted to string before INSERT
    • Dimension values properly parsed back from string when reading
    • Commit: 4893334

Technical Details

  • Added strconv import to internal/db/db.go
  • Use fmt.Sprintf("%d", expectedDim) to convert int to string for storage
  • Use strconv.Atoi(storedDimStr) to parse string back to int when validating

This patch ensures v0.2.2's dimension-based validation actually works in practice.

v0.2.2: Flexible Embedding Model Switching

Choose a tag to compare

@alash3al alash3al released this 26 Apr 15:23

Changes

Features

  • Dimension-based validation: Change from model-specific validation to dimension-based validation
  • Flexible embedding model switching: Users can now switch between different embedding models as long as they output the same dimension
    • Example: Switch from gemini-embedding-001 to text-embedding-3-small (both 1536D) without losing data
    • Example: Switch from any 1536D model to any other 1536D model
  • Model metadata for audit: Embedding model name is still stored in settings for monitoring/audit purposes, but doesn't constrain storage

Technical Details

  • Store vector_dimension in settings table (the actual storage constraint)
  • Store embedding_model separately for audit purposes (flexibility constraint)
  • Dimension validation via validateDimensionLock() function
  • Model metadata recording via storeEmbeddingModelMetadata() function
  • Improved error message: explains that users can switch models with the same dimension
  • Fully backward compatible: existing databases work seamlessly

Benefits

  • No vendor lock-in to specific embedding model provider
  • Easy optimization: switch models for better quality/cost without database recreation
  • Future-proof: new embedding models can be adopted without data loss
  • Dimension is the source of truth, not the model name