fleet-memory/hindsight-docs/examples/api/cli-reference.sh
DK09876 d405b4feed
ci: finalize test for the documentation code (#57)
* Fix main-methods.py: entities is a dict, use .items() and .canonical_name

* Migrate docs to use CodeSnippet components

- Convert quickstart.md, retain.md, recall.md, reflect.md, memory-banks.md to .mdx
- Use CodeSnippet to pull code from validated example scripts
- Add missing 'name' parameter to create_bank calls
- Fix main-methods.py entities iteration (dict not list)
- Remove retain-new.mdx demo file

* Migrate existing docs to match testing pattern with code snippet and add CLI tests to the CI

* Fix doc-id issue + add main-method tests

* CLI fixes

* Update openAPI json

* Fix rust build issues

* increase sleep time for Hindsight to process the document

* Added a polling sleep instead of fixed

* Delete immediately fails, so create the doc a earlier in the test to get the doc ready

* Add debug logs

* Remove debug logs
2025-12-19 12:17:59 -07:00

208 lines
6.1 KiB
Bash
Executable file

#!/bin/bash
# CLI Reference examples for Hindsight
# Tests all documented CLI commands and flags
# Run: bash examples/api/cli-reference.sh
set -e
HINDSIGHT_URL="${HINDSIGHT_API_URL:-http://localhost:8888}"
BANK_ID="cli-test-bank"
DOC_ID="test-document-001"
# =============================================================================
# Setup
# =============================================================================
hindsight configure --api-url "$HINDSIGHT_URL"
# Create test data with a known document ID
hindsight memory retain "$BANK_ID" "Alice works at Google as a software engineer" --doc-id "$DOC_ID"
hindsight memory retain "$BANK_ID" "Bob is a data scientist who collaborates with Alice" --doc-id "$DOC_ID"
hindsight memory retain "$BANK_ID" "Alice and Bob work on machine learning projects"
# Create document for delete test early so it has time to index
hindsight memory retain "$BANK_ID" "Carol is a project manager who coordinates the engineering team" --doc-id "temp-doc-to-delete"
# Wait for memories to be indexed (LLM processing takes time)
sleep 5
# =============================================================================
# Configuration (cli.md - Configuration section)
# =============================================================================
# [docs:cli-configure]
hindsight configure --api-url http://localhost:8888
# [/docs:cli-configure]
# =============================================================================
# Core Memory Commands (cli.md - Core Commands section)
# =============================================================================
# [docs:cli-retain-basic]
hindsight memory retain $BANK_ID "Alice works at Google as a software engineer"
# [/docs:cli-retain-basic]
# [docs:cli-retain-context]
hindsight memory retain $BANK_ID "Bob loves hiking" --context "hobby discussion"
# [/docs:cli-retain-context]
# [docs:cli-retain-async]
hindsight memory retain $BANK_ID "Meeting notes" --async
# [/docs:cli-retain-async]
# [docs:cli-recall-basic]
hindsight memory recall $BANK_ID "What does Alice do?"
# [/docs:cli-recall-basic]
# [docs:cli-recall-options]
hindsight memory recall $BANK_ID "hiking recommendations" \
--budget high \
--max-tokens 8192
# [/docs:cli-recall-options]
# [docs:cli-recall-fact-type]
hindsight memory recall $BANK_ID "query" --fact-type world,opinion
# [/docs:cli-recall-fact-type]
# [docs:cli-recall-trace]
hindsight memory recall $BANK_ID "query" --trace
# [/docs:cli-recall-trace]
# [docs:cli-reflect-basic]
hindsight memory reflect $BANK_ID "What do you know about Alice?"
# [/docs:cli-reflect-basic]
# [docs:cli-reflect-context]
hindsight memory reflect $BANK_ID "Should I learn Python?" --context "career advice"
# [/docs:cli-reflect-context]
# [docs:cli-reflect-budget]
hindsight memory reflect $BANK_ID "Summarize my week" --budget high
# [/docs:cli-reflect-budget]
# =============================================================================
# Bank Management (cli.md - Bank Management section)
# =============================================================================
# [docs:cli-bank-list]
hindsight bank list
# [/docs:cli-bank-list]
# [docs:cli-bank-disposition]
hindsight bank disposition $BANK_ID
# [/docs:cli-bank-disposition]
# [docs:cli-bank-stats]
hindsight bank stats $BANK_ID
# [/docs:cli-bank-stats]
# [docs:cli-bank-name]
hindsight bank name $BANK_ID "My Assistant"
# [/docs:cli-bank-name]
# [docs:cli-bank-background]
hindsight bank background $BANK_ID "I am a helpful AI assistant interested in technology"
# [/docs:cli-bank-background]
# [docs:cli-bank-background-no-disposition]
hindsight bank background $BANK_ID "Background text" --no-update-disposition
# [/docs:cli-bank-background-no-disposition]
# =============================================================================
# Document Management (cli.md - Document Management section)
# =============================================================================
# [docs:cli-document-list]
hindsight document list $BANK_ID
# [/docs:cli-document-list]
# [docs:cli-document-get]
hindsight document get $BANK_ID $DOC_ID
# [/docs:cli-document-get]
# [docs:cli-document-delete]
hindsight document delete $BANK_ID temp-doc-to-delete
# [/docs:cli-document-delete]
# =============================================================================
# Entity Management (cli.md - Entity Management section)
# =============================================================================
# [docs:cli-entity-list]
hindsight entity list $BANK_ID
# [/docs:cli-entity-list]
# Get an entity ID from the list output and use it
ENTITY_ID=$(hindsight entity list $BANK_ID -o json 2>/dev/null | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "")
if [ -n "$ENTITY_ID" ]; then
# [docs:cli-entity-get]
hindsight entity get $BANK_ID $ENTITY_ID
# [/docs:cli-entity-get]
# [docs:cli-entity-regenerate]
hindsight entity regenerate $BANK_ID $ENTITY_ID
# [/docs:cli-entity-regenerate]
else
echo "No entities found yet, skipping entity get/regenerate"
fi
# =============================================================================
# Output Formats (cli.md - Output Formats section)
# =============================================================================
# [docs:cli-output-json]
hindsight memory recall $BANK_ID "query" -o json
# [/docs:cli-output-json]
# [docs:cli-output-yaml]
hindsight memory recall $BANK_ID "query" -o yaml
# [/docs:cli-output-yaml]
# =============================================================================
# Global Options (cli.md - Global Options section)
# =============================================================================
# [docs:cli-verbose]
hindsight memory recall $BANK_ID "Alice" -v
# [/docs:cli-verbose]
# [docs:cli-help]
hindsight --help
# [/docs:cli-help]
# [docs:cli-version]
hindsight --version
# [/docs:cli-version]
# =============================================================================
# Cleanup
# =============================================================================
curl -s -X DELETE "${HINDSIGHT_URL}/v1/default/banks/${BANK_ID}" > /dev/null
echo "cli-reference.sh: All examples passed"