Skip to content

v0.2.12

Choose a tag to compare

@het0814 het0814 released this 29 Jul 18:02
· 206 commits to main since this release
2b2ae9a

Release Notes for v0.2.12

This release ships a very large batch of validation and correctness fixes across config management, CLI connect/skill install, MCP session isolation, and the LangGraph/Hermes/CrewAI integrations.

Improvements

  • Config validation hardening (memanto/cli/config/manager.py,
    memanto/app/ui/routes/ui_router.py, memanto/cli/schedule_time.py)

    • Server URLs are normalized and ports validated before being written to
      config; session/answer config edits are validated against their schema;
      config setters now guard against malformed config sections instead of
      crashing; schedule times are validated (format + range) before a
      scheduled job is enabled, both via the CLI and the UI (invalid times now
      return 400 instead of silently accepting garbage).
  • Moorcheh client cache invalidation (memanto/app/clients/moorcheh.py)

    • MoorchehClientSingleton now tracks the config it was built from
      (backend, URL, timeout / API key) and rebuilds the cached client when
      that config changes, instead of serving a stale client after a backend
      or API-key switch.
  • Avoid storage writes during service initialization (memanto/app/services/session_service.py,
    memanto/app/services/agent_service.py)

    • SessionService/AgentService no longer eagerly create directories or
      generate a secret key at construction time; both are now lazy
      (created/generated on first actual use), avoiding unnecessary filesystem
      writes (and directory creation) just from instantiating the service.
  • memanto connect / skill install correctness (memanto/cli/connect/engine.py,
    memanto/cli/connect/agent_registry.py)

    • Fixed false-positive shared-skill detection that could report a skill as
      installed for one agent when it was actually another agent's install.
    • connect --disconnect now preserves unmanaged rule files (including
      non-UTF-8 ones) instead of deleting content Memanto didn't add.
    • Hook-cleanup matching (used when disconnecting) tightened to avoid
      removing unrelated hook entries.
  • Agent list namespace counts hardened (memanto/cli/config/manager.py)

    • list agents now guards against malformed/missing item_count or
      namespace_name fields in the Moorcheh namespaces response instead of
      raising.
  • MCP integration: per-agent session isolation (integrations/mcp/memanto_mcp/lifecycle.py,
    integrations/mcp/memanto_mcp/tools.py)

    • Concurrent MCP tool calls for different agent IDs no longer share one
      SdkClient session — each agent gets its own isolated, cached client, with
      batch payload validation happening before any readiness side effects and
      newly created scoped clients only cached once activation actually succeeds.
    • MCP batch_remember now guards against and normalizes malformed item
      results instead of propagating a bad shape.
  • LangGraph integration fixes (integrations/langgraph/langgraph_memanto/{store,tools}.py)

    • Non-string content values are stringified before being written to the
      store (previously could raise). min_confidence search filtering fixed.
      Setup now retries after an activation failure instead of getting stuck.
      Input limits enforced on remember.
  • Hermes / CrewAI integration fixes (integrations/hermes-agents/, integrations/crewai/)

    • Fixed agent-id truncation collisions in Hermes (two different agent IDs
      could truncate to the same internal id). Hermes memory-mirror writes on
      exit are now non-blocking. CrewAI remember now enforces the same input
      length limits as the core API.
  • Memory validation / parsing hardening (memanto/app/services/memory_parsing_service.py,
    memanto/app/models/__init__.py)

    • Fixed the ambiguity guard being systemically bypassed by common auxiliary
      verbs (is/are/was/were) matching STRONG_FACT_PATTERNS.
    • Memory type is now schema-validated on write instead of accepted as any
      string; SourceType validation is strict and rate-limiting now fails
      closed on error instead of open.
    • Tags and source labels are now length-bounded before storage (applies to
      both remember and memory edits) using shared Pydantic
      Annotated[StringConstraints] validators.
    • Fail-fast on malformed storage responses in the core write path,
      memanto migrate, and MCP batch_remember.
  • Timestamp formatting fix (memanto/app/services/memory_read_service.py)

    • Epoch-integer timestamps are now coerced to ISO strings during memory-read
      formatting instead of being returned as raw ints, which broke downstream
      date parsing.
  • Unicode agent-ID isolation — agent ID validation is now centralized and
    Unicode-normalized, fixing a case where visually-similar Unicode agent IDs
    could collide or bypass isolation.

Tests

  • New tests/test_connect_engine.py, tests/test_connect_detection.py,
    tests/test_config_manager_setters.py, tests/test_schedule_time_validation.py,
    integrations/mcp/tests/test_lifecycle.py.
  • Large expansion of tests/test_api.py, tests/test_backend.py,
    tests/test_unit.py, and per-integration test suites covering every fix
    above.

Full Changelog

Full Changelog: v0.2.10...v0.2.12