@agentforge/tools 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +457 -0
- package/dist/index.cjs +1720 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1145 -0
- package/dist/index.d.ts +1145 -0
- package/dist/index.js +1627 -0
- package/dist/index.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/web/http-client.ts","../src/web/scraper.ts","../src/web/html-parser.ts","../src/web/url-validator.ts","../src/data/json-processor.ts","../src/data/csv-parser.ts","../src/data/xml-parser.ts","../src/data/transformer.ts","../src/file/file-operations.ts","../src/file/directory-operations.ts","../src/file/path-utilities.ts","../src/utility/date-time.ts","../src/utility/string-utilities.ts","../src/utility/math-operations.ts","../src/utility/validation.ts"],"names":["z","toolBuilder","ToolCategory","axios","cheerio","cheerio2","parse","stringify","XMLParser","XMLBuilder","path","fs","files","path2","matches","path3","basename","dirname","relative","format","isValid","add","sub","differenceInDays","differenceInHours","differenceInMinutes","isBefore","isAfter"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * HTTP Client Tool\n * \n * Make HTTP requests with support for GET, POST, PUT, DELETE, PATCH methods.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\nimport axios, { AxiosRequestConfig } from 'axios';\n\n/**\n * HTTP method enum\n */\nconst HttpMethod = z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS']);\n\n/**\n * HTTP request schema\n */\nconst httpRequestSchema = z.object({\n url: z.string().url().describe('The URL to make the request to'),\n method: HttpMethod.default('GET').describe('HTTP method to use'),\n headers: z.record(z.string()).optional().describe('Optional HTTP headers'),\n body: z.any().optional().describe('Optional request body (for POST, PUT, PATCH)'),\n timeout: z.number().default(30000).describe('Request timeout in milliseconds'),\n params: z.record(z.string()).optional().describe('Optional URL query parameters'),\n});\n\n/**\n * HTTP response type\n */\nexport interface HttpResponse {\n status: number;\n statusText: string;\n headers: Record<string, string>;\n data: any;\n url: string;\n method: string;\n}\n\n/**\n * Create HTTP client tool\n * \n * @example\n * ```ts\n * const result = await httpClient.execute({\n * url: 'https://api.example.com/data',\n * method: 'GET',\n * headers: { 'Authorization': 'Bearer token' }\n * });\n * ```\n */\nexport const httpClient = toolBuilder()\n .name('http-client')\n .description('Make HTTP requests to web APIs and services. Supports GET, POST, PUT, DELETE, PATCH methods with custom headers and body.')\n .category(ToolCategory.WEB)\n .tags(['http', 'api', 'request', 'web'])\n .schema(httpRequestSchema)\n .implement(async (input): Promise<HttpResponse> => {\n const config: AxiosRequestConfig = {\n method: input.method,\n url: input.url,\n headers: input.headers,\n data: input.body,\n timeout: input.timeout,\n params: input.params,\n validateStatus: () => true, // Don't throw on any status code\n };\n\n const response = await axios(config);\n\n return {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers as Record<string, string>,\n data: response.data,\n url: input.url,\n method: input.method ?? 'GET',\n };\n })\n .build();\n\n/**\n * Create a simple GET request tool\n */\nexport const httpGet = toolBuilder()\n .name('http-get')\n .description('Make a simple HTTP GET request to a URL and return the response data.')\n .category(ToolCategory.WEB)\n .tags(['http', 'get', 'fetch', 'web'])\n .schema(z.object({\n url: z.string().url().describe('The URL to fetch'),\n headers: z.record(z.string()).optional().describe('Optional HTTP headers'),\n params: z.record(z.string()).optional().describe('Optional URL query parameters'),\n }))\n .implement(async (input) => {\n const response = await axios.get(input.url, {\n headers: input.headers,\n params: input.params,\n timeout: 30000,\n });\n return response.data;\n })\n .build();\n\n/**\n * Create a simple POST request tool\n */\nexport const httpPost = toolBuilder()\n .name('http-post')\n .description('Make a simple HTTP POST request with JSON body and return the response data.')\n .category(ToolCategory.WEB)\n .tags(['http', 'post', 'api', 'web'])\n .schema(z.object({\n url: z.string().url().describe('The URL to post to'),\n body: z.any().describe('The request body (will be sent as JSON)'),\n headers: z.record(z.string()).optional().describe('Optional HTTP headers'),\n }))\n .implement(async (input) => {\n const response = await axios.post(input.url, input.body, {\n headers: {\n 'Content-Type': 'application/json',\n ...input.headers,\n },\n timeout: 30000,\n });\n return response.data;\n })\n .build();\n\n","/**\n * Web Scraper Tool\n * \n * Scrape and extract data from web pages using CSS selectors.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\nimport axios from 'axios';\nimport * as cheerio from 'cheerio';\n\n/**\n * Scraper result type\n */\nexport interface ScraperResult {\n url: string;\n title?: string;\n text?: string;\n html?: string;\n links?: string[];\n images?: string[];\n metadata?: Record<string, string>;\n selected?: any;\n}\n\n/**\n * Web scraper tool\n * \n * @example\n * ```ts\n * const result = await webScraper.execute({\n * url: 'https://example.com',\n * selector: 'article h1',\n * extractText: true\n * });\n * ```\n */\nexport const webScraper = toolBuilder()\n .name('web-scraper')\n .description('Scrape and extract data from web pages. Can extract text, HTML, links, images, and use CSS selectors to target specific elements.')\n .category(ToolCategory.WEB)\n .tags(['scraper', 'web', 'html', 'extract', 'parse'])\n .schema(z.object({\n url: z.string().url().describe('The URL of the web page to scrape'),\n selector: z.string().optional().describe('Optional CSS selector to extract specific elements'),\n extractText: z.boolean().default(true).describe('Extract text content from the page'),\n extractHtml: z.boolean().default(false).describe('Extract raw HTML content'),\n extractLinks: z.boolean().default(false).describe('Extract all links from the page'),\n extractImages: z.boolean().default(false).describe('Extract all image URLs from the page'),\n extractMetadata: z.boolean().default(false).describe('Extract meta tags (title, description, etc.)'),\n timeout: z.number().default(30000).describe('Request timeout in milliseconds'),\n }))\n .implement(async (input): Promise<ScraperResult> => {\n // Fetch the page\n const response = await axios.get(input.url, {\n timeout: input.timeout,\n headers: {\n 'User-Agent': 'Mozilla/5.0 (compatible; AgentForge/1.0; +https://agentforge.dev)',\n },\n });\n\n const html = response.data;\n const $ = cheerio.load(html);\n\n const result: ScraperResult = {\n url: input.url,\n };\n\n // Apply selector if provided\n const $selected = input.selector ? $(input.selector) : $('body');\n\n // Extract text\n if (input.extractText) {\n result.text = $selected.text().trim();\n }\n\n // Extract HTML\n if (input.extractHtml) {\n result.html = $selected.html() || '';\n }\n\n // Extract links\n if (input.extractLinks) {\n result.links = [];\n $('a[href]').each((_, el) => {\n const href = $(el).attr('href');\n if (href) {\n // Convert relative URLs to absolute\n try {\n const absoluteUrl = new URL(href, input.url).href;\n result.links!.push(absoluteUrl);\n } catch {\n result.links!.push(href);\n }\n }\n });\n }\n\n // Extract images\n if (input.extractImages) {\n result.images = [];\n $('img[src]').each((_, el) => {\n const src = $(el).attr('src');\n if (src) {\n // Convert relative URLs to absolute\n try {\n const absoluteUrl = new URL(src, input.url).href;\n result.images!.push(absoluteUrl);\n } catch {\n result.images!.push(src);\n }\n }\n });\n }\n\n // Extract metadata\n if (input.extractMetadata) {\n result.metadata = {};\n \n // Title\n const title = $('title').text() || $('meta[property=\"og:title\"]').attr('content');\n if (title) result.metadata.title = title;\n\n // Description\n const description = $('meta[name=\"description\"]').attr('content') || \n $('meta[property=\"og:description\"]').attr('content');\n if (description) result.metadata.description = description;\n\n // Other meta tags\n $('meta[name], meta[property]').each((_, el) => {\n const name = $(el).attr('name') || $(el).attr('property');\n const content = $(el).attr('content');\n if (name && content) {\n result.metadata![name] = content;\n }\n });\n }\n\n // If selector was provided, return the selected elements\n if (input.selector) {\n result.selected = $selected.map((_, el) => ({\n text: $(el).text().trim(),\n html: $(el).html(),\n })).get();\n }\n\n return result;\n })\n .build();\n\n","/**\n * HTML Parser Tool\n * \n * Parse HTML content and extract data using CSS selectors.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\nimport * as cheerio from 'cheerio';\n\n/**\n * HTML parser tool\n * \n * @example\n * ```ts\n * const result = await htmlParser.execute({\n * html: '<div class=\"content\"><h1>Title</h1><p>Text</p></div>',\n * selector: '.content h1'\n * });\n * ```\n */\nexport const htmlParser = toolBuilder()\n .name('html-parser')\n .description('Parse HTML content and extract data using CSS selectors. Returns text, attributes, and structure of selected elements.')\n .category(ToolCategory.WEB)\n .tags(['html', 'parser', 'css', 'selector', 'extract'])\n .schema(z.object({\n html: z.string().describe('The HTML content to parse'),\n selector: z.string().describe('CSS selector to find elements'),\n extractText: z.boolean().default(true).describe('Extract text content from selected elements'),\n extractHtml: z.boolean().default(false).describe('Extract inner HTML of selected elements'),\n extractAttributes: z.array(z.string().describe(\"String value\")).optional().describe('List of attributes to extract (e.g., [\"href\", \"src\", \"class\"])'),\n }))\n .implement(async (input) => {\n const $ = cheerio.load(input.html);\n const $selected = $(input.selector);\n\n const results = $selected.map((_, el) => {\n const $el = $(el);\n const item: any = {};\n\n if (input.extractText) {\n item.text = $el.text().trim();\n }\n\n if (input.extractHtml) {\n item.html = $el.html();\n }\n\n if (input.extractAttributes && input.extractAttributes.length > 0) {\n item.attributes = {};\n for (const attr of input.extractAttributes) {\n const value = $el.attr(attr);\n if (value !== undefined) {\n item.attributes[attr] = value;\n }\n }\n }\n\n return item;\n }).get();\n\n return {\n count: results.length,\n results,\n };\n })\n .build();\n\n/**\n * Extract links from HTML\n */\nexport const extractLinks = toolBuilder()\n .name('extract-links')\n .description('Extract all links (anchor tags) from HTML content with their text and href attributes.')\n .category(ToolCategory.WEB)\n .tags(['html', 'links', 'extract', 'anchor'])\n .schema(z.object({\n html: z.string().describe('The HTML content to extract links from'),\n baseUrl: z.string().url().optional().describe('Optional base URL to resolve relative links'),\n }))\n .implement(async (input) => {\n const $ = cheerio.load(input.html);\n const links: Array<{ text: string; href: string; title?: string }> = [];\n\n $('a[href]').each((_, el) => {\n const $el = $(el);\n let href = $el.attr('href') || '';\n \n // Resolve relative URLs if baseUrl is provided\n if (input.baseUrl && href) {\n try {\n href = new URL(href, input.baseUrl).href;\n } catch {\n // Keep original href if URL parsing fails\n }\n }\n\n links.push({\n text: $el.text().trim(),\n href,\n title: $el.attr('title'),\n });\n });\n\n return {\n count: links.length,\n links,\n };\n })\n .build();\n\n/**\n * Extract images from HTML\n */\nexport const extractImages = toolBuilder()\n .name('extract-images')\n .description('Extract all images from HTML content with their src, alt, and other attributes.')\n .category(ToolCategory.WEB)\n .tags(['html', 'images', 'extract', 'img'])\n .schema(z.object({\n html: z.string().describe('The HTML content to extract images from'),\n baseUrl: z.string().url().optional().describe('Optional base URL to resolve relative image URLs'),\n }))\n .implement(async (input) => {\n const $ = cheerio.load(input.html);\n const images: Array<{ src: string; alt?: string; title?: string; width?: string; height?: string }> = [];\n\n $('img[src]').each((_, el) => {\n const $el = $(el);\n let src = $el.attr('src') || '';\n \n // Resolve relative URLs if baseUrl is provided\n if (input.baseUrl && src) {\n try {\n src = new URL(src, input.baseUrl).href;\n } catch {\n // Keep original src if URL parsing fails\n }\n }\n\n images.push({\n src,\n alt: $el.attr('alt'),\n title: $el.attr('title'),\n width: $el.attr('width'),\n height: $el.attr('height'),\n });\n });\n\n return {\n count: images.length,\n images,\n };\n })\n .build();\n\n","/**\n * URL Validator and Parser Tool\n * \n * Validate, parse, and manipulate URLs.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\n\n/**\n * URL validation result\n */\nexport interface UrlValidationResult {\n valid: boolean;\n url?: string;\n protocol?: string;\n hostname?: string;\n port?: string;\n pathname?: string;\n search?: string;\n hash?: string;\n origin?: string;\n error?: string;\n}\n\n/**\n * URL validator tool\n * \n * @example\n * ```ts\n * const result = await urlValidator.execute({\n * url: 'https://example.com/path?query=value#hash'\n * });\n * ```\n */\nexport const urlValidator = toolBuilder()\n .name('url-validator')\n .description('Validate and parse URLs. Returns detailed information about the URL structure including protocol, hostname, path, query parameters, and hash.')\n .category(ToolCategory.WEB)\n .tags(['url', 'validator', 'parse', 'validate'])\n .schema(z.object({\n url: z.string().describe('The URL to validate and parse'),\n }))\n .implement(async (input): Promise<UrlValidationResult> => {\n try {\n const parsed = new URL(input.url);\n \n return {\n valid: true,\n url: parsed.href,\n protocol: parsed.protocol,\n hostname: parsed.hostname,\n port: parsed.port,\n pathname: parsed.pathname,\n search: parsed.search,\n hash: parsed.hash,\n origin: parsed.origin,\n };\n } catch (error) {\n return {\n valid: false,\n error: error instanceof Error ? error.message : 'Invalid URL',\n };\n }\n })\n .build();\n\n/**\n * URL builder tool\n */\nexport const urlBuilder = toolBuilder()\n .name('url-builder')\n .description('Build a URL from components (protocol, hostname, path, query parameters, hash).')\n .category(ToolCategory.WEB)\n .tags(['url', 'builder', 'construct'])\n .schema(z.object({\n protocol: z.string().default('https').describe('Protocol (http, https, etc.)'),\n hostname: z.string().describe('Hostname or domain name'),\n port: z.string().optional().describe('Optional port number'),\n pathname: z.string().default('/').describe('URL path'),\n query: z.record(z.string()).optional().describe('Query parameters as key-value pairs'),\n hash: z.string().optional().describe('URL hash/fragment'),\n }))\n .implement(async (input) => {\n const url = new URL(`${input.protocol}://${input.hostname}`);\n\n if (input.port) {\n url.port = input.port;\n }\n\n url.pathname = input.pathname ?? '/';\n \n if (input.query) {\n Object.entries(input.query).forEach(([key, value]) => {\n url.searchParams.append(key, value);\n });\n }\n \n if (input.hash) {\n url.hash = input.hash;\n }\n \n return {\n url: url.href,\n components: {\n protocol: url.protocol,\n hostname: url.hostname,\n port: url.port,\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n origin: url.origin,\n },\n };\n })\n .build();\n\n/**\n * URL query parser tool\n */\nexport const urlQueryParser = toolBuilder()\n .name('url-query-parser')\n .description('Parse query parameters from a URL or query string into a key-value object.')\n .category(ToolCategory.WEB)\n .tags(['url', 'query', 'parse', 'params'])\n .schema(z.object({\n input: z.string().describe('URL or query string to parse (e.g., \"?foo=bar&baz=qux\" or full URL)'),\n }))\n .implement(async (input) => {\n let searchParams: URLSearchParams;\n \n try {\n // Try to parse as full URL first\n const url = new URL(input.input);\n searchParams = url.searchParams;\n } catch {\n // If that fails, treat as query string\n const queryString = input.input.startsWith('?') ? input.input.slice(1) : input.input;\n searchParams = new URLSearchParams(queryString);\n }\n \n const params: Record<string, string | string[]> = {};\n \n searchParams.forEach((value, key) => {\n if (params[key]) {\n // Handle multiple values for same key\n if (Array.isArray(params[key])) {\n (params[key] as string[]).push(value);\n } else {\n params[key] = [params[key] as string, value];\n }\n } else {\n params[key] = value;\n }\n });\n \n return {\n params,\n count: Object.keys(params).length,\n };\n })\n .build();\n\n","/**\n * JSON Processor Tool\n * \n * Parse, validate, transform, and query JSON data.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\n\n/**\n * JSON parser tool\n */\nexport const jsonParser = toolBuilder()\n .name('json-parser')\n .description('Parse JSON string into an object. Validates JSON syntax and returns parsed data or error details.')\n .category(ToolCategory.UTILITY)\n .tags(['json', 'parse', 'data'])\n .schema(z.object({\n json: z.string().describe('JSON string to parse'),\n strict: z.boolean().default(true).describe('Use strict JSON parsing (no trailing commas, etc.)'),\n }))\n .implement(async (input) => {\n try {\n const parsed = JSON.parse(input.json);\n return {\n success: true,\n data: parsed,\n type: Array.isArray(parsed) ? 'array' : typeof parsed,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to parse JSON',\n };\n }\n })\n .build();\n\n/**\n * JSON stringifier tool\n */\nexport const jsonStringify = toolBuilder()\n .name('json-stringify')\n .description('Convert an object to a JSON string with optional formatting (pretty print).')\n .category(ToolCategory.UTILITY)\n .tags(['json', 'stringify', 'format', 'data'])\n .schema(z.object({\n data: z.any().describe('Data to convert to JSON string'),\n pretty: z.boolean().default(false).describe('Format with indentation for readability'),\n indent: z.number().default(2).describe('Number of spaces for indentation (when pretty is true)'),\n }))\n .implement(async (input) => {\n try {\n const json = input.pretty \n ? JSON.stringify(input.data, null, input.indent)\n : JSON.stringify(input.data);\n \n return {\n success: true,\n json,\n length: json.length,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to stringify data',\n };\n }\n })\n .build();\n\n/**\n * JSON query tool (using JSONPath-like syntax)\n */\nexport const jsonQuery = toolBuilder()\n .name('json-query')\n .description('Query JSON data using dot notation path (e.g., \"user.address.city\"). Supports array indexing.')\n .category(ToolCategory.UTILITY)\n .tags(['json', 'query', 'path', 'data'])\n .schema(z.object({\n data: z.any().describe('JSON data to query'),\n path: z.string().describe('Dot notation path to query (e.g., \"user.name\" or \"items[0].id\")'),\n }))\n .implement(async (input) => {\n try {\n const parts = input.path.split('.');\n let current = input.data;\n \n for (const part of parts) {\n // Handle array indexing: items[0]\n const arrayMatch = part.match(/^(\\w+)\\[(\\d+)\\]$/);\n if (arrayMatch) {\n const [, key, index] = arrayMatch;\n current = current[key][parseInt(index, 10)];\n } else {\n current = current[part];\n }\n \n if (current === undefined) {\n return {\n success: false,\n error: `Path not found: ${input.path}`,\n };\n }\n }\n \n return {\n success: true,\n value: current,\n type: Array.isArray(current) ? 'array' : typeof current,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to query JSON',\n };\n }\n })\n .build();\n\n/**\n * JSON validator tool\n */\nexport const jsonValidator = toolBuilder()\n .name('json-validator')\n .description('Validate JSON string syntax without parsing. Returns whether the JSON is valid and any error details.')\n .category(ToolCategory.UTILITY)\n .tags(['json', 'validate', 'check', 'data'])\n .schema(z.object({\n json: z.string().describe('JSON string to validate'),\n }))\n .implement(async (input) => {\n try {\n JSON.parse(input.json);\n return {\n valid: true,\n message: 'Valid JSON',\n };\n } catch (error) {\n return {\n valid: false,\n error: error instanceof Error ? error.message : 'Invalid JSON',\n };\n }\n })\n .build();\n\n/**\n * JSON merge tool\n */\nexport const jsonMerge = toolBuilder()\n .name('json-merge')\n .description('Merge two or more JSON objects. Later objects override earlier ones for conflicting keys.')\n .category(ToolCategory.UTILITY)\n .tags(['json', 'merge', 'combine', 'data'])\n .schema(z.object({\n objects: z.array(z.any().describe('Object to merge')).describe('Array of objects to merge'),\n deep: z.boolean().default(false).describe('Perform deep merge (nested objects)'),\n }))\n .implement(async (input) => {\n if (input.deep) {\n // Deep merge\n const deepMerge = (target: any, source: any): any => {\n const output = { ...target };\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n output[key] = deepMerge(output[key] || {}, source[key]);\n } else {\n output[key] = source[key];\n }\n }\n return output;\n };\n \n return input.objects.reduce((acc, obj) => deepMerge(acc, obj), {});\n } else {\n // Shallow merge\n return Object.assign({}, ...input.objects);\n }\n })\n .build();\n\n","/**\n * CSV Parser Tool\n * \n * Parse and generate CSV data.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\nimport { parse } from 'csv-parse/sync';\nimport { stringify } from 'csv-stringify/sync';\n\n/**\n * CSV parser tool\n */\nexport const csvParser = toolBuilder()\n .name('csv-parser')\n .description('Parse CSV string into an array of objects. Supports custom delimiters, headers, and options.')\n .category(ToolCategory.UTILITY)\n .tags(['csv', 'parse', 'data', 'table'])\n .schema(z.object({\n csv: z.string().describe('CSV string to parse'),\n delimiter: z.string().default(',').describe('Column delimiter character'),\n hasHeaders: z.boolean().default(true).describe('First row contains column headers'),\n skipEmptyLines: z.boolean().default(true).describe('Skip empty lines in the CSV'),\n trim: z.boolean().default(true).describe('Trim whitespace from values'),\n }))\n .implement(async (input) => {\n try {\n const records = parse(input.csv, {\n delimiter: input.delimiter,\n columns: input.hasHeaders,\n skip_empty_lines: input.skipEmptyLines,\n trim: input.trim,\n relax_column_count: true,\n });\n\n return {\n success: true,\n data: records,\n rowCount: records.length,\n columnCount: records.length > 0 ? Object.keys(records[0]).length : 0,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to parse CSV',\n };\n }\n })\n .build();\n\n/**\n * CSV generator tool\n */\nexport const csvGenerator = toolBuilder()\n .name('csv-generator')\n .description('Convert an array of objects to CSV string. Automatically extracts headers from object keys.')\n .category(ToolCategory.UTILITY)\n .tags(['csv', 'generate', 'stringify', 'data'])\n .schema(z.object({\n data: z.array(z.record(z.any().describe('Column value'))).describe('Array of objects to convert to CSV'),\n delimiter: z.string().default(',').describe('Column delimiter character'),\n includeHeaders: z.boolean().default(true).describe('Include header row with column names'),\n columns: z.array(z.string().describe(\"String value\")).optional().describe('Optional list of columns to include (in order)'),\n }))\n .implement(async (input) => {\n try {\n const csv = stringify(input.data, {\n delimiter: input.delimiter,\n header: input.includeHeaders,\n columns: input.columns,\n });\n\n return {\n success: true,\n csv,\n rowCount: input.data.length,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to generate CSV',\n };\n }\n })\n .build();\n\n/**\n * CSV to JSON converter\n */\nexport const csvToJson = toolBuilder()\n .name('csv-to-json')\n .description('Convert CSV string to JSON array. Each row becomes an object with column headers as keys.')\n .category(ToolCategory.UTILITY)\n .tags(['csv', 'json', 'convert', 'data'])\n .schema(z.object({\n csv: z.string().describe('CSV string to convert'),\n delimiter: z.string().default(',').describe('Column delimiter character'),\n pretty: z.boolean().default(false).describe('Format JSON with indentation'),\n }))\n .implement(async (input) => {\n try {\n const records = parse(input.csv, {\n delimiter: input.delimiter,\n columns: true,\n skip_empty_lines: true,\n trim: true,\n });\n\n const json = input.pretty \n ? JSON.stringify(records, null, 2)\n : JSON.stringify(records);\n\n return {\n success: true,\n json,\n recordCount: records.length,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to convert CSV to JSON',\n };\n }\n })\n .build();\n\n/**\n * JSON to CSV converter\n */\nexport const jsonToCsv = toolBuilder()\n .name('json-to-csv')\n .description('Convert JSON array to CSV string. Each object becomes a row with keys as column headers.')\n .category(ToolCategory.UTILITY)\n .tags(['json', 'csv', 'convert', 'data'])\n .schema(z.object({\n json: z.string().describe('JSON array string to convert'),\n delimiter: z.string().default(',').describe('Column delimiter character'),\n }))\n .implement(async (input) => {\n try {\n const data = JSON.parse(input.json);\n \n if (!Array.isArray(data)) {\n return {\n success: false,\n error: 'Input must be a JSON array',\n };\n }\n\n const csv = stringify(data, {\n delimiter: input.delimiter,\n header: true,\n });\n\n return {\n success: true,\n csv,\n rowCount: data.length,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to convert JSON to CSV',\n };\n }\n })\n .build();\n\n","/**\n * XML Parser Tool\n * \n * Parse and generate XML data.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\nimport { XMLParser, XMLBuilder } from 'fast-xml-parser';\n\n/**\n * XML parser tool\n */\nexport const xmlParser = toolBuilder()\n .name('xml-parser')\n .description('Parse XML string into a JavaScript object. Supports attributes, CDATA, and nested elements.')\n .category(ToolCategory.UTILITY)\n .tags(['xml', 'parse', 'data'])\n .schema(z.object({\n xml: z.string().describe('XML string to parse'),\n ignoreAttributes: z.boolean().default(false).describe('Ignore XML attributes'),\n parseAttributeValue: z.boolean().default(true).describe('Parse attribute values (numbers, booleans)'),\n trimValues: z.boolean().default(true).describe('Trim whitespace from text values'),\n }))\n .implement(async (input) => {\n try {\n const parser = new XMLParser({\n ignoreAttributes: input.ignoreAttributes,\n parseAttributeValue: input.parseAttributeValue,\n trimValues: input.trimValues,\n parseTagValue: true,\n });\n\n const result = parser.parse(input.xml);\n\n return {\n success: true,\n data: result,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to parse XML',\n };\n }\n })\n .build();\n\n/**\n * XML generator tool\n */\nexport const xmlGenerator = toolBuilder()\n .name('xml-generator')\n .description('Convert a JavaScript object to XML string. Supports attributes, CDATA, and nested elements.')\n .category(ToolCategory.UTILITY)\n .tags(['xml', 'generate', 'stringify', 'data'])\n .schema(z.object({\n data: z.any().describe('Object to convert to XML'),\n rootName: z.string().default('root').describe('Name of the root XML element'),\n format: z.boolean().default(false).describe('Format XML with indentation'),\n indentSize: z.number().default(2).describe('Number of spaces for indentation (when format is true)'),\n }))\n .implement(async (input) => {\n try {\n const indentSize = input.indentSize ?? 2;\n const rootName = input.rootName ?? 'root';\n\n const builder = new XMLBuilder({\n format: input.format ?? false,\n indentBy: ' '.repeat(indentSize),\n ignoreAttributes: false,\n });\n\n // Wrap data in root element if not already wrapped\n const dataToConvert = input.data[rootName] ? input.data : { [rootName]: input.data };\n const xml = builder.build(dataToConvert);\n\n return {\n success: true,\n xml,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to generate XML',\n };\n }\n })\n .build();\n\n/**\n * XML to JSON converter\n */\nexport const xmlToJson = toolBuilder()\n .name('xml-to-json')\n .description('Convert XML string to JSON. Preserves structure and can include or exclude attributes.')\n .category(ToolCategory.UTILITY)\n .tags(['xml', 'json', 'convert', 'data'])\n .schema(z.object({\n xml: z.string().describe('XML string to convert'),\n ignoreAttributes: z.boolean().default(false).describe('Ignore XML attributes in conversion'),\n pretty: z.boolean().default(false).describe('Format JSON with indentation'),\n }))\n .implement(async (input) => {\n try {\n const parser = new XMLParser({\n ignoreAttributes: input.ignoreAttributes,\n parseAttributeValue: true,\n trimValues: true,\n });\n\n const result = parser.parse(input.xml);\n const json = input.pretty \n ? JSON.stringify(result, null, 2)\n : JSON.stringify(result);\n\n return {\n success: true,\n json,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to convert XML to JSON',\n };\n }\n })\n .build();\n\n/**\n * JSON to XML converter\n */\nexport const jsonToXml = toolBuilder()\n .name('json-to-xml')\n .description('Convert JSON string to XML. Each object key becomes an XML element.')\n .category(ToolCategory.UTILITY)\n .tags(['json', 'xml', 'convert', 'data'])\n .schema(z.object({\n json: z.string().describe('JSON string to convert'),\n rootName: z.string().default('root').describe('Name of the root XML element'),\n format: z.boolean().default(false).describe('Format XML with indentation'),\n }))\n .implement(async (input) => {\n try {\n const data = JSON.parse(input.json);\n const rootName = input.rootName ?? 'root';\n\n const builder = new XMLBuilder({\n format: input.format ?? false,\n indentBy: ' ',\n ignoreAttributes: false,\n });\n\n const dataToConvert = data[rootName] ? data : { [rootName]: data };\n const xml = builder.build(dataToConvert);\n\n return {\n success: true,\n xml,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to convert JSON to XML',\n };\n }\n })\n .build();\n\n","/**\n * Data Transformer Tool\n * \n * Transform, filter, map, and manipulate data structures.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\n\n/**\n * Array filter tool\n */\nexport const arrayFilter = toolBuilder()\n .name('array-filter')\n .description('Filter an array based on a property value. Supports equality, comparison, and contains operations.')\n .category(ToolCategory.UTILITY)\n .tags(['array', 'filter', 'data', 'transform'])\n .schema(z.object({\n array: z.array(z.any().describe('Array element')).describe('Array to filter'),\n property: z.string().describe('Property name to filter by (use dot notation for nested properties)'),\n operator: z.enum(['equals', 'not-equals', 'greater-than', 'less-than', 'contains', 'starts-with', 'ends-with']).describe('Comparison operator'),\n value: z.any().describe('Value to compare against'),\n }))\n .implement(async (input) => {\n const getNestedValue = (obj: any, path: string): any => {\n return path.split('.').reduce((current, key) => current?.[key], obj);\n };\n\n const filtered = input.array.filter((item) => {\n const itemValue = getNestedValue(item, input.property);\n \n switch (input.operator) {\n case 'equals':\n return itemValue === input.value;\n case 'not-equals':\n return itemValue !== input.value;\n case 'greater-than':\n return itemValue > input.value;\n case 'less-than':\n return itemValue < input.value;\n case 'contains':\n return String(itemValue).includes(String(input.value));\n case 'starts-with':\n return String(itemValue).startsWith(String(input.value));\n case 'ends-with':\n return String(itemValue).endsWith(String(input.value));\n default:\n return false;\n }\n });\n\n return {\n filtered,\n originalCount: input.array.length,\n filteredCount: filtered.length,\n };\n })\n .build();\n\n/**\n * Array map tool\n */\nexport const arrayMap = toolBuilder()\n .name('array-map')\n .description('Extract specific properties from each object in an array. Creates a new array with only the selected properties.')\n .category(ToolCategory.UTILITY)\n .tags(['array', 'map', 'data', 'transform'])\n .schema(z.object({\n array: z.array(z.any().describe('Array element')).describe('Array to map'),\n properties: z.array(z.string().describe(\"String value\")).describe('List of property names to extract from each object'),\n }))\n .implement(async (input) => {\n const mapped = input.array.map((item) => {\n const result: any = {};\n for (const prop of input.properties) {\n // Support dot notation\n const value = prop.split('.').reduce((current, key) => current?.[key], item);\n result[prop] = value;\n }\n return result;\n });\n\n return {\n mapped,\n count: mapped.length,\n };\n })\n .build();\n\n/**\n * Array sort tool\n */\nexport const arraySort = toolBuilder()\n .name('array-sort')\n .description('Sort an array by a property value. Supports ascending and descending order.')\n .category(ToolCategory.UTILITY)\n .tags(['array', 'sort', 'data', 'transform'])\n .schema(z.object({\n array: z.array(z.any().describe('Array element')).describe('Array to sort'),\n property: z.string().describe('Property name to sort by (use dot notation for nested properties)'),\n order: z.enum(['asc', 'desc']).default('asc').describe('Sort order: ascending or descending'),\n }))\n .implement(async (input) => {\n const getNestedValue = (obj: any, path: string): any => {\n return path.split('.').reduce((current, key) => current?.[key], obj);\n };\n\n const sorted = [...input.array].sort((a, b) => {\n const aValue = getNestedValue(a, input.property);\n const bValue = getNestedValue(b, input.property);\n \n if (aValue < bValue) return input.order === 'asc' ? -1 : 1;\n if (aValue > bValue) return input.order === 'asc' ? 1 : -1;\n return 0;\n });\n\n return {\n sorted,\n count: sorted.length,\n };\n })\n .build();\n\n/**\n * Array group by tool\n */\nexport const arrayGroupBy = toolBuilder()\n .name('array-group-by')\n .description('Group an array of objects by a property value. Returns an object with groups as keys.')\n .category(ToolCategory.UTILITY)\n .tags(['array', 'group', 'data', 'transform'])\n .schema(z.object({\n array: z.array(z.any().describe('Array element')).describe('Array to group'),\n property: z.string().describe('Property name to group by'),\n }))\n .implement(async (input) => {\n const groups: Record<string, any[]> = {};\n \n for (const item of input.array) {\n const key = String(item[input.property]);\n if (!groups[key]) {\n groups[key] = [];\n }\n groups[key].push(item);\n }\n\n return {\n groups,\n groupCount: Object.keys(groups).length,\n totalItems: input.array.length,\n };\n })\n .build();\n\n/**\n * Object pick tool\n */\nexport const objectPick = toolBuilder()\n .name('object-pick')\n .description('Create a new object with only the specified properties from the source object.')\n .category(ToolCategory.UTILITY)\n .tags(['object', 'pick', 'data', 'transform'])\n .schema(z.object({\n object: z.record(z.any().describe('Property value')).describe('Source object'),\n properties: z.array(z.string().describe(\"String value\")).describe('List of property names to pick'),\n }))\n .implement(async (input) => {\n const picked: Record<string, any> = {};\n \n for (const prop of input.properties) {\n if (prop in input.object) {\n picked[prop] = input.object[prop];\n }\n }\n\n return picked;\n })\n .build();\n\n/**\n * Object omit tool\n */\nexport const objectOmit = toolBuilder()\n .name('object-omit')\n .description('Create a new object excluding the specified properties from the source object.')\n .category(ToolCategory.UTILITY)\n .tags(['object', 'omit', 'data', 'transform'])\n .schema(z.object({\n object: z.record(z.any().describe('Property value')).describe('Source object'),\n properties: z.array(z.string().describe(\"String value\")).describe('List of property names to omit'),\n }))\n .implement(async (input) => {\n const omitted: Record<string, any> = { ...input.object };\n \n for (const prop of input.properties) {\n delete omitted[prop];\n }\n\n return omitted;\n })\n .build();\n\n","/**\n * File Operations Tools\n * \n * Tools for reading, writing, and manipulating files.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\nimport { promises as fs } from 'fs';\nimport * as path from 'path';\n\n/**\n * File reader tool\n */\nexport const fileReader = toolBuilder()\n .name('file-reader')\n .description('Read the contents of a file from the file system. Supports text and binary files with various encodings.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['file', 'read', 'io', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('Path to the file to read'),\n encoding: z.enum(['utf8', 'utf-8', 'ascii', 'base64', 'hex', 'binary']).default('utf8').describe('File encoding'),\n }))\n .implement(async (input) => {\n try {\n const content = await fs.readFile(input.path, input.encoding as BufferEncoding);\n const stats = await fs.stat(input.path);\n \n return {\n success: true,\n content,\n size: stats.size,\n path: input.path,\n encoding: input.encoding,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to read file',\n path: input.path,\n };\n }\n })\n .build();\n\n/**\n * File writer tool\n */\nexport const fileWriter = toolBuilder()\n .name('file-writer')\n .description('Write content to a file. Creates the file if it doesn\\'t exist, or overwrites it if it does.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['file', 'write', 'io', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('Path to the file to write'),\n content: z.string().describe('Content to write to the file'),\n encoding: z.enum(['utf8', 'utf-8', 'ascii', 'base64', 'hex']).default('utf8').describe('File encoding'),\n createDirs: z.boolean().default(false).describe('Create parent directories if they don\\'t exist'),\n }))\n .implement(async (input) => {\n try {\n // Create parent directories if requested\n if (input.createDirs) {\n const dir = path.dirname(input.path);\n await fs.mkdir(dir, { recursive: true });\n }\n \n await fs.writeFile(input.path, input.content, input.encoding as BufferEncoding);\n const stats = await fs.stat(input.path);\n \n return {\n success: true,\n path: input.path,\n size: stats.size,\n encoding: input.encoding,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to write file',\n path: input.path,\n };\n }\n })\n .build();\n\n/**\n * File append tool\n */\nexport const fileAppend = toolBuilder()\n .name('file-append')\n .description('Append content to the end of a file. Creates the file if it doesn\\'t exist.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['file', 'append', 'io', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('Path to the file to append to'),\n content: z.string().describe('Content to append to the file'),\n encoding: z.enum(['utf8', 'utf-8', 'ascii']).default('utf8').describe('File encoding'),\n }))\n .implement(async (input) => {\n try {\n await fs.appendFile(input.path, input.content, input.encoding as BufferEncoding);\n const stats = await fs.stat(input.path);\n \n return {\n success: true,\n path: input.path,\n size: stats.size,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to append to file',\n path: input.path,\n };\n }\n })\n .build();\n\n/**\n * File delete tool\n */\nexport const fileDelete = toolBuilder()\n .name('file-delete')\n .description('Delete a file from the file system. Returns an error if the file doesn\\'t exist.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['file', 'delete', 'remove', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('Path to the file to delete'),\n }))\n .implement(async (input) => {\n try {\n await fs.unlink(input.path);\n \n return {\n success: true,\n path: input.path,\n message: 'File deleted successfully',\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to delete file',\n path: input.path,\n };\n }\n })\n .build();\n\n/**\n * File exists tool\n */\nexport const fileExists = toolBuilder()\n .name('file-exists')\n .description('Check if a file or directory exists at the specified path.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['file', 'exists', 'check', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('Path to check'),\n }))\n .implement(async (input) => {\n try {\n await fs.access(input.path);\n const stats = await fs.stat(input.path);\n \n return {\n exists: true,\n path: input.path,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n size: stats.size,\n modified: stats.mtime.toISOString(),\n };\n } catch {\n return {\n exists: false,\n path: input.path,\n };\n }\n })\n .build();\n\n","/**\n * Directory Operations Tools\n * \n * Tools for working with directories and file listings.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\nimport { promises as fs } from 'fs';\nimport * as path from 'path';\n\n/**\n * Directory listing tool\n */\nexport const directoryList = toolBuilder()\n .name('directory-list')\n .description('List all files and directories in a directory. Can optionally include file details and filter by extension.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['directory', 'list', 'files', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('Path to the directory to list'),\n recursive: z.boolean().default(false).describe('List files recursively in subdirectories'),\n includeDetails: z.boolean().default(false).describe('Include file size, type, and modification date'),\n extension: z.string().optional().describe('Optional file extension filter (e.g., \".txt\", \".js\")'),\n }))\n .implement(async (input) => {\n try {\n const listFiles = async (dir: string, recursive: boolean): Promise<any[]> => {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n const files: any[] = [];\n\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n const relativePath = path.relative(input.path, fullPath);\n\n // Apply extension filter if specified\n if (input.extension && !entry.name.endsWith(input.extension)) {\n if (!entry.isDirectory() || !recursive) {\n continue;\n }\n }\n\n if (input.includeDetails) {\n const stats = await fs.stat(fullPath);\n files.push({\n name: entry.name,\n path: relativePath,\n fullPath,\n isFile: entry.isFile(),\n isDirectory: entry.isDirectory(),\n size: stats.size,\n modified: stats.mtime.toISOString(),\n });\n } else {\n files.push({\n name: entry.name,\n path: relativePath,\n isFile: entry.isFile(),\n isDirectory: entry.isDirectory(),\n });\n }\n\n // Recurse into subdirectories if requested\n if (recursive && entry.isDirectory()) {\n const subFiles = await listFiles(fullPath, true);\n files.push(...subFiles);\n }\n }\n\n return files;\n };\n\n const files = await listFiles(input.path, input.recursive ?? false);\n\n return {\n success: true,\n path: input.path,\n files,\n count: files.length,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to list directory',\n path: input.path,\n };\n }\n })\n .build();\n\n/**\n * Directory create tool\n */\nexport const directoryCreate = toolBuilder()\n .name('directory-create')\n .description('Create a new directory. Can optionally create parent directories if they don\\'t exist.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['directory', 'create', 'mkdir', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('Path to the directory to create'),\n recursive: z.boolean().default(true).describe('Create parent directories if they don\\'t exist'),\n }))\n .implement(async (input) => {\n try {\n await fs.mkdir(input.path, { recursive: input.recursive });\n \n return {\n success: true,\n path: input.path,\n message: 'Directory created successfully',\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to create directory',\n path: input.path,\n };\n }\n })\n .build();\n\n/**\n * Directory delete tool\n */\nexport const directoryDelete = toolBuilder()\n .name('directory-delete')\n .description('Delete a directory. Can optionally delete non-empty directories recursively.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['directory', 'delete', 'remove', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('Path to the directory to delete'),\n recursive: z.boolean().default(false).describe('Delete directory and all its contents'),\n }))\n .implement(async (input) => {\n try {\n await fs.rm(input.path, { recursive: input.recursive, force: false });\n \n return {\n success: true,\n path: input.path,\n message: 'Directory deleted successfully',\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to delete directory',\n path: input.path,\n };\n }\n })\n .build();\n\n/**\n * File search tool\n */\nexport const fileSearch = toolBuilder()\n .name('file-search')\n .description('Search for files by name pattern in a directory. Supports wildcards and recursive search.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['file', 'search', 'find', 'filesystem'])\n .schema(z.object({\n directory: z.string().describe('Directory to search in'),\n pattern: z.string().describe('File name pattern to search for (supports * wildcard)'),\n recursive: z.boolean().default(true).describe('Search in subdirectories'),\n caseSensitive: z.boolean().default(false).describe('Case-sensitive pattern matching'),\n }))\n .implement(async (input) => {\n try {\n const searchFiles = async (dir: string): Promise<string[]> => {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n const matches: string[] = [];\n\n // Convert pattern to regex\n const regexPattern = input.pattern\n .replace(/\\./g, '\\\\.')\n .replace(/\\*/g, '.*');\n const regex = new RegExp(`^${regexPattern}$`, input.caseSensitive ? '' : 'i');\n\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n\n if (entry.isFile() && regex.test(entry.name)) {\n matches.push(fullPath);\n }\n\n if (input.recursive && entry.isDirectory()) {\n const subMatches = await searchFiles(fullPath);\n matches.push(...subMatches);\n }\n }\n\n return matches;\n };\n\n const matches = await searchFiles(input.directory);\n\n return {\n success: true,\n directory: input.directory,\n pattern: input.pattern,\n matches,\n count: matches.length,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to search files',\n directory: input.directory,\n };\n }\n })\n .build();\n\n","/**\n * Path Utilities Tools\n * \n * Tools for working with file paths.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\nimport * as path from 'path';\n\n/**\n * Path join tool\n */\nexport const pathJoin = toolBuilder()\n .name('path-join')\n .description('Join multiple path segments into a single path. Handles platform-specific separators.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['path', 'join', 'filesystem'])\n .schema(z.object({\n segments: z.array(z.string().describe(\"String value\")).describe('Path segments to join'),\n }))\n .implement(async (input) => {\n const joined = path.join(...input.segments);\n \n return {\n path: joined,\n segments: input.segments,\n };\n })\n .build();\n\n/**\n * Path resolve tool\n */\nexport const pathResolve = toolBuilder()\n .name('path-resolve')\n .description('Resolve a sequence of paths into an absolute path. Resolves relative paths from the current working directory.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['path', 'resolve', 'absolute', 'filesystem'])\n .schema(z.object({\n paths: z.array(z.string().describe(\"String value\")).describe('Paths to resolve'),\n }))\n .implement(async (input) => {\n const resolved = path.resolve(...input.paths);\n \n return {\n path: resolved,\n isAbsolute: path.isAbsolute(resolved),\n };\n })\n .build();\n\n/**\n * Path parse tool\n */\nexport const pathParse = toolBuilder()\n .name('path-parse')\n .description('Parse a file path into its components (directory, filename, extension, etc.).')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['path', 'parse', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('File path to parse'),\n }))\n .implement(async (input) => {\n const parsed = path.parse(input.path);\n \n return {\n root: parsed.root,\n dir: parsed.dir,\n base: parsed.base,\n name: parsed.name,\n ext: parsed.ext,\n isAbsolute: path.isAbsolute(input.path),\n };\n })\n .build();\n\n/**\n * Path basename tool\n */\nexport const pathBasename = toolBuilder()\n .name('path-basename')\n .description('Get the last portion of a path (filename with extension). Optionally remove the extension.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['path', 'basename', 'filename', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('File path'),\n removeExtension: z.boolean().default(false).describe('Remove the file extension'),\n }))\n .implement(async (input) => {\n const basename = input.removeExtension \n ? path.basename(input.path, path.extname(input.path))\n : path.basename(input.path);\n \n return {\n basename,\n extension: path.extname(input.path),\n };\n })\n .build();\n\n/**\n * Path dirname tool\n */\nexport const pathDirname = toolBuilder()\n .name('path-dirname')\n .description('Get the directory name of a path (everything except the last portion).')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['path', 'dirname', 'directory', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('File path'),\n }))\n .implement(async (input) => {\n const dirname = path.dirname(input.path);\n \n return {\n dirname,\n basename: path.basename(input.path),\n };\n })\n .build();\n\n/**\n * Path extension tool\n */\nexport const pathExtension = toolBuilder()\n .name('path-extension')\n .description('Get the file extension from a path (including the dot, e.g., \".txt\").')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['path', 'extension', 'ext', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('File path'),\n }))\n .implement(async (input) => {\n const ext = path.extname(input.path);\n \n return {\n extension: ext,\n hasExtension: ext.length > 0,\n filename: path.basename(input.path, ext),\n };\n })\n .build();\n\n/**\n * Path relative tool\n */\nexport const pathRelative = toolBuilder()\n .name('path-relative')\n .description('Get the relative path from one path to another.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['path', 'relative', 'filesystem'])\n .schema(z.object({\n from: z.string().describe('Source path'),\n to: z.string().describe('Destination path'),\n }))\n .implement(async (input) => {\n const relative = path.relative(input.from, input.to);\n \n return {\n relativePath: relative,\n from: input.from,\n to: input.to,\n };\n })\n .build();\n\n/**\n * Path normalize tool\n */\nexport const pathNormalize = toolBuilder()\n .name('path-normalize')\n .description('Normalize a path by resolving \"..\" and \".\" segments and removing duplicate separators.')\n .category(ToolCategory.FILE_SYSTEM)\n .tags(['path', 'normalize', 'filesystem'])\n .schema(z.object({\n path: z.string().describe('Path to normalize'),\n }))\n .implement(async (input) => {\n const normalized = path.normalize(input.path);\n \n return {\n normalized,\n original: input.path,\n };\n })\n .build();\n\n","/**\n * Date and Time Utility Tools\n * \n * Tools for working with dates, times, and timestamps.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\nimport { format, parse, add, sub, differenceInDays, differenceInHours, differenceInMinutes, isAfter, isBefore, isValid } from 'date-fns';\n\n/**\n * Current date/time tool\n */\nexport const currentDateTime = toolBuilder()\n .name('current-date-time')\n .description('Get the current date and time in various formats (ISO, Unix timestamp, formatted string).')\n .category(ToolCategory.UTILITY)\n .tags(['date', 'time', 'now', 'current'])\n .schema(z.object({\n format: z.enum(['iso', 'unix', 'custom']).default('iso').describe('Output format'),\n customFormat: z.string().optional().describe('Custom format string (e.g., \"yyyy-MM-dd HH:mm:ss\") when format is \"custom\"'),\n timezone: z.string().optional().describe('Timezone (e.g., \"America/New_York\")'),\n }))\n .implement(async (input) => {\n const now = new Date();\n \n let formatted: string | number;\n if (input.format === 'iso') {\n formatted = now.toISOString();\n } else if (input.format === 'unix') {\n formatted = Math.floor(now.getTime() / 1000);\n } else if (input.format === 'custom' && input.customFormat) {\n formatted = format(now, input.customFormat);\n } else {\n formatted = now.toISOString();\n }\n \n return {\n formatted,\n iso: now.toISOString(),\n unix: Math.floor(now.getTime() / 1000),\n year: now.getFullYear(),\n month: now.getMonth() + 1,\n day: now.getDate(),\n hour: now.getHours(),\n minute: now.getMinutes(),\n second: now.getSeconds(),\n };\n })\n .build();\n\n/**\n * Date formatter tool\n */\nexport const dateFormatter = toolBuilder()\n .name('date-formatter')\n .description('Format a date string or timestamp into a different format. Supports ISO, Unix timestamps, and custom formats.')\n .category(ToolCategory.UTILITY)\n .tags(['date', 'format', 'time'])\n .schema(z.object({\n date: z.string().describe('Date string or Unix timestamp to format'),\n outputFormat: z.string().describe('Output format string (e.g., \"yyyy-MM-dd\", \"MMM dd, yyyy\")'),\n inputFormat: z.string().optional().describe('Input format string (optional, auto-detected if not provided)'),\n }))\n .implement(async (input) => {\n try {\n let date: Date;\n \n // Try to parse the input\n if (input.inputFormat) {\n date = parse(input.date, input.inputFormat, new Date());\n } else if (!isNaN(Number(input.date))) {\n // Unix timestamp\n date = new Date(Number(input.date) * 1000);\n } else {\n // ISO or other standard format\n date = new Date(input.date);\n }\n \n if (!isValid(date)) {\n return {\n success: false,\n error: 'Invalid date',\n };\n }\n \n const formatted = format(date, input.outputFormat);\n \n return {\n success: true,\n formatted,\n iso: date.toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to format date',\n };\n }\n })\n .build();\n\n/**\n * Date arithmetic tool\n */\nexport const dateArithmetic = toolBuilder()\n .name('date-arithmetic')\n .description('Add or subtract time from a date. Supports years, months, weeks, days, hours, minutes, and seconds.')\n .category(ToolCategory.UTILITY)\n .tags(['date', 'time', 'add', 'subtract', 'arithmetic'])\n .schema(z.object({\n date: z.string().describe('Starting date (ISO string or Unix timestamp)'),\n operation: z.enum(['add', 'subtract']).describe('Operation to perform'),\n amount: z.number().describe('Amount to add or subtract'),\n unit: z.enum(['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds']).describe('Time unit'),\n }))\n .implement(async (input) => {\n try {\n const date = new Date(input.date);\n \n if (!isValid(date)) {\n return {\n success: false,\n error: 'Invalid date',\n };\n }\n \n const duration = { [input.unit]: input.amount };\n const result = input.operation === 'add' \n ? add(date, duration)\n : sub(date, duration);\n \n return {\n success: true,\n result: result.toISOString(),\n unix: Math.floor(result.getTime() / 1000),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to perform date arithmetic',\n };\n }\n })\n .build();\n\n/**\n * Date difference tool\n */\nexport const dateDifference = toolBuilder()\n .name('date-difference')\n .description('Calculate the difference between two dates in various units (days, hours, minutes).')\n .category(ToolCategory.UTILITY)\n .tags(['date', 'time', 'difference', 'duration'])\n .schema(z.object({\n startDate: z.string().describe('Start date (ISO string or Unix timestamp)'),\n endDate: z.string().describe('End date (ISO string or Unix timestamp)'),\n unit: z.enum(['days', 'hours', 'minutes']).default('days').describe('Unit for the difference'),\n }))\n .implement(async (input) => {\n try {\n const start = new Date(input.startDate);\n const end = new Date(input.endDate);\n \n if (!isValid(start) || !isValid(end)) {\n return {\n success: false,\n error: 'Invalid date(s)',\n };\n }\n \n let difference: number;\n if (input.unit === 'days') {\n difference = differenceInDays(end, start);\n } else if (input.unit === 'hours') {\n difference = differenceInHours(end, start);\n } else {\n difference = differenceInMinutes(end, start);\n }\n \n return {\n success: true,\n difference,\n unit: input.unit,\n startDate: start.toISOString(),\n endDate: end.toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to calculate date difference',\n };\n }\n })\n .build();\n\n/**\n * Date comparison tool\n */\nexport const dateComparison = toolBuilder()\n .name('date-comparison')\n .description('Compare two dates to determine if one is before, after, or equal to the other.')\n .category(ToolCategory.UTILITY)\n .tags(['date', 'time', 'compare', 'comparison'])\n .schema(z.object({\n date1: z.string().describe('First date to compare'),\n date2: z.string().describe('Second date to compare'),\n }))\n .implement(async (input) => {\n try {\n const d1 = new Date(input.date1);\n const d2 = new Date(input.date2);\n \n if (!isValid(d1) || !isValid(d2)) {\n return {\n success: false,\n error: 'Invalid date(s)',\n };\n }\n \n return {\n success: true,\n date1IsBefore: isBefore(d1, d2),\n date1IsAfter: isAfter(d1, d2),\n datesAreEqual: d1.getTime() === d2.getTime(),\n date1: d1.toISOString(),\n date2: d2.toISOString(),\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Failed to compare dates',\n };\n }\n })\n .build();\n\n","/**\n * String Utility Tools\n * \n * Tools for string manipulation and transformation.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\n\n/**\n * String case converter tool\n */\nexport const stringCaseConverter = toolBuilder()\n .name('string-case-converter')\n .description('Convert string to different cases: lowercase, uppercase, title case, camel case, snake case, kebab case.')\n .category(ToolCategory.UTILITY)\n .tags(['string', 'case', 'convert', 'transform'])\n .schema(z.object({\n text: z.string().describe('Text to convert'),\n targetCase: z.enum(['lowercase', 'uppercase', 'title', 'camel', 'snake', 'kebab', 'pascal']).describe('Target case format'),\n }))\n .implement(async (input) => {\n let result: string;\n \n switch (input.targetCase) {\n case 'lowercase':\n result = input.text.toLowerCase();\n break;\n case 'uppercase':\n result = input.text.toUpperCase();\n break;\n case 'title':\n result = input.text.toLowerCase().replace(/\\b\\w/g, (char) => char.toUpperCase());\n break;\n case 'camel':\n result = input.text\n .toLowerCase()\n .replace(/[^a-zA-Z0-9]+(.)/g, (_, char) => char.toUpperCase());\n break;\n case 'snake':\n result = input.text\n .replace(/([A-Z])/g, '_$1')\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_')\n .replace(/^_|_$/g, '');\n break;\n case 'kebab':\n result = input.text\n .replace(/([A-Z])/g, '-$1')\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-|-$/g, '');\n break;\n case 'pascal':\n result = input.text\n .toLowerCase()\n .replace(/[^a-zA-Z0-9]+(.)/g, (_, char) => char.toUpperCase())\n .replace(/^./, (char) => char.toUpperCase());\n break;\n default:\n result = input.text;\n }\n \n return {\n original: input.text,\n converted: result,\n targetCase: input.targetCase,\n };\n })\n .build();\n\n/**\n * String trim tool\n */\nexport const stringTrim = toolBuilder()\n .name('string-trim')\n .description('Remove whitespace from the beginning and/or end of a string. Supports trim, trim start, and trim end.')\n .category(ToolCategory.UTILITY)\n .tags(['string', 'trim', 'whitespace'])\n .schema(z.object({\n text: z.string().describe('Text to trim'),\n mode: z.enum(['both', 'start', 'end']).default('both').describe('Which side to trim'),\n characters: z.string().optional().describe('Optional custom characters to trim (default: whitespace)'),\n }))\n .implement(async (input) => {\n let result: string;\n \n if (input.characters) {\n const chars = input.characters.split('').map(c => c.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')).join('');\n const regex = input.mode === 'both' \n ? new RegExp(`^[${chars}]+|[${chars}]+$`, 'g')\n : input.mode === 'start'\n ? new RegExp(`^[${chars}]+`, 'g')\n : new RegExp(`[${chars}]+$`, 'g');\n result = input.text.replace(regex, '');\n } else {\n result = input.mode === 'both' \n ? input.text.trim()\n : input.mode === 'start'\n ? input.text.trimStart()\n : input.text.trimEnd();\n }\n \n return {\n original: input.text,\n trimmed: result,\n removed: input.text.length - result.length,\n };\n })\n .build();\n\n/**\n * String replace tool\n */\nexport const stringReplace = toolBuilder()\n .name('string-replace')\n .description('Replace occurrences of a substring or pattern in a string. Supports regex patterns and global replacement.')\n .category(ToolCategory.UTILITY)\n .tags(['string', 'replace', 'substitute'])\n .schema(z.object({\n text: z.string().describe('Text to search in'),\n search: z.string().describe('String or regex pattern to search for'),\n replace: z.string().describe('Replacement string'),\n global: z.boolean().default(true).describe('Replace all occurrences (true) or just the first (false)'),\n caseInsensitive: z.boolean().default(false).describe('Case-insensitive search'),\n }))\n .implement(async (input) => {\n const flags = (input.global ? 'g' : '') + (input.caseInsensitive ? 'i' : '');\n const regex = new RegExp(input.search, flags);\n const result = input.text.replace(regex, input.replace);\n \n // Count replacements\n const matches = input.text.match(regex);\n const count = matches ? matches.length : 0;\n \n return {\n original: input.text,\n result,\n replacements: count,\n };\n })\n .build();\n\n/**\n * String split tool\n */\nexport const stringSplit = toolBuilder()\n .name('string-split')\n .description('Split a string into an array of substrings using a delimiter. Supports regex delimiters and limit.')\n .category(ToolCategory.UTILITY)\n .tags(['string', 'split', 'array'])\n .schema(z.object({\n text: z.string().describe('Text to split'),\n delimiter: z.string().describe('Delimiter to split on (can be a regex pattern)'),\n limit: z.number().optional().describe('Maximum number of splits'),\n }))\n .implement(async (input) => {\n const parts = input.text.split(input.delimiter, input.limit);\n \n return {\n parts,\n count: parts.length,\n };\n })\n .build();\n\n/**\n * String join tool\n */\nexport const stringJoin = toolBuilder()\n .name('string-join')\n .description('Join an array of strings into a single string with a separator.')\n .category(ToolCategory.UTILITY)\n .tags(['string', 'join', 'array'])\n .schema(z.object({\n parts: z.array(z.string().describe(\"String value\")).describe('Array of strings to join'),\n separator: z.string().default('').describe('Separator to use between parts'),\n }))\n .implement(async (input) => {\n const result = input.parts.join(input.separator);\n \n return {\n result,\n partCount: input.parts.length,\n length: result.length,\n };\n })\n .build();\n\n/**\n * String substring tool\n */\nexport const stringSubstring = toolBuilder()\n .name('string-substring')\n .description('Extract a substring from a string using start and end positions.')\n .category(ToolCategory.UTILITY)\n .tags(['string', 'substring', 'slice'])\n .schema(z.object({\n text: z.string().describe('Source text'),\n start: z.number().describe('Start position (0-based)'),\n end: z.number().optional().describe('End position (optional, defaults to end of string)'),\n }))\n .implement(async (input) => {\n const result = input.text.substring(input.start, input.end);\n \n return {\n result,\n length: result.length,\n start: input.start,\n end: input.end ?? input.text.length,\n };\n })\n .build();\n\n/**\n * String length tool\n */\nexport const stringLength = toolBuilder()\n .name('string-length')\n .description('Get the length of a string in characters, words, or lines.')\n .category(ToolCategory.UTILITY)\n .tags(['string', 'length', 'count'])\n .schema(z.object({\n text: z.string().describe('Text to measure'),\n }))\n .implement(async (input) => {\n const words = input.text.trim().split(/\\s+/).filter(w => w.length > 0);\n const lines = input.text.split('\\n');\n \n return {\n characters: input.text.length,\n words: words.length,\n lines: lines.length,\n };\n })\n .build();\n\n","/**\n * Math Operations Tools\n * \n * Tools for mathematical calculations and operations.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\n\n/**\n * Calculator tool\n */\nexport const calculator = toolBuilder()\n .name('calculator')\n .description('Perform basic arithmetic operations: add, subtract, multiply, divide, power, modulo.')\n .category(ToolCategory.UTILITY)\n .tags(['math', 'calculator', 'arithmetic'])\n .schema(z.object({\n operation: z.enum(['add', 'subtract', 'multiply', 'divide', 'power', 'modulo']).describe('Mathematical operation to perform'),\n a: z.number().describe('First number'),\n b: z.number().describe('Second number'),\n }))\n .implement(async (input) => {\n let result: number;\n \n switch (input.operation) {\n case 'add':\n result = input.a + input.b;\n break;\n case 'subtract':\n result = input.a - input.b;\n break;\n case 'multiply':\n result = input.a * input.b;\n break;\n case 'divide':\n if (input.b === 0) {\n return {\n success: false,\n error: 'Division by zero',\n };\n }\n result = input.a / input.b;\n break;\n case 'power':\n result = Math.pow(input.a, input.b);\n break;\n case 'modulo':\n result = input.a % input.b;\n break;\n default:\n return {\n success: false,\n error: 'Unknown operation',\n };\n }\n \n return {\n success: true,\n result,\n operation: input.operation,\n a: input.a,\n b: input.b,\n };\n })\n .build();\n\n/**\n * Math functions tool\n */\nexport const mathFunctions = toolBuilder()\n .name('math-functions')\n .description('Apply mathematical functions: sqrt, abs, round, floor, ceil, sin, cos, tan, log, exp.')\n .category(ToolCategory.UTILITY)\n .tags(['math', 'functions', 'trigonometry'])\n .schema(z.object({\n function: z.enum(['sqrt', 'abs', 'round', 'floor', 'ceil', 'sin', 'cos', 'tan', 'log', 'exp']).describe('Mathematical function to apply'),\n value: z.number().describe('Input value'),\n }))\n .implement(async (input) => {\n let result: number;\n \n try {\n switch (input.function) {\n case 'sqrt':\n result = Math.sqrt(input.value);\n break;\n case 'abs':\n result = Math.abs(input.value);\n break;\n case 'round':\n result = Math.round(input.value);\n break;\n case 'floor':\n result = Math.floor(input.value);\n break;\n case 'ceil':\n result = Math.ceil(input.value);\n break;\n case 'sin':\n result = Math.sin(input.value);\n break;\n case 'cos':\n result = Math.cos(input.value);\n break;\n case 'tan':\n result = Math.tan(input.value);\n break;\n case 'log':\n result = Math.log(input.value);\n break;\n case 'exp':\n result = Math.exp(input.value);\n break;\n default:\n return {\n success: false,\n error: 'Unknown function',\n };\n }\n \n if (isNaN(result) || !isFinite(result)) {\n return {\n success: false,\n error: 'Invalid result (NaN or Infinity)',\n };\n }\n \n return {\n success: true,\n result,\n function: input.function,\n input: input.value,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Math operation failed',\n };\n }\n })\n .build();\n\n/**\n * Random number generator tool\n */\nexport const randomNumber = toolBuilder()\n .name('random-number')\n .description('Generate a random number within a specified range. Supports integers and decimals.')\n .category(ToolCategory.UTILITY)\n .tags(['random', 'number', 'generator'])\n .schema(z.object({\n min: z.number().default(0).describe('Minimum value (inclusive)'),\n max: z.number().default(1).describe('Maximum value (exclusive for decimals, inclusive for integers)'),\n integer: z.boolean().default(false).describe('Generate an integer (true) or decimal (false)'),\n }))\n .implement(async (input) => {\n const min = input.min ?? 0;\n const max = input.max ?? 1;\n const integer = input.integer ?? false;\n\n let result: number;\n\n if (integer) {\n result = Math.floor(Math.random() * (max - min + 1)) + min;\n } else {\n result = Math.random() * (max - min) + min;\n }\n\n return {\n result,\n min,\n max,\n integer,\n };\n })\n .build();\n\n/**\n * Statistics tool\n */\nexport const statistics = toolBuilder()\n .name('statistics')\n .description('Calculate statistics for an array of numbers: sum, average, min, max, median, standard deviation.')\n .category(ToolCategory.UTILITY)\n .tags(['math', 'statistics', 'average', 'sum'])\n .schema(z.object({\n numbers: z.array(z.number().describe(\"Number value\")).describe('Array of numbers to analyze'),\n }))\n .implement(async (input) => {\n if (input.numbers.length === 0) {\n return {\n success: false,\n error: 'Empty array',\n };\n }\n \n const sorted = [...input.numbers].sort((a, b) => a - b);\n const sum = input.numbers.reduce((acc, n) => acc + n, 0);\n const average = sum / input.numbers.length;\n const min = sorted[0];\n const max = sorted[sorted.length - 1];\n \n // Median\n const mid = Math.floor(sorted.length / 2);\n const median = sorted.length % 2 === 0\n ? (sorted[mid - 1] + sorted[mid]) / 2\n : sorted[mid];\n \n // Standard deviation\n const variance = input.numbers.reduce((acc, n) => acc + Math.pow(n - average, 2), 0) / input.numbers.length;\n const stdDev = Math.sqrt(variance);\n \n return {\n success: true,\n count: input.numbers.length,\n sum,\n average,\n min,\n max,\n median,\n standardDeviation: stdDev,\n variance,\n };\n })\n .build();\n\n","/**\n * Validation Utility Tools\n * \n * Tools for validating data formats and types.\n */\n\nimport { toolBuilder, ToolCategory } from '@agentforge/core';\nimport { z } from 'zod';\n\n/**\n * Email validator tool\n */\nexport const emailValidator = toolBuilder()\n .name('email-validator')\n .description('Validate if a string is a valid email address format.')\n .category(ToolCategory.UTILITY)\n .tags(['validation', 'email', 'validate'])\n .schema(z.object({\n email: z.string().describe('Email address to validate'),\n }))\n .implement(async (input) => {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const valid = emailRegex.test(input.email);\n \n return {\n valid,\n email: input.email,\n message: valid ? 'Valid email address' : 'Invalid email address format',\n };\n })\n .build();\n\n/**\n * URL validator tool (already exists in web tools, but adding here for completeness)\n */\nexport const urlValidatorSimple = toolBuilder()\n .name('url-validator-simple')\n .description('Validate if a string is a valid URL format.')\n .category(ToolCategory.UTILITY)\n .tags(['validation', 'url', 'validate'])\n .schema(z.object({\n url: z.string().describe('URL to validate'),\n }))\n .implement(async (input) => {\n try {\n new URL(input.url);\n return {\n valid: true,\n url: input.url,\n message: 'Valid URL',\n };\n } catch {\n return {\n valid: false,\n url: input.url,\n message: 'Invalid URL format',\n };\n }\n })\n .build();\n\n/**\n * Phone number validator tool\n */\nexport const phoneValidator = toolBuilder()\n .name('phone-validator')\n .description('Validate if a string is a valid phone number format. Supports various international formats.')\n .category(ToolCategory.UTILITY)\n .tags(['validation', 'phone', 'validate'])\n .schema(z.object({\n phone: z.string().describe('Phone number to validate'),\n strict: z.boolean().default(false).describe('Use strict validation (requires country code)'),\n }))\n .implement(async (input) => {\n // Basic phone validation - matches common formats\n // eslint-disable-next-line no-useless-escape\n const basicRegex = /^[\\d\\s\\-\\+\\(\\)]+$/;\n const strictRegex = /^\\+?[1-9]\\d{1,14}$/; // E.164 format\n \n const regex = input.strict ? strictRegex : basicRegex;\n const valid = regex.test(input.phone.replace(/\\s/g, ''));\n \n return {\n valid,\n phone: input.phone,\n message: valid ? 'Valid phone number format' : 'Invalid phone number format',\n };\n })\n .build();\n\n/**\n * Credit card validator tool\n */\nexport const creditCardValidator = toolBuilder()\n .name('credit-card-validator')\n .description('Validate if a string is a valid credit card number using the Luhn algorithm.')\n .category(ToolCategory.UTILITY)\n .tags(['validation', 'credit-card', 'validate', 'luhn'])\n .schema(z.object({\n cardNumber: z.string().describe('Credit card number to validate'),\n }))\n .implement(async (input) => {\n // Remove spaces and dashes\n // eslint-disable-next-line no-useless-escape\n const cleaned = input.cardNumber.replace(/[\\s\\-]/g, '');\n \n // Check if it's all digits\n if (!/^\\d+$/.test(cleaned)) {\n return {\n valid: false,\n message: 'Card number must contain only digits',\n };\n }\n \n // Luhn algorithm\n let sum = 0;\n let isEven = false;\n \n for (let i = cleaned.length - 1; i >= 0; i--) {\n let digit = parseInt(cleaned[i], 10);\n \n if (isEven) {\n digit *= 2;\n if (digit > 9) {\n digit -= 9;\n }\n }\n \n sum += digit;\n isEven = !isEven;\n }\n \n const valid = sum % 10 === 0;\n \n return {\n valid,\n cardNumber: input.cardNumber,\n message: valid ? 'Valid credit card number' : 'Invalid credit card number (failed Luhn check)',\n };\n })\n .build();\n\n/**\n * IP address validator tool\n */\nexport const ipValidator = toolBuilder()\n .name('ip-validator')\n .description('Validate if a string is a valid IPv4 or IPv6 address.')\n .category(ToolCategory.UTILITY)\n .tags(['validation', 'ip', 'validate', 'network'])\n .schema(z.object({\n ip: z.string().describe('IP address to validate'),\n version: z.enum(['v4', 'v6', 'any']).default('any').describe('IP version to validate against'),\n }))\n .implement(async (input) => {\n const ipv4Regex = /^(\\d{1,3}\\.){3}\\d{1,3}$/;\n const ipv6Regex = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/;\n \n let valid = false;\n let detectedVersion: string | undefined;\n \n if (input.version === 'v4' || input.version === 'any') {\n if (ipv4Regex.test(input.ip)) {\n // Additional check for valid ranges (0-255)\n const parts = input.ip.split('.');\n valid = parts.every(part => {\n const num = parseInt(part, 10);\n return num >= 0 && num <= 255;\n });\n if (valid) detectedVersion = 'IPv4';\n }\n }\n \n if (!valid && (input.version === 'v6' || input.version === 'any')) {\n if (ipv6Regex.test(input.ip)) {\n valid = true;\n detectedVersion = 'IPv6';\n }\n }\n \n return {\n valid,\n ip: input.ip,\n version: detectedVersion,\n message: valid ? `Valid ${detectedVersion} address` : 'Invalid IP address format',\n };\n })\n .build();\n\n/**\n * UUID validator tool\n */\nexport const uuidValidator = toolBuilder()\n .name('uuid-validator')\n .description('Validate if a string is a valid UUID (v1, v3, v4, or v5).')\n .category(ToolCategory.UTILITY)\n .tags(['validation', 'uuid', 'validate', 'guid'])\n .schema(z.object({\n uuid: z.string().describe('UUID to validate'),\n }))\n .implement(async (input) => {\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n const valid = uuidRegex.test(input.uuid);\n \n let version: number | undefined;\n if (valid) {\n version = parseInt(input.uuid[14], 10);\n }\n \n return {\n valid,\n uuid: input.uuid,\n version,\n message: valid ? `Valid UUID v${version}` : 'Invalid UUID format',\n };\n })\n .build();\n\n"]}
|