fleet-memory/hindsight-docs/examples/api
Nicolò Boschi a56cd044e5
feat: 4-tab code parity across all documentation examples (#613)
* feat: independent versioning for integrations

- Add per-integration changelog pages at /changelog/integrations/<name>
- Move main changelog to changelog/index.md (URL unchanged)
- Add --integration flag to generate-changelog for LLM-based per-integration changelog generation
- Add scripts/release-integration.sh <name> <version> for cutting integration releases
- Add .github/workflows/release-integration.yml to publish on integrations/** tags
- Remove integrations from main release.sh and release.yml cycle

* fix: add agno and hermes integration docs to version-0.4 for production build

* chore: apply ruff formatting to generate_changelog.py

* feat: add 4-tab code parity across all documentation examples

Every code snippet Tabs block now has Python, Node.js, CLI, and Go variants.
Raw HTTP/curl tabs replaced with proper SDK calls.

New example files:
- Go: retain.go, recall.go, reflect.go, memory-banks.go, directives.go,
  mental-models.go, documents.go, main-methods.go
- Shell: memory-banks.sh, directives.sh, mental-models.sh
- Node.js: mental-models.mjs

Extended example files with missing sections:
- recall.mjs/sh: world/experience/observation types, token-budget, all tag modes
- reflect.sh: reflect-with-params, reflect-disposition, reflect-sources, reflect-with-tags
- reflect.mjs: reflect-with-tags, fixed reflect-sources API usage
- retain.mjs/sh: retain-conversation, retain-batch, retain-files-batch

SDK/CLI additions:
- TypeScript: getMentalModelHistory method
- CLI recall: --tags, --tags-match flags
- CLI reflect: --tags, --tags-match, --include-facts flags
- CLI directive update: --is-active flag
- CLI bank set-config: --retain-mission, --retain-extraction-mode,
  --observations-mission, --reflect-mission, --disposition-* flags

Build validation:
- scripts/check-code-parity.mjs validates 4-tab parity across all MDX files
- Integrated into npm run build — fails if any Tabs block is missing a variant

* fix: fix doc examples for Go, Node.js, CLI + add mental model with-id examples

- Fix Go Budget constants: BUDGET_HIGH/LOW/MID → HIGH/LOW/MID
- Fix Go documents.go: ListDocuments returns []map[string]interface{}, use map access
- Fix Go retain.go: use correct relative path for sample.pdf
- Fix Node.js createMentalModel: use positional args (name, sourceQuery) not object
- Add CLI 'history' subcommand for mental models (api.rs, main.rs, mental_model.rs)
- Rebuild TypeScript/Python clients to support id param in createMentalModel
- Add create-mental-model-with-id examples across all 4 languages and docs

* fix: move id param to end of create_mental_model signature for backwards compat
2026-03-19 11:31:51 +01:00
..
legacy doc: add blog (#201) 2026-01-28 15:42:14 +01:00
cli-reference.sh ci: finalize test for the documentation code (#57) 2025-12-19 12:17:59 -07:00
directives.go feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01: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
directives.sh feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
documents.go feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
documents.mjs feat: change tags for a document (#517) 2026-03-07 09:00:13 +01:00
documents.py feat: change tags for a document (#517) 2026-03-07 09:00:13 +01:00
main-methods.go feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
main-methods.mjs ci: finalize test for the documentation code (#57) 2025-12-19 12:17:59 -07:00
main-methods.py doc: improve api explanation (#415) 2026-02-20 17:02:01 +01:00
memory-banks.go feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
memory-banks.mjs doc: fix build 2026-02-25 16:58:06 +01:00
memory-banks.py doc: fix build 2026-02-25 16:58:06 +01:00
memory-banks.sh feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
mental-models.go feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
mental-models.mjs feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
mental-models.py feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
mental-models.sh feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
quickstart.go feat: entity labels — optional, free_values, multi_value, UI polish (#450) 2026-03-02 13:05:25 +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.go feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
recall.mjs feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
recall.py feat: filter graph memories with tags (#431) 2026-02-25 10:31:40 +01:00
recall.sh feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
reflect.go feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
reflect.mjs feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
reflect.py doc: improve api explanation (#415) 2026-02-20 17:02:01 +01:00
reflect.sh feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
retain.go feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
retain.mjs feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
retain.py doc: improve api explanation (#415) 2026-02-20 17:02:01 +01:00
retain.sh feat: 4-tab code parity across all documentation examples (#613) 2026-03-19 11:31:51 +01:00
sample.pdf feat: accept pdf, images and office files (#390) 2026-02-17 18:15:03 +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).