* feat(api)!: retire the bank profile and background endpoints
GET/PUT /v1/default/banks/{bank_id}/profile and
POST /v1/default/banks/{bank_id}/background have been deprecated for
several releases. They now answer 410 Gone with the replacement call in
the detail, joining the two endpoints (entity regenerate, synchronous
document export) that already do.
The routes stay in the OpenAPI spec with unchanged signatures, so no
generated SDK method disappears from under a caller — only the behaviour
changes.
Disposition traits and the reflect mission are bank configuration, and
already were: _get_bank_profile_authenticated overlaid config on top of
the legacy DB columns. The `name` these endpoints also returned is a
display-only label available on the bank list.
To make the config API a complete replacement, GET .../config is no
longer gated on HINDSIGHT_API_ENABLE_BANK_CONFIG_API — that flag now
gates only the writes (PATCH/DELETE). A bank must always be able to read
its own resolved settings.
Clients migrated in the same change:
- control plane: bank-profile-view and bank-config-view read disposition
and mission from the config API, the display name comes from the
filtered bank list, and the dead /api/profile proxy route is gone.
- hindsight-cli: `bank disposition`, `bank set-disposition` and the
hidden `bank background` move to the config API. `background` warns
that it now replaces the mission rather than LLM-merging into it —
nothing replaces that merge — and its `--no-update-disposition` flag
is accepted but ignored, as the server stopped inferring disposition
from the mission long ago.
- TS wrapper: getBankProfile carries a @deprecated pointer.
* test(control-plane): cover the composed bank profile, and drop its extra fetch
bank-context only needs the display name, so it reads the id-filtered bank
list directly instead of going through getBankProfile, which would also
fetch the bank config it has no use for.
* feat(cli)!: drop the deprecated `bank background` command
The server endpoint is gone, and the LLM merge it performed has no
replacement — `bank mission` sets the mission outright. Keeping the
command as an alias would have silently turned a merge into an
overwrite, so it is removed rather than repointed.
* fix(ci): update the CLI coverage manifest, doc example and TS client test
- .openapi-coverage.toml: the three retired operations move to [skip]
alongside export_documents_sync_removed, and the stale add_bank_background
/ update_bank_disposition field sections are dropped. The CLI helper is
renamed set_bank_disposition so it no longer satisfies the coverage grep
by name while calling update_bank_config underneath.
- cli-reference.sh: the two `bank background` snippets become one
`bank mission`, the command that replaces them.
- main_operations.test.ts: TestBankProfile asserts the 410 and reads the
same data back from the bank config. try/catch rather than .rejects,
since this file runs under both jest and Deno's @std/expect shim.
* style: rustfmt the CLI edits, and say why the 410 handlers keep unused params
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
- Scripts are runnable - Each file can be executed as a smoke test
- Markers define sections - Code between
# [docs:section-name]and# [/docs:section-name]markers is extracted - Docs import at build time - MDX files use
raw-loaderto import scripts, thenCodeSnippetextracts 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
- Create or edit the appropriate script file
- Add markers around the new code section:
# [docs:my-new-section] client.some_method(...) # [/docs:my-new-section] - 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" /> - 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).