Skip to content

v0.12.1

Choose a tag to compare

@github-actions github-actions released this 01 Oct 18:38
1ef7e20

Calls whose requests or answers did not match the server now do (each checked live against
ghcr.io/dakera-ai/dakera:0.12.0; the v0.11.108 types are the same). The integration tests
exercise every call below against that image.

Changed (breaking for code that called it; every such call failed)

  • memory_link(agent_id, source_id, target_id, label): was memory_link(source_id, target_id, edge_type), which sent no agent_id, so the server answered 422 on every call.
    The server always records an explicit link as linked_by, so edge_type is gone;
    GraphLinkRequest is now {target_id, agent_id, label}.
  • get_memory_feedback_history(memory_id, agent_id) and evaluate_tif(memory_id, agent_id):
    GET /v1/memories/{id}/feedback requires agent_id in the query and answered 400 without it.
  • New ClientError::InvalidRequest (a breaking change only for exhaustive matches on
    ClientError): returned before sending a request the server would refuse or not honour.

Fixed

  • Graph edges: the server sends {from_id, to_id, edge_type, weight, created_at} with no edge
    id, and GraphEdge required id / source_id / target_id, so memory_graph,
    agent_graph_export, knowledge_query and knowledge_export failed to deserialize as soon
    as a graph had an edge. from_id / to_id now fill source_id / target_id; id,
    weight and created_at default when absent.
  • EdgeType gains Supersedes (the server writes supersedes edges since v0.11.100) and
    Unknown for edge types a newer server may add; either used to fail the whole answer.
  • memory_link parses the server's {from_id, to_id, edge_type} answer (from_id, to_id,
    edge_type fields; edge is built from them, weight 1.0). An {"edge": ...} answer is
    still accepted.
  • memory_graph: nodes carry their incoming edges (GraphNode::edges); the client collects
    them into MemoryGraph::edges, which the server does not send. Adds node_count.
    GraphNode::content_preview / importance default (not in the server's answer).
  • memory_graph no longer sends types (the server reads only depth and ignored it); the
    GraphOptions::types filter is applied to the answer, to each node's edges and to
    MemoryGraph::edges. Nodes are kept.
  • memory_path sent ?target=; the server reads ?to= and answered 400. hop_count fills
    hops.
  • agent_graph_export: the server always answers JSON {agent_id, namespace, node_count, edge_count, edges} (no format / data), which failed to deserialize. Adds namespace
    and edges; format is json, data stays empty.
  • memory_entities: the server answers {entities, count} without memory_id, which failed
    to deserialize. The client fills memory_id from the requested id; adds count.
  • search_memories: total_found was always 0 because POST /v1/memory/search answers
    total_count; it is read now. The recall route reports no total, so recall() keeps 0.
  • knowledge_graph: the server needs a seed memory_id (422 without it; now refused
    client-side) and answers {root: {memory, similarity, related}, total_nodes}, which failed to
    deserialize; nodes and edges are built from it.
  • full_knowledge_graph: the {nodes, edges, clusters, stats} answer failed to deserialize; the
    server's clusters and statistics are now read (cluster_info, stats).
  • summarize: the server needs at least two memory_ids (422) and has no dry run (it always
    stores the summary), so both are refused client-side; the {summary_memory, source_count}
    answer failed to deserialize and now fills summary / new_memory_id.
  • deduplicate: the {groups: [{canonical_id, duplicate_ids, avg_similarity}], duplicates_found, duplicates_merged} answer failed to deserialize; adds duplicate_groups.
  • fulltext_stats: unique_terms / avg_doc_length failed to deserialize.
  • get_kpis ({timestamp, kpis}), admin_cluster_replication, admin_list_slow_queries,
    analytics_latency, analytics_throughput and analytics_storage failed to deserialize the
    server's answers; their types now follow them (LatencyBucket, ThroughputDataPoint,
    NamespaceStorageInfo).
  • agent_stats, agent_sessions and wake_up: the server sends timestamps as Unix seconds
    (numbers), which failed to deserialize into strings; they are kept as decimal strings.
  • patch_memory_importance: the answer is the updated memory (id, importance), which failed
    to deserialize.
  • create_namespace: dimension is required by the route (422 without it; now refused
    client-side). index_type and metadata are not applied by this route (documented).
  • export_memories: GET /v1/export exports one agent and needs agent_id (now refused
    client-side without it); the body is parsed in every format.
  • The integration tests now run a live graph round trip (store, link, traverse, path, export,
    KG query, entities, update) against the server image.

What's Changed

Bug Fixes

  • fix: calls match the server's requests and answers (dakera-client 0.12.1) @ferhimedamine (#169)

Full Changelog: v0.12.0...v0.12.1