From 06200f1752348a2c6bfa957640fae395a93d4d20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Boschi?= Date: Fri, 13 Mar 2026 14:12:42 +0100 Subject: [PATCH] docs: revamp sidebar with icon grids and language support (#563) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- .../docs/developer/api/quickstart.mdx | 9 + .../docs/developer/{index.md => index.mdx} | 10 + .../docs/developer/{models.md => models.mdx} | 18 +- hindsight-docs/docs/sdks/nodejs.md | 2 +- hindsight-docs/docusaurus.config.ts | 11 +- hindsight-docs/package.json | 1 + hindsight-docs/sidebars.ts | 149 +++++----- .../src/components/IconGrid.module.css | 47 ++++ hindsight-docs/src/components/IconGrid.tsx | 31 +++ .../src/components/SupportedGrids.tsx | 58 ++++ hindsight-docs/src/css/custom.css | 93 +------ hindsight-docs/src/pages/{faq.md => faq.mdx} | 28 +- .../src/theme/DocSidebarItem/Link/index.tsx | 56 +++- .../static/img/icons/typescript.png | Bin 0 -> 313 bytes .../versioned_docs/version-0.3/sdks/nodejs.md | 2 +- .../versioned_docs/version-0.4/sdks/nodejs.md | 2 +- .../version-0.3-sidebars.json | 198 +++---------- .../version-0.4-sidebars.json | 262 +++--------------- package-lock.json | 14 +- 19 files changed, 432 insertions(+), 559 deletions(-) rename hindsight-docs/docs/developer/{index.md => index.mdx} (97%) rename hindsight-docs/docs/developer/{models.md => models.mdx} (96%) create mode 100644 hindsight-docs/src/components/IconGrid.module.css create mode 100644 hindsight-docs/src/components/IconGrid.tsx create mode 100644 hindsight-docs/src/components/SupportedGrids.tsx rename hindsight-docs/src/pages/{faq.md => faq.mdx} (96%) create mode 100644 hindsight-docs/static/img/icons/typescript.png diff --git a/hindsight-docs/docs/developer/api/quickstart.mdx b/hindsight-docs/docs/developer/api/quickstart.mdx index 65bacef2..2f6bab98 100644 --- a/hindsight-docs/docs/developer/api/quickstart.mdx +++ b/hindsight-docs/docs/developer/api/quickstart.mdx @@ -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 + + + ## Start the API Server @@ -100,6 +105,10 @@ curl -fsSL https://hindsight.vectorize.io/get-cli | bash --- +## Integrations + + + ## Next Steps - [**Retain**](./retain) — Advanced options for storing memories diff --git a/hindsight-docs/docs/developer/index.md b/hindsight-docs/docs/developer/index.mdx similarity index 97% rename from hindsight-docs/docs/developer/index.md rename to hindsight-docs/docs/developer/index.mdx index 8c25e95b..22a712d2 100644 --- a/hindsight-docs/docs/developer/index.md +++ b/hindsight-docs/docs/developer/index.mdx @@ -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 + + + +## Integrations + + + ## Next Steps ### Getting Started diff --git a/hindsight-docs/docs/developer/models.md b/hindsight-docs/docs/developer/models.mdx similarity index 96% rename from hindsight-docs/docs/developer/models.md rename to hindsight-docs/docs/developer/models.mdx index 6b23150a..22bb8c95 100644 --- a/hindsight-docs/docs/developer/models.md +++ b/hindsight-docs/docs/developer/models.mdx @@ -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:** + + + +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. diff --git a/hindsight-docs/docs/sdks/nodejs.md b/hindsight-docs/docs/sdks/nodejs.md index 38d87132..767125eb 100644 --- a/hindsight-docs/docs/sdks/nodejs.md +++ b/hindsight-docs/docs/sdks/nodejs.md @@ -2,7 +2,7 @@ sidebar_position: 2 --- -# Node.js Client +# TypeScript Client Official TypeScript/JavaScript client for the Hindsight API. diff --git a/hindsight-docs/docusaurus.config.ts b/hindsight-docs/docusaurus.config.ts index f5916ead..ec858ed8 100644 --- a/hindsight-docs/docusaurus.config.ts +++ b/hindsight-docs/docusaurus.config.ts @@ -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', }, { diff --git a/hindsight-docs/package.json b/hindsight-docs/package.json index 73252453..e4c3bc36 100644 --- a/hindsight-docs/package.json +++ b/hindsight-docs/package.json @@ -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": { diff --git a/hindsight-docs/sidebars.ts b/hindsight-docs/sidebars.ts index f9eb497d..abaadb61 100644 --- a/hindsight-docs/sidebars.ts +++ b/hindsight-docs/sidebars.ts @@ -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' }, }, ], }, diff --git a/hindsight-docs/src/components/IconGrid.module.css b/hindsight-docs/src/components/IconGrid.module.css new file mode 100644 index 00000000..474d8be3 --- /dev/null +++ b/hindsight-docs/src/components/IconGrid.module.css @@ -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); +} diff --git a/hindsight-docs/src/components/IconGrid.tsx b/hindsight-docs/src/components/IconGrid.tsx new file mode 100644 index 00000000..158ed676 --- /dev/null +++ b/hindsight-docs/src/components/IconGrid.tsx @@ -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 ( +
+ {items.map(({label, href, icon: Icon, imgSrc}) => { + const card = ( +
+
+ {Icon && } + {imgSrc && {label}} +
+ {label} +
+ ); + return href + ? {card} + :
{card}
; + })} +
+ ); +} diff --git a/hindsight-docs/src/components/SupportedGrids.tsx b/hindsight-docs/src/components/SupportedGrids.tsx new file mode 100644 index 00000000..1c5aa2d7 --- /dev/null +++ b/hindsight-docs/src/components/SupportedGrids.tsx @@ -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}) => ( + + + + + +); + +export function ClientsGrid() { + return ( + + ); +} + +export function IntegrationsGrid() { + return ( + + ); +} + +export function LLMProvidersGrid() { + return ( + + ); +} diff --git a/hindsight-docs/src/css/custom.css b/hindsight-docs/src/css/custom.css index 9eccdff7..22f7b310 100644 --- a/hindsight-docs/src/css/custom.css +++ b/hindsight-docs/src/css/custom.css @@ -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 */ diff --git a/hindsight-docs/src/pages/faq.md b/hindsight-docs/src/pages/faq.mdx similarity index 96% rename from hindsight-docs/src/pages/faq.md rename to hindsight-docs/src/pages/faq.mdx index 62f1a3ab..f621634e 100644 --- a/hindsight-docs/src/pages/faq.md +++ b/hindsight-docs/src/pages/faq.mdx @@ -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? + + + +Any language can also use the [HTTP API](/developer/api/quickstart) directly. + +--- + +### Which integrations are supported? + + + +--- + ### 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** + + +See [Models](/developer/models) for the full list of supported providers, recommended models, and configuration examples. **Using local models with Ollama:** ```bash diff --git a/hindsight-docs/src/theme/DocSidebarItem/Link/index.tsx b/hindsight-docs/src/theme/DocSidebarItem/Link/index.tsx index 2e938b9f..be9c2c7f 100644 --- a/hindsight-docs/src/theme/DocSidebarItem/Link/index.tsx +++ b/hindsight-docs/src/theme/DocSidebarItem/Link/index.tsx @@ -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 = { + '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; @@ -13,20 +52,17 @@ export default function LinkWrapper(props: Props): JSX.Element { return ; } - // Create a modified item with icon in the label + const IconComponent = ICON_MAP[icon]; + + const iconNode = IconComponent + ? + : ; + const modifiedItem = { ...item, label: ( - + {iconNode} {item.label} ), diff --git a/hindsight-docs/static/img/icons/typescript.png b/hindsight-docs/static/img/icons/typescript.png new file mode 100644 index 0000000000000000000000000000000000000000..72788252568ae6e99c4819958861f0f0f396124a GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s3?yAI>n{UR#sNMduG$4#jB3vtRvgpFTB}@i z#J=HV_lCO{?teUW`+d}e^D7TOeevPv|NsAs=U)@cJ+$}YYqg9G?#$Y|f!YO2g8YJc zR{rM!O2Ywo_8ZU6tj?BLortlS~%&3KgKjOyR`yCc8TNnX!FN3G6pUXO@geCyt C6ovZ$ literal 0 HcmV?d00001 diff --git a/hindsight-docs/versioned_docs/version-0.3/sdks/nodejs.md b/hindsight-docs/versioned_docs/version-0.3/sdks/nodejs.md index e2406c09..2d2d9987 100644 --- a/hindsight-docs/versioned_docs/version-0.3/sdks/nodejs.md +++ b/hindsight-docs/versioned_docs/version-0.3/sdks/nodejs.md @@ -2,7 +2,7 @@ sidebar_position: 2 --- -# Node.js Client +# TypeScript Client Official TypeScript/JavaScript client for the Hindsight API. diff --git a/hindsight-docs/versioned_docs/version-0.4/sdks/nodejs.md b/hindsight-docs/versioned_docs/version-0.4/sdks/nodejs.md index 38d87132..767125eb 100644 --- a/hindsight-docs/versioned_docs/version-0.4/sdks/nodejs.md +++ b/hindsight-docs/versioned_docs/version-0.4/sdks/nodejs.md @@ -2,7 +2,7 @@ sidebar_position: 2 --- -# Node.js Client +# TypeScript Client Official TypeScript/JavaScript client for the Hindsight API. diff --git a/hindsight-docs/versioned_sidebars/version-0.3-sidebars.json b/hindsight-docs/versioned_sidebars/version-0.3-sidebars.json index a7610695..42fb7e70 100644 --- a/hindsight-docs/versioned_sidebars/version-0.3-sidebars.json +++ b/hindsight-docs/versioned_sidebars/version-0.3-sidebars.json @@ -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" } } ] } ] -} \ No newline at end of file +} diff --git a/hindsight-docs/versioned_sidebars/version-0.4-sidebars.json b/hindsight-docs/versioned_sidebars/version-0.4-sidebars.json index 4a8f5f23..1d74ec9c 100644 --- a/hindsight-docs/versioned_sidebars/version-0.4-sidebars.json +++ b/hindsight-docs/versioned_sidebars/version-0.4-sidebars.json @@ -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" } } ] } ] diff --git a/package-lock.json b/package-lock.json index 5ff7ea14..dba1d3d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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",