mirror of
https://github.com/Nezumi-2711/9router.git
synced 2026-09-22 20:00:47 +00:00
- Speech-to-Text: full pipeline with sttCore handler, /v1/audio/transcriptions endpoint, sttConfig for OpenAI, Gemini, Groq, Deepgram, AssemblyAI, HuggingFace, NVIDIA Parakeet; new 9router-stt skill - Gemini TTS: add gemini provider with 30 prebuilt voices and TTS_PROVIDER_CONFIG - Usage: implement GLM (intl/cn) and MiniMax (intl/cn) quota fetchers; refactor Gemini CLI usage to use retrieveUserQuota with per-model buckets - Disabled models: lowdb-backed disabledModelsDb + /api/models/disabled route - Header search: reusable Zustand store (headerSearchStore) wired into Header - CLI tools: add Claude Cowork tool card and cowork-settings API - Providers: introduce mediaPriority sorting in getProvidersByKind, add Kimi K2.6, reorder hermes, drop qwen STT kind - UI: expand media-providers/[kind]/[id] page (+314), enhance OAuthModal, ModelSelectModal, ProviderTopology, ProxyPools, ProviderLimits - Assets: refresh provider PNGs (alicode, byteplus, cloudflare-ai, nvidia, ollama, vertex, volcengine-ark) and add aws-polly, fal-ai, jina-ai, recraft, runwayml, stability-ai, topaz, black-forest-labs
79 lines
2.3 KiB
JavaScript
79 lines
2.3 KiB
JavaScript
// Agent Skills metadata — single source of truth for /dashboard/skills page.
|
|
// Each skill = 1 raw GitHub URL the user copies and pastes to any AI agent.
|
|
|
|
const REPO = "decolua/9router";
|
|
const BRANCH = "master";
|
|
const SKILL_PATH = "skills";
|
|
|
|
export const SKILLS_REPO_URL = `https://github.com/${REPO}`;
|
|
export const SKILLS_RAW_BASE = `https://raw.githubusercontent.com/${REPO}/refs/heads/${BRANCH}/${SKILL_PATH}`;
|
|
export const SKILLS_BLOB_BASE = `https://github.com/${REPO}/blob/${BRANCH}/${SKILL_PATH}`;
|
|
|
|
export const SKILLS = [
|
|
{
|
|
id: "9router",
|
|
name: "9Router (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",
|
|
isEntry: true,
|
|
},
|
|
{
|
|
id: "9router-chat",
|
|
name: "Chat",
|
|
description: "Chat / code-gen via OpenAI or Anthropic format with streaming.",
|
|
endpoint: "/v1/chat/completions",
|
|
icon: "chat",
|
|
},
|
|
{
|
|
id: "9router-image",
|
|
name: "Image Generation",
|
|
description: "Text-to-image via DALL-E, Imagen, FLUX, MiniMax, SDWebUI…",
|
|
endpoint: "/v1/images/generations",
|
|
icon: "image",
|
|
},
|
|
{
|
|
id: "9router-tts",
|
|
name: "Text-to-Speech",
|
|
description: "OpenAI / ElevenLabs / Edge / Google / Deepgram voices.",
|
|
endpoint: "/v1/audio/speech",
|
|
icon: "record_voice_over",
|
|
},
|
|
{
|
|
id: "9router-stt",
|
|
name: "Speech-to-Text",
|
|
description: "Transcribe audio via OpenAI Whisper, Groq, Gemini, Deepgram, AssemblyAI…",
|
|
endpoint: "/v1/audio/transcriptions",
|
|
icon: "mic",
|
|
},
|
|
{
|
|
id: "9router-embeddings",
|
|
name: "Embeddings",
|
|
description: "Vectors for RAG / semantic search via OpenAI, Gemini, Mistral…",
|
|
endpoint: "/v1/embeddings",
|
|
icon: "scatter_plot",
|
|
},
|
|
{
|
|
id: "9router-web-search",
|
|
name: "Web Search",
|
|
description: "Tavily / Exa / Brave / Serper / SearXNG / Google PSE / You.com.",
|
|
endpoint: "/v1/search",
|
|
icon: "search",
|
|
},
|
|
{
|
|
id: "9router-web-fetch",
|
|
name: "Web Fetch",
|
|
description: "URL → markdown / text / HTML via Firecrawl, Jina, Tavily, Exa.",
|
|
endpoint: "/v1/web/fetch",
|
|
icon: "language",
|
|
},
|
|
];
|
|
|
|
export function getSkillRawUrl(id) {
|
|
return `${SKILLS_RAW_BASE}/${id}/SKILL.md`;
|
|
}
|
|
|
|
export function getSkillBlobUrl(id) {
|
|
return `${SKILLS_BLOB_BASE}/${id}/SKILL.md`;
|
|
}
|