@skrun-dev/schema 0.6.0 → 0.8.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 (73) hide show
  1. package/dist/capability.d.ts +28 -0
  2. package/dist/capability.d.ts.map +1 -0
  3. package/dist/capability.js +209 -0
  4. package/dist/capability.js.map +1 -0
  5. package/dist/generators/index.d.ts +2 -1
  6. package/dist/generators/index.d.ts.map +1 -1
  7. package/dist/generators/index.js +1 -0
  8. package/dist/generators/index.js.map +1 -1
  9. package/dist/generators/outputs-to-zod.d.ts +24 -0
  10. package/dist/generators/outputs-to-zod.d.ts.map +1 -0
  11. package/dist/generators/outputs-to-zod.js +43 -0
  12. package/dist/generators/outputs-to-zod.js.map +1 -0
  13. package/dist/generators/skill-importer.d.ts.map +1 -1
  14. package/dist/generators/skill-importer.js +3 -1
  15. package/dist/generators/skill-importer.js.map +1 -1
  16. package/dist/index.d.ts +17 -12
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +12 -7
  19. package/dist/index.js.map +1 -1
  20. package/dist/manifests.d.ts +41 -0
  21. package/dist/manifests.d.ts.map +1 -0
  22. package/dist/manifests.js +407 -0
  23. package/dist/manifests.js.map +1 -0
  24. package/dist/parsers/index.d.ts +3 -3
  25. package/dist/parsers/index.d.ts.map +1 -1
  26. package/dist/parsers/index.js +2 -2
  27. package/dist/parsers/index.js.map +1 -1
  28. package/dist/schemas/agent-config.d.ts +95 -289
  29. package/dist/schemas/agent-config.d.ts.map +1 -1
  30. package/dist/schemas/agent-config.js +7 -4
  31. package/dist/schemas/agent-config.js.map +1 -1
  32. package/dist/schemas/environment-config.d.ts +15 -34
  33. package/dist/schemas/environment-config.d.ts.map +1 -1
  34. package/dist/schemas/environment-config.js +1 -1
  35. package/dist/schemas/environment-config.js.map +1 -1
  36. package/dist/schemas/file-input.d.ts +40 -0
  37. package/dist/schemas/file-input.d.ts.map +1 -0
  38. package/dist/schemas/file-input.js +50 -0
  39. package/dist/schemas/file-input.js.map +1 -0
  40. package/dist/schemas/index.d.ts +10 -9
  41. package/dist/schemas/index.d.ts.map +1 -1
  42. package/dist/schemas/index.js +5 -4
  43. package/dist/schemas/index.js.map +1 -1
  44. package/dist/schemas/inputs-outputs.d.ts +44 -25
  45. package/dist/schemas/inputs-outputs.d.ts.map +1 -1
  46. package/dist/schemas/inputs-outputs.js +9 -4
  47. package/dist/schemas/inputs-outputs.js.map +1 -1
  48. package/dist/schemas/mcp-server.d.ts +13 -33
  49. package/dist/schemas/mcp-server.d.ts.map +1 -1
  50. package/dist/schemas/model-config.d.ts +39 -37
  51. package/dist/schemas/model-config.d.ts.map +1 -1
  52. package/dist/schemas/model-config.js +1 -1
  53. package/dist/schemas/model-config.js.map +1 -1
  54. package/dist/schemas/skill-frontmatter.d.ts +2 -16
  55. package/dist/schemas/skill-frontmatter.d.ts.map +1 -1
  56. package/dist/schemas/state-config.d.ts +5 -8
  57. package/dist/schemas/state-config.d.ts.map +1 -1
  58. package/dist/schemas/test-case.d.ts +1 -9
  59. package/dist/schemas/test-case.d.ts.map +1 -1
  60. package/dist/schemas/tool-config.d.ts +6 -47
  61. package/dist/schemas/tool-config.d.ts.map +1 -1
  62. package/dist/schemas/tool-config.js +1 -0
  63. package/dist/schemas/tool-config.js.map +1 -1
  64. package/dist/types.d.ts +4 -4
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/validators/combined.d.ts +1 -1
  67. package/dist/validators/combined.d.ts.map +1 -1
  68. package/dist/validators/combined.js +55 -8
  69. package/dist/validators/combined.js.map +1 -1
  70. package/dist/validators/index.d.ts +1 -1
  71. package/dist/validators/index.d.ts.map +1 -1
  72. package/dist/validators/index.js.map +1 -1
  73. package/package.json +12 -12
@@ -0,0 +1,407 @@
1
+ // Filesystem-based manifest detection for agent script dependencies.
2
+ //
3
+ // Detects standard language manifests at the bundle root and returns their
4
+ // CONTENT (no absolute paths — paths break cross-host hash determinism).
5
+ // The runtime hashes the content to drive a content-addressable cache at
6
+ // `~/.skrun/deps/<hash>/`.
7
+ //
8
+ // Precedence:
9
+ // - Node manifest: package.json
10
+ // - Node lockfile: pnpm-lock.yaml > yarn.lock > package-lock.json
11
+ // - Python manifest: pyproject.toml > requirements.txt
12
+ // - Python lockfile: uv.lock > poetry.lock
13
+ //
14
+ // If both Python manifests are present, pyproject.toml wins.
15
+ // If no manifest is found, returns { ecosystem: "none" }.
16
+ //
17
+ // All detection is best-effort and side-effect-free: missing files do not
18
+ // throw — they simply produce a narrower result.
19
+ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
20
+ import { extname, join } from "node:path";
21
+ // Lockfile precedence: pnpm > yarn > npm.
22
+ const NODE_LOCKFILES = [
23
+ { kind: "pnpm", filename: "pnpm-lock.yaml" },
24
+ { kind: "yarn", filename: "yarn.lock" },
25
+ { kind: "npm", filename: "package-lock.json" },
26
+ ];
27
+ // Lockfile precedence: uv > poetry.
28
+ const PYTHON_LOCKFILES = [
29
+ { kind: "uv", filename: "uv.lock" },
30
+ { kind: "poetry", filename: "poetry.lock" },
31
+ ];
32
+ function readFileIfExists(filePath) {
33
+ if (!existsSync(filePath))
34
+ return undefined;
35
+ try {
36
+ return readFileSync(filePath, "utf-8");
37
+ }
38
+ catch {
39
+ return undefined;
40
+ }
41
+ }
42
+ function findFirstExisting(bundleRoot, candidates) {
43
+ for (const candidate of candidates) {
44
+ const content = readFileIfExists(join(bundleRoot, candidate.filename));
45
+ if (content !== undefined) {
46
+ return { match: candidate, content };
47
+ }
48
+ }
49
+ return undefined;
50
+ }
51
+ // Best-effort extraction of `[project] name = "..."` from a pyproject.toml
52
+ // content. Only the project name is needed downstream (for non-editable pip
53
+ // install identification). Falls back to undefined on any parse failure.
54
+ function extractPyprojectName(pyprojectContent) {
55
+ const projectSectionMatch = pyprojectContent.match(/^\s*\[project\]\s*$/m);
56
+ if (!projectSectionMatch || projectSectionMatch.index === undefined)
57
+ return undefined;
58
+ const after = pyprojectContent.slice(projectSectionMatch.index + projectSectionMatch[0].length);
59
+ // Stop at the next section header.
60
+ const nextSectionIdx = after.search(/^\s*\[[^\]]+\]\s*$/m);
61
+ const projectBlock = nextSectionIdx === -1 ? after : after.slice(0, nextSectionIdx);
62
+ const nameMatch = projectBlock.match(/^\s*name\s*=\s*["']([^"']+)["']/m);
63
+ return nameMatch?.[1];
64
+ }
65
+ /**
66
+ * Detect a script-dependency manifest at the bundle root.
67
+ *
68
+ * Pure function except for filesystem reads. Never throws on missing files.
69
+ *
70
+ * @param bundleRoot Absolute path to the bundle root directory.
71
+ * @returns A discriminated union describing the manifest content (or `none`).
72
+ */
73
+ export function detectManifest(bundleRoot) {
74
+ // Node detection — package.json is the entry signal.
75
+ const nodeManifest = readFileIfExists(join(bundleRoot, "package.json"));
76
+ if (nodeManifest !== undefined) {
77
+ const lockfile = findFirstExisting(bundleRoot, NODE_LOCKFILES);
78
+ return {
79
+ ecosystem: "node",
80
+ manifestContent: nodeManifest,
81
+ ...(lockfile && {
82
+ lockfileKind: lockfile.match.kind,
83
+ lockfileContent: lockfile.content,
84
+ }),
85
+ };
86
+ }
87
+ // Python detection — pyproject.toml wins over requirements.txt when both
88
+ // are present.
89
+ const pyproject = readFileIfExists(join(bundleRoot, "pyproject.toml"));
90
+ if (pyproject !== undefined) {
91
+ const lockfile = findFirstExisting(bundleRoot, PYTHON_LOCKFILES);
92
+ const projectName = extractPyprojectName(pyproject);
93
+ return {
94
+ ecosystem: "python",
95
+ manifestKind: "pyproject",
96
+ manifestContent: pyproject,
97
+ ...(lockfile && {
98
+ lockfileKind: lockfile.match.kind,
99
+ lockfileContent: lockfile.content,
100
+ }),
101
+ ...(projectName && { pythonProjectName: projectName }),
102
+ };
103
+ }
104
+ const requirements = readFileIfExists(join(bundleRoot, "requirements.txt"));
105
+ if (requirements !== undefined) {
106
+ // requirements.txt does not have an associated lockfile in this design
107
+ // (pinned versions in requirements.txt itself act as the lock).
108
+ return {
109
+ ecosystem: "python",
110
+ manifestKind: "requirements",
111
+ manifestContent: requirements,
112
+ };
113
+ }
114
+ return { ecosystem: "none" };
115
+ }
116
+ // Best-effort stdlib sets used to flag scripts that import third-party
117
+ // packages without declaring them. Coverage is intentionally generous to
118
+ // MINIMIZE FALSE POSITIVES (warning when no manifest is needed) over false
119
+ // negatives (missing a warning when one is needed). The `[NEEDS
120
+ // CLARIFICATION]` cost of a missed warning is "build succeeds, runtime fails
121
+ // later"; the cost of a false positive is "noisy build output". Tilt toward
122
+ // silence.
123
+ // Python standard library top-level module names (Python 3.11+, common subset).
124
+ const PYTHON_STDLIB = new Set([
125
+ "abc",
126
+ "argparse",
127
+ "array",
128
+ "ast",
129
+ "asynchat",
130
+ "asyncio",
131
+ "asyncore",
132
+ "base64",
133
+ "binascii",
134
+ "bisect",
135
+ "builtins",
136
+ "calendar",
137
+ "collections",
138
+ "colorsys",
139
+ "concurrent",
140
+ "configparser",
141
+ "contextlib",
142
+ "contextvars",
143
+ "copy",
144
+ "copyreg",
145
+ "csv",
146
+ "ctypes",
147
+ "curses",
148
+ "dataclasses",
149
+ "datetime",
150
+ "decimal",
151
+ "difflib",
152
+ "dis",
153
+ "doctest",
154
+ "email",
155
+ "enum",
156
+ "errno",
157
+ "faulthandler",
158
+ "fcntl",
159
+ "filecmp",
160
+ "fileinput",
161
+ "fnmatch",
162
+ "fractions",
163
+ "ftplib",
164
+ "functools",
165
+ "gc",
166
+ "getopt",
167
+ "getpass",
168
+ "gettext",
169
+ "glob",
170
+ "gzip",
171
+ "hashlib",
172
+ "heapq",
173
+ "hmac",
174
+ "html",
175
+ "http",
176
+ "imaplib",
177
+ "imp",
178
+ "importlib",
179
+ "inspect",
180
+ "io",
181
+ "ipaddress",
182
+ "itertools",
183
+ "json",
184
+ "keyword",
185
+ "linecache",
186
+ "locale",
187
+ "logging",
188
+ "lzma",
189
+ "mailbox",
190
+ "math",
191
+ "mimetypes",
192
+ "multiprocessing",
193
+ "netrc",
194
+ "numbers",
195
+ "operator",
196
+ "os",
197
+ "pathlib",
198
+ "pickle",
199
+ "pickletools",
200
+ "pkgutil",
201
+ "platform",
202
+ "plistlib",
203
+ "poplib",
204
+ "pprint",
205
+ "queue",
206
+ "quopri",
207
+ "random",
208
+ "re",
209
+ "readline",
210
+ "reprlib",
211
+ "resource",
212
+ "secrets",
213
+ "select",
214
+ "selectors",
215
+ "shelve",
216
+ "shlex",
217
+ "shutil",
218
+ "signal",
219
+ "site",
220
+ "smtpd",
221
+ "smtplib",
222
+ "sndhdr",
223
+ "socket",
224
+ "socketserver",
225
+ "sqlite3",
226
+ "ssl",
227
+ "stat",
228
+ "statistics",
229
+ "string",
230
+ "stringprep",
231
+ "struct",
232
+ "subprocess",
233
+ "symtable",
234
+ "sys",
235
+ "sysconfig",
236
+ "tabnanny",
237
+ "tarfile",
238
+ "telnetlib",
239
+ "tempfile",
240
+ "termios",
241
+ "test",
242
+ "textwrap",
243
+ "threading",
244
+ "time",
245
+ "timeit",
246
+ "tkinter",
247
+ "token",
248
+ "tokenize",
249
+ "tomllib",
250
+ "trace",
251
+ "traceback",
252
+ "tracemalloc",
253
+ "tty",
254
+ "turtle",
255
+ "types",
256
+ "typing",
257
+ "unicodedata",
258
+ "unittest",
259
+ "urllib",
260
+ "uu",
261
+ "uuid",
262
+ "venv",
263
+ "warnings",
264
+ "wave",
265
+ "weakref",
266
+ "webbrowser",
267
+ "wsgiref",
268
+ "xdrlib",
269
+ "xml",
270
+ "xmlrpc",
271
+ "zipapp",
272
+ "zipfile",
273
+ "zipimport",
274
+ "zlib",
275
+ "zoneinfo",
276
+ ]);
277
+ // Node.js built-in module names (Node 20+). Both bare (`fs`) and prefixed
278
+ // (`node:fs`) forms are accepted by the import scanner via prefix-stripping.
279
+ const NODE_STDLIB = new Set([
280
+ "assert",
281
+ "async_hooks",
282
+ "buffer",
283
+ "child_process",
284
+ "cluster",
285
+ "console",
286
+ "constants",
287
+ "crypto",
288
+ "dgram",
289
+ "diagnostics_channel",
290
+ "dns",
291
+ "domain",
292
+ "events",
293
+ "fs",
294
+ "http",
295
+ "http2",
296
+ "https",
297
+ "inspector",
298
+ "module",
299
+ "net",
300
+ "os",
301
+ "path",
302
+ "perf_hooks",
303
+ "process",
304
+ "punycode",
305
+ "querystring",
306
+ "readline",
307
+ "repl",
308
+ "stream",
309
+ "string_decoder",
310
+ "sys",
311
+ "test",
312
+ "timers",
313
+ "tls",
314
+ "trace_events",
315
+ "tty",
316
+ "url",
317
+ "util",
318
+ "v8",
319
+ "vm",
320
+ "worker_threads",
321
+ "zlib",
322
+ ]);
323
+ const PYTHON_IMPORT_RE = /^[ \t]*(?:import|from)[ \t]+([A-Za-z_][A-Za-z0-9_]*)/gm;
324
+ // Matches `require('pkg')`, `require("pkg")`, `import 'pkg'`, `import "pkg"`,
325
+ // `import x from 'pkg'`, etc. Captures the package specifier head.
326
+ const NODE_IMPORT_RE = /(?:require\s*\(\s*|import\s+(?:[^"'\n]*\s+from\s+)?)["']([^"'\n]+)["']/g;
327
+ function rootPackageOf(spec, ecosystem) {
328
+ let s = spec;
329
+ if (ecosystem === "node") {
330
+ if (s.startsWith("node:"))
331
+ s = s.slice(5);
332
+ // Skip relative imports — these target the bundle itself, not deps.
333
+ if (s.startsWith(".") || s.startsWith("/"))
334
+ return "";
335
+ // Scoped npm package: keep `@scope/name` as a single unit, but match
336
+ // stdlib only on first segment for non-scoped.
337
+ if (s.startsWith("@")) {
338
+ const slash = s.indexOf("/");
339
+ return slash === -1 ? s : s.slice(0, slash + 1) + s.slice(slash + 1).split("/")[0];
340
+ }
341
+ return s.split("/")[0];
342
+ }
343
+ // Python: top-level package only.
344
+ return s.split(".")[0];
345
+ }
346
+ function listPythonScripts(scriptsDir) {
347
+ if (!existsSync(scriptsDir) || !statSync(scriptsDir).isDirectory())
348
+ return [];
349
+ return readdirSync(scriptsDir, { withFileTypes: true })
350
+ .filter((entry) => entry.isFile() && extname(entry.name) === ".py")
351
+ .map((entry) => join(scriptsDir, entry.name));
352
+ }
353
+ function listNodeScripts(scriptsDir) {
354
+ if (!existsSync(scriptsDir) || !statSync(scriptsDir).isDirectory())
355
+ return [];
356
+ return readdirSync(scriptsDir, { withFileTypes: true })
357
+ .filter((entry) => {
358
+ if (!entry.isFile())
359
+ return false;
360
+ const ext = extname(entry.name);
361
+ return ext === ".js" || ext === ".mjs" || ext === ".cjs" || ext === ".ts";
362
+ })
363
+ .map((entry) => join(scriptsDir, entry.name));
364
+ }
365
+ /**
366
+ * Best-effort scan of a `scripts/` directory to detect imports of packages
367
+ * outside the language's standard library. Used to warn agent authors when
368
+ * `scripts/` is non-empty and non-trivial but no manifest declares the
369
+ * dependencies.
370
+ *
371
+ * Returns false on any I/O error or if the directory does not exist.
372
+ *
373
+ * @param scriptsDir Absolute path to the bundle's `scripts/` directory.
374
+ * @param ecosystem Which language's stdlib to compare imports against.
375
+ */
376
+ export function hasNonStdlibImports(scriptsDir, ecosystem) {
377
+ const scripts = ecosystem === "python" ? listPythonScripts(scriptsDir) : listNodeScripts(scriptsDir);
378
+ if (scripts.length === 0)
379
+ return false;
380
+ const stdlib = ecosystem === "python" ? PYTHON_STDLIB : NODE_STDLIB;
381
+ const importRe = ecosystem === "python" ? PYTHON_IMPORT_RE : NODE_IMPORT_RE;
382
+ for (const scriptPath of scripts) {
383
+ let content;
384
+ try {
385
+ content = readFileSync(scriptPath, "utf-8");
386
+ }
387
+ catch {
388
+ continue;
389
+ }
390
+ importRe.lastIndex = 0;
391
+ let match;
392
+ // biome-ignore lint/suspicious/noAssignInExpressions: standard regex exec loop
393
+ while ((match = importRe.exec(content)) !== null) {
394
+ const root = rootPackageOf(match[1] ?? "", ecosystem);
395
+ if (!root)
396
+ continue;
397
+ // For Node scoped packages, stdlib check on the bare segment is enough
398
+ // since no Node stdlib uses `@scope/...` syntax.
399
+ const stdlibKey = ecosystem === "node" && root.startsWith("@") ? root : root;
400
+ if (!stdlib.has(stdlibKey)) {
401
+ return true;
402
+ }
403
+ }
404
+ }
405
+ return false;
406
+ }
407
+ //# sourceMappingURL=manifests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifests.js","sourceRoot":"","sources":["../src/manifests.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { parseSkillMd, parseSkillMdFile, type ParsedSkill } from "./skill-md.js";
2
- export { parseAgentsMd, parseAgentsMdFile, type ParsedAgentsMd } from "./agents-md.js";
3
- export { parseAgentYaml, parseAgentYamlFile, type ParsedAgentYaml } from "./agent-yaml.js";
1
+ export { type ParsedAgentYaml, parseAgentYaml, parseAgentYamlFile } from "./agent-yaml.js";
2
+ export { type ParsedAgentsMd, parseAgentsMd, parseAgentsMdFile } from "./agents-md.js";
3
+ export { type ParsedSkill, parseSkillMd, parseSkillMdFile } from "./skill-md.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,KAAK,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,4 +1,4 @@
1
- export { parseSkillMd, parseSkillMdFile } from "./skill-md.js";
2
- export { parseAgentsMd, parseAgentsMdFile } from "./agents-md.js";
3
1
  export { parseAgentYaml, parseAgentYamlFile } from "./agent-yaml.js";
2
+ export { parseAgentsMd, parseAgentsMdFile } from "./agents-md.js";
3
+ export { parseSkillMd, parseSkillMdFile } from "./skill-md.js";
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAoB,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAuB,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAwB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAuB,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAoB,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}