* Add documentation code validation system - Create runnable example scripts in examples/api/ (19 files) - Add CodeSnippet component for extracting marked sections - Add raw-loader dependency for importing source files - Create sample retain-new.mdx showing new approach - Add README documenting coverage and gaps * Fix wheel glob expansion in test-doc-examples CI job * Fix CI issue * Fix wheel path - uv build outputs to repo root dist/ * Fix: use explicit shell expansion for wheel install * Fix: run cd in subshell so install runs from repo root * Add documentation code validation CI job - Use uv sync + uv run pattern (matches existing CI) - Add requests to test dependencies for cleanup scripts * Fix async API client usage in documents.py example * Fix main-methods.py: RecallResult and ReflectFact don't have weight attribute * Fix opinions.py: use actual API attributes instead of non-existent ones * Fix example scripts: remove non-existent API attributes - recall.py: remove .weight, fix entities iteration (dict not list) - retain.mjs: remove result.async check
68 lines
2.3 KiB
JavaScript
68 lines
2.3 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* Documents API examples for Hindsight (Node.js)
|
|
* Run: node examples/api/documents.mjs
|
|
*/
|
|
import { HindsightClient, sdk, createClient, createConfig } from '@vectorize-io/hindsight-client';
|
|
|
|
const HINDSIGHT_URL = process.env.HINDSIGHT_API_URL || 'http://localhost:8888';
|
|
|
|
// =============================================================================
|
|
// Setup (not shown in docs)
|
|
// =============================================================================
|
|
const client = new HindsightClient({ baseUrl: HINDSIGHT_URL });
|
|
|
|
// =============================================================================
|
|
// Doc Examples
|
|
// =============================================================================
|
|
|
|
// [docs:document-retain]
|
|
// Retain with document ID
|
|
await client.retain('my-bank', 'Alice presented the Q4 roadmap...', {
|
|
document_id: 'meeting-2024-03-15'
|
|
});
|
|
|
|
// Batch retain
|
|
await client.retainBatch('my-bank', [
|
|
{ content: 'Item 1: Product launch delayed to Q2' },
|
|
{ content: 'Item 2: New hiring targets announced' },
|
|
{ content: 'Item 3: Budget approved for ML team' }
|
|
], { documentId: 'meeting-2024-03-15' });
|
|
// [/docs:document-retain]
|
|
|
|
|
|
// [docs:document-update]
|
|
// Original
|
|
await client.retain('my-bank', 'Project deadline: March 31', {
|
|
document_id: 'project-plan'
|
|
});
|
|
|
|
// Update
|
|
await client.retain('my-bank', 'Project deadline: April 15 (extended)', {
|
|
document_id: 'project-plan'
|
|
});
|
|
// [/docs:document-update]
|
|
|
|
|
|
// [docs:document-get]
|
|
const apiClient = createClient(createConfig({ baseUrl: 'http://localhost:8888' }));
|
|
|
|
// Get document to expand context from recall results
|
|
const { data: doc } = await sdk.getDocument({
|
|
client: apiClient,
|
|
path: { bank_id: 'my-bank', document_id: 'meeting-2024-03-15' }
|
|
});
|
|
|
|
console.log(`Document: ${doc.id}`);
|
|
console.log(`Original text: ${doc.original_text}`);
|
|
console.log(`Memory count: ${doc.memory_unit_count}`);
|
|
console.log(`Created: ${doc.created_at}`);
|
|
// [/docs:document-get]
|
|
|
|
|
|
// =============================================================================
|
|
// Cleanup (not shown in docs)
|
|
// =============================================================================
|
|
await fetch(`${HINDSIGHT_URL}/v1/default/banks/my-bank`, { method: 'DELETE' });
|
|
|
|
console.log('documents.mjs: All examples passed');
|