fleet-memory/hindsight-clients/python/hindsight_client_api/models
Nicolò Boschi f903948a26
feat: support timestamp="unset" to retain content without a date (#465)
* feat: support timestamp="unset" to retain content without a date

When callers retain timeless content (e.g. fictional documents, static
reference material), passing timestamp="unset" now skips the utcnow()
default so mentioned_at is stored as NULL instead of an artificial date.

- HTTP: validate_timestamp recognises "unset" sentinel and threads it
  through api_retain as event_date=None (key present, value None), which
  the orchestrator distinguishes from key-absent (still defaults to now)
- Orchestrator: new branching logic separates "key absent" → utcnow()
  from "key present but None" → no date
- types.py: RetainContent.event_date and ProcessedFact.mentioned_at are
  now datetime | None; removed the unused _now_utc factory
- fact_extraction.py: all event_date params accept datetime | None;
  _build_user_message emits "Event Date: Unknown" when None; removed
  mentioned_at from the Fact LLM response model (LLM never sets it)
- embedding_processing: skip date suffix when fact_date is None
- entity_resolver: COALESCE(event_date, now()) for first_seen/last_seen
  so entities table NOT NULL constraint is preserved
- link_utils: skip temporal linking for units without event_date
- Migration aa2b3c4d5e6f: DROP NOT NULL on memory_units.event_date
- Tests: test_retain_no_timestamp and test_retain_omit_timestamp_defaults_to_now
- Docs + OpenAPI + TypeScript client updated

* refactor: replace _TIMESTAMP_UNKNOWN sentinel with plain string comparison

The sentinel object() was only needed to distinguish "unset" from None
at the boundary — but since the field type is datetime | str | None,
"unset" can pass through the validator unchanged and be compared directly.

* chore: regenerate OpenAPI spec and clients after timestamp type change

timestamp field is now datetime | str | None to accept the "unset" sentinel value.
2026-03-02 12:03:23 +01:00
..
__init__.py feat: support timestamp="unset" to retain content without a date (#465) 2026-03-02 12:03:23 +01:00
add_background_request.py Release v0.4.14 2026-02-26 18:03:14 +01:00
async_operation_submit_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
background_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
bank_config_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
bank_config_update.py Release v0.4.14 2026-02-26 18:03:14 +01:00
bank_list_item.py Release v0.4.14 2026-02-26 18:03:14 +01:00
bank_list_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
bank_profile_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
bank_stats_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
budget.py Release v0.4.14 2026-02-26 18:03:14 +01:00
cancel_operation_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
child_operation_status.py Release v0.4.14 2026-02-26 18:03:14 +01:00
chunk_data.py Release v0.4.14 2026-02-26 18:03:14 +01:00
chunk_include_options.py Release v0.4.14 2026-02-26 18:03:14 +01:00
chunk_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
clear_memory_observations_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
consolidation_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
create_bank_request.py Release v0.4.14 2026-02-26 18:03:14 +01:00
create_directive_request.py Release v0.4.14 2026-02-26 18:03:14 +01:00
create_mental_model_request.py Release v0.4.14 2026-02-26 18:03:14 +01:00
create_mental_model_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
delete_document_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
delete_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
directive_list_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
directive_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
disposition_traits.py Release v0.4.14 2026-02-26 18:03:14 +01:00
document_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
entity_detail_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
entity_include_options.py Release v0.4.14 2026-02-26 18:03:14 +01:00
entity_input.py Release v0.4.14 2026-02-26 18:03:14 +01:00
entity_list_item.py Release v0.4.14 2026-02-26 18:03:14 +01:00
entity_list_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
entity_observation_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
entity_state_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
features_info.py Release v0.4.14 2026-02-26 18:03:14 +01:00
file_retain_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
graph_data_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
http_validation_error.py Release v0.4.14 2026-02-26 18:03:14 +01:00
include_options.py Release v0.4.14 2026-02-26 18:03:14 +01:00
list_documents_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
list_memory_units_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
list_tags_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
memory_item.py feat: support timestamp="unset" to retain content without a date (#465) 2026-03-02 12:03:23 +01:00
mental_model_list_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
mental_model_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
mental_model_trigger.py Release v0.4.14 2026-02-26 18:03:14 +01:00
observation_scopes.py feat: observation_scopes field to drive observations granularity (#447) 2026-02-28 10:46:21 +01:00
operation_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
operation_status_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
operations_list_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
recall_request.py Release v0.4.14 2026-02-26 18:03:14 +01:00
recall_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
recall_result.py Release v0.4.14 2026-02-26 18:03:14 +01:00
reflect_based_on.py Release v0.4.14 2026-02-26 18:03:14 +01:00
reflect_directive.py Release v0.4.14 2026-02-26 18:03:14 +01:00
reflect_fact.py Release v0.4.14 2026-02-26 18:03:14 +01:00
reflect_include_options.py Release v0.4.14 2026-02-26 18:03:14 +01:00
reflect_llm_call.py Release v0.4.14 2026-02-26 18:03:14 +01:00
reflect_mental_model.py Release v0.4.14 2026-02-26 18:03:14 +01:00
reflect_request.py Release v0.4.14 2026-02-26 18:03:14 +01:00
reflect_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
reflect_tool_call.py Release v0.4.14 2026-02-26 18:03:14 +01:00
reflect_trace.py Release v0.4.14 2026-02-26 18:03:14 +01:00
retain_request.py Release v0.4.14 2026-02-26 18:03:14 +01:00
retain_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00
source_facts_include_options.py Release v0.4.14 2026-02-26 18:03:14 +01:00
tag_item.py Release v0.4.14 2026-02-26 18:03:14 +01:00
timestamp.py feat: support timestamp="unset" to retain content without a date (#465) 2026-03-02 12:03:23 +01:00
token_usage.py Release v0.4.14 2026-02-26 18:03:14 +01:00
tool_calls_include_options.py Release v0.4.14 2026-02-26 18:03:14 +01:00
update_directive_request.py Release v0.4.14 2026-02-26 18:03:14 +01:00
update_disposition_request.py Release v0.4.14 2026-02-26 18:03:14 +01:00
update_mental_model_request.py Release v0.4.14 2026-02-26 18:03:14 +01:00
validation_error.py Release v0.4.14 2026-02-26 18:03:14 +01:00
validation_error_loc_inner.py Release v0.4.14 2026-02-26 18:03:14 +01:00
version_response.py Release v0.4.14 2026-02-26 18:03:14 +01:00