fleet-memory/hindsight-clients/python/hindsight_client_api/models
Nicolò Boschi 5de793eec7
feat: compound tag filtering via tag_groups (#562)
* feat: add compound tag filtering via tag_groups

Adds tag_groups to RecallRequest and ReflectRequest to express arbitrary
boolean tag predicates: leaf {tags, match}, and/or/not compounds.
Top-level groups are AND-ed. Existing tags/tags_match unchanged.

Examples:
  Step filter AND user scope:
    tag_groups: [{tags: ["step:5","step:8"], match: "any_strict"},
                 {tags: ["user:alice"], match: "all_strict"}]
  Exclusion:
    tag_groups: [{tags: ["user:alice"], match: "all_strict"},
                 {not: {tags: ["archived"], match: "any_strict"}}]

- Recursive SQL builder (build_tag_groups_where_clause) threads through
  all 4 retrieval strategies (semantic/BM25, temporal, graph, MPFP)
- Python-side filter (filter_results_by_tag_groups) for post-traversal
- 22 new unit tests
- OpenAPI spec + all clients regenerated (Rust, Python, TypeScript, Go)

* fix: add tag_groups: None to Rust CLI struct initializers

* fix: add tag_groups: None to Rust client test RecallRequest initializer

* feat: reject tags+tag_groups together, add tag_groups integration tests

- Add model_validator to RecallRequest and ReflectRequest that returns 422
  when both `tags` and `tag_groups` are set (mutually exclusive)
- Add 5 integration tests for tag_groups compound filtering:
  * validation: 422 when both fields are set
  * AND filter: two leaf groups (step scope AND user scope)
  * OR compound: user:alice OR user:bob
  * NOT compound: user:alice AND NOT archived
  * Nested: user:alice AND (step:5 OR step:8)

* ci: trigger CI run
2026-03-13 14:30:11 +01:00
..
__init__.py feat: compound tag filtering via tag_groups (#562) 2026-03-13 14:30:11 +01:00
add_background_request.py Release v0.4.17 2026-03-10 17:18:35 +01:00
async_operation_submit_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
background_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
bank_config_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
bank_config_update.py Release v0.4.17 2026-03-10 17:18:35 +01:00
bank_list_item.py Release v0.4.17 2026-03-10 17:18:35 +01:00
bank_list_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
bank_profile_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
bank_stats_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
budget.py Release v0.4.17 2026-03-10 17:18:35 +01:00
cancel_operation_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
child_operation_status.py Release v0.4.17 2026-03-10 17:18:35 +01:00
chunk_data.py Release v0.4.17 2026-03-10 17:18:35 +01:00
chunk_include_options.py Release v0.4.17 2026-03-10 17:18:35 +01:00
chunk_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
clear_memory_observations_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
consolidation_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
create_bank_request.py Release v0.4.17 2026-03-10 17:18:35 +01:00
create_directive_request.py Release v0.4.17 2026-03-10 17:18:35 +01:00
create_mental_model_request.py Release v0.4.17 2026-03-10 17:18:35 +01:00
create_mental_model_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
create_webhook_request.py Release v0.4.17 2026-03-10 17:18:35 +01:00
delete_document_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
delete_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
directive_list_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
directive_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
disposition_traits.py Release v0.4.17 2026-03-10 17:18:35 +01:00
document_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
entity_detail_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
entity_include_options.py Release v0.4.17 2026-03-10 17:18:35 +01:00
entity_input.py Release v0.4.17 2026-03-10 17:18:35 +01:00
entity_list_item.py Release v0.4.17 2026-03-10 17:18:35 +01:00
entity_list_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
entity_observation_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
entity_state_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
features_info.py Release v0.4.17 2026-03-10 17:18:35 +01:00
file_retain_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
graph_data_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
http_validation_error.py Release v0.4.17 2026-03-10 17:18:35 +01:00
include_options.py Release v0.4.17 2026-03-10 17:18:35 +01:00
list_documents_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
list_memory_units_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
list_tags_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
memory_item.py Release v0.4.17 2026-03-10 17:18:35 +01:00
mental_model_list_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
mental_model_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
mental_model_trigger.py Release v0.4.17 2026-03-10 17:18:35 +01:00
model_not.py feat: compound tag filtering via tag_groups (#562) 2026-03-13 14:30:11 +01:00
observation_scopes.py Release v0.4.17 2026-03-10 17:18:35 +01:00
operation_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
operation_status_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
operations_list_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
recall_request.py feat: compound tag filtering via tag_groups (#562) 2026-03-13 14:30:11 +01:00
recall_request_tag_groups_inner.py feat: compound tag filtering via tag_groups (#562) 2026-03-13 14:30:11 +01:00
recall_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
recall_result.py Release v0.4.17 2026-03-10 17:18:35 +01:00
reflect_based_on.py Release v0.4.17 2026-03-10 17:18:35 +01:00
reflect_directive.py Release v0.4.17 2026-03-10 17:18:35 +01:00
reflect_fact.py Release v0.4.17 2026-03-10 17:18:35 +01:00
reflect_include_options.py Release v0.4.17 2026-03-10 17:18:35 +01:00
reflect_llm_call.py Release v0.4.17 2026-03-10 17:18:35 +01:00
reflect_mental_model.py Release v0.4.17 2026-03-10 17:18:35 +01:00
reflect_request.py feat: compound tag filtering via tag_groups (#562) 2026-03-13 14:30:11 +01:00
reflect_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
reflect_tool_call.py Release v0.4.17 2026-03-10 17:18:35 +01:00
reflect_trace.py Release v0.4.17 2026-03-10 17:18:35 +01:00
retain_request.py Release v0.4.17 2026-03-10 17:18:35 +01:00
retain_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
retry_operation_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
source_facts_include_options.py Release v0.4.17 2026-03-10 17:18:35 +01:00
tag_group_and.py feat: compound tag filtering via tag_groups (#562) 2026-03-13 14:30:11 +01:00
tag_group_leaf.py feat: compound tag filtering via tag_groups (#562) 2026-03-13 14:30:11 +01:00
tag_group_not.py feat: compound tag filtering via tag_groups (#562) 2026-03-13 14:30:11 +01:00
tag_group_or.py feat: compound tag filtering via tag_groups (#562) 2026-03-13 14:30:11 +01:00
tag_item.py Release v0.4.17 2026-03-10 17:18:35 +01:00
timestamp.py Release v0.4.17 2026-03-10 17:18:35 +01:00
token_usage.py Release v0.4.17 2026-03-10 17:18:35 +01:00
tool_calls_include_options.py Release v0.4.17 2026-03-10 17:18:35 +01:00
update_directive_request.py Release v0.4.17 2026-03-10 17:18:35 +01:00
update_disposition_request.py Release v0.4.17 2026-03-10 17:18:35 +01:00
update_document_request.py Release v0.4.17 2026-03-10 17:18:35 +01:00
update_document_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
update_mental_model_request.py Release v0.4.17 2026-03-10 17:18:35 +01:00
update_webhook_request.py Release v0.4.17 2026-03-10 17:18:35 +01:00
validation_error.py Release v0.4.17 2026-03-10 17:18:35 +01:00
validation_error_loc_inner.py Release v0.4.17 2026-03-10 17:18:35 +01:00
version_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
webhook_delivery_list_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
webhook_delivery_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
webhook_http_config.py Release v0.4.17 2026-03-10 17:18:35 +01:00
webhook_list_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00
webhook_response.py Release v0.4.17 2026-03-10 17:18:35 +01:00