* feat(api): add bank template import/export endpoints
Add POST /banks/{bank_id}/import and GET /banks/{bank_id}/export
endpoints for declarative bank setup via JSON manifests.
A template manifest (version 1) can include bank config overrides
and mental model definitions. Import creates or updates mental
models matched by id, applies config as per-bank overrides, and
returns async operation IDs for content generation.
Export dumps a bank's explicit overrides and mental models as a
manifest that can be re-imported into another bank.
Includes control plane UI: bank creation dialog now accepts an
optional template JSON to pre-configure the bank on creation.
* docs: add Template Gallery page and bank templates reference
- Template Gallery (/templates) with search, category filter, manifest
preview modal with copy-to-clipboard
- 5 starter templates: Customer Support, Research Assistant, Personal
Journal, Code Review Buddy, Meeting Notes
- Bank Templates API reference doc (developer/api/bank-templates)
- Sidebar entry under API section
* docs: add Template Gallery links to navbar and sidebar
- Top navbar: "Templates" link between Integrations and Changelog
- Sidebar: "Template Gallery" in Resources section
* fix(docs): remove emoji icons, autofocus search, fix placeholder in template gallery
* docs: rename to Bank Templates, move to Resources sidebar only
* docs: add Bank Templates to Resources navbar dropdown
* feat(api): add directives to bank template import/export
- Add BankTemplateDirective model with name, content, priority, is_active, tags
- Import creates/updates directives matched by name
- Export includes all directives (active and inactive)
- Validation: duplicate names rejected, empty name/content caught
- Tests: 24 tests covering directives create/update, existing vs new
bank import, validation, export with directives, full round-trip
* docs: add directives to bank templates docs and sample templates
* feat(api): add JSON Schema endpoint for bank template validation
- GET /v1/default/bank-template-schema returns the JSON Schema
auto-generated from the Pydantic BankTemplateManifest model
- Static schema file at docs/static/bank-template-schema.json
- Docs updated with schema endpoint, static file link, and
validation examples (Python jsonschema, Node ajv-cli)
* feat(api): live schema validation on import, fix schema endpoint path
- Move schema endpoint to /v1/bank-template-schema (system-level, not per-bank)
- Import endpoint now accepts raw JSON and validates with Pydantic manually,
returning clean 400 errors instead of raw 422s for all validation failures
- All validation (schema + semantic) returns consistent 400 with detailed messages
* docs: add interactive JSON Schema viewer to Bank Templates page
Renders the Pydantic-generated schema as a collapsible property tree
with types, required badges, defaults, and descriptions. The schema
is imported from the static bank-template-schema.json file.
* ui: add template toggle switch and browse link to bank creation dialog
- Replace always-visible textarea with a switch toggle ("Import from template")
- Textarea only shows when switch is on, keeping the dialog clean by default
- Add "Browse templates" link pointing to hindsight.vectorize.io/templates
- Reset template state when switch is toggled off or dialog is cancelled
* ui: add empty state with Add Document CTA to data view
When a bank has 0 memories, the data view (all tabs: constellation,
graph, table, timeline) shows a centered empty state with a CTA
button that opens the Add Document dialog.
* docs: replace templates with Conversation and Coding Agent
Remove generic placeholder templates. Add two practical templates
based on actual integration patterns:
- Conversation: for chat agents (LiteLLM, LangGraph, Pydantic AI,
Vercel AI SDK). Tracks user preferences, open threads.
- Coding Agent: for Claude Code/Codex. Tracks technical decisions,
project context, developer preferences. High literalism.
* docs: rename gallery to Bank Templates Hub, keep API doc as Bank Templates
* docs: register layout-template and file-json icons in navbar and sidebar
* docs: register layout-template icon in DefaultNavbarItem for dropdown items
* docs: show integration icons on template cards
Templates now have an optional `integrations` field referencing
integration IDs from integrations.json. Icons are resolved at render
time and shown in the card header next to the category badge.
* docs: add Personal Assistant template for OpenClaw, Hermes, NemoClaw
* feat: add Export Template to bank actions + map all integrations to templates
- Add "Export Template" to the bank Actions dropdown — exports config,
mental models, and directives as JSON, copies to clipboard
- Add export API route and client method
- Map remaining integrations to templates: CrewAI, AG2, Agno, Strands,
LlamaIndex, local-mcp, skills → Conversation; hindclaw → Personal Assistant
* feat: add --template flag to LoCoMo benchmark + remove schema from Hub
- LoCoMo benchmark accepts --template <path> to apply a bank template
manifest (config, mental models, directives) before ingestion
- Template is applied per-bank in both single-phase and two-phase modes
- BenchmarkRunner.apply_template() reuses the same engine methods as
the /import API endpoint
- Remove Manifest Schema section from Bank Templates Hub page
(schema stays in the API reference doc)
* refactor: remove description field from bank template manifest
* docs: remove tags, fact_types, and directives from starter templates
* docs: remove reflect_mission and disposition fields from starter templates
* build: validate template manifests against JSON Schema during docs build
* cleanup: remove unused JsonSchemaViewer component
* docs: remove retain_extraction_mode from starter templates
* ui: enable word wrap in template manifest preview
* docs: add link to Bank Templates reference doc from Hub page
* docs: convert bank templates doc to mdx with multi-language code snippets
- Convert bank-templates.md to .mdx with Tabs/CodeSnippet components
- Add example files: bank-templates.py, .mjs, .sh, .go with doc markers
- Examples cover import, dry-run, export, round-trip, and schema
- Regenerate OpenAPI spec and all client SDKs (Python, TS, Rust, Go)
* fix: migration revision collision + use typed models in benchmark template
- Rename merge migration d6e7f8a9b0c1 -> d6e7f8a9b0c2 to resolve
revision ID collision with case_insensitive_entities_trgm_index
- Update a4b5c6d7e8f9 down_revision to point to the renamed migration
- Fix f-string lint in case_insensitive migration
- BenchmarkRunner.apply_template() now validates manifest through
BankTemplateManifest Pydantic model instead of raw dict access
- Remove redundant inline imports (json, Path already at module top)
* fix(docs): add missing Go tab to dry-run code snippet
* ci: retrigger
* fix: sync skills openapi.json + fix bankId null type error in export
- Copy updated openapi.json to skills/hindsight-docs/references/
- Add null guard for bankId in Export Template onClick handler
* fix: sync generated files (memory_engine formatting, docs skill references)
* cleanup: remove obsolete migration collision workaround
|
||
|---|---|---|
| .. | ||
| legacy | ||
| bank-templates.go | ||
| bank-templates.mjs | ||
| bank-templates.py | ||
| bank-templates.sh | ||
| cli-reference.sh | ||
| directives.go | ||
| directives.mjs | ||
| directives.py | ||
| directives.sh | ||
| documents.go | ||
| documents.mjs | ||
| documents.py | ||
| main-methods.go | ||
| main-methods.mjs | ||
| main-methods.py | ||
| memory-banks.go | ||
| memory-banks.mjs | ||
| memory-banks.py | ||
| memory-banks.sh | ||
| mental-models.go | ||
| mental-models.mjs | ||
| mental-models.py | ||
| mental-models.sh | ||
| quickstart.go | ||
| quickstart.mjs | ||
| quickstart.py | ||
| quickstart.sh | ||
| README.md | ||
| recall.go | ||
| recall.mjs | ||
| recall.py | ||
| recall.sh | ||
| reflect.go | ||
| reflect.mjs | ||
| reflect.py | ||
| reflect.sh | ||
| retain.go | ||
| retain.mjs | ||
| retain.py | ||
| retain.sh | ||
| sample.pdf | ||
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).