0.0.1 • Published 7 months ago
@synehq/agentic-duckdb v0.0.1
Agentic DuckDB Source
This directory contains the core implementation of the Agentic DuckDB library, which provides an AI-friendly interface to DuckDB operations. The library is designed to make it easy to work with DuckDB databases in AI-powered applications.
Directory Structure
DuckDbTools.ts- Core utility class for DuckDB operationsduck-db.ts- AI-friendly wrapper with function decoratorstypes/- TypeScript type definitionsindex.ts- Main entry point and exports
Core Components
DuckDbTools
DuckDbTools is a utility class that provides low-level operations for interacting with DuckDB databases. Key features include:
- Database connection management
- SQL query execution
- Table creation and management
- Data import/export capabilities
- Full-text search functionality
Key methods:
runQuery(query: string)- Execute SQL queriescreateTableFromPath(filePath: string, table?: string)- Create tables from filesexportTableToPath(table: string, format: string)- Export tables to various formatscreateFtsIndex(table: string, uniqueKey: string, inputValues: string[])- Create full-text search indicesfullTextSearch(table: string, uniqueKey: string, searchText: string)- Perform full-text search
DuckDBClient
DuckDBClient provides an AI-friendly interface by wrapping DuckDbTools with AI function decorators. It extends AIFunctionsProvider and includes:
- AI-friendly method signatures with Zod schemas
- Simplified CSV loading from URLs
- Table inspection and schema management
- Query execution with AI-friendly interfaces
Key methods:
loadCsvFromUrl(input: { fileUrl: string, tableName: string, options?: object })- Load CSV datarunQuery(input: { query: string })- Execute SQL queriesshowTables(input: { verbose?: boolean })- List database tablesdescribeTable(input: { tableName: string })- Get table schema information
Usage Example
import { DuckDBClient } from './index';
// Create a new DuckDB client
const client = new DuckDBClient();
// Load CSV data
await client.loadCsvFromUrl({
fileUrl: 'https://example.com/data.csv',
tableName: 'my_table',
options: {
delimiter: ',',
header: true
}
});
// Run a query
const results = await client.runQuery({
query: 'SELECT * FROM my_table LIMIT 5'
});Configuration
The library supports various configuration options through the DuckDbToolsConfig interface:
dbPath- Path to the database file (defaults to in-memory)readOnly- Enable read-only modeinitCommands- SQL commands to run on initializationconfig- Additional DuckDB configuration options
Dependencies
duckdb- Core DuckDB database engine@agentic/core- AI function decorators and utilitieszod- Runtime type checking and validation
0.0.1
7 months ago