@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.
Files changed (90) hide show
  1. package/LICENSE +21 -0
  2. package/dist/errors.d.ts +16 -0
  3. package/dist/errors.d.ts.map +1 -0
  4. package/dist/errors.js +19 -0
  5. package/dist/errors.js.map +1 -0
  6. package/dist/generators/index.d.ts +3 -0
  7. package/dist/generators/index.d.ts.map +1 -0
  8. package/dist/generators/index.js +3 -0
  9. package/dist/generators/index.js.map +1 -0
  10. package/dist/generators/skill-importer.d.ts +15 -0
  11. package/dist/generators/skill-importer.d.ts.map +1 -0
  12. package/dist/generators/skill-importer.js +54 -0
  13. package/dist/generators/skill-importer.js.map +1 -0
  14. package/dist/generators/yaml-serializer.d.ts +3 -0
  15. package/dist/generators/yaml-serializer.d.ts.map +1 -0
  16. package/dist/generators/yaml-serializer.js +10 -0
  17. package/dist/generators/yaml-serializer.js.map +1 -0
  18. package/dist/index.d.ts +16 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +15 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/parsers/agent-yaml.d.ts +9 -0
  23. package/dist/parsers/agent-yaml.d.ts.map +1 -0
  24. package/dist/parsers/agent-yaml.js +46 -0
  25. package/dist/parsers/agent-yaml.js.map +1 -0
  26. package/dist/parsers/agents-md.d.ts +7 -0
  27. package/dist/parsers/agents-md.d.ts.map +1 -0
  28. package/dist/parsers/agents-md.js +18 -0
  29. package/dist/parsers/agents-md.js.map +1 -0
  30. package/dist/parsers/index.d.ts +4 -0
  31. package/dist/parsers/index.d.ts.map +1 -0
  32. package/dist/parsers/index.js +4 -0
  33. package/dist/parsers/index.js.map +1 -0
  34. package/dist/parsers/skill-md.d.ts +9 -0
  35. package/dist/parsers/skill-md.d.ts.map +1 -0
  36. package/dist/parsers/skill-md.js +46 -0
  37. package/dist/parsers/skill-md.js.map +1 -0
  38. package/dist/schemas/agent-config.d.ts +263 -0
  39. package/dist/schemas/agent-config.d.ts.map +1 -0
  40. package/dist/schemas/agent-config.js +28 -0
  41. package/dist/schemas/agent-config.js.map +1 -0
  42. package/dist/schemas/index.d.ts +10 -0
  43. package/dist/schemas/index.d.ts.map +1 -0
  44. package/dist/schemas/index.js +10 -0
  45. package/dist/schemas/index.js.map +1 -0
  46. package/dist/schemas/inputs-outputs.d.ts +36 -0
  47. package/dist/schemas/inputs-outputs.d.ts.map +1 -0
  48. package/dist/schemas/inputs-outputs.js +15 -0
  49. package/dist/schemas/inputs-outputs.js.map +1 -0
  50. package/dist/schemas/mcp-server.d.ts +39 -0
  51. package/dist/schemas/mcp-server.d.ts.map +1 -0
  52. package/dist/schemas/mcp-server.js +17 -0
  53. package/dist/schemas/mcp-server.js.map +1 -0
  54. package/dist/schemas/model-config.d.ts +46 -0
  55. package/dist/schemas/model-config.d.ts.map +1 -0
  56. package/dist/schemas/model-config.js +14 -0
  57. package/dist/schemas/model-config.js.map +1 -0
  58. package/dist/schemas/permissions.d.ts +16 -0
  59. package/dist/schemas/permissions.d.ts.map +1 -0
  60. package/dist/schemas/permissions.js +7 -0
  61. package/dist/schemas/permissions.js.map +1 -0
  62. package/dist/schemas/runtime-config.d.ts +16 -0
  63. package/dist/schemas/runtime-config.d.ts.map +1 -0
  64. package/dist/schemas/runtime-config.js +10 -0
  65. package/dist/schemas/runtime-config.js.map +1 -0
  66. package/dist/schemas/skill-frontmatter.d.ts +25 -0
  67. package/dist/schemas/skill-frontmatter.d.ts.map +1 -0
  68. package/dist/schemas/skill-frontmatter.js +19 -0
  69. package/dist/schemas/skill-frontmatter.js.map +1 -0
  70. package/dist/schemas/state-config.d.ts +13 -0
  71. package/dist/schemas/state-config.d.ts.map +1 -0
  72. package/dist/schemas/state-config.js +9 -0
  73. package/dist/schemas/state-config.js.map +1 -0
  74. package/dist/schemas/test-case.d.ts +16 -0
  75. package/dist/schemas/test-case.d.ts.map +1 -0
  76. package/dist/schemas/test-case.js +7 -0
  77. package/dist/schemas/test-case.js.map +1 -0
  78. package/dist/types.d.ts +8 -0
  79. package/dist/types.d.ts.map +1 -0
  80. package/dist/types.js +3 -0
  81. package/dist/types.js.map +1 -0
  82. package/dist/validators/combined.d.ts +16 -0
  83. package/dist/validators/combined.d.ts.map +1 -0
  84. package/dist/validators/combined.js +125 -0
  85. package/dist/validators/combined.js.map +1 -0
  86. package/dist/validators/index.d.ts +2 -0
  87. package/dist/validators/index.d.ts.map +1 -0
  88. package/dist/validators/index.js +2 -0
  89. package/dist/validators/index.js.map +1 -0
  90. 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,9 @@
1
+ import { z } from "zod";
2
+ export const StateConfigSchema = z.object({
3
+ type: z.enum(["kv", "none"]).default("kv"),
4
+ ttl: z
5
+ .string()
6
+ .regex(/^\d+d$/, 'TTL must be in days (e.g., "30d")')
7
+ .default("30d"),
8
+ });
9
+ //# sourceMappingURL=state-config.js.map
@@ -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"}
@@ -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,3 @@
1
+ // Re-export all public types from their source modules
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -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":"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"}
@@ -0,0 +1,2 @@
1
+ export { validateAgent, type ValidationResult } from "./combined.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export { validateAgent } from "./combined.js";
2
+ //# sourceMappingURL=index.js.map
@@ -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
+ }