@skrun-dev/schema 0.8.0 → 1.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.
@@ -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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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
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";
@@ -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;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"}
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,4 +1,6 @@
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
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;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
+ {"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skrun-dev/schema",
3
- "version": "0.8.0",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -13,20 +13,16 @@
13
13
  "files": [
14
14
  "dist"
15
15
  ],
16
- "scripts": {
17
- "build": "tsc",
18
- "test": "vitest run",
19
- "test:watch": "vitest",
20
- "dev": "tsc --watch"
21
- },
22
16
  "dependencies": {
17
+ "tar-stream": "3.2.0",
23
18
  "yaml": "^2.8.3",
24
19
  "zod": "^4.4.1"
25
20
  },
26
21
  "devDependencies": {
27
22
  "@types/node": "^25.6.0",
23
+ "@types/tar-stream": "3.1.4",
28
24
  "typescript": "^6.0.3",
29
- "vitest": "^4.1.5"
25
+ "vitest": "^4.1.11"
30
26
  },
31
27
  "publishConfig": {
32
28
  "access": "public"
@@ -46,5 +42,11 @@
46
42
  ],
47
43
  "engines": {
48
44
  "node": ">=22.0.0"
45
+ },
46
+ "scripts": {
47
+ "build": "tsc",
48
+ "test": "vitest run",
49
+ "test:watch": "vitest",
50
+ "dev": "tsc --watch"
49
51
  }
50
- }
52
+ }