docs: revamp sidebar with icon grids and language support (#563)

* docs: revamp sidebar with icon grid components and language support

- Merge Clients and Integrations sections into the developer sidebar
  (removed top-level SDKs navbar item)
- Reorder sidebar: Architecture → API → Clients → Integrations → Hosting
- Unify icon system using react-icons (LuXxx/SiXxx) via customProps.icon
- Add uppercase section titles with increased spacing and reduced indentation
- Rename Node.js → "JavaScript / TypeScript" with TypeScript icon
- Add reusable IconGrid and SupportedGrids components (ClientsGrid,
  IntegrationsGrid, LLMProvidersGrid)
- Use grids in FAQ, Models, Overview, and Quick Start pages
- Convert developer/index.md, models.md, faq.md to MDX for JSX support

* fix: use inline style for label color to prevent link color inheritance

* fix: label visibility and rename JavaScript/TypeScript to TypeScript

* feat: add HTTP client to grid and OpenAI Compatible to LLM providers grid
This commit is contained in:
Nicolò Boschi 2026-03-13 14:12:42 +01:00 committed by GitHub
parent d4131f88fa
commit 06200f1752
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 432 additions and 559 deletions

View file

@ -9,12 +9,17 @@ Get up and running with Hindsight in 60 seconds.
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeSnippet from '@site/src/components/CodeSnippet';
import {ClientsGrid, IntegrationsGrid} from '@site/src/components/SupportedGrids';
{/* Import raw source files */}
import quickstartPy from '!!raw-loader!@site/examples/api/quickstart.py';
import quickstartMjs from '!!raw-loader!@site/examples/api/quickstart.mjs';
import quickstartSh from '!!raw-loader!@site/examples/api/quickstart.sh';
## Clients
<ClientsGrid />
## Start the API Server
<Tabs>
@ -100,6 +105,10 @@ curl -fsSL https://hindsight.vectorize.io/get-cli | bash
---
## Integrations
<IntegrationsGrid />
## Next Steps
- [**Retain**](./retain) — Advanced options for storing memories

View file

@ -3,6 +3,8 @@ sidebar_position: 1
slug: /
---
import {ClientsGrid, IntegrationsGrid} from '@site/src/components/SupportedGrids';
# Overview
## Why Hindsight?
@ -114,6 +116,14 @@ The **mission** tells Hindsight what knowledge to prioritize and provides contex
These settings only affect the `reflect` operation, not `recall`.
## Clients & Languages
<ClientsGrid />
## Integrations
<IntegrationsGrid />
## Next Steps
### Getting Started

View file

@ -1,16 +1,16 @@
import {LLMProvidersGrid} from '@site/src/components/SupportedGrids';
# Models
Hindsight uses several machine learning models for different tasks.
## Overview
| Model Type | Purpose | Default | Configurable |
|------------|---------|---------|--------------|
| **LLM** | Fact extraction, reasoning, generation | Provider-specific | Yes |
| **Embedding** | Vector representations for semantic search | `BAAI/bge-small-en-v1.5` | Yes |
| **Cross-Encoder** | Reranking search results | `cross-encoder/ms-marco-MiniLM-L-6-v2` | Yes |
- **LLM** — Fact extraction, reasoning, and generation. Provider-specific, fully configurable.
- **Embedding** — Vector representations for semantic search. Default: `BAAI/bge-small-en-v1.5`.
- **Cross-Encoder** — Reranking search results. Default: `cross-encoder/ms-marco-MiniLM-L-6-v2`.
All local models (embedding, cross-encoder) are automatically downloaded from HuggingFace on first run.
Embedding and cross-encoder models are downloaded automatically from HuggingFace on first run.
---
@ -18,7 +18,11 @@ All local models (embedding, cross-encoder) are automatically downloaded from Hu
Used for fact extraction, entity resolution, mental model consolidation, and answer synthesis.
**Supported providers:** OpenAI, Anthropic, Gemini, Groq, MiniMax, Ollama, LM Studio, and **any OpenAI-compatible API**
**Supported providers:**
<LLMProvidersGrid />
Also supports **any OpenAI-compatible API** (e.g., Azure OpenAI, Together AI, Fireworks).
:::tip OpenAI-Compatible Providers
Hindsight works with any provider that exposes an OpenAI-compatible API (e.g., Azure OpenAI). Simply set `HINDSIGHT_API_LLM_PROVIDER=openai` and configure `HINDSIGHT_API_LLM_BASE_URL` to point to your provider's endpoint.

View file

@ -2,7 +2,7 @@
sidebar_position: 2
---
# Node.js Client
# TypeScript Client
Official TypeScript/JavaScript client for the Hindsight API.

View file

@ -212,18 +212,11 @@ const config: Config = {
items: [
{
type: 'doc',
docId: 'developer/installation',
docId: 'developer/index',
position: 'left',
label: 'Developer',
className: 'navbar-item-developer',
},
{
type: 'doc',
docId: 'sdks/python',
position: 'left',
label: 'SDKs',
className: 'navbar-item-sdks',
},
{
to: '/faq',
position: 'left',
@ -294,7 +287,7 @@ const config: Config = {
to: '/developer/installation',
},
{
label: 'SDKs',
label: 'Clients & Integrations',
to: '/sdks/python',
},
{

View file

@ -26,6 +26,7 @@
"raw-loader": "^4.0.2",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-icons": "^5.6.0",
"redocusaurus": "^2.5.0"
},
"devDependencies": {

View file

@ -11,46 +11,55 @@ const sidebars: SidebarsConfig = {
type: 'doc',
id: 'developer/index',
label: 'Overview',
customProps: { icon: 'lu-book' },
},
{
type: 'doc',
id: 'developer/retain',
label: 'Retain',
customProps: { icon: 'lu-brain' },
},
{
type: 'doc',
id: 'developer/retrieval',
label: 'Recall',
customProps: { icon: 'lu-search' },
},
{
type: 'doc',
id: 'developer/reflect',
label: 'Reflect',
customProps: { icon: 'lu-message' },
},
{
type: 'doc',
id: 'developer/observations',
label: 'Observations',
customProps: { icon: 'lu-activity' },
},
{
type: 'doc',
id: 'developer/multilingual',
label: 'Multilingual',
customProps: { icon: 'lu-languages' },
},
{
type: 'doc',
id: 'developer/performance',
label: 'Performance',
customProps: { icon: 'lu-zap' },
},
{
type: 'doc',
id: 'developer/storage',
label: 'Storage',
customProps: { icon: 'lu-database' },
},
{
type: 'doc',
id: 'developer/rag-vs-hindsight',
label: 'RAG vs Memory',
customProps: { icon: 'lu-compare' },
},
],
},
@ -63,98 +72,58 @@ const sidebars: SidebarsConfig = {
type: 'doc',
id: 'developer/api/quickstart',
label: 'Quick Start',
customProps: { icon: 'lu-rocket' },
},
{
type: 'doc',
id: 'developer/api/retain',
label: 'Retain',
customProps: { icon: 'lu-brain' },
},
{
type: 'doc',
id: 'developer/api/recall',
label: 'Recall',
customProps: { icon: 'lu-search' },
},
{
type: 'doc',
id: 'developer/api/reflect',
label: 'Reflect',
customProps: { icon: 'lu-message' },
},
{
type: 'doc',
id: 'developer/api/mental-models',
label: 'Mental Models',
customProps: { icon: 'lu-layers' },
},
{
type: 'doc',
id: 'developer/api/memory-banks',
label: 'Memory Banks',
customProps: { icon: 'lu-memory' },
},
{
type: 'doc',
id: 'developer/api/documents',
label: 'Documents',
customProps: { icon: 'lu-file' },
},
{
type: 'doc',
id: 'developer/api/operations',
label: 'Operations',
customProps: { icon: 'lu-cpu' },
},
{
type: 'doc',
id: 'developer/api/webhooks',
label: 'Webhooks',
customProps: { icon: 'lu-webhook' },
},
],
},
{
type: 'category',
label: 'Hosting',
collapsible: false,
items: [
{
type: 'doc',
id: 'developer/installation',
label: 'Installation',
},
{
type: 'doc',
id: 'developer/services',
label: 'Services',
},
{
type: 'doc',
id: 'developer/configuration',
label: 'Configuration',
},
{
type: 'doc',
id: 'developer/admin-cli',
label: 'Admin CLI',
},
{
type: 'doc',
id: 'developer/extensions',
label: 'Extensions',
},
{
type: 'doc',
id: 'developer/models',
label: 'Models',
},
{
type: 'doc',
id: 'developer/monitoring',
label: 'Monitoring',
},
{
type: 'doc',
id: 'developer/mcp-server',
label: 'MCP Server',
},
],
},
],
sdksSidebar: [
{
type: 'category',
label: 'Clients',
@ -164,29 +133,31 @@ const sidebars: SidebarsConfig = {
type: 'doc',
id: 'sdks/python',
label: 'Python',
customProps: { icon: 'si-python' },
},
{
type: 'doc',
id: 'sdks/nodejs',
label: 'Node.js',
label: 'TypeScript',
customProps: { icon: '/img/icons/typescript.png' },
},
{
type: 'doc',
id: 'sdks/go',
label: 'Go',
customProps: {
icon: "/img/icons/golang.png"
}
customProps: { icon: 'si-go' },
},
{
type: 'doc',
id: 'sdks/cli',
label: 'CLI',
customProps: { icon: 'lu-terminal' },
},
{
type: 'doc',
id: 'sdks/embed',
label: 'Embedded Python',
customProps: { icon: '/img/icons/package.svg' },
},
],
},
@ -199,50 +170,104 @@ const sidebars: SidebarsConfig = {
type: 'doc',
id: 'sdks/integrations/local-mcp',
label: 'Local MCP Server',
customProps: { icon: '/img/icons/mcp.png' },
},
{
type: 'doc',
id: 'sdks/integrations/litellm',
label: 'LiteLLM',
customProps: { icon: '/img/icons/litellm.png' },
},
{
type: 'doc',
id: 'sdks/integrations/openclaw',
label: 'OpenClaw',
customProps: { icon: '/img/icons/openclaw.png' },
},
{
type: 'doc',
id: 'sdks/integrations/ai-sdk',
label: 'Vercel AI SDK',
customProps: { icon: '/img/icons/vercel.png' },
},
{
type: 'doc',
id: 'sdks/integrations/chat',
label: 'Vercel Chat SDK',
customProps: {
icon: "/img/icons/vercel.png"
}
customProps: { icon: '/img/icons/vercel.png' },
},
{
type: 'doc',
id: 'sdks/integrations/crewai',
label: 'CrewAI',
customProps: {
icon: "/img/icons/crewai.png"
}
customProps: { icon: '/img/icons/crewai.png' },
},
{
type: 'doc',
id: 'sdks/integrations/pydantic-ai',
label: 'Pydantic AI',
customProps: {
icon: "/img/icons/pydanticai.png"
}
customProps: { icon: '/img/icons/pydanticai.png' },
},
{
type: 'doc',
id: 'sdks/integrations/skills',
label: 'Skills',
customProps: { icon: '/img/icons/skills.png' },
},
],
},
{
type: 'category',
label: 'Hosting',
collapsible: false,
items: [
{
type: 'doc',
id: 'developer/installation',
label: 'Installation',
customProps: { icon: 'lu-package' },
},
{
type: 'doc',
id: 'developer/services',
label: 'Services',
customProps: { icon: 'lu-server' },
},
{
type: 'doc',
id: 'developer/configuration',
label: 'Configuration',
customProps: { icon: 'lu-settings' },
},
{
type: 'doc',
id: 'developer/admin-cli',
label: 'Admin CLI',
customProps: { icon: 'lu-terminal' },
},
{
type: 'doc',
id: 'developer/extensions',
label: 'Extensions',
customProps: { icon: 'lu-plug' },
},
{
type: 'doc',
id: 'developer/models',
label: 'Models',
customProps: { icon: 'lu-cpu' },
},
{
type: 'doc',
id: 'developer/monitoring',
label: 'Monitoring',
customProps: { icon: 'lu-activity' },
},
{
type: 'doc',
id: 'developer/mcp-server',
label: 'MCP Server',
customProps: { icon: 'lu-network' },
},
],
},

View file

@ -0,0 +1,47 @@
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
gap: 0.75rem;
margin: 1rem 0;
}
.anchor {
text-decoration: none;
color: var(--ifm-color-content);
}
.card {
display: flex;
flex-direction: column;
align-items: center;
gap: 0.5rem;
padding: 0.875rem 0.5rem;
border: 1px solid var(--ifm-color-emphasis-200);
border-radius: 0.5rem;
background: var(--ifm-background-surface-color);
transition: border-color 0.15s, background 0.15s;
}
.cardLink {
cursor: pointer;
}
.cardLink:hover {
border-color: var(--ifm-color-primary);
background: var(--ifm-color-primary-lightest);
}
.icon {
display: flex;
align-items: center;
justify-content: center;
opacity: 0.85;
}
.label {
font-size: 0.75rem;
font-weight: 500;
text-align: center;
line-height: 1.2;
color: var(--ifm-color-content);
}

View file

@ -0,0 +1,31 @@
import React from 'react';
import type {IconType} from 'react-icons';
import styles from './IconGrid.module.css';
export interface IconGridItem {
label: string;
href?: string;
icon?: IconType;
imgSrc?: string;
}
export function IconGrid({items}: {items: IconGridItem[]}) {
return (
<div className={styles.grid}>
{items.map(({label, href, icon: Icon, imgSrc}) => {
const card = (
<div className={`${styles.card} ${href ? styles.cardLink : ''}`}>
<div className={styles.icon}>
{Icon && <Icon size={28} />}
{imgSrc && <img src={imgSrc} alt={label} style={{width: 28, height: 28, objectFit: 'contain'}} />}
</div>
<span className={styles.label} style={{color: 'var(--ifm-font-color-base)', WebkitTextFillColor: 'var(--ifm-font-color-base)'}}>{label}</span>
</div>
);
return href
? <a key={label} href={href} className={styles.anchor}>{card}</a>
: <div key={label}>{card}</div>;
})}
</div>
);
}

View file

@ -0,0 +1,58 @@
import React from 'react';
import type {IconType} from 'react-icons';
import {IconGrid} from './IconGrid';
import {SiPython, SiGo, SiOpenai, SiAnthropic, SiGooglegemini, SiOllama, SiCrewai, SiPydantic, SiVercel} from 'react-icons/si';
import {LuTerminal, LuPlug, LuZap, LuBrainCog, LuSparkles, LuGlobe} from 'react-icons/lu';
const OpenAICompatibleIcon: IconType = ({size = 28, ...props}) => (
<span style={{position: 'relative', display: 'inline-flex'}}>
<SiOpenai size={size} {...props} />
<span style={{
position: 'absolute', bottom: -3, right: -6,
fontSize: Math.round((size as number) * 0.5), fontWeight: 900, lineHeight: 1,
color: 'currentColor',
}}>+</span>
</span>
);
export function ClientsGrid() {
return (
<IconGrid items={[
{ label: 'Python', icon: SiPython, href: '/sdks/python' },
{ label: 'TypeScript', imgSrc: '/img/icons/typescript.png', href: '/sdks/nodejs' },
{ label: 'Go', icon: SiGo, href: '/sdks/go' },
{ label: 'CLI', icon: LuTerminal, href: '/sdks/cli' },
{ label: 'HTTP', icon: LuGlobe, href: '/developer/api/quickstart' },
]} />
);
}
export function IntegrationsGrid() {
return (
<IconGrid items={[
{ label: 'Local MCP Server', imgSrc: '/img/icons/mcp.png', href: '/sdks/integrations/local-mcp' },
{ label: 'LiteLLM', imgSrc: '/img/icons/litellm.png', href: '/sdks/integrations/litellm' },
{ label: 'OpenClaw', imgSrc: '/img/icons/openclaw.png', href: '/sdks/integrations/openclaw' },
{ label: 'Vercel AI SDK', icon: SiVercel, href: '/sdks/integrations/ai-sdk' },
{ label: 'Vercel Chat SDK', icon: SiVercel, href: '/sdks/integrations/chat' },
{ label: 'CrewAI', imgSrc: '/img/icons/crewai.png', href: '/sdks/integrations/crewai' },
{ label: 'Pydantic AI', imgSrc: '/img/icons/pydanticai.png', href: '/sdks/integrations/pydantic-ai' },
{ label: 'Skills', imgSrc: '/img/icons/skills.png', href: '/sdks/integrations/skills' },
]} />
);
}
export function LLMProvidersGrid() {
return (
<IconGrid items={[
{ label: 'OpenAI', icon: SiOpenai },
{ label: 'Anthropic', icon: SiAnthropic },
{ label: 'Google Gemini', icon: SiGooglegemini },
{ label: 'Groq', icon: LuZap },
{ label: 'Ollama', icon: SiOllama },
{ label: 'LM Studio', icon: LuBrainCog },
{ label: 'MiniMax', icon: LuSparkles },
{ label: 'OpenAI Compatible', icon: OpenAICompatibleIcon },
]} />
);
}

View file

@ -348,17 +348,12 @@
/* Non-collapsible category styling */
.menu__list-item-collapsible {
font-weight: 600;
font-family: var(--ifm-heading-font-family);
font-weight: 700;
font-size: 0.6875rem;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--ifm-color-emphasis-600);
margin-top: 1rem;
margin-bottom: 0.25rem;
}
.menu__list-item-collapsible:first-child {
margin-top: 0;
letter-spacing: 0.06em;
color: var(--ifm-color-emphasis-700);
}
.menu__list-item-collapsible .menu__link {
@ -373,82 +368,18 @@
color: var(--ifm-color-emphasis-500);
}
/* Client sidebar icons */
a.menu__link[href*="/sdks/python"]::before,
a.menu__link[href*="/sdks/nodejs"]::before,
a.menu__link[href*="/sdks/cli"]::before,
a.menu__link[href*="/sdks/embed"]::before {
display: inline-block;
width: 18px;
height: 18px;
margin-right: 8px;
vertical-align: middle;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
content: '';
/* Space between sections */
li.theme-doc-sidebar-item-category-level-1 {
margin-top: 1.75rem;
}
/* Python logo */
a.menu__link[href*="/sdks/python"]::before {
background-image: url('/img/icons/python.svg');
li.theme-doc-sidebar-item-category-level-1:first-child {
margin-top: 0;
}
/* Node.js logo */
a.menu__link[href*="/sdks/nodejs"]::before {
background-image: url('/img/icons/nodejs.png');
}
/* CLI - terminal icon */
a.menu__link[href*="/sdks/cli"]::before {
background-image: url('/img/icons/terminal.svg');
}
/* Embedded SDK - package icon */
a.menu__link[href*="/sdks/embed"]::before {
background-image: url('/img/icons/package.svg');
}
/* Integration sidebar icons */
a.menu__link[href*="/sdks/integrations/local-mcp"]::before,
a.menu__link[href*="/sdks/integrations/litellm"]::before,
a.menu__link[href*="/sdks/integrations/openclaw"]::before,
a.menu__link[href*="/sdks/integrations/ai-sdk"]::before,
a.menu__link[href*="/sdks/integrations/skills"]::before {
display: inline-block;
width: 18px;
height: 18px;
margin-right: 8px;
vertical-align: middle;
background-size: contain;
background-repeat: no-repeat;
background-position: center;
content: '';
}
/* Local MCP Server */
a.menu__link[href*="/sdks/integrations/local-mcp"]::before {
background-image: url('/img/icons/mcp.png');
}
/* LiteLLM */
a.menu__link[href*="/sdks/integrations/litellm"]::before {
background-image: url('/img/icons/litellm.png');
}
/* OpenClaw */
a.menu__link[href*="/sdks/integrations/openclaw"]::before {
background-image: url('/img/icons/openclaw.png');
}
/* Vercel AI SDK */
a.menu__link[href*="/sdks/integrations/ai-sdk"]::before {
background-image: url('/img/icons/vercel.png');
}
/* Skills */
a.menu__link[href*="/sdks/integrations/skills"]::before {
background-image: url('/img/icons/skills.png');
/* Reduce item indentation */
.menu__list .menu__list {
padding-left: 0.5rem;
}
/* Code blocks */

View file

@ -4,6 +4,8 @@ description: Common questions and answers about Hindsight
hide_table_of_contents: false
---
import {ClientsGrid, IntegrationsGrid, LLMProvidersGrid} from '@site/src/components/SupportedGrids';
# Frequently Asked Questions
### What is Hindsight and how does it differ from RAG?
@ -37,17 +39,25 @@ Unlike vector databases (just search) or RAG systems (document retrieval), Hinds
---
### Which clients and languages are supported?
<ClientsGrid />
Any language can also use the [HTTP API](/developer/api/quickstart) directly.
---
### Which integrations are supported?
<IntegrationsGrid />
---
### Which LLM providers are supported?
Hindsight supports:
- **OpenAI**
- **Anthropic**
- **Google Gemini**
- **Groq**
- **Ollama** (local models)
- **LM Studio** (local models)
- **Any OpenAI-compatible provider** (Together AI, Fireworks, DeepInfra, etc.)
- **Any Anthropic-compatible provider**
<LLMProvidersGrid />
See [Models](/developer/models) for the full list of supported providers, recommended models, and configuration examples.
**Using local models with Ollama:**
```bash

View file

@ -2,6 +2,45 @@ import React from 'react';
import Link from '@theme-original/DocSidebarItem/Link';
import type LinkType from '@theme/DocSidebarItem/Link';
import type {WrapperProps} from '@docusaurus/types';
import type {IconType} from 'react-icons';
import {
LuBrain, LuRefreshCw, LuSearch, LuMessageSquare, LuLanguages,
LuZap, LuDatabase, LuGitCompare, LuRocket, LuMemoryStick,
LuWebhook, LuFileText, LuServer, LuSettings, LuTerminal,
LuActivity, LuPlug, LuShield, LuPackage, LuBook,
LuNetwork, LuCode2, LuLayers, LuCpu,
} from 'react-icons/lu';
import {SiGo, SiPython} from 'react-icons/si';
const ICON_MAP: Record<string, IconType> = {
'lu-brain': LuBrain,
'lu-refresh': LuRefreshCw,
'lu-search': LuSearch,
'lu-message': LuMessageSquare,
'lu-languages': LuLanguages,
'lu-zap': LuZap,
'lu-database': LuDatabase,
'lu-compare': LuGitCompare,
'lu-rocket': LuRocket,
'lu-memory': LuMemoryStick,
'lu-webhook': LuWebhook,
'lu-file': LuFileText,
'lu-server': LuServer,
'lu-settings': LuSettings,
'lu-terminal': LuTerminal,
'lu-activity': LuActivity,
'lu-plug': LuPlug,
'lu-shield': LuShield,
'lu-package': LuPackage,
'lu-book': LuBook,
'lu-network': LuNetwork,
'lu-code': LuCode2,
'lu-layers': LuLayers,
'lu-cpu': LuCpu,
'si-go': SiGo,
'si-python': SiPython,
};
type Props = WrapperProps<typeof LinkType>;
@ -13,20 +52,17 @@ export default function LinkWrapper(props: Props): JSX.Element {
return <Link {...props} />;
}
// Create a modified item with icon in the label
const IconComponent = ICON_MAP[icon];
const iconNode = IconComponent
? <IconComponent size={16} style={{flexShrink: 0, opacity: 0.65}} />
: <img src={icon} alt="" style={{width: '16px', height: '16px', flexShrink: 0, objectFit: 'contain'}} />;
const modifiedItem = {
...item,
label: (
<span style={{display: 'flex', alignItems: 'center', gap: '8px'}}>
<img
src={icon}
alt=""
style={{
width: '16px',
height: '16px',
flexShrink: 0
}}
/>
{iconNode}
<span>{item.label}</span>
</span>
),

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

View file

@ -2,7 +2,7 @@
sidebar_position: 2
---
# Node.js Client
# TypeScript Client
Official TypeScript/JavaScript client for the Hindsight API.

View file

@ -2,7 +2,7 @@
sidebar_position: 2
---
# Node.js Client
# TypeScript Client
Official TypeScript/JavaScript client for the Hindsight API.

View file

@ -5,46 +5,14 @@
"label": "Architecture",
"collapsible": false,
"items": [
{
"type": "doc",
"id": "developer/index",
"label": "Overview"
},
{
"type": "doc",
"id": "developer/retain",
"label": "Retain"
},
{
"type": "doc",
"id": "developer/retrieval",
"label": "Recall"
},
{
"type": "doc",
"id": "developer/reflect",
"label": "Reflect"
},
{
"type": "doc",
"id": "developer/multilingual",
"label": "Multilingual"
},
{
"type": "doc",
"id": "developer/performance",
"label": "Performance"
},
{
"type": "doc",
"id": "developer/storage",
"label": "Storage"
},
{
"type": "doc",
"id": "developer/rag-vs-hindsight",
"label": "RAG vs Memory"
}
{ "type": "doc", "id": "developer/index", "label": "Overview", "customProps": { "icon": "lu-book" } },
{ "type": "doc", "id": "developer/retain", "label": "Retain", "customProps": { "icon": "lu-brain" } },
{ "type": "doc", "id": "developer/retrieval", "label": "Recall", "customProps": { "icon": "lu-search" } },
{ "type": "doc", "id": "developer/reflect", "label": "Reflect", "customProps": { "icon": "lu-message" } },
{ "type": "doc", "id": "developer/multilingual", "label": "Multilingual", "customProps": { "icon": "lu-languages" } },
{ "type": "doc", "id": "developer/performance", "label": "Performance", "customProps": { "icon": "lu-zap" } },
{ "type": "doc", "id": "developer/storage", "label": "Storage", "customProps": { "icon": "lu-database" } },
{ "type": "doc", "id": "developer/rag-vs-hindsight", "label": "RAG vs Memory", "customProps": { "icon": "lu-compare" } }
]
},
{
@ -52,117 +20,24 @@
"label": "API",
"collapsible": false,
"items": [
{
"type": "doc",
"id": "developer/api/quickstart",
"label": "Quick Start"
},
{
"type": "doc",
"id": "developer/api/retain",
"label": "Retain"
},
{
"type": "doc",
"id": "developer/api/recall",
"label": "Recall"
},
{
"type": "doc",
"id": "developer/api/reflect",
"label": "Reflect"
},
{
"type": "doc",
"id": "developer/api/memory-banks",
"label": "Memory Banks"
},
{
"type": "doc",
"id": "developer/api/entities",
"label": "Entities"
},
{
"type": "doc",
"id": "developer/api/documents",
"label": "Documents"
},
{
"type": "doc",
"id": "developer/api/operations",
"label": "Operations"
}
{ "type": "doc", "id": "developer/api/quickstart", "label": "Quick Start", "customProps": { "icon": "lu-rocket" } },
{ "type": "doc", "id": "developer/api/retain", "label": "Retain", "customProps": { "icon": "lu-brain" } },
{ "type": "doc", "id": "developer/api/recall", "label": "Recall", "customProps": { "icon": "lu-search" } },
{ "type": "doc", "id": "developer/api/reflect", "label": "Reflect", "customProps": { "icon": "lu-message" } },
{ "type": "doc", "id": "developer/api/memory-banks", "label": "Memory Banks", "customProps": { "icon": "lu-memory" } },
{ "type": "doc", "id": "developer/api/entities", "label": "Entities", "customProps": { "icon": "lu-network" } },
{ "type": "doc", "id": "developer/api/documents", "label": "Documents", "customProps": { "icon": "lu-file" } },
{ "type": "doc", "id": "developer/api/operations", "label": "Operations", "customProps": { "icon": "lu-cpu" } }
]
},
{
"type": "category",
"label": "Hosting",
"collapsible": false,
"items": [
{
"type": "doc",
"id": "developer/installation",
"label": "Installation"
},
{
"type": "doc",
"id": "developer/services",
"label": "Services"
},
{
"type": "doc",
"id": "developer/configuration",
"label": "Configuration"
},
{
"type": "doc",
"id": "developer/admin-cli",
"label": "Admin CLI"
},
{
"type": "doc",
"id": "developer/extensions",
"label": "Extensions"
},
{
"type": "doc",
"id": "developer/models",
"label": "Models"
},
{
"type": "doc",
"id": "developer/monitoring",
"label": "Monitoring"
},
{
"type": "doc",
"id": "developer/mcp-server",
"label": "MCP Server"
}
]
}
],
"sdksSidebar": [
{
"type": "category",
"label": "Clients",
"collapsible": false,
"items": [
{
"type": "doc",
"id": "sdks/python",
"label": "Python"
},
{
"type": "doc",
"id": "sdks/nodejs",
"label": "Node.js"
},
{
"type": "doc",
"id": "sdks/cli",
"label": "CLI"
}
{ "type": "doc", "id": "sdks/python", "label": "Python", "customProps": { "icon": "si-python" } },
{ "type": "doc", "id": "sdks/nodejs", "label": "TypeScript", "customProps": { "icon": "/img/icons/typescript.png" } },
{ "type": "doc", "id": "sdks/cli", "label": "CLI", "customProps": { "icon": "lu-terminal" } }
]
},
{
@ -170,22 +45,25 @@
"label": "Integrations",
"collapsible": false,
"items": [
{
"type": "doc",
"id": "sdks/integrations/local-mcp",
"label": "Local MCP Server"
},
{
"type": "doc",
"id": "sdks/integrations/litellm",
"label": "LiteLLM"
},
{
"type": "doc",
"id": "sdks/integrations/skills",
"label": "Skills"
}
{ "type": "doc", "id": "sdks/integrations/local-mcp", "label": "Local MCP Server", "customProps": { "icon": "/img/icons/mcp.png" } },
{ "type": "doc", "id": "sdks/integrations/litellm", "label": "LiteLLM", "customProps": { "icon": "/img/icons/litellm.png" } },
{ "type": "doc", "id": "sdks/integrations/skills", "label": "Skills", "customProps": { "icon": "/img/icons/skills.png" } }
]
},
{
"type": "category",
"label": "Hosting",
"collapsible": false,
"items": [
{ "type": "doc", "id": "developer/installation", "label": "Installation", "customProps": { "icon": "lu-package" } },
{ "type": "doc", "id": "developer/services", "label": "Services", "customProps": { "icon": "lu-server" } },
{ "type": "doc", "id": "developer/configuration", "label": "Configuration", "customProps": { "icon": "lu-settings" } },
{ "type": "doc", "id": "developer/admin-cli", "label": "Admin CLI", "customProps": { "icon": "lu-terminal" } },
{ "type": "doc", "id": "developer/extensions", "label": "Extensions", "customProps": { "icon": "lu-plug" } },
{ "type": "doc", "id": "developer/models", "label": "Models", "customProps": { "icon": "lu-cpu" } },
{ "type": "doc", "id": "developer/monitoring", "label": "Monitoring", "customProps": { "icon": "lu-activity" } },
{ "type": "doc", "id": "developer/mcp-server", "label": "MCP Server", "customProps": { "icon": "lu-network" } }
]
}
]
}
}

View file

@ -5,51 +5,15 @@
"label": "Architecture",
"collapsible": false,
"items": [
{
"type": "doc",
"id": "developer/index",
"label": "Overview"
},
{
"type": "doc",
"id": "developer/retain",
"label": "Retain"
},
{
"type": "doc",
"id": "developer/retrieval",
"label": "Recall"
},
{
"type": "doc",
"id": "developer/reflect",
"label": "Reflect"
},
{
"type": "doc",
"id": "developer/observations",
"label": "Observations"
},
{
"type": "doc",
"id": "developer/multilingual",
"label": "Multilingual"
},
{
"type": "doc",
"id": "developer/performance",
"label": "Performance"
},
{
"type": "doc",
"id": "developer/storage",
"label": "Storage"
},
{
"type": "doc",
"id": "developer/rag-vs-hindsight",
"label": "RAG vs Memory"
}
{ "type": "doc", "id": "developer/index", "label": "Overview", "customProps": { "icon": "lu-book" } },
{ "type": "doc", "id": "developer/retain", "label": "Retain", "customProps": { "icon": "lu-brain" } },
{ "type": "doc", "id": "developer/retrieval", "label": "Recall", "customProps": { "icon": "lu-search" } },
{ "type": "doc", "id": "developer/reflect", "label": "Reflect", "customProps": { "icon": "lu-message" } },
{ "type": "doc", "id": "developer/observations", "label": "Observations", "customProps": { "icon": "lu-activity" } },
{ "type": "doc", "id": "developer/multilingual", "label": "Multilingual", "customProps": { "icon": "lu-languages" } },
{ "type": "doc", "id": "developer/performance", "label": "Performance", "customProps": { "icon": "lu-zap" } },
{ "type": "doc", "id": "developer/storage", "label": "Storage", "customProps": { "icon": "lu-database" } },
{ "type": "doc", "id": "developer/rag-vs-hindsight", "label": "RAG vs Memory", "customProps": { "icon": "lu-compare" } }
]
},
{
@ -57,135 +21,27 @@
"label": "API",
"collapsible": false,
"items": [
{
"type": "doc",
"id": "developer/api/quickstart",
"label": "Quick Start"
},
{
"type": "doc",
"id": "developer/api/retain",
"label": "Retain"
},
{
"type": "doc",
"id": "developer/api/recall",
"label": "Recall"
},
{
"type": "doc",
"id": "developer/api/reflect",
"label": "Reflect"
},
{
"type": "doc",
"id": "developer/api/mental-models",
"label": "Mental Models"
},
{
"type": "doc",
"id": "developer/api/memory-banks",
"label": "Memory Banks"
},
{
"type": "doc",
"id": "developer/api/documents",
"label": "Documents"
},
{
"type": "doc",
"id": "developer/api/operations",
"label": "Operations"
},
{
"type": "doc",
"id": "developer/api/webhooks",
"label": "Webhooks"
}
{ "type": "doc", "id": "developer/api/quickstart", "label": "Quick Start", "customProps": { "icon": "lu-rocket" } },
{ "type": "doc", "id": "developer/api/retain", "label": "Retain", "customProps": { "icon": "lu-brain" } },
{ "type": "doc", "id": "developer/api/recall", "label": "Recall", "customProps": { "icon": "lu-search" } },
{ "type": "doc", "id": "developer/api/reflect", "label": "Reflect", "customProps": { "icon": "lu-message" } },
{ "type": "doc", "id": "developer/api/mental-models", "label": "Mental Models", "customProps": { "icon": "lu-layers" } },
{ "type": "doc", "id": "developer/api/memory-banks", "label": "Memory Banks", "customProps": { "icon": "lu-memory" } },
{ "type": "doc", "id": "developer/api/documents", "label": "Documents", "customProps": { "icon": "lu-file" } },
{ "type": "doc", "id": "developer/api/operations", "label": "Operations", "customProps": { "icon": "lu-cpu" } },
{ "type": "doc", "id": "developer/api/webhooks", "label": "Webhooks", "customProps": { "icon": "lu-webhook" } }
]
},
{
"type": "category",
"label": "Hosting",
"collapsible": false,
"items": [
{
"type": "doc",
"id": "developer/installation",
"label": "Installation"
},
{
"type": "doc",
"id": "developer/services",
"label": "Services"
},
{
"type": "doc",
"id": "developer/configuration",
"label": "Configuration"
},
{
"type": "doc",
"id": "developer/admin-cli",
"label": "Admin CLI"
},
{
"type": "doc",
"id": "developer/extensions",
"label": "Extensions"
},
{
"type": "doc",
"id": "developer/models",
"label": "Models"
},
{
"type": "doc",
"id": "developer/monitoring",
"label": "Monitoring"
},
{
"type": "doc",
"id": "developer/mcp-server",
"label": "MCP Server"
}
]
}
],
"sdksSidebar": [
{
"type": "category",
"label": "Clients",
"collapsible": false,
"items": [
{
"type": "doc",
"id": "sdks/python",
"label": "Python"
},
{
"type": "doc",
"id": "sdks/nodejs",
"label": "Node.js"
},
{
"type": "doc",
"id": "sdks/go",
"label": "Go",
"customProps": {
"icon": "/img/icons/golang.png"
}
},
{
"type": "doc",
"id": "sdks/cli",
"label": "CLI"
},
{
"type": "doc",
"id": "sdks/embed",
"label": "Embedded Python"
}
{ "type": "doc", "id": "sdks/python", "label": "Python", "customProps": { "icon": "si-python" } },
{ "type": "doc", "id": "sdks/nodejs", "label": "TypeScript", "customProps": { "icon": "/img/icons/typescript.png" } },
{ "type": "doc", "id": "sdks/go", "label": "Go", "customProps": { "icon": "si-go" } },
{ "type": "doc", "id": "sdks/cli", "label": "CLI", "customProps": { "icon": "lu-terminal" } },
{ "type": "doc", "id": "sdks/embed", "label": "Embedded Python", "customProps": { "icon": "/img/icons/package.svg" } }
]
},
{
@ -193,55 +49,29 @@
"label": "Integrations",
"collapsible": false,
"items": [
{
"type": "doc",
"id": "sdks/integrations/local-mcp",
"label": "Local MCP Server"
},
{
"type": "doc",
"id": "sdks/integrations/litellm",
"label": "LiteLLM"
},
{
"type": "doc",
"id": "sdks/integrations/openclaw",
"label": "OpenClaw"
},
{
"type": "doc",
"id": "sdks/integrations/ai-sdk",
"label": "Vercel AI SDK"
},
{
"type": "doc",
"id": "sdks/integrations/chat",
"label": "Vercel Chat SDK",
"customProps": {
"icon": "/img/icons/vercel.png"
}
},
{
"type": "doc",
"id": "sdks/integrations/crewai",
"label": "CrewAI",
"customProps": {
"icon": "/img/icons/crewai.png"
}
},
{
"type": "doc",
"id": "sdks/integrations/pydantic-ai",
"label": "Pydantic AI",
"customProps": {
"icon": "/img/icons/pydanticai.png"
}
},
{
"type": "doc",
"id": "sdks/integrations/skills",
"label": "Skills"
}
{ "type": "doc", "id": "sdks/integrations/local-mcp", "label": "Local MCP Server", "customProps": { "icon": "/img/icons/mcp.png" } },
{ "type": "doc", "id": "sdks/integrations/litellm", "label": "LiteLLM", "customProps": { "icon": "/img/icons/litellm.png" } },
{ "type": "doc", "id": "sdks/integrations/openclaw", "label": "OpenClaw", "customProps": { "icon": "/img/icons/openclaw.png" } },
{ "type": "doc", "id": "sdks/integrations/ai-sdk", "label": "Vercel AI SDK", "customProps": { "icon": "/img/icons/vercel.png" } },
{ "type": "doc", "id": "sdks/integrations/chat", "label": "Vercel Chat SDK", "customProps": { "icon": "/img/icons/vercel.png" } },
{ "type": "doc", "id": "sdks/integrations/crewai", "label": "CrewAI", "customProps": { "icon": "/img/icons/crewai.png" } },
{ "type": "doc", "id": "sdks/integrations/pydantic-ai", "label": "Pydantic AI", "customProps": { "icon": "/img/icons/pydanticai.png" } },
{ "type": "doc", "id": "sdks/integrations/skills", "label": "Skills", "customProps": { "icon": "/img/icons/skills.png" } }
]
},
{
"type": "category",
"label": "Hosting",
"collapsible": false,
"items": [
{ "type": "doc", "id": "developer/installation", "label": "Installation", "customProps": { "icon": "lu-package" } },
{ "type": "doc", "id": "developer/services", "label": "Services", "customProps": { "icon": "lu-server" } },
{ "type": "doc", "id": "developer/configuration", "label": "Configuration", "customProps": { "icon": "lu-settings" } },
{ "type": "doc", "id": "developer/admin-cli", "label": "Admin CLI", "customProps": { "icon": "lu-terminal" } },
{ "type": "doc", "id": "developer/extensions", "label": "Extensions", "customProps": { "icon": "lu-plug" } },
{ "type": "doc", "id": "developer/models", "label": "Models", "customProps": { "icon": "lu-cpu" } },
{ "type": "doc", "id": "developer/monitoring", "label": "Monitoring", "customProps": { "icon": "lu-activity" } },
{ "type": "doc", "id": "developer/mcp-server", "label": "MCP Server", "customProps": { "icon": "lu-network" } }
]
}
]

14
package-lock.json generated
View file

@ -13,7 +13,7 @@
},
"hindsight-clients/typescript": {
"name": "@vectorize-io/hindsight-client",
"version": "0.4.15",
"version": "0.4.17",
"license": "MIT",
"devDependencies": {
"@hey-api/openapi-ts": "0.88.0",
@ -131,7 +131,7 @@
},
"hindsight-control-plane": {
"name": "@vectorize-io/hindsight-control-plane",
"version": "0.4.15",
"version": "0.4.17",
"license": "ISC",
"dependencies": {
"@radix-ui/react-alert-dialog": "^1.1.15",
@ -434,6 +434,7 @@
"raw-loader": "^4.0.2",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-icons": "^5.6.0",
"redocusaurus": "^2.5.0"
},
"devDependencies": {
@ -24638,6 +24639,15 @@
"react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
"node_modules/react-icons": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.6.0.tgz",
"integrity": "sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA==",
"license": "MIT",
"peerDependencies": {
"react": "*"
}
},
"node_modules/react-json-view-lite": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz",