@skrun-dev/schema 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +19 -0
- package/dist/errors.js.map +1 -0
- package/dist/generators/index.d.ts +3 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +3 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/skill-importer.d.ts +15 -0
- package/dist/generators/skill-importer.d.ts.map +1 -0
- package/dist/generators/skill-importer.js +54 -0
- package/dist/generators/skill-importer.js.map +1 -0
- package/dist/generators/yaml-serializer.d.ts +3 -0
- package/dist/generators/yaml-serializer.d.ts.map +1 -0
- package/dist/generators/yaml-serializer.js +10 -0
- package/dist/generators/yaml-serializer.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/agent-yaml.d.ts +9 -0
- package/dist/parsers/agent-yaml.d.ts.map +1 -0
- package/dist/parsers/agent-yaml.js +46 -0
- package/dist/parsers/agent-yaml.js.map +1 -0
- package/dist/parsers/agents-md.d.ts +7 -0
- package/dist/parsers/agents-md.d.ts.map +1 -0
- package/dist/parsers/agents-md.js +18 -0
- package/dist/parsers/agents-md.js.map +1 -0
- package/dist/parsers/index.d.ts +4 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +4 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/skill-md.d.ts +9 -0
- package/dist/parsers/skill-md.d.ts.map +1 -0
- package/dist/parsers/skill-md.js +46 -0
- package/dist/parsers/skill-md.js.map +1 -0
- package/dist/schemas/agent-config.d.ts +263 -0
- package/dist/schemas/agent-config.d.ts.map +1 -0
- package/dist/schemas/agent-config.js +28 -0
- package/dist/schemas/agent-config.js.map +1 -0
- package/dist/schemas/index.d.ts +10 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +10 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/inputs-outputs.d.ts +36 -0
- package/dist/schemas/inputs-outputs.d.ts.map +1 -0
- package/dist/schemas/inputs-outputs.js +15 -0
- package/dist/schemas/inputs-outputs.js.map +1 -0
- package/dist/schemas/mcp-server.d.ts +39 -0
- package/dist/schemas/mcp-server.d.ts.map +1 -0
- package/dist/schemas/mcp-server.js +17 -0
- package/dist/schemas/mcp-server.js.map +1 -0
- package/dist/schemas/model-config.d.ts +46 -0
- package/dist/schemas/model-config.d.ts.map +1 -0
- package/dist/schemas/model-config.js +14 -0
- package/dist/schemas/model-config.js.map +1 -0
- package/dist/schemas/permissions.d.ts +16 -0
- package/dist/schemas/permissions.d.ts.map +1 -0
- package/dist/schemas/permissions.js +7 -0
- package/dist/schemas/permissions.js.map +1 -0
- package/dist/schemas/runtime-config.d.ts +16 -0
- package/dist/schemas/runtime-config.d.ts.map +1 -0
- package/dist/schemas/runtime-config.js +10 -0
- package/dist/schemas/runtime-config.js.map +1 -0
- package/dist/schemas/skill-frontmatter.d.ts +25 -0
- package/dist/schemas/skill-frontmatter.d.ts.map +1 -0
- package/dist/schemas/skill-frontmatter.js +19 -0
- package/dist/schemas/skill-frontmatter.js.map +1 -0
- package/dist/schemas/state-config.d.ts +13 -0
- package/dist/schemas/state-config.d.ts.map +1 -0
- package/dist/schemas/state-config.js +9 -0
- package/dist/schemas/state-config.js.map +1 -0
- package/dist/schemas/test-case.d.ts +16 -0
- package/dist/schemas/test-case.d.ts.map +1 -0
- package/dist/schemas/test-case.js +7 -0
- package/dist/schemas/test-case.js.map +1 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/validators/combined.d.ts +16 -0
- package/dist/validators/combined.d.ts.map +1 -0
- package/dist/validators/combined.js +125 -0
- package/dist/validators/combined.js.map +1 -0
- package/dist/validators/index.d.ts +2 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +2 -0
- package/dist/validators/index.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const SKILL_NAME_REGEX = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/;
|
|
3
|
+
export const SkillFrontmatterSchema = z.object({
|
|
4
|
+
name: z
|
|
5
|
+
.string()
|
|
6
|
+
.min(1, "Skill name is required")
|
|
7
|
+
.max(64, "Skill name must be 64 characters or fewer")
|
|
8
|
+
.regex(SKILL_NAME_REGEX, "Skill name must be lowercase alphanumeric with hyphens only")
|
|
9
|
+
.refine((s) => !s.includes("--"), "Skill name must not contain consecutive hyphens"),
|
|
10
|
+
description: z
|
|
11
|
+
.string()
|
|
12
|
+
.min(1, "Skill description is required")
|
|
13
|
+
.max(1024, "Skill description must be 1024 characters or fewer"),
|
|
14
|
+
license: z.string().optional(),
|
|
15
|
+
compatibility: z.string().max(500, "Compatibility must be 500 characters or fewer").optional(),
|
|
16
|
+
metadata: z.record(z.string(), z.string()).optional(),
|
|
17
|
+
"allowed-tools": z.string().optional(),
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=skill-frontmatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-frontmatter.js","sourceRoot":"","sources":["../../src/schemas/skill-frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAE3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,wBAAwB,CAAC;SAChC,GAAG,CAAC,EAAE,EAAE,2CAA2C,CAAC;SACpD,KAAK,CAAC,gBAAgB,EAAE,6DAA6D,CAAC;SACtF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,iDAAiD,CAAC;IACtF,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC;SACvC,GAAG,CAAC,IAAI,EAAE,oDAAoD,CAAC;IAClE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,+CAA+C,CAAC,CAAC,QAAQ,EAAE;IAC9F,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const StateConfigSchema: z.ZodObject<{
|
|
3
|
+
type: z.ZodDefault<z.ZodEnum<["kv", "none"]>>;
|
|
4
|
+
ttl: z.ZodDefault<z.ZodString>;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
type: "none" | "kv";
|
|
7
|
+
ttl: string;
|
|
8
|
+
}, {
|
|
9
|
+
type?: "none" | "kv" | undefined;
|
|
10
|
+
ttl?: string | undefined;
|
|
11
|
+
}>;
|
|
12
|
+
export type StateConfig = z.infer<typeof StateConfigSchema>;
|
|
13
|
+
//# sourceMappingURL=state-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-config.d.ts","sourceRoot":"","sources":["../../src/schemas/state-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;EAM5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-config.js","sourceRoot":"","sources":["../../src/schemas/state-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,KAAK,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACpD,OAAO,CAAC,KAAK,CAAC;CAClB,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const TestCaseSchema: z.ZodObject<{
|
|
3
|
+
name: z.ZodString;
|
|
4
|
+
input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
5
|
+
assert: z.ZodString;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
name: string;
|
|
8
|
+
input: Record<string, unknown>;
|
|
9
|
+
assert: string;
|
|
10
|
+
}, {
|
|
11
|
+
name: string;
|
|
12
|
+
input: Record<string, unknown>;
|
|
13
|
+
assert: string;
|
|
14
|
+
}>;
|
|
15
|
+
export type TestCase = z.infer<typeof TestCaseSchema>;
|
|
16
|
+
//# sourceMappingURL=test-case.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-case.d.ts","sourceRoot":"","sources":["../../src/schemas/test-case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;;;;EAIzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const TestCaseSchema = z.object({
|
|
3
|
+
name: z.string().min(1, "Test name is required"),
|
|
4
|
+
input: z.record(z.string(), z.unknown()),
|
|
5
|
+
assert: z.string().min(1, "Test assertion expression is required"),
|
|
6
|
+
});
|
|
7
|
+
//# sourceMappingURL=test-case.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-case.js","sourceRoot":"","sources":["../../src/schemas/test-case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,uCAAuC,CAAC;CACnE,CAAC,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { ValidationIssue } from "./errors.js";
|
|
2
|
+
export type { AgentConfig, InputField, OutputField, McpServer, ModelConfig, ModelProvider, Permissions, RuntimeConfig, SkillFrontmatter, StateConfig, TestCase, } from "./schemas/index.js";
|
|
3
|
+
export type { ParsedSkill } from "./parsers/skill-md.js";
|
|
4
|
+
export type { ParsedAgentsMd } from "./parsers/agents-md.js";
|
|
5
|
+
export type { ParsedAgentYaml } from "./parsers/agent-yaml.js";
|
|
6
|
+
export type { ValidationResult } from "./validators/combined.js";
|
|
7
|
+
export type { GeneratedAgentYaml, AgentYamlPrompt } from "./generators/skill-importer.js";
|
|
8
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,YAAY,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,uDAAuD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ValidationIssue } from "../errors.js";
|
|
2
|
+
import type { ParsedAgentYaml } from "../parsers/agent-yaml.js";
|
|
3
|
+
import type { ParsedAgentsMd } from "../parsers/agents-md.js";
|
|
4
|
+
import type { ParsedSkill } from "../parsers/skill-md.js";
|
|
5
|
+
export interface ValidationResult {
|
|
6
|
+
valid: boolean;
|
|
7
|
+
errors: ValidationIssue[];
|
|
8
|
+
warnings: ValidationIssue[];
|
|
9
|
+
parsed: {
|
|
10
|
+
skill: ParsedSkill;
|
|
11
|
+
agentConfig: ParsedAgentYaml;
|
|
12
|
+
agentsMd?: ParsedAgentsMd;
|
|
13
|
+
} | null;
|
|
14
|
+
}
|
|
15
|
+
export declare function validateAgent(dir: string): Promise<ValidationResult>;
|
|
16
|
+
//# sourceMappingURL=combined.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combined.d.ts","sourceRoot":"","sources":["../../src/validators/combined.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE;QACN,KAAK,EAAE,WAAW,CAAC;QACnB,WAAW,EAAE,eAAe,CAAC;QAC7B,QAAQ,CAAC,EAAE,cAAc,CAAC;KAC3B,GAAG,IAAI,CAAC;CACV;AAWD,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoH1E"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { access, readFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { parseAgentYaml } from "../parsers/agent-yaml.js";
|
|
4
|
+
import { parseAgentsMd } from "../parsers/agents-md.js";
|
|
5
|
+
import { parseSkillMd } from "../parsers/skill-md.js";
|
|
6
|
+
async function fileExists(path) {
|
|
7
|
+
try {
|
|
8
|
+
await access(path);
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export async function validateAgent(dir) {
|
|
16
|
+
const errors = [];
|
|
17
|
+
const warnings = [];
|
|
18
|
+
const skillPath = join(dir, "SKILL.md");
|
|
19
|
+
const agentYamlPath = join(dir, "agent.yaml");
|
|
20
|
+
const agentsMdPath = join(dir, "AGENTS.md");
|
|
21
|
+
// Check SKILL.md exists
|
|
22
|
+
if (!(await fileExists(skillPath))) {
|
|
23
|
+
errors.push({
|
|
24
|
+
code: "MISSING_SKILL_MD",
|
|
25
|
+
message: "SKILL.md is required but not found in the agent directory",
|
|
26
|
+
file: "SKILL.md",
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// Check agent.yaml exists
|
|
30
|
+
if (!(await fileExists(agentYamlPath))) {
|
|
31
|
+
errors.push({
|
|
32
|
+
code: "MISSING_AGENT_YAML",
|
|
33
|
+
message: "agent.yaml is required but not found in the agent directory",
|
|
34
|
+
file: "agent.yaml",
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
// If either required file is missing, return early
|
|
38
|
+
if (errors.length > 0) {
|
|
39
|
+
return { valid: false, errors, warnings, parsed: null };
|
|
40
|
+
}
|
|
41
|
+
// Parse SKILL.md
|
|
42
|
+
let skill;
|
|
43
|
+
try {
|
|
44
|
+
const content = await readFile(skillPath, "utf-8");
|
|
45
|
+
skill = parseSkillMd(content);
|
|
46
|
+
skill.filePath = skillPath;
|
|
47
|
+
}
|
|
48
|
+
catch (cause) {
|
|
49
|
+
errors.push({
|
|
50
|
+
code: "INVALID_SKILL_MD",
|
|
51
|
+
message: `Failed to parse SKILL.md: ${cause instanceof Error ? cause.message : String(cause)}`,
|
|
52
|
+
file: "SKILL.md",
|
|
53
|
+
});
|
|
54
|
+
return { valid: false, errors, warnings, parsed: null };
|
|
55
|
+
}
|
|
56
|
+
// Parse agent.yaml
|
|
57
|
+
let agentConfig;
|
|
58
|
+
try {
|
|
59
|
+
const content = await readFile(agentYamlPath, "utf-8");
|
|
60
|
+
agentConfig = parseAgentYaml(content);
|
|
61
|
+
agentConfig.filePath = agentYamlPath;
|
|
62
|
+
}
|
|
63
|
+
catch (cause) {
|
|
64
|
+
errors.push({
|
|
65
|
+
code: "INVALID_AGENT_YAML",
|
|
66
|
+
message: `Failed to parse agent.yaml: ${cause instanceof Error ? cause.message : String(cause)}`,
|
|
67
|
+
file: "agent.yaml",
|
|
68
|
+
});
|
|
69
|
+
return { valid: false, errors, warnings, parsed: null };
|
|
70
|
+
}
|
|
71
|
+
// Check AGENTS.md if context_mode is persistent
|
|
72
|
+
let agentsMd;
|
|
73
|
+
if (agentConfig.config.context_mode === "persistent") {
|
|
74
|
+
if (!(await fileExists(agentsMdPath))) {
|
|
75
|
+
errors.push({
|
|
76
|
+
code: "CONTEXT_MODE_NO_AGENTS_MD",
|
|
77
|
+
message: 'context_mode is "persistent" but AGENTS.md is missing. Create AGENTS.md or set context_mode to "skill".',
|
|
78
|
+
file: "AGENTS.md",
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
try {
|
|
83
|
+
const content = await readFile(agentsMdPath, "utf-8");
|
|
84
|
+
agentsMd = parseAgentsMd(content);
|
|
85
|
+
agentsMd.filePath = agentsMdPath;
|
|
86
|
+
}
|
|
87
|
+
catch (cause) {
|
|
88
|
+
errors.push({
|
|
89
|
+
code: "INVALID_AGENTS_MD",
|
|
90
|
+
message: `Failed to parse AGENTS.md: ${cause instanceof Error ? cause.message : String(cause)}`,
|
|
91
|
+
file: "AGENTS.md",
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Cross-file warnings: name consistency
|
|
97
|
+
const skillName = skill.frontmatter.name;
|
|
98
|
+
const agentSlug = agentConfig.config.name.split("/")[1];
|
|
99
|
+
if (agentSlug && skillName !== agentSlug) {
|
|
100
|
+
warnings.push({
|
|
101
|
+
code: "NAME_MISMATCH",
|
|
102
|
+
message: `SKILL.md name "${skillName}" does not match agent.yaml slug "${agentSlug}"`,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
// Cross-file warnings: tools alignment
|
|
106
|
+
const allowedTools = skill.frontmatter["allowed-tools"];
|
|
107
|
+
if (allowedTools && agentConfig.config.tools.length > 0) {
|
|
108
|
+
const skillTools = allowedTools.split(/\s+/).filter(Boolean);
|
|
109
|
+
const agentTools = agentConfig.config.tools;
|
|
110
|
+
const extraTools = agentTools.filter((t) => !skillTools.some((st) => st.includes(t)));
|
|
111
|
+
if (extraTools.length > 0) {
|
|
112
|
+
warnings.push({
|
|
113
|
+
code: "TOOLS_NOT_IN_SKILL",
|
|
114
|
+
message: `agent.yaml declares tools [${extraTools.join(", ")}] not listed in SKILL.md allowed-tools`,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
valid: errors.length === 0,
|
|
120
|
+
errors,
|
|
121
|
+
warnings,
|
|
122
|
+
parsed: errors.length === 0 ? { skill, agentConfig, agentsMd } : null,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=combined.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combined.js","sourceRoot":"","sources":["../../src/validators/combined.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAatD,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAsB,EAAE,CAAC;IAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAE5C,wBAAwB;IACxB,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,2DAA2D;YACpE,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,6DAA6D;YACtE,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;IACL,CAAC;IAED,mDAAmD;IACnD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1D,CAAC;IAED,iBAAiB;IACjB,IAAI,KAAkB,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9B,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC9F,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1D,CAAC;IAED,mBAAmB;IACnB,IAAI,WAA4B,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACvD,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,WAAW,CAAC,QAAQ,GAAG,aAAa,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAChG,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1D,CAAC;IAED,gDAAgD;IAChD,IAAI,QAAoC,CAAC;IACzC,IAAI,WAAW,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;QACrD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EACL,yGAAyG;gBAC3G,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACtD,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;gBAClC,QAAQ,CAAC,QAAQ,GAAG,YAAY,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC/F,IAAI,EAAE,WAAW;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;IACzC,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,kBAAkB,SAAS,qCAAqC,SAAS,GAAG;SACtF,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACxD,IAAI,YAAY,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;QAC5C,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,8BAA8B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC;aACrG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;QACN,QAAQ;QACR,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;KACtE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyB,MAAM,eAAe,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@skrun-dev/schema",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"import": "./dist/index.js"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"main": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"files": [
|
|
14
|
+
"dist"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"test": "vitest run",
|
|
19
|
+
"test:watch": "vitest",
|
|
20
|
+
"dev": "tsc --watch"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"yaml": "^2.6.0",
|
|
24
|
+
"zod": "^3.24.0"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^25.5.0",
|
|
28
|
+
"typescript": "^5.7.0",
|
|
29
|
+
"vitest": "^3.0.0"
|
|
30
|
+
},
|
|
31
|
+
"publishConfig": {
|
|
32
|
+
"access": "public"
|
|
33
|
+
},
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "git+https://github.com/skrun-dev/skrun.git",
|
|
38
|
+
"directory": "packages/schema"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/skrun-dev/skrun#readme",
|
|
41
|
+
"bugs": "https://github.com/skrun-dev/skrun/issues",
|
|
42
|
+
"keywords": [
|
|
43
|
+
"skrun",
|
|
44
|
+
"agent-skills",
|
|
45
|
+
"ai-agents"
|
|
46
|
+
],
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": ">=20.0.0"
|
|
49
|
+
}
|
|
50
|
+
}
|