fleet-memory/hindsight-docs/examples/api
Nicolò Boschi 90e370ef35
fix: misc fixes for observations and mental models (#209)
* fix: misc fixes for observations and mental models

* feat: improve graph retrieval for observations

- Update LinkExpansionRetriever to traverse through source_memory_ids
  for observation entity connections (avoiding data duplication)
- Remove entity link copy from world facts to observations in consolidator
- Add tests for link expansion graph retrieval
- Add directives_applied field to ReflectResult
- Include user's other changes (CLI, docs, client updates)

* fix: CI test failures

- Add mental_model_id parameter to create_mental_model function
- Fix ToolCallTrace not including reason field from ToolCall
- Improve test_link_expansion_observation_graph_retrieval to wait for consolidation with retry

* chore: reduce link expansion log verbosity

* Revert "chore: reduce link expansion log verbosity"

This reverts commit 3ce759391cead1012157785fa78fef16ef9bfe3b.

* feat: add semantic/temporal/entity links as fallback in graph retrieval

- Add fallback query for semantic, temporal, and entity links from memory_links
- Check both directions (outgoing and incoming links)
- Weight fallback results at 0.5x to prioritize entity links via unit_entities
- Fixes graph retrieval returning 0 when data has cross-cluster temporal connections

* fix: enable observations fixture for link expansion test

- Add enable_observations fixture to ensure observations are created
- Increase wait time from 10 to 30 seconds for CI reliability
2026-01-27 15:37:57 +01:00
..
legacy doc: mental models (#199) 2026-01-26 14:27:08 +01:00
cli-reference.sh ci: finalize test for the documentation code (#57) 2025-12-19 12:17:59 -07:00
directives.mjs fix: misc fixes for observations and mental models (#209) 2026-01-27 15:37:57 +01:00
directives.py fix: misc fixes for observations and mental models (#209) 2026-01-27 15:37:57 +01:00
documents.mjs feat(misc): update clients types, test coverage, improve /health endpoint and add changelog (#70) 2025-12-23 12:49:31 +01:00
documents.py feat(misc): update clients types, test coverage, improve /health endpoint and add changelog (#70) 2025-12-23 12:49:31 +01:00
main-methods.mjs ci: finalize test for the documentation code (#57) 2025-12-19 12:17:59 -07:00
main-methods.py fix: misc fixes for observations and mental models (#209) 2026-01-27 15:37:57 +01:00
memory-banks.mjs doc: mental models (#199) 2026-01-26 14:27:08 +01:00
memory-banks.py fix: misc fixes for observations and mental models (#209) 2026-01-27 15:37:57 +01:00
mental-models.py fix: misc fixes for observations and mental models (#209) 2026-01-27 15:37:57 +01:00
quickstart.mjs Add documentation code validation system (#43) 2025-12-18 10:21:38 +01:00
quickstart.py Add documentation code validation system (#43) 2025-12-18 10:21:38 +01:00
quickstart.sh Add documentation code validation system (#43) 2025-12-18 10:21:38 +01:00
README.md doc: mental models (#199) 2026-01-26 14:27:08 +01:00
recall.mjs Add documentation code validation system (#43) 2025-12-18 10:21:38 +01:00
recall.py chore: internal renames (#204) 2026-01-27 09:53:28 +01:00
recall.sh chore: internal renames (#204) 2026-01-27 09:53:28 +01:00
reflect.mjs chore: internal renames (#204) 2026-01-27 09:53:28 +01:00
reflect.py doc: mental models (#199) 2026-01-26 14:27:08 +01:00
reflect.sh chore: internal renames (#204) 2026-01-27 09:53:28 +01:00
retain.mjs Add documentation code validation system (#43) 2025-12-18 10:21:38 +01:00
retain.py doc: mental models (#199) 2026-01-26 14:27:08 +01:00
retain.sh Add documentation code validation system (#43) 2025-12-18 10:21:38 +01:00

API Documentation Examples

This directory contains runnable example scripts that serve as the source of truth for code samples in the documentation.

How It Works

  1. Scripts are runnable - Each file can be executed as a smoke test
  2. Markers define sections - Code between # [docs:section-name] and # [/docs:section-name] markers is extracted
  3. Docs import at build time - MDX files use raw-loader to import scripts, then CodeSnippet extracts marked sections

File Structure

File Documentation Description
quickstart.py/mjs/sh quickstart.md Getting started examples
retain.py/mjs/sh retain.md Memory ingestion examples
recall.py/mjs/sh recall.md Memory retrieval examples
reflect.py/mjs/sh reflect.md AI reflection examples
memory-banks.py/mjs memory-banks.md Bank management examples
documents.py/mjs documents.md Document CRUD examples
reflections.py reflections.md Reflections CRUD examples
main-methods.py main-methods.md Core method examples
cli-reference.sh cli.md CLI command examples

Running Examples

# Run all Python examples
for f in *.py; do python "$f"; done

# Run all Node.js examples
for f in *.mjs; do node "$f"; done

# Run all CLI examples
for f in *.sh; do bash "$f"; done

Requires a running Hindsight server at http://localhost:8888 (or set HINDSIGHT_API_URL).

Legacy Examples

The legacy/ folder contains deprecated example files kept only for backward compatibility with older documentation versions. These files are not runnable and are skipped by CI tests.

What's NOT Covered

1. OpenAPI Auto-Generated Docs (/api-reference/*)

These pages are generated directly from the OpenAPI specification. The spec itself is the source of truth, and the generated docs reflect it automatically. No manual code examples to validate.

2. Interactive CLI Commands

Command Reason
hindsight configure Requires interactive user input (prompts for API URL, credentials)
hindsight configure --show Displays sensitive configuration, not suitable for automated tests

3. Installation/Setup Instructions

Documentation sections covering pip install, npm install, or system setup are instructions, not executable code samples. These are validated by the CI environment setup itself.

4. Error Handling Examples

Some docs show error responses (e.g., "what happens when bank doesn't exist"). These require intentionally broken states that would fail smoke tests. Error behavior is covered by unit tests instead.

Adding New Examples

  1. Create or edit the appropriate script file
  2. Add markers around the new code section:
    # [docs:my-new-section]
    client.some_method(...)
    # [/docs:my-new-section]
    
  3. Reference in the MDX file:
    import myScript from '!!raw-loader!@site/examples/api/my-script.py';
    <CodeSnippet code={myScript} section="my-new-section" language="python" />
    
  4. Run the script locally to verify it works

Marker Format

  • Python/Bash: # [docs:section-name] / # [/docs:section-name]
  • JavaScript: // [docs:section-name] / // [/docs:section-name]

Section names should be kebab-case and descriptive (e.g., retain-with-context, recall-basic).