From 78de1d245530510b7e02ff4604eb5bb575eefdd6 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Wed, 27 May 2026 20:31:31 -0300 Subject: [PATCH] feat(agent-skills): expand catalog source to 42 entries (22 API + 20 CLI) Replace 18-entry hardcoded AGENT_SKILLS array with 42-entry CURATED_SKILLS covering all areas listed in D28 of the master plan. Each curated entry has id, name, description, category, area, icon, and optional flags. Adds backward-compatible AGENT_SKILLS alias (deprecated) that maps curated entries to the old AgentSkill shape with empty endpoints/cliCommands arrays so the existing /dashboard/agent-skills page continues to work until F7 rewrites it. Imports AgentSkill, SkillArea, SkillCategory types from src/lib/agentSkills/types.ts (F1 single source of truth) instead of redeclaring locally. --- src/shared/constants/agentSkills.ts | 613 +++++++++++++++++++--------- 1 file changed, 429 insertions(+), 184 deletions(-) diff --git a/src/shared/constants/agentSkills.ts b/src/shared/constants/agentSkills.ts index 5aaf8144cc..773e3df9b8 100644 --- a/src/shared/constants/agentSkills.ts +++ b/src/shared/constants/agentSkills.ts @@ -1,5 +1,8 @@ // Agent Skills metadata — single source of truth for /dashboard/agent-skills. -// Each skill = 1 raw GitHub URL the user copies and pastes to any AI agent. +// Each curated entry drives the catalog; endpoints/cliCommands are resolved +// at runtime by src/lib/agentSkills/catalog.ts (via OpenAPI + CLI parsers). + +import type { AgentSkill, SkillArea, SkillCategory } from "@/lib/agentSkills/types"; const REPO = "diegosouzapw/OmniRoute"; const BRANCH = "main"; @@ -9,189 +12,6 @@ export const AGENT_SKILLS_REPO_URL = `https://github.com/${REPO}`; export const AGENT_SKILLS_RAW_BASE = `https://raw.githubusercontent.com/${REPO}/refs/heads/${BRANCH}/${SKILL_PATH}`; export const AGENT_SKILLS_BLOB_BASE = `https://github.com/${REPO}/blob/${BRANCH}/${SKILL_PATH}`; -export interface AgentSkill { - id: string; - name: string; - description: string; - endpoint: string | null; - icon: string; - category: "api" | "cli"; - isEntry?: boolean; - isNew?: boolean; -} - -export const AGENT_SKILLS: AgentSkill[] = [ - // ── API Skills ────────────────────────────────────────────────────────────── - { - id: "omniroute", - name: "OmniRoute (Entry)", - description: - "Setup + index of all capabilities. Start here — covers base URL, auth, model discovery, and links to every capability skill.", - endpoint: null, - icon: "hub", - category: "api", - isEntry: true, - }, - { - id: "omniroute-chat", - name: "Chat", - description: "Chat / code-gen via OpenAI or Anthropic format with streaming and reasoning.", - endpoint: "/v1/chat/completions", - icon: "chat", - category: "api", - }, - { - id: "omniroute-image", - name: "Image Generation", - description: "Text-to-image via DALL-E, Imagen, FLUX, MiniMax, SDWebUI, and more.", - endpoint: "/v1/images/generations", - icon: "image", - category: "api", - }, - { - id: "omniroute-tts", - name: "Text-to-Speech", - description: "OpenAI / ElevenLabs / Edge / Google / Deepgram voices.", - endpoint: "/v1/audio/speech", - icon: "record_voice_over", - category: "api", - }, - { - id: "omniroute-stt", - name: "Speech-to-Text", - description: - "Transcribe audio via OpenAI Whisper, Groq, Gemini, Deepgram, AssemblyAI, and more.", - endpoint: "/v1/audio/transcriptions", - icon: "mic", - category: "api", - }, - { - id: "omniroute-embeddings", - name: "Embeddings", - description: "Vectors for RAG / semantic search via OpenAI, Gemini, Mistral, and more.", - endpoint: "/v1/embeddings", - icon: "scatter_plot", - category: "api", - }, - { - id: "omniroute-web-search", - name: "Web Search", - description: "Tavily / Exa / Brave / Serper / SearXNG / Google PSE / You.com.", - endpoint: "/v1/search", - icon: "search", - category: "api", - }, - { - id: "omniroute-web-fetch", - name: "Web Fetch", - description: "URL → markdown / text / HTML via Firecrawl, Jina, Tavily, Exa.", - endpoint: "/v1/web/fetch", - icon: "language", - category: "api", - }, - { - id: "omniroute-mcp", - name: "MCP Server", - description: - "37 tools over SSE/stdio/HTTP: routing, cache, compression, memory, skills, providers, audit.", - endpoint: "/api/mcp/sse", - icon: "electrical_services", - category: "api", - }, - { - id: "omniroute-a2a", - name: "A2A Protocol", - description: - "JSON-RPC 2.0 agent-to-agent server with 5 built-in skills: smart-routing, quota, discovery, cost, health.", - endpoint: "/a2a", - icon: "device_hub", - category: "api", - }, - { - id: "omniroute-routing", - name: "Routing & Combos", - description: - "Create and configure routing combos, 14 strategies, Auto-combo scoring, and fallback chains.", - endpoint: "/api/combos", - icon: "route", - category: "api", - isNew: true, - }, - { - id: "omniroute-compression", - name: "Compression", - description: - "RTK (command output), Caveman (prose), stacked mode, and MCP accessibility-tree filter. Save 60–90% tokens.", - endpoint: "/api/settings/compression", - icon: "compress", - category: "api", - isNew: true, - }, - { - id: "omniroute-monitoring", - name: "Monitoring & Health", - description: - "Health endpoints, circuit breakers, provider metrics (p50/p95/p99), budget guard, and MCP monitoring tools.", - endpoint: "/api/monitoring/health", - icon: "monitor_heart", - category: "api", - isNew: true, - }, - - // ── CLI Skills ─────────────────────────────────────────────────────────────── - { - id: "omniroute-cli", - name: "CLI (Entry)", - description: - "Install, global flags (--output, --base-url, --api-key), environment variables, and index of all CLI capability skills.", - endpoint: null, - icon: "terminal", - category: "cli", - isEntry: true, - isNew: true, - }, - { - id: "omniroute-cli-admin", - name: "CLI Admin", - description: - "Server lifecycle (start/stop/restart), non-interactive setup, doctor diagnostics, backup/restore, autostart, and tunnels.", - endpoint: null, - icon: "manage_accounts", - category: "cli", - isNew: true, - }, - { - id: "omniroute-cli-providers", - name: "CLI Providers & Keys", - description: - "Add/test/remove provider connections, manage API keys, rotate credentials, OAuth flows, list models, and manage combos.", - endpoint: null, - icon: "key", - category: "cli", - isNew: true, - }, - { - id: "omniroute-cli-cloud", - name: "CLI Cloud Agents", - description: - "Control Codex, Devin, and Jules cloud agents — create tasks, track status, approve plans, send messages, and view sources.", - endpoint: null, - icon: "cloud_sync", - category: "cli", - isNew: true, - }, - { - id: "omniroute-cli-eval", - name: "CLI Evals", - description: - "Create and run eval suites, watch live benchmark progress, view scorecards, compare models, and integrate with CI.", - endpoint: null, - icon: "science", - category: "cli", - isNew: true, - }, -]; - export function getAgentSkillRawUrl(id: string): string { return `${AGENT_SKILLS_RAW_BASE}/${id}/SKILL.md`; } @@ -199,3 +19,428 @@ export function getAgentSkillRawUrl(id: string): string { export function getAgentSkillBlobUrl(id: string): string { return `${AGENT_SKILLS_BLOB_BASE}/${id}/SKILL.md`; } + +// ── Curated entry shape ─────────────────────────────────────────────────────── +// Only the fields that cannot be derived at runtime go here. +// The full AgentSkill shape (endpoints, cliCommands, rawUrl, githubUrl) +// is composed by catalog.ts at runtime. + +export interface CuratedSkillEntry { + id: string; + name: string; + description: string; + category: SkillCategory; + area: SkillArea; + icon?: string; + isEntry?: boolean; + isNew?: boolean; +} + +// ── Canonical 42-entry curated list (D28) ──────────────────────────────────── + +/** Curated metadata for all 42 agent skills. Source-of-truth for the catalog. */ +export const CURATED_SKILLS: CuratedSkillEntry[] = [ + // ── API Skills (22) ───────────────────────────────────────────────────────── + + { + id: "omni-auth", + name: "Authentication", + description: + "Manage API key authentication and session tokens. Start here to authenticate requests via Bearer token, obtain session cookies, and configure login requirements for the OmniRoute API.", + category: "api", + area: "auth", + icon: "lock", + isEntry: true, + }, + { + id: "omni-providers", + name: "Providers", + description: + "Manage provider connections, API keys, OAuth flows, and connection tests via the REST API. List, add, update, remove, and test AI provider integrations (OpenAI, Anthropic, Gemini, and 160+).", + category: "api", + area: "providers", + icon: "key", + }, + { + id: "omni-models", + name: "Models", + description: + "Query available AI models across all configured providers. List models, resolve model aliases, and browse the full model catalog including provider-specific variants.", + category: "api", + area: "models", + icon: "neurology", + }, + { + id: "omni-combos-routing", + name: "Combos & Routing", + description: + "Create and manage routing combos with 14 strategies (priority, weighted, round-robin, Auto-combo, etc.). Configure fallback chains, test routing outcomes, and retrieve combo metrics.", + category: "api", + area: "combos-routing", + icon: "route", + isNew: true, + }, + { + id: "omni-api-keys", + name: "API Keys", + description: + "Create, list, rotate, and revoke OmniRoute API keys. Control per-key scopes, spending limits, and expiration. Keys gate access to all proxy and management endpoints.", + category: "api", + area: "api-keys", + icon: "vpn_key", + }, + { + id: "omni-usage-logs", + name: "Usage & Logs", + description: + "Access detailed call logs and usage analytics. Filter by provider, model, time range, status, and cost. Export logs and aggregate token usage across all connections.", + category: "api", + area: "usage-logs", + icon: "bar_chart", + }, + { + id: "omni-budget", + name: "Budget & Rate Limits", + description: + "Configure spending limits, token quotas, and rate-limit policies per API key or globally. Inspect current consumption and enforce cost controls across providers.", + category: "api", + area: "budget", + icon: "savings", + }, + { + id: "omni-settings", + name: "Settings", + description: + "Read and update global application settings: system prompts, thinking budget, IP filters, payload rules, combo defaults, and require-login configuration.", + category: "api", + area: "settings", + icon: "settings", + }, + { + id: "omni-proxies", + name: "Proxy Configuration", + description: + "Configure HTTP/HTTPS/SOCKS proxies for upstream provider requests. Set per-provider or global proxy rules, test connectivity, and manage proxy rotation.", + category: "api", + area: "proxies", + icon: "swap_horiz", + }, + { + id: "omni-cache", + name: "Cache", + description: + "Manage the LLM response cache. View cache statistics, clear entries, configure TTL policies, and control semantic-similarity caching thresholds.", + category: "api", + area: "cache", + icon: "cached", + }, + { + id: "omni-compression", + name: "Compression", + description: + "Configure RTK (command output), Caveman (prose), and stacked compression modes. Manage language packs, custom rules, and test prompt compression reducing tokens by 60–90%.", + category: "api", + area: "compression", + icon: "compress", + isNew: true, + }, + { + id: "omni-context-rtk", + name: "Context & RTK", + description: + "Configure RTK filters, context engineering rules, and context relay settings. Test compression with real prompt samples and manage context transformation pipelines.", + category: "api", + area: "context-rtk", + icon: "data_object", + isNew: true, + }, + { + id: "omni-resilience", + name: "Resilience & Monitoring", + description: + "Monitor provider health, circuit-breaker states, p50/p95/p99 latency metrics, and budget guard alerts. Inspect connection cooldowns and model lockouts in real time.", + category: "api", + area: "resilience", + icon: "monitor_heart", + isNew: true, + }, + { + id: "omni-cli-tools", + name: "CLI Tools", + description: + "Manage CLI tool integrations exposed via the API. List, configure, and invoke CLI tool plugins that extend OmniRoute's automation surface.", + category: "api", + area: "cli-tools", + icon: "terminal", + }, + { + id: "omni-tunnels", + name: "Tunnels", + description: + "Create and manage secure tunnels (ngrok, Cloudflare Tunnel, custom) to expose OmniRoute to the internet or share access with remote agents and CI pipelines.", + category: "api", + area: "tunnels", + icon: "vpn_lock", + }, + { + id: "omni-sync-cloud", + name: "Cloud Sync", + description: + "Synchronise OmniRoute configuration, provider connections, and settings to/from cloud storage. Manage cloud worker authentication and remote backup targets.", + category: "api", + area: "sync-cloud", + icon: "cloud_sync", + }, + { + id: "omni-db-backups", + name: "Database & Backups", + description: + "Trigger system backups, restore from backup files, and manage the SQLite database lifecycle. Supports export, import, and incremental snapshot strategies.", + category: "api", + area: "db-backups", + icon: "backup", + }, + { + id: "omni-webhooks", + name: "Webhooks", + description: + "Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, provider.error, budget.exceeded, etc.) and manage delivery retries.", + category: "api", + area: "webhooks", + icon: "webhook", + }, + { + id: "omni-mcp", + name: "MCP Server", + description: + "Connect to the OmniRoute MCP server (37 tools, 3 transports: SSE/stdio/HTTP). Covers routing, cache, compression, memory, skills, providers, and audit tools across 16 permission scopes.", + category: "api", + area: "mcp", + icon: "electrical_services", + }, + { + id: "omni-agents-a2a", + name: "Agents & A2A Protocol", + description: + "Interact with OmniRoute via JSON-RPC 2.0 agent-to-agent protocol. 6 built-in A2A skills: smart-routing, quota-management, provider-discovery, cost-analysis, health-report, list-capabilities.", + category: "api", + area: "agents-a2a", + icon: "device_hub", + }, + { + id: "omni-version-manager", + name: "Version Manager", + description: + "Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints.", + category: "api", + area: "version-manager", + icon: "manage_history", + }, + { + id: "omni-inference", + name: "Inference (OpenAI-compatible)", + description: + "The core OpenAI-compatible inference endpoints: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank, and the Responses API. The primary integration surface for AI agents.", + category: "api", + area: "inference", + icon: "hub", + }, + + // ── CLI Skills (20) ────────────────────────────────────────────────────────── + + { + id: "cli-serve", + name: "CLI: Serve", + description: + "Start, stop, and restart the OmniRoute server from the CLI. Manage daemon mode, port configuration, auto-recovery, system tray integration, and the dashboard open shortcut.", + category: "cli", + area: "cli-serve", + icon: "play_circle", + isEntry: true, + }, + { + id: "cli-health", + name: "CLI: Health", + description: + "Check server health, component status, and live metrics from the CLI. Run `health`, `health components`, and `health watch` for a real-time dashboard of circuit breakers and provider status.", + category: "cli", + area: "cli-health", + icon: "favorite", + }, + { + id: "cli-providers", + name: "CLI: Providers", + description: + "Manage provider connections from the CLI: list available/configured providers, add, test, test-all, validate, rotate API keys, and view per-provider metrics.", + category: "cli", + area: "cli-providers", + icon: "key", + }, + { + id: "cli-keys", + name: "CLI: API Keys", + description: + "Create, list, rotate, and revoke OmniRoute API keys from the CLI. Manage OAuth flows for provider authentication and inspect key scopes and expiration.", + category: "cli", + area: "cli-keys", + icon: "vpn_key", + }, + { + id: "cli-models", + name: "CLI: Models", + description: + "Query available AI models, list model aliases, and browse the full model catalog from the CLI. Filter by provider, search by capability, and resolve model name variants.", + category: "cli", + area: "cli-models", + icon: "neurology", + }, + { + id: "cli-chat", + name: "CLI: Chat", + description: + "Send chat completions, stream responses, and start an interactive REPL session from the CLI. Supports all OmniRoute providers, combo routing, and system prompt configuration.", + category: "cli", + area: "cli-chat", + icon: "chat", + }, + { + id: "cli-routing", + name: "CLI: Routing & Combos", + description: + "Create, list, update, and delete routing combos from the CLI. Test routing strategies, inspect combo metrics, and configure fallback chains interactively.", + category: "cli", + area: "cli-routing", + icon: "route", + }, + { + id: "cli-resilience", + name: "CLI: Resilience & Quotas", + description: + "Inspect and manage circuit-breaker states, connection cooldowns, quota limits, and backoff levels from the CLI. Reset stuck providers and configure resilience thresholds.", + category: "cli", + area: "cli-resilience", + icon: "monitor_heart", + }, + { + id: "cli-compression", + name: "CLI: Compression", + description: + "Configure and test prompt compression from the CLI. Manage RTK filters, Caveman rules, stacked compression modes, and preview compression output with real prompts.", + category: "cli", + area: "cli-compression", + icon: "compress", + }, + { + id: "cli-contexts", + name: "CLI: Contexts & Sessions", + description: + "Manage context engineering configurations, RTK filter sets, and conversation sessions from the CLI. Apply context-relay settings and inspect active context pipelines.", + category: "cli", + area: "cli-contexts", + icon: "data_object", + }, + { + id: "cli-cost-usage", + name: "CLI: Cost & Usage", + description: + "View cost breakdowns, token usage, and call logs from the CLI. Filter by provider, model, or date range. Export usage reports and inspect per-connection spending.", + category: "cli", + area: "cli-cost-usage", + icon: "savings", + }, + { + id: "cli-mcp", + name: "CLI: MCP", + description: + "Inspect the MCP server status, list registered tools and scopes, run tool invocations, and manage MCP audit logs from the CLI.", + category: "cli", + area: "cli-mcp", + icon: "electrical_services", + }, + { + id: "cli-a2a", + name: "CLI: A2A Protocol", + description: + "Interact with the OmniRoute A2A server from the CLI. Send tasks, inspect skill execution history, and test the JSON-RPC 2.0 agent-to-agent protocol interactively.", + category: "cli", + area: "cli-a2a", + icon: "device_hub", + }, + { + id: "cli-tunnel", + name: "CLI: Tunnels", + description: + "Start and stop tunnel connections (ngrok, Cloudflare, custom) from the CLI. Inspect active tunnel URLs, configure authentication, and test external reachability.", + category: "cli", + area: "cli-tunnel", + icon: "vpn_lock", + }, + { + id: "cli-backup-sync", + name: "CLI: Backup & Sync", + description: + "Backup and restore OmniRoute data from the CLI. Trigger incremental snapshots, sync to cloud storage, manage backup schedules, and restore from archive files.", + category: "cli", + area: "cli-backup-sync", + icon: "backup", + }, + { + id: "cli-policy-audit", + name: "CLI: Policy & Audit", + description: + "Inspect audit logs, manage access policies, view telemetry data, and review request history from the CLI. Filter by event type, user, or time range for compliance workflows.", + category: "cli", + area: "cli-policy-audit", + icon: "policy", + }, + { + id: "cli-batches", + name: "CLI: Batches & Files", + description: + "Submit and monitor batch inference jobs from the CLI. Upload and manage files for batch processing, retrieve results, and integrate batch pipelines with CI/CD workflows.", + category: "cli", + area: "cli-batches", + icon: "batch_prediction", + }, + { + id: "cli-eval", + name: "CLI: Evals", + description: + "Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.", + category: "cli", + area: "cli-eval", + icon: "science", + }, + { + id: "cli-plugins-skills", + name: "CLI: Plugins, Skills & Memory", + description: + "Manage Omni Skills (list, install, test, remove), plugins (create, configure), and persistent memory (search, add, clear) from the CLI.", + category: "cli", + area: "cli-plugins-skills", + icon: "extension", + }, + { + id: "cli-setup", + name: "CLI: Setup & Config", + description: + "Run initial setup, configure global CLI settings, manage environment variables, check for updates, and configure autostart via the CLI setup and config commands.", + category: "cli", + area: "cli-setup", + icon: "build", + }, +]; + +// ── Backward-compatible re-export ───────────────────────────────────────────── +// TODO(F7): Remove AGENT_SKILLS alias once AgentSkillsPageClient is rewritten. +// The old shape expected `endpoint` (singular string | null) instead of `endpoints` (array). +// This shim preserves the old dashboard until F7 rewrites it. + +/** @deprecated Use getCatalog() from src/lib/agentSkills/catalog.ts instead. */ +export const AGENT_SKILLS: AgentSkill[] = CURATED_SKILLS.map((s) => ({ + ...s, + endpoints: s.category === "api" ? [] : undefined, + cliCommands: s.category === "cli" ? [] : undefined, + rawUrl: getAgentSkillRawUrl(s.id), + githubUrl: getAgentSkillBlobUrl(s.id), +}));