Files
9router/src/shared/constants/skills.js
T
decolua d4bc42e1f5 feat: add STT support, Gemini TTS, and expand usage tracking
- 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
2026-05-05 10:32:59 +07:00

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`;
}