Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

All notable changes to the CueMap Python SDK will be documented in this file.

## [0.7.5] - 2026-10-14

### Added
- `ingest_content(..., segmenter="conversation")` for chat histories (Claude or ChatGPT exports, JSON message lists, role- or speaker-labelled transcripts): one memory per message with conversation, turn and role metadata.

### Changed
- Synchronized with CueMap Engine v0.7.5.
- `expansion_depth` now accepts `"conversation_round"` and defaults to `None`, so recall uses the engine default (`"conversation_round"`: each result gets the message it replies to, and the top result gets its answer; memories without session, turn and role metadata are returned as they are). Pass `expansion_depth=1` for the previous matched-memory-only behaviour.

## [0.7.3] - 2026-08-27

### Changed
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<a href="https://pypi.org/project/cuemap/"><img src="https://img.shields.io/pypi/v/cuemap?logo=pypi&logoColor=white" alt="PyPI"></a>
<a href="https://pypi.org/project/cuemap/"><img src="https://img.shields.io/pypi/pyversions/cuemap?logo=python&logoColor=white" alt="Python versions"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-5e5ce6" alt="License"></a>
<a href="https://github.com/cuemap-dev/cuemap"><img src="https://img.shields.io/badge/engine-v0.7.3-0f766e" alt="Engine compatibility"></a>
<a href="https://github.com/cuemap-dev/cuemap"><img src="https://img.shields.io/badge/engine-v0.7.5-0f766e" alt="Engine compatibility"></a>
</p>

**High-performance temporal-associative memory store** designed for dynamic contextual retrieval.
Expand Down
2 changes: 1 addition & 1 deletion cuemap/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
from .exceptions import CueMapError, ConnectionError, AuthenticationError
from .grounding import CueMapGroundingRetriever, AsyncCueMapGroundingRetriever

__version__ = "0.7.3"
__version__ = "0.7.5"
__all__ = [
"CueMap",
"AsyncCueMap",
Expand Down
22 changes: 16 additions & 6 deletions cuemap/client.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Pure CueMap client - no magic, just speed."""

import httpx
from typing import List, Optional, Dict, Any
from typing import List, Optional, Dict, Any, Union

from .models import Memory, RecallResult, RecallPreviewResult
from .exceptions import CueMapError, ConnectionError, AuthenticationError
Expand Down Expand Up @@ -167,7 +167,7 @@ def recall(
disable_salience_bias: bool = False,
disable_alias_expansion: bool = True,
trace_timing: bool = False,
expansion_depth: int = 1,
expansion_depth: Optional[Union[int, str]] = None,
parent_fusion: str = "off",
parent_fusion_limit: int = 80,
parent_fusion_min_chunks: int = 2,
Expand Down Expand Up @@ -197,6 +197,11 @@ def recall(
projects: List of project IDs for cross-domain queries
limit: Maximum results to return
depth: Number of multi-hop recall expansion hops
expansion_depth: Neighbour context per result. Unset uses the engine default,
"conversation_round": prepend the message each result replies to and
append the answer to the top result (needs session, turn and role
metadata; other memories are returned as they are). A number gives
source-order neighbours instead (1 = matched memory only)
auto_reinforce: Automatically reinforce retrieved memories
min_intersection: Minimum number of cues that must match
explain: Include recall explanation in results
Expand Down Expand Up @@ -273,7 +278,7 @@ def recall_grounded(
min_intersection: Optional[int] = None,
disable_salience_bias: bool = False,
disable_alias_expansion: bool = True,
expansion_depth: int = 1,
expansion_depth: Optional[Union[int, str]] = None,
disable_pattern_completion: Optional[bool] = None,
disable_systems_consolidation: Optional[bool] = None,
) -> Dict[str, Any]:
Expand Down Expand Up @@ -727,7 +732,12 @@ def ingest_content(
segment_min_chunk_chars: Optional[int] = None,
segment_max_chunk_chars: Optional[int] = None,
) -> Dict[str, Any]:
"""Ingest raw content."""
"""Ingest raw content.

segmenter: "sentence_window" (default), "logical_block", or "conversation" for chat
histories (Claude or ChatGPT exports, JSON message lists, or role/speaker-labelled
transcripts): one memory per message with conversation, turn and role metadata.
"""
response = self.client.post(
"/ingest/content",
json=_clean_payload({
Expand Down Expand Up @@ -966,7 +976,7 @@ async def recall(
disable_salience_bias: bool = False,
disable_alias_expansion: bool = True,
trace_timing: bool = False,
expansion_depth: int = 1,
expansion_depth: Optional[Union[int, str]] = None,
parent_fusion: str = "off",
parent_fusion_limit: int = 80,
parent_fusion_min_chunks: int = 2,
Expand Down Expand Up @@ -1052,7 +1062,7 @@ async def recall_grounded(
min_intersection: Optional[int] = None,
disable_salience_bias: bool = False,
disable_alias_expansion: bool = True,
expansion_depth: int = 1,
expansion_depth: Optional[Union[int, str]] = None,
disable_pattern_completion: Optional[bool] = None,
disable_systems_consolidation: Optional[bool] = None,
) -> Dict[str, Any]:
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "cuemap"
version = "0.7.3"
version = "0.7.5"
description = "CueMap Python SDK - High-performance temporal-associative memory"
readme = "README.md"
requires-python = ">=3.8"
Expand Down
Loading