crewai-ts
Version:
TypeScript port of crewAI for agent-based workflows
172 lines • 4.65 kB
TypeScript
/**
* URL Knowledge Source
* Process web content as knowledge sources with optimized fetching and streaming
*/
import { BaseKnowledgeSource, KnowledgeSourceOptions } from './BaseKnowledgeSource.js';
import { KnowledgeChunk, Metadata } from '../types.js';
/**
* Options specific to URL knowledge sources
*/
export interface URLKnowledgeSourceOptions extends KnowledgeSourceOptions {
/**
* URL or array of URLs to fetch
*/
url: string | string[];
/**
* Additional request headers
*/
headers?: Record<string, string>;
/**
* Enable request caching with ETag and Last-Modified
* @default true
*/
enableCaching?: boolean;
/**
* Cache TTL in milliseconds
* @default 3600000 (1 hour)
*/
cacheTTL?: number;
/**
* Additional metadata to attach to all chunks
*/
metadata?: Metadata;
/**
* Follow URLs found in content (depth of crawling)
* @default 0 (no following)
*/
followDepth?: number;
/**
* Request timeout in milliseconds
* @default 30000 (30 seconds)
*/
timeout?: number;
/**
* Maximum retries for failed requests
* @default 3
*/
maxRetries?: number;
/**
* Retry delay in milliseconds (base value for exponential backoff)
* @default 1000
*/
retryDelay?: number;
/**
* Rate limit in milliseconds (minimum time between requests)
* @default 100
*/
rateLimit?: number;
/**
* Extract text from HTML
* @default true
*/
extractText?: boolean;
/**
* Include CSS selectors to prioritize in HTML extraction (e.g., 'article', '.content')
*/
includeSelectors?: string[];
/**
* Exclude CSS selectors from HTML extraction (e.g., 'nav', 'footer', '.ads')
*/
excludeSelectors?: string[];
/**
* Restrict URL following to specific domains
*/
restrictToDomains?: string[];
}
/**
* Knowledge source for processing web content
* Optimized for efficient fetching, caching, and content extraction
*/
export declare class URLKnowledgeSource extends BaseKnowledgeSource {
/**
* URLs to process
* @private
*/
private urls;
/**
* Configured URL options with defaults
* @private
*/
private urlOptions;
/**
* Request cache for ETag and Last-Modified based caching
* @private
*/
private requestCache;
/**
* Timestamp of last request (for rate limiting)
* @private
*/
private lastRequestTime;
/**
* Constructor for URLKnowledgeSource
* @param options - Configuration options
*/
constructor(options: URLKnowledgeSourceOptions);
/**
* Process and add all URLs to storage
* Implements efficient fetching with caching and rate limiting
* @override
*/
add(): Promise<void>;
/**
* Create a knowledge chunk from URL content with URL-specific metadata
* @param content - Content for the chunk
* @param additionalMetadata - Additional metadata or source URL
* @returns Knowledge chunk object
* @private
*/
protected createChunk(content: string, additionalMetadata?: Metadata | string): KnowledgeChunk;
/**
* Process a single URL
* Implements caching, rate limiting, and retry logic
* @param url - URL to process
* @param depth - Current crawl depth
* @private
*/
private processURL;
/**
* Fetch URL content with retry logic and caching
* @param url - URL to fetch
* @returns Content and found URLs
* @private
*/
private fetchWithRetry;
/**
* Fetch URL with caching support
* @param url - URL to fetch
* @returns Content and found URLs
* @private
*/
private fetchWithCaching;
/**
* Apply rate limiting
* Ensures minimum time between requests
* @private
*/
private applyRateLimit;
/**
* Check if content is HTML
* @param content - Content to check
* @returns True if content appears to be HTML
* @private
*/
private isHtml;
/**
* Extract text content from HTML
* Implements efficient HTML parsing with selector support
* @param htmlContent - HTML content
* @returns Extracted text
* @private
*/
private extractTextFromHtml;
/**
* Extract URLs from HTML content
* @param htmlContent - HTML content
* @param baseUrl - Base URL for resolving relative URLs
* @returns Array of absolute URLs
* @private
*/
private extractUrls;
}
//# sourceMappingURL=URLKnowledgeSource.d.ts.map