@skrun-dev/schema 0.7.0 → 1.0.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.
@@ -0,0 +1,43 @@
1
+ /** A file entry to pack into a `.agent` bundle. */
2
+ export interface AgentTarEntry {
3
+ name: string;
4
+ content: Buffer;
5
+ }
6
+ /** A raw entry read out of a `.agent` bundle, content collected in memory. */
7
+ export interface UnpackedAgentEntry {
8
+ name: string;
9
+ /** tar entry type — `"file"`, `"symlink"`, `"directory"`, `"link"`, … */
10
+ type: string;
11
+ /** Present for symlink / hardlink entries. */
12
+ linkname?: string;
13
+ content: Buffer;
14
+ }
15
+ /** Directory / file names never included in a bundle. */
16
+ export declare const AGENT_BUNDLE_EXCLUDES: ReadonlySet<string>;
17
+ /**
18
+ * True if a single path segment (a file or directory name) must be excluded from
19
+ * a bundle: an explicit exclude, any dotfile, a `*.secret` file, or a built
20
+ * `*.agent` bundle (a build artifact — never ship a prior build's output).
21
+ */
22
+ export declare function isExcludedEntry(name: string): boolean;
23
+ /**
24
+ * True if a bundle entry is unsafe to extract: an absolute or parent-traversing
25
+ * name, or a symlink whose target escapes. Pure string analysis — callers decide
26
+ * the reaction (skip vs throw) and keep their own on-disk resolve guard.
27
+ */
28
+ export declare function isUnsafeName(name: string, linkname?: string | null): boolean;
29
+ /**
30
+ * Pack file entries into a deterministic gzipped ustar `.agent` bundle. Entry
31
+ * names are normalised to POSIX separators; mtime/uid/gid/mode are pinned.
32
+ */
33
+ export declare function packAgentTar(entries: AgentTarEntry[]): Promise<Buffer>;
34
+ /**
35
+ * Read every entry out of a gzipped ustar `.agent` bundle into memory. Enforces a
36
+ * caller-supplied decompression cap (gzip-bomb defense). Does not touch disk and
37
+ * applies no path policy — callers inspect `type`/`linkname` (via `isUnsafeName`)
38
+ * and choose to skip or throw.
39
+ */
40
+ export declare function unpackAgentTar(gz: Buffer, opts: {
41
+ maxBytes: number;
42
+ }): Promise<UnpackedAgentEntry[]>;
43
+ //# sourceMappingURL=bundle-tar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-tar.d.ts","sourceRoot":"","sources":["../src/bundle-tar.ts"],"names":[],"mappings":"AAQA,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAOD,yDAAyD;AACzD,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAUpD,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD;AAQD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAE5E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBtE;AAmBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAiC/B"}
@@ -0,0 +1,129 @@
1
+ import { gunzipSync, gzipSync } from "node:zlib";
2
+ import { extract as tarExtract, pack as tarPack } from "tar-stream";
3
+ // Names/uid/gid/mode/mtime are pinned so identical inputs produce byte-identical
4
+ // bundles — required for a stable integrity hash over the bundle bytes.
5
+ const PINNED_MTIME = new Date(0);
6
+ const PINNED_MODE = 0o644;
7
+ /** Directory / file names never included in a bundle. */
8
+ export const AGENT_BUNDLE_EXCLUDES = new Set([
9
+ "node_modules",
10
+ ".git",
11
+ "dist",
12
+ ".env",
13
+ ".DS_Store",
14
+ "__pycache__",
15
+ ".pytest_cache",
16
+ "venv",
17
+ ".venv",
18
+ ]);
19
+ /**
20
+ * True if a single path segment (a file or directory name) must be excluded from
21
+ * a bundle: an explicit exclude, any dotfile, a `*.secret` file, or a built
22
+ * `*.agent` bundle (a build artifact — never ship a prior build's output).
23
+ */
24
+ export function isExcludedEntry(name) {
25
+ if (AGENT_BUNDLE_EXCLUDES.has(name))
26
+ return true;
27
+ if (name.startsWith(".") && name !== ".")
28
+ return true;
29
+ if (name.endsWith(".secret"))
30
+ return true;
31
+ if (name.endsWith(".agent"))
32
+ return true;
33
+ return false;
34
+ }
35
+ function pathEscapes(p) {
36
+ if (p.startsWith("/") || p.startsWith("\\"))
37
+ return true; // absolute (posix / unc)
38
+ if (/^[a-zA-Z]:[\\/]/.test(p))
39
+ return true; // windows drive-absolute
40
+ return p.split(/[\\/]/).includes(".."); // any parent-dir traversal segment
41
+ }
42
+ /**
43
+ * True if a bundle entry is unsafe to extract: an absolute or parent-traversing
44
+ * name, or a symlink whose target escapes. Pure string analysis — callers decide
45
+ * the reaction (skip vs throw) and keep their own on-disk resolve guard.
46
+ */
47
+ export function isUnsafeName(name, linkname) {
48
+ return pathEscapes(name) || (linkname != null && pathEscapes(linkname));
49
+ }
50
+ /**
51
+ * Pack file entries into a deterministic gzipped ustar `.agent` bundle. Entry
52
+ * names are normalised to POSIX separators; mtime/uid/gid/mode are pinned.
53
+ */
54
+ export function packAgentTar(entries) {
55
+ const pack = tarPack();
56
+ const chunks = [];
57
+ const collected = new Promise((resolve, reject) => {
58
+ pack.on("data", (c) => chunks.push(c));
59
+ pack.on("end", () => resolve(Buffer.concat(chunks)));
60
+ pack.on("error", reject);
61
+ });
62
+ for (const { name, content } of entries) {
63
+ const header = {
64
+ name: name.split(/[\\/]/).join("/"),
65
+ size: content.length,
66
+ mtime: PINNED_MTIME,
67
+ mode: PINNED_MODE,
68
+ uid: 0,
69
+ gid: 0,
70
+ type: "file",
71
+ };
72
+ pack.entry(header, content);
73
+ }
74
+ pack.finalize();
75
+ return collected.then((tar) => gzipSync(tar));
76
+ }
77
+ function safeGunzip(gz, maxBytes) {
78
+ try {
79
+ return gunzipSync(gz, { maxOutputLength: maxBytes });
80
+ }
81
+ catch (err) {
82
+ const code = err.code;
83
+ if (code === "ERR_BUFFER_TOO_LARGE" ||
84
+ (err instanceof RangeError && /maxOutputLength|too large/i.test(err.message))) {
85
+ throw new Error(`Decompressed bundle exceeds ${maxBytes} bytes (gzip-bomb defense — raise the cap if this is legitimate).`);
86
+ }
87
+ throw err;
88
+ }
89
+ }
90
+ /**
91
+ * Read every entry out of a gzipped ustar `.agent` bundle into memory. Enforces a
92
+ * caller-supplied decompression cap (gzip-bomb defense). Does not touch disk and
93
+ * applies no path policy — callers inspect `type`/`linkname` (via `isUnsafeName`)
94
+ * and choose to skip or throw.
95
+ */
96
+ export function unpackAgentTar(gz, opts) {
97
+ return new Promise((resolve, reject) => {
98
+ // Decompress inside the executor so a gzip-bomb rejects the promise rather
99
+ // than throwing synchronously at the call site.
100
+ let tar;
101
+ try {
102
+ tar = safeGunzip(gz, opts.maxBytes);
103
+ }
104
+ catch (err) {
105
+ reject(err);
106
+ return;
107
+ }
108
+ const extract = tarExtract();
109
+ const entries = [];
110
+ extract.on("entry", (header, entryStream, next) => {
111
+ const parts = [];
112
+ entryStream.on("data", (c) => parts.push(c));
113
+ entryStream.on("end", () => {
114
+ entries.push({
115
+ name: header.name,
116
+ type: header.type ?? "file",
117
+ linkname: header.linkname ?? undefined,
118
+ content: Buffer.concat(parts),
119
+ });
120
+ next();
121
+ });
122
+ entryStream.on("error", reject);
123
+ });
124
+ extract.on("finish", () => resolve(entries));
125
+ extract.on("error", reject);
126
+ extract.end(tar);
127
+ });
128
+ }
129
+ //# sourceMappingURL=bundle-tar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-tar.js","sourceRoot":"","sources":["../src/bundle-tar.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export { outputsToZod } from "./outputs-to-zod.js";
1
2
  export { type AgentYamlPrompt, type GeneratedAgentYaml, generateAgentYaml, } from "./skill-importer.js";
2
3
  export { serializeAgentYaml } from "./yaml-serializer.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,3 +1,4 @@
1
+ export { outputsToZod } from "./outputs-to-zod.js";
1
2
  export { generateAgentYaml, } from "./skill-importer.js";
2
3
  export { serializeAgentYaml } from "./yaml-serializer.js";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAGL,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ import type { OutputField } from "../schemas/index.js";
3
+ /**
4
+ * Build a Zod object schema from an agent's declared output fields.
5
+ *
6
+ * Mapping:
7
+ * - `string` → `z.string()`
8
+ * - `number` → `z.number()`
9
+ * - `boolean` → `z.boolean()`
10
+ * - `array` → `z.array(z.any())` (any element shape)
11
+ * - `object` → `z.record(z.string(), z.unknown())` (any internal shape, passthrough)
12
+ *
13
+ * Semantics:
14
+ * - All declared top-level keys are required.
15
+ * - Extra top-level keys are accepted (z.object default `strip` — extras don't fail validation).
16
+ * - Nested arrays/objects accept any internal shape (intentional looseness — agent authors
17
+ * declare top-level contract only; deep typing is out of scope for v0.9.0).
18
+ *
19
+ * Intended use: validate the parsed JSON output that the LLM produced at the end of an
20
+ * agentic loop, surfacing a missing-required-key as `OUTPUT_SCHEMA_INVALID` rather than
21
+ * silently emitting a broken `run_complete`.
22
+ */
23
+ export declare function outputsToZod(outputs: OutputField[]): z.ZodObject<z.ZodRawShape>;
24
+ //# sourceMappingURL=outputs-to-zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputs-to-zod.d.ts","sourceRoot":"","sources":["../../src/generators/outputs-to-zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAM/E"}
@@ -0,0 +1,43 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Build a Zod object schema from an agent's declared output fields.
4
+ *
5
+ * Mapping:
6
+ * - `string` → `z.string()`
7
+ * - `number` → `z.number()`
8
+ * - `boolean` → `z.boolean()`
9
+ * - `array` → `z.array(z.any())` (any element shape)
10
+ * - `object` → `z.record(z.string(), z.unknown())` (any internal shape, passthrough)
11
+ *
12
+ * Semantics:
13
+ * - All declared top-level keys are required.
14
+ * - Extra top-level keys are accepted (z.object default `strip` — extras don't fail validation).
15
+ * - Nested arrays/objects accept any internal shape (intentional looseness — agent authors
16
+ * declare top-level contract only; deep typing is out of scope for v0.9.0).
17
+ *
18
+ * Intended use: validate the parsed JSON output that the LLM produced at the end of an
19
+ * agentic loop, surfacing a missing-required-key as `OUTPUT_SCHEMA_INVALID` rather than
20
+ * silently emitting a broken `run_complete`.
21
+ */
22
+ export function outputsToZod(outputs) {
23
+ const shape = {};
24
+ for (const field of outputs) {
25
+ shape[field.name] = fieldToZod(field.type);
26
+ }
27
+ return z.object(shape);
28
+ }
29
+ function fieldToZod(type) {
30
+ switch (type) {
31
+ case "string":
32
+ return z.string();
33
+ case "number":
34
+ return z.number();
35
+ case "boolean":
36
+ return z.boolean();
37
+ case "array":
38
+ return z.array(z.any());
39
+ case "object":
40
+ return z.record(z.string(), z.unknown());
41
+ }
42
+ }
43
+ //# sourceMappingURL=outputs-to-zod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputs-to-zod.js","sourceRoot":"","sources":["../../src/generators/outputs-to-zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,YAAY,CAAC,OAAsB;IACjD,MAAM,KAAK,GAAiC,EAAE,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,UAAU,CAAC,IAAyB;IAC3C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -22,7 +22,7 @@ export function generateAgentYaml(skill) {
22
22
  required: false,
23
23
  }));
24
24
  const config = {
25
- // name will be prefixed with namespace by CLI: `${namespace}/${skill.frontmatter.name}`
25
+ // name is set to skill.frontmatter.name (slug-only); namespace is assigned at push by the registry
26
26
  version: "1.0.0",
27
27
  tools,
28
28
  mcp_servers: [],
@@ -1 +1 @@
1
- {"version":3,"file":"skill-importer.js","sourceRoot":"","sources":["../../src/generators/skill-importer.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IAClD,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACxD,kFAAkF;IAClF,mFAAmF;IACnF,MAAM,SAAS,GAAG,YAAY;QAC5B,CAAC,CAAC;YACE,GAAG,IAAI,GAAG,CACR,YAAY;iBACT,KAAK,CAAC,KAAK,CAAC;iBACZ,MAAM,CAAC,OAAO,CAAC;iBACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3B,MAAM,CAAC,OAAO,CAAC,CACnB;SACF;QACH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,KAAK,GAAiB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI;QACJ,WAAW,EAAE,WAAW,IAAI,SAAS;QACrC,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,oBAAoB,EAAE,IAAI;SAC3B;QACD,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAyB;QACnC,wFAAwF;QACxF,OAAO,EAAE,OAAO;QAChB,KAAK;QACL,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,UAAU,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;YACjC,UAAU,EAAE,WAAW;YACvB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,QAAQ;SAClB;QACD,YAAY,EAAE,OAAO;QACrB,KAAK,EAAE;YACL,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,KAAK;SACX;QACD,KAAK,EAAE,EAAE;KACV,CAAC;IAEF,MAAM,OAAO,GAAsB;QACjC;YACE,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,gCAAgC;YAC1C,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,sCAAsC;gBACtC,iBAAiB;gBACjB,gCAAgC;gBAChC,gCAAgC;gBAChC,gBAAgB;aACjB;YACD,OAAO,EAAE,sCAAsC;SAChD;QACD;YACE,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,0CAA0C;YACpD,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,cAAc;SACxB;QACD;YACE,KAAK,EAAE,sCAAsC;YAC7C,QAAQ,EAAE,uEAAuE;YACjF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;KACF,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"skill-importer.js","sourceRoot":"","sources":["../../src/generators/skill-importer.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IAClD,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACxD,kFAAkF;IAClF,mFAAmF;IACnF,MAAM,SAAS,GAAG,YAAY;QAC5B,CAAC,CAAC;YACE,GAAG,IAAI,GAAG,CACR,YAAY;iBACT,KAAK,CAAC,KAAK,CAAC;iBACZ,MAAM,CAAC,OAAO,CAAC;iBACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3B,MAAM,CAAC,OAAO,CAAC,CACnB;SACF;QACH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,KAAK,GAAiB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI;QACJ,WAAW,EAAE,WAAW,IAAI,SAAS;QACrC,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,oBAAoB,EAAE,IAAI;SAC3B;QACD,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAyB;QACnC,mGAAmG;QACnG,OAAO,EAAE,OAAO;QAChB,KAAK;QACL,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,UAAU,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;YACjC,UAAU,EAAE,WAAW;YACvB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,QAAQ;SAClB;QACD,YAAY,EAAE,OAAO;QACrB,KAAK,EAAE;YACL,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,KAAK;SACX;QACD,KAAK,EAAE,EAAE;KACV,CAAC;IAEF,MAAM,OAAO,GAAsB;QACjC;YACE,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,gCAAgC;YAC1C,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,sCAAsC;gBACtC,iBAAiB;gBACjB,gCAAgC;gBAChC,gCAAgC;gBAChC,gBAAgB;aACjB;YACD,OAAO,EAAE,sCAAsC;SAChD;QACD;YACE,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,0CAA0C;YACpD,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,cAAc;SACxB;QACD;YACE,KAAK,EAAE,sCAAsC;YAC7C,QAAQ,EAAE,uEAAuE;YACjF,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;KACF,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,10 @@
1
+ export type { AgentTarEntry, UnpackedAgentEntry } from "./bundle-tar.js";
2
+ export { AGENT_BUNDLE_EXCLUDES, isExcludedEntry, isUnsafeName, packAgentTar, unpackAgentTar, } from "./bundle-tar.js";
1
3
  export type { CapabilityValidationOutcome, ModelCapabilities } from "./capability.js";
2
4
  export { getModelCapabilities, MODEL_CAPABILITIES, validateAgentCapabilities, } from "./capability.js";
3
5
  export type { ValidationIssue } from "./errors.js";
4
6
  export { SkrunError, ValidationError } from "./errors.js";
7
+ export { outputsToZod } from "./generators/outputs-to-zod.js";
5
8
  export type { AgentYamlPrompt, GeneratedAgentYaml } from "./generators/skill-importer.js";
6
9
  export { generateAgentYaml } from "./generators/skill-importer.js";
7
10
  export { serializeAgentYaml } from "./generators/yaml-serializer.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAE1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACvE,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,WAAW,EACX,SAAS,EACT,KAAK,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACvE,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,WAAW,EACX,SAAS,EACT,KAAK,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,12 @@
1
1
  // @skrun-dev/schema — Parser & validator for Agent Skills format
2
+ // Bundle tar codec (.agent wire format)
3
+ export { AGENT_BUNDLE_EXCLUDES, isExcludedEntry, isUnsafeName, packAgentTar, unpackAgentTar, } from "./bundle-tar.js";
2
4
  // Capability matrix
3
5
  export { getModelCapabilities, MODEL_CAPABILITIES, validateAgentCapabilities, } from "./capability.js";
4
6
  // Errors
5
7
  export { SkrunError, ValidationError } from "./errors.js";
6
8
  // Generators
9
+ export { outputsToZod } from "./generators/outputs-to-zod.js";
7
10
  export { generateAgentYaml } from "./generators/skill-importer.js";
8
11
  export { serializeAgentYaml } from "./generators/yaml-serializer.js";
9
12
  // Manifest detection (script dependency resolution)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAGjE,oBAAoB;AACpB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1D,aAAa;AACb,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAQrE,oDAAoD;AACpD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE1E,UAAU;AACV,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAoBvE,UAAU;AACV,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,aAAa;AACb,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAGjE,wCAAwC;AACxC,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,oBAAoB;AACpB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,aAAa;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAQrE,oDAAoD;AACpD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE1E,UAAU;AACV,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAoBvE,UAAU;AACV,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,aAAa;AACb,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../src/schemas/agent-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAuCnB,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../src/schemas/agent-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwCnB,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -6,14 +6,15 @@ import { ModelConfigSchema } from "./model-config.js";
6
6
  import { StateConfigSchema } from "./state-config.js";
7
7
  import { TestCaseSchema } from "./test-case.js";
8
8
  import { ToolConfigSchema } from "./tool-config.js";
9
- const AGENT_NAME_REGEX = /^[a-z0-9-]+\/[a-z0-9-]+$/;
9
+ const AGENT_NAME_REGEX = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/;
10
10
  const SEMVER_REGEX = /^\d+\.\d+\.\d+$/;
11
11
  export const AgentConfigSchema = z
12
12
  .object({
13
13
  name: z
14
14
  .string()
15
15
  .min(1, "Agent name is required")
16
- .regex(AGENT_NAME_REGEX, 'Agent name must be in "namespace/slug" format (e.g., "acme/seo-audit")'),
16
+ .regex(AGENT_NAME_REGEX, 'Agent name must be a slug like "email-drafter" (lowercase letters, digits, hyphens; no namespace prefix). The registry derives the namespace from your auth token at push — remove the prefix from your agent.yaml.')
17
+ .refine((s) => !s.includes("--"), "Agent name must not contain consecutive hyphens"),
17
18
  version: z.string().regex(SEMVER_REGEX, 'Version must be semver format (e.g., "1.0.0")'),
18
19
  model: ModelConfigSchema,
19
20
  tools: z
@@ -1 +1 @@
1
- {"version":3,"file":"agent-config.js","sourceRoot":"","sources":["../../src/schemas/agent-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AACpD,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,wBAAwB,CAAC;SAChC,KAAK,CACJ,gBAAgB,EAChB,wEAAwE,CACzE;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,+CAA+C,CAAC;IACxF,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,CAAC;SACL,KAAK,CACJ,CAAC;SACE,OAAO,EAAE;SACT,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,OAAO,EACL,8IAA8I;aACjJ,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;SACD,IAAI,CAAC,gBAAgB,CAAC,CAC1B;SACA,OAAO,CAAC,EAAE,CAAC;IACd,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACvC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC1E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,iCAAiC,CAAC;IAC7E,WAAW,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjD,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9D,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC;KACD,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"agent-config.js","sourceRoot":"","sources":["../../src/schemas/agent-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAC3D,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,wBAAwB,CAAC;SAChC,KAAK,CACJ,gBAAgB,EAChB,qNAAqN,CACtN;SACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,iDAAiD,CAAC;IACtF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,+CAA+C,CAAC;IACxF,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,CAAC;SACL,KAAK,CACJ,CAAC;SACE,OAAO,EAAE;SACT,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,OAAO,EACL,8IAA8I;aACjJ,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;SACD,IAAI,CAAC,gBAAgB,CAAC,CAC1B;SACA,OAAO,CAAC,EAAE,CAAC;IACd,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACvC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC1E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,iCAAiC,CAAC;IAC7E,WAAW,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjD,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9D,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ValidationIssue } from "../errors.js";
1
+ import { type ValidationIssue } from "../errors.js";
2
2
  import type { ParsedAgentYaml } from "../parsers/agent-yaml.js";
3
3
  import type { ParsedAgentsMd } from "../parsers/agents-md.js";
4
4
  import type { ParsedSkill } from "../parsers/skill-md.js";
@@ -1 +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;AAEpD,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,CAsJ1E"}
1
+ {"version":3,"file":"combined.d.ts","sourceRoot":"","sources":["../../src/validators/combined.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAErE,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,CAoK1E"}
@@ -1,5 +1,6 @@
1
1
  import { access, readFile } from "node:fs/promises";
2
2
  import { join } from "node:path";
3
+ import { ValidationError } from "../errors.js";
3
4
  import { detectManifest, hasNonStdlibImports } from "../manifests.js";
4
5
  import { parseAgentYaml } from "../parsers/agent-yaml.js";
5
6
  import { parseAgentsMd } from "../parsers/agents-md.js";
@@ -62,11 +63,26 @@ export async function validateAgent(dir) {
62
63
  agentConfig.filePath = agentYamlPath;
63
64
  }
64
65
  catch (cause) {
65
- errors.push({
66
- code: "INVALID_AGENT_YAML",
67
- message: `Failed to parse agent.yaml: ${cause instanceof Error ? cause.message : String(cause)}`,
68
- file: "agent.yaml",
69
- });
66
+ // Surface every field-level issue from a ValidationError so the user sees
67
+ // the actual remediation hint (e.g., "drop the namespace prefix"). Without
68
+ // this, the CLI flattens to a generic "Invalid agent.yaml" and the Zod
69
+ // message gets lost.
70
+ if (cause instanceof ValidationError && cause.issues.length > 0) {
71
+ for (const issue of cause.issues) {
72
+ errors.push({
73
+ code: "INVALID_AGENT_YAML",
74
+ message: issue.message,
75
+ file: "agent.yaml",
76
+ });
77
+ }
78
+ }
79
+ else {
80
+ errors.push({
81
+ code: "INVALID_AGENT_YAML",
82
+ message: `Failed to parse agent.yaml: ${cause instanceof Error ? cause.message : String(cause)}`,
83
+ file: "agent.yaml",
84
+ });
85
+ }
70
86
  return { valid: false, errors, warnings, parsed: null };
71
87
  }
72
88
  // Check AGENTS.md if context_mode is persistent
@@ -96,11 +112,11 @@ export async function validateAgent(dir) {
96
112
  }
97
113
  // Cross-file warnings: name consistency
98
114
  const skillName = skill.frontmatter.name;
99
- const agentSlug = agentConfig.config.name.split("/")[1];
100
- if (agentSlug && skillName !== agentSlug) {
115
+ const agentName = agentConfig.config.name;
116
+ if (skillName !== agentName) {
101
117
  warnings.push({
102
118
  code: "NAME_MISMATCH",
103
- message: `SKILL.md name "${skillName}" does not match agent.yaml slug "${agentSlug}"`,
119
+ message: `SKILL.md name "${skillName}" does not match agent.yaml name "${agentName}"`,
104
120
  });
105
121
  }
106
122
  // Cross-file warnings: tools alignment
@@ -1 +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;AAEjC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,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,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,cAAc,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;QAC1F,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,sEAAsE;IACtE,gEAAgE;IAChE,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC;IAClD,IAAI,UAAU,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,wCAAwC;gBAC9C,OAAO,EAAE,2BAA2B,UAAU,sDAAsD,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,IAAI;gBAC9I,IAAI,EAAE,YAAY;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,4EAA4E;IAC5E,0EAA0E;IAC1E,4CAA4C;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACxC,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAClC,MAAM,OAAO,GACX,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACvF,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EACL,2KAA2K;iBAC9K,CAAC,CAAC;YACL,CAAC;QACH,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"}
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;AACjC,OAAO,EAAE,eAAe,EAAwB,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,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,0EAA0E;QAC1E,2EAA2E;QAC3E,uEAAuE;QACvE,qBAAqB;QACrB,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,YAAY;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAChG,IAAI,EAAE,YAAY;aACnB,CAAC,CAAC;QACL,CAAC;QACD,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;IAC1C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,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,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,cAAc,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;QAC1F,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,sEAAsE;IACtE,gEAAgE;IAChE,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC;IAClD,IAAI,UAAU,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,wCAAwC;gBAC9C,OAAO,EAAE,2BAA2B,UAAU,sDAAsD,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,IAAI;gBAC9I,IAAI,EAAE,YAAY;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,4EAA4E;IAC5E,0EAA0E;IAC1E,4CAA4C;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACxC,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAClC,MAAM,OAAO,GACX,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACvF,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EACL,2KAA2K;iBAC9K,CAAC,CAAC;YACL,CAAC;QACH,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skrun-dev/schema",
3
- "version": "0.7.0",
3
+ "version": "1.0.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -14,11 +14,13 @@
14
14
  "dist"
15
15
  ],
16
16
  "dependencies": {
17
+ "tar-stream": "3.2.0",
17
18
  "yaml": "^2.8.3",
18
19
  "zod": "^4.4.1"
19
20
  },
20
21
  "devDependencies": {
21
22
  "@types/node": "^25.6.0",
23
+ "@types/tar-stream": "3.1.4",
22
24
  "typescript": "^6.0.3",
23
25
  "vitest": "^4.1.5"
24
26
  },