import { ToolDefinition, CTManifest } from '@conveniencepro/ctp-core'; /** * ConveniencePro Tool Protocol (CTP) - AI Tools Manifest Generator * * Generate AI tools manifest for LLM integration and discovery. * * @module @conveniencepro/ctp-discovery/ai-tools */ /** * AI Tool parameter definition */ interface AIToolParameter { name: string; type: string; description: string; required: boolean; default?: unknown; enum?: string[]; minimum?: number; maximum?: number; } /** * AI Tool definition for LLM consumption */ interface AIToolDefinition { id: string; name: string; description: string; category: string; tags: string[]; endpoint: string; method: 'GET' | 'POST'; parameters: AIToolParameter[]; output: string; example?: { input: Record; output: Record; }; } /** * AI Tools Manifest structure */ interface AIToolsManifest { version: string; name: string; description: string; base_url: string; auth: 'none' | 'api_key' | 'oauth2'; tools: AIToolDefinition[]; categories: Array<{ id: string; name: string; description: string; tool_count: number; }>; updated_at: string; } /** * Options for AI Tools manifest generation */ interface AIToolsGeneratorOptions { /** Service name */ name?: string; /** Service description */ description?: string; /** Base URL for API calls */ baseUrl?: string; /** Authentication method */ auth?: 'none' | 'api_key' | 'oauth2'; /** Path prefix for tool endpoints */ pathPrefix?: string; /** Include examples in output */ includeExamples?: boolean; /** Category descriptions */ categoryDescriptions?: Record; } /** * Generate AI Tools manifest from tool definitions */ declare function generateAIToolsManifest(tools: ToolDefinition[], options?: AIToolsGeneratorOptions): AIToolsManifest; /** * Generate AI Tools manifest as JSON string */ declare function generateAIToolsJSON(tools: ToolDefinition[], options?: AIToolsGeneratorOptions): string; /** * Options for CTP manifest generation */ interface CTManifestOptions { /** Provider name */ providerName?: string; /** Provider URL */ providerUrl?: string; /** Provider logo URL */ providerLogo?: string; /** Provider description */ providerDescription?: string; /** Contact email */ contactEmail?: string; /** Base URL for API */ baseUrl?: string; /** API version */ apiVersion?: string; /** Authentication method */ auth?: 'none' | 'api_key' | 'oauth2' | 'bearer'; /** OpenAPI spec URL */ openapiUrl?: string; /** AI tools manifest URL */ aiToolsUrl?: string; /** LLMs.txt URL */ llmsTxtUrl?: string; } /** * Generate CTP manifest */ declare function generateCTManifest(tools: ToolDefinition[], options?: CTManifestOptions): CTManifest; /** * Generate CTP manifest as JSON string */ declare function generateCTManifestJSON(tools: ToolDefinition[], options?: CTManifestOptions): string; /** * ChatGPT Plugin manifest (ai-plugin.json format) */ interface ChatGPTPluginManifest { schema_version: string; name_for_human: string; name_for_model: string; description_for_human: string; description_for_model: string; auth: { type: 'none' | 'api_key' | 'oauth'; }; api: { type: 'openapi'; url: string; }; logo_url?: string; contact_email?: string; legal_info_url?: string; } /** * Options for ChatGPT plugin manifest */ interface ChatGPTPluginOptions { nameForHuman?: string; nameForModel?: string; descriptionForHuman?: string; descriptionForModel?: string; openapiUrl?: string; logoUrl?: string; contactEmail?: string; legalInfoUrl?: string; } /** * Generate ChatGPT plugin manifest */ declare function generateChatGPTPlugin(options?: ChatGPTPluginOptions): ChatGPTPluginManifest; /** * Generate ChatGPT plugin manifest as JSON string */ declare function generateChatGPTPluginJSON(options?: ChatGPTPluginOptions): string; export { type AIToolDefinition, type AIToolParameter, type AIToolsGeneratorOptions, type AIToolsManifest, type CTManifestOptions, type ChatGPTPluginManifest, type ChatGPTPluginOptions, generateAIToolsJSON, generateAIToolsManifest, generateCTManifest, generateCTManifestJSON, generateChatGPTPlugin, generateChatGPTPluginJSON };