classifier.ts
1038 bytes
1import type { FrontmatterDocument, SkillInvocationMode, SkillSource } from "../types.ts";
2import { getDisableModelInvocation } from "../frontmatter/validation.ts";
3
4export function classifyInvocationMode(doc: FrontmatterDocument): SkillInvocationMode {
5 return getDisableModelInvocation(doc) ? "manual-only" : "agent-invocable";
6}
7
8export function formatSourceKind(kind: SkillSource["kind"] | string): string {
9 switch (kind) {
10 case "global":
11 return "Global";
12 case "user":
13 return "User";
14 case "project":
15 return "Project";
16 case "project-legacy":
17 return "Project (.agents)";
18 default:
19 return "Unknown";
20 }
21}
22
23export function sourceCategory(source: SkillSource): "global" | "user" | "project" | "unknown" {
24 if (source.kind === "project-legacy") return "project";
25 if (source.kind === "global" || source.kind === "user" || source.kind === "project") return source.kind;
26 return "unknown";
27}
28
29export function sourceBadge(source: SkillSource): string {
30 return sourceCategory(source);
31}