0.0.1 • Published 3 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
3 months ago