mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-17 20:52:15 +03:00
* feat(providers): add Zylo UnoRouter and Poolside registries * feat(providers): integrate audited free-tier gateways * feat: add wave2 free-tier provider registries * feat(providers): add Mixlayer Speka and TokenReply registries * feat: add wave 2 free-tier provider registries * fix: align meganova provider slug * feat(providers): integrate wave2 free-tier gateways * feat(providers): add Wave 3-A free-tier registries * feat(providers): add HelyxAI Auriko and Poixe registries * feat(providers): add Naga AI and Chat Oripe registries * feat(providers): integrate wave3 free-tier gateways * feat(providers): add FreeInference registry * feat(providers): add Free.ai registry * feat(providers): integrate wave4 free-tier gateways * docs: synchronize provider and free-tier inventories * refactor(providers): split audited gateway catalog * feat(providers): add audited Void AI and HelixMind gateways * feat(providers): finalize audited free-tier integration * test(providers): update APIKEY split count to 229 after rebase onto release/v3.8.50 The rebase merged the release catalog (201 APIKEY providers) with the PR's 28 free-tier additions, yielding 229 total. Correct the characterization count so the partition assertion reflects the true merged state. --------- Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com> Co-authored-by: backryun <bakryun0718@proton.me>
93 lines
3.3 KiB
TypeScript
93 lines
3.3 KiB
TypeScript
import { z } from "zod";
|
|
import {
|
|
getCatalog,
|
|
getSkillById,
|
|
filterCatalog,
|
|
computeCoverage,
|
|
fetchSkillMarkdown,
|
|
} from "@/lib/agentSkills/catalog";
|
|
import type { AgentSkill, SkillCoverage } from "@/lib/agentSkills/types";
|
|
|
|
// ── Input Schemas ────────────────────────────────────────────────────────────
|
|
|
|
export const AgentSkillsListSchema = z.object({
|
|
category: z
|
|
.enum(["api", "cli", "config"])
|
|
.optional()
|
|
.describe("Filter by category: 'api', 'cli', or 'config'"),
|
|
area: z.string().optional().describe("Filter by area (e.g. 'providers', 'models', 'cli-serve')"),
|
|
});
|
|
|
|
export const AgentSkillsGetSchema = z.object({
|
|
id: z.string().describe("Canonical skill ID (e.g. 'omni-providers', 'cli-serve')"),
|
|
});
|
|
|
|
export const AgentSkillsCoverageSchema = z.object({});
|
|
|
|
// ── Tool Definitions ─────────────────────────────────────────────────────────
|
|
|
|
export const agentSkillTools = {
|
|
omniroute_agent_skills_list: {
|
|
name: "omniroute_agent_skills_list",
|
|
description:
|
|
"List OmniRoute agent skills with optional filtering by category (api/cli/config) or area. Returns skill metadata including id, name, description, endpoints/commands, and URLs.",
|
|
inputSchema: AgentSkillsListSchema,
|
|
handler: async (args: z.infer<typeof AgentSkillsListSchema>) => {
|
|
const skills: AgentSkill[] =
|
|
args.category || args.area
|
|
? filterCatalog({ category: args.category, area: args.area })
|
|
: getCatalog();
|
|
|
|
return {
|
|
skills: skills.map((s) => ({
|
|
id: s.id,
|
|
name: s.name,
|
|
description: s.description,
|
|
category: s.category,
|
|
area: s.area,
|
|
endpoints: s.endpoints,
|
|
cliCommands: s.cliCommands,
|
|
icon: s.icon,
|
|
isEntry: s.isEntry,
|
|
isNew: s.isNew,
|
|
rawUrl: s.rawUrl,
|
|
githubUrl: s.githubUrl,
|
|
})),
|
|
count: skills.length,
|
|
coverage: computeCoverage(),
|
|
};
|
|
},
|
|
},
|
|
|
|
omniroute_agent_skills_get: {
|
|
name: "omniroute_agent_skills_get",
|
|
description:
|
|
"Get detailed metadata and SKILL.md markdown for a single agent skill by its canonical ID. Returns all skill fields plus the raw markdown content.",
|
|
inputSchema: AgentSkillsGetSchema,
|
|
handler: async (args: z.infer<typeof AgentSkillsGetSchema>) => {
|
|
const skill: AgentSkill | null = getSkillById(args.id);
|
|
if (!skill) {
|
|
throw new Error(`Skill not found: ${args.id}`);
|
|
}
|
|
|
|
const markdown = await fetchSkillMarkdown(args.id);
|
|
|
|
return {
|
|
...skill,
|
|
markdown,
|
|
};
|
|
},
|
|
},
|
|
|
|
omniroute_agent_skills_coverage: {
|
|
name: "omniroute_agent_skills_coverage",
|
|
description:
|
|
"Returns the current SKILL.md coverage stats: how many of the 23 API, 21 CLI, and 1 config skill have generated SKILL.md files on the filesystem vs the catalog total.",
|
|
inputSchema: AgentSkillsCoverageSchema,
|
|
handler: async (_args: z.infer<typeof AgentSkillsCoverageSchema>) => {
|
|
const coverage: SkillCoverage = computeCoverage();
|
|
return coverage;
|
|
},
|
|
},
|
|
};
|