@vertesia/build-tools 1.6.0-dev.20261019.172735Z → 1.6.0-dev.20261022.120426Z
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/core/transformers/skill.d.ts +12 -0
- package/lib/core/transformers/skill.d.ts.map +1 -1
- package/lib/core/transformers/skill.js +32 -5
- package/lib/core/transformers/skill.js.map +1 -1
- package/lib/core/types.d.ts +1 -1
- package/lib/core/types.d.ts.map +1 -1
- package/lib/core/utils/asset-discovery.d.ts +14 -0
- package/lib/core/utils/asset-discovery.d.ts.map +1 -1
- package/lib/core/utils/asset-discovery.js +63 -1
- package/lib/core/utils/asset-discovery.js.map +1 -1
- package/package.json +17 -12
- package/src/core/transformers/skill.ts +30 -3
- package/src/core/types.ts +1 -1
- package/src/core/utils/asset-discovery.ts +71 -1
|
@@ -44,7 +44,13 @@ export declare const SkillDefinitionSchema: z.ZodObject<{
|
|
|
44
44
|
}, z.core.$strip>>;
|
|
45
45
|
tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
46
46
|
scripts: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
47
|
+
files: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
48
|
+
files_namespace: z.ZodOptional<z.ZodString>;
|
|
47
49
|
widgets: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
50
|
+
license: z.ZodOptional<z.ZodString>;
|
|
51
|
+
compatibility: z.ZodOptional<z.ZodString>;
|
|
52
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
53
|
+
allowed_tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
48
54
|
}, z.core.$loose>;
|
|
49
55
|
/**
|
|
50
56
|
* Schema for validating properties exported from properties.ts
|
|
@@ -81,7 +87,13 @@ export declare const SkillPropertiesSchema: z.ZodObject<{
|
|
|
81
87
|
}, z.core.$strip>>>;
|
|
82
88
|
tools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
83
89
|
scripts: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
90
|
+
files: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
91
|
+
files_namespace: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
84
92
|
widgets: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
93
|
+
license: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
94
|
+
compatibility: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
95
|
+
metadata: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
96
|
+
allowed_tools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
85
97
|
}, z.core.$loose>;
|
|
86
98
|
/**
|
|
87
99
|
* TypeScript type inferred from the Zod schema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/core/transformers/skill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEH,KAAK,8BAA8B,EAEtC,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAmB,MAAM,aAAa,CAAC;AAGvF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/core/transformers/skill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEH,KAAK,8BAA8B,EAEtC,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAmB,MAAM,aAAa,CAAC;AAGvF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,KAAK,CAAC;AA+F5C;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BhB,CAAC;AAEnB;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgD,CAAC;AAEnF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAuHpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,8BAA8B,CAAC;CAC7C;AA+BD,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAEjE;AAED,oGAAoG;AACpG,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,sBAA2B,GAAG,iBAAiB,CAO7F;AAED,eAAO,MAAM,gBAAgB,EAAE,iBAA4C,CAAC"}
|
|
@@ -83,6 +83,11 @@ const SkillFrontmatterSchema = z
|
|
|
83
83
|
// Asset fields (auto-discovered but can be overridden)
|
|
84
84
|
scripts: z.array(z.string()).optional(),
|
|
85
85
|
widgets: z.array(z.string()).optional(),
|
|
86
|
+
// Agent Skills specification fields (https://agentskills.io/specification)
|
|
87
|
+
license: z.string().optional(),
|
|
88
|
+
compatibility: z.string().max(500).optional(),
|
|
89
|
+
metadata: z.record(z.string(), z.string()).optional(),
|
|
90
|
+
'allowed-tools': z.string().optional(),
|
|
86
91
|
})
|
|
87
92
|
.strict();
|
|
88
93
|
/**
|
|
@@ -112,7 +117,13 @@ export const SkillDefinitionSchema = z
|
|
|
112
117
|
execution: SkillExecutionSchema,
|
|
113
118
|
tools: z.array(z.string()).optional(),
|
|
114
119
|
scripts: z.array(z.string()).optional(),
|
|
120
|
+
files: z.array(z.string()).optional(),
|
|
121
|
+
files_namespace: z.string().optional(),
|
|
115
122
|
widgets: z.array(z.string()).optional(),
|
|
123
|
+
license: z.string().optional(),
|
|
124
|
+
compatibility: z.string().optional(),
|
|
125
|
+
metadata: z.record(z.string(), z.string()).optional(),
|
|
126
|
+
allowed_tools: z.array(z.string()).optional(),
|
|
116
127
|
})
|
|
117
128
|
.passthrough();
|
|
118
129
|
/**
|
|
@@ -126,7 +137,7 @@ export const SkillDefinitionSchema = z
|
|
|
126
137
|
export const SkillPropertiesSchema = SkillDefinitionSchema.partial().passthrough();
|
|
127
138
|
/**
|
|
128
139
|
* Build a SkillDefinition from frontmatter and markdown content.
|
|
129
|
-
*
|
|
140
|
+
* Includes Agent Skills frontmatter and resources discovered at build time.
|
|
130
141
|
*
|
|
131
142
|
* Supports two frontmatter structures:
|
|
132
143
|
*
|
|
@@ -150,9 +161,10 @@ export const SkillPropertiesSchema = SkillDefinitionSchema.partial().passthrough
|
|
|
150
161
|
* @param contentType - Content type ('md' or 'jst')
|
|
151
162
|
* @param widgets - Discovered widget names
|
|
152
163
|
* @param scripts - Discovered script names
|
|
164
|
+
* @param files - Discovered Agent Skills resource files (relative paths)
|
|
153
165
|
* @returns Skill definition object
|
|
154
166
|
*/
|
|
155
|
-
function buildSkillDefinition(frontmatter, instructions, contentType, widgets, scripts) {
|
|
167
|
+
function buildSkillDefinition(frontmatter, instructions, contentType, widgets, scripts, files) {
|
|
156
168
|
const skill = {
|
|
157
169
|
name: frontmatter.name,
|
|
158
170
|
title: frontmatter.title,
|
|
@@ -161,7 +173,22 @@ function buildSkillDefinition(frontmatter, instructions, contentType, widgets, s
|
|
|
161
173
|
content_type: contentType,
|
|
162
174
|
widgets: widgets.length > 0 ? widgets : undefined,
|
|
163
175
|
scripts: scripts.length > 0 ? scripts : undefined,
|
|
176
|
+
files: files.length > 0 ? files : undefined,
|
|
177
|
+
// Keep copied asset URLs stable when properties.ts overrides the runtime skill name.
|
|
178
|
+
files_namespace: files.length > 0 ? frontmatter.name : undefined,
|
|
164
179
|
};
|
|
180
|
+
// Agent Skills specification fields. `allowed-tools` is experimental in the spec and Vertesia does not
|
|
181
|
+
// support it: it pre-approves tools in the authoring harness's vocabulary, Vertesia has no approval step
|
|
182
|
+
// for it to skip, and it never unlocks a tool here (`tools` does). It is recorded for reference only.
|
|
183
|
+
if (frontmatter.license)
|
|
184
|
+
skill.license = frontmatter.license;
|
|
185
|
+
if (frontmatter.compatibility)
|
|
186
|
+
skill.compatibility = frontmatter.compatibility;
|
|
187
|
+
if (frontmatter.metadata)
|
|
188
|
+
skill.metadata = frontmatter.metadata;
|
|
189
|
+
const allowedTools = frontmatter['allowed-tools']?.split(/\s+/).filter(Boolean);
|
|
190
|
+
if (allowedTools && allowedTools.length > 0)
|
|
191
|
+
skill.allowed_tools = allowedTools;
|
|
165
192
|
// Build context triggers - support both flat and nested structure
|
|
166
193
|
// Nested: context_triggers: { keywords: [...], tool_names: [...] }
|
|
167
194
|
// Flat: keywords: [...], tools: [...]
|
|
@@ -267,10 +294,10 @@ function transformSkill(content, filePath, config) {
|
|
|
267
294
|
const validatedFrontmatter = frontmatterValidation.data;
|
|
268
295
|
// Determine content type from frontmatter or file extension
|
|
269
296
|
const content_type = validatedFrontmatter.content_type || 'md';
|
|
270
|
-
// Discover assets (scripts and
|
|
271
|
-
const assets = discoverSkillAssets(filePath);
|
|
297
|
+
// Discover assets (scripts, widgets and Agent Skills resource files) in the skill directory
|
|
298
|
+
const assets = discoverSkillAssets(filePath, { skillName: validatedFrontmatter.name });
|
|
272
299
|
// Build skill definition using the same logic as parseSkillFile in tools-sdk
|
|
273
|
-
const skillData = buildSkillDefinition(validatedFrontmatter, markdown, content_type, assets.widgets, assets.scripts);
|
|
300
|
+
const skillData = buildSkillDefinition(validatedFrontmatter, markdown, content_type, assets.widgets, assets.scripts, assets.files);
|
|
274
301
|
// Check if properties.ts exists in the skill directory
|
|
275
302
|
const skillDir = path.dirname(filePath);
|
|
276
303
|
const propertiesPath = path.join(skillDir, 'properties.ts');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/core/transformers/skill.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/core/transformers/skill.ts"],"names":[],"mappings":"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"}
|
package/lib/core/types.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export interface AssetFile {
|
|
|
12
12
|
/** Relative destination path within assets directory */
|
|
13
13
|
destPath: string;
|
|
14
14
|
/** Asset type for categorization */
|
|
15
|
-
type: 'script' | 'template';
|
|
15
|
+
type: 'script' | 'skill-file' | 'template';
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Result of a transform function
|
package/lib/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IAEjB,oCAAoC;IACpC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IAEjB,oCAAoC;IACpC,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,sDAAsD;IACtD,IAAI,EAAE,OAAO,CAAC;IAEd,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+CAA+C;IAC/C,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAErB,gDAAgD;IAChD,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAElH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAEhB,iDAAiD;IACjD,SAAS,EAAE,iBAAiB,CAAC;IAE7B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5B,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC"}
|
|
@@ -21,9 +21,21 @@ export interface DiscoveredAssets {
|
|
|
21
21
|
widgets: string[];
|
|
22
22
|
/** Widget metadata for compilation */
|
|
23
23
|
widgetMetadata: WidgetMetadata[];
|
|
24
|
+
/**
|
|
25
|
+
* Agent Skills resource files, as POSIX paths relative to the skill directory
|
|
26
|
+
* (e.g. `scripts/extract.py`, `references/REFERENCE.md`).
|
|
27
|
+
*/
|
|
28
|
+
files: string[];
|
|
24
29
|
/** Asset files to be copied */
|
|
25
30
|
assetFiles: AssetFile[];
|
|
26
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* The Agent Skills resource directories (https://agentskills.io/specification), relative to the skill
|
|
34
|
+
* directory. Unlike the flat scripts beside SKILL.md, their contents keep their relative paths.
|
|
35
|
+
*/
|
|
36
|
+
export declare const SKILL_RESOURCE_DIRS: readonly ['scripts', 'references', 'assets'];
|
|
37
|
+
/** Where a skill's resource files are copied, relative to the assets root. */
|
|
38
|
+
export declare const SKILL_FILES_DIR = "skill-files";
|
|
27
39
|
/**
|
|
28
40
|
* Discover assets (scripts and widgets) in a skill directory
|
|
29
41
|
*
|
|
@@ -34,5 +46,7 @@ export interface DiscoveredAssets {
|
|
|
34
46
|
export declare function discoverSkillAssets(skillFilePath: string, options?: {
|
|
35
47
|
scriptsDir?: string;
|
|
36
48
|
widgetsDir?: string;
|
|
49
|
+
/** Skill name used to namespace resource files; defaults to the skill directory name. */
|
|
50
|
+
skillName?: string;
|
|
37
51
|
}): DiscoveredAssets;
|
|
38
52
|
//# sourceMappingURL=asset-discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-discovery.d.ts","sourceRoot":"","sources":["../../../src/core/utils/asset-discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IAEb,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,oDAAoD;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,sCAAsC;IACtC,cAAc,EAAE,cAAc,EAAE,CAAC;IAEjC,+BAA+B;IAC/B,UAAU,EAAE,SAAS,EAAE,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"asset-discovery.d.ts","sourceRoot":"","sources":["../../../src/core/utils/asset-discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IAEb,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,oDAAoD;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,sCAAsC;IACtC,cAAc,EAAE,cAAc,EAAE,CAAC;IAEjC;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,+BAA+B;IAC/B,UAAU,EAAE,SAAS,EAAE,CAAC;CAC3B;AA2BD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,YAAI,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAC;AAEhF,8EAA8E;AAC9E,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAwD7C;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IACL,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;CACjB,GACP,gBAAgB,CA8DlB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Utilities for discovering asset files (scripts, widgets) in skill directories
|
|
3
3
|
*/
|
|
4
|
-
import { readdirSync, statSync } from 'node:fs';
|
|
4
|
+
import { lstatSync, readdirSync, statSync } from 'node:fs';
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
/**
|
|
7
7
|
* Check if a file exists and is a regular file
|
|
@@ -28,6 +28,50 @@ function getFilesInDirectory(dirPath) {
|
|
|
28
28
|
return [];
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* The Agent Skills resource directories (https://agentskills.io/specification), relative to the skill
|
|
33
|
+
* directory. Unlike the flat scripts beside SKILL.md, their contents keep their relative paths.
|
|
34
|
+
*/
|
|
35
|
+
export const SKILL_RESOURCE_DIRS = ['scripts', 'references', 'assets'];
|
|
36
|
+
/** Where a skill's resource files are copied, relative to the assets root. */
|
|
37
|
+
export const SKILL_FILES_DIR = 'skill-files';
|
|
38
|
+
/**
|
|
39
|
+
* List the files under a directory recursively, as POSIX paths relative to `rootDir`.
|
|
40
|
+
* Hidden entries and symlinks are skipped so resources cannot escape the skill directory or form cycles.
|
|
41
|
+
*/
|
|
42
|
+
function listFilesRecursive(rootDir, relDir) {
|
|
43
|
+
const absDir = path.join(rootDir, relDir);
|
|
44
|
+
let entries;
|
|
45
|
+
try {
|
|
46
|
+
// Reject linked resource roots as well as symlinks encountered below.
|
|
47
|
+
if (!lstatSync(absDir).isDirectory())
|
|
48
|
+
return [];
|
|
49
|
+
entries = readdirSync(absDir);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
const out = [];
|
|
55
|
+
for (const entry of entries.sort()) {
|
|
56
|
+
if (entry.startsWith('.'))
|
|
57
|
+
continue;
|
|
58
|
+
const rel = path.posix.join(relDir, entry);
|
|
59
|
+
const abs = path.join(rootDir, rel);
|
|
60
|
+
try {
|
|
61
|
+
const stat = lstatSync(abs);
|
|
62
|
+
if (stat.isDirectory()) {
|
|
63
|
+
out.push(...listFilesRecursive(rootDir, rel));
|
|
64
|
+
}
|
|
65
|
+
else if (stat.isFile()) {
|
|
66
|
+
out.push(rel);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Unreadable entry: skip it like the flat scan does
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return out;
|
|
74
|
+
}
|
|
31
75
|
/**
|
|
32
76
|
* Check if a file is a script file (.js or .py)
|
|
33
77
|
*/
|
|
@@ -84,10 +128,28 @@ export function discoverSkillAssets(skillFilePath, options = {}) {
|
|
|
84
128
|
// Widgets are compiled by the plugin if widgetConfig is provided
|
|
85
129
|
}
|
|
86
130
|
}
|
|
131
|
+
// Agent Skills resource directories keep their relative paths and are namespaced per skill, so two
|
|
132
|
+
// skills can ship files with the same name. The flat scripts above are left as they were. Only a
|
|
133
|
+
// SKILL.md owns its directory; a `*.md?skill` file may share one with other skills.
|
|
134
|
+
const resourceFiles = path.basename(skillFilePath) === 'SKILL.md'
|
|
135
|
+
? SKILL_RESOURCE_DIRS.flatMap((dir) => listFilesRecursive(skillDir, dir))
|
|
136
|
+
: [];
|
|
137
|
+
const skillName = options.skillName || path.basename(skillDir);
|
|
138
|
+
if (resourceFiles.length > 0 && (skillName === '.' || skillName === '..' || /[\\/]/.test(skillName))) {
|
|
139
|
+
throw new Error(`Invalid skill name for resource files: ${skillName}`);
|
|
140
|
+
}
|
|
141
|
+
for (const file of resourceFiles) {
|
|
142
|
+
assetFiles.push({
|
|
143
|
+
sourcePath: path.join(skillDir, file),
|
|
144
|
+
destPath: path.join(SKILL_FILES_DIR, skillName, file),
|
|
145
|
+
type: 'skill-file',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
87
148
|
return {
|
|
88
149
|
scripts,
|
|
89
150
|
widgets,
|
|
90
151
|
widgetMetadata,
|
|
152
|
+
files: resourceFiles,
|
|
91
153
|
assetFiles,
|
|
92
154
|
};
|
|
93
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-discovery.js","sourceRoot":"","sources":["../../../src/core/utils/asset-discovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"asset-discovery.js","sourceRoot":"","sources":["../../../src/core/utils/asset-discovery.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vertesia/build-tools",
|
|
3
|
-
"version": "1.6.0-dev.
|
|
3
|
+
"version": "1.6.0-dev.20261022.120426Z",
|
|
4
4
|
"description": "Build tools for Vertesia projects - import transformers (skill / template / prompt / raw), esbuild widget bundler, vertesia-build CLI, and a Vite dev plugin",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -25,27 +25,27 @@
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@hono/node-server": "^2.1.
|
|
28
|
+
"@hono/node-server": "^2.1.5",
|
|
29
29
|
"@types/js-yaml": "^4.0.9",
|
|
30
|
-
"@types/node": "^24.19.
|
|
30
|
+
"@types/node": "^24.19.2",
|
|
31
31
|
"@vertesia/tsconfig": "0.1.0",
|
|
32
32
|
"typescript": "7.0.2",
|
|
33
|
-
"vite": "8.3.
|
|
34
|
-
"vitest": "5.0.
|
|
33
|
+
"vite": "8.3.4",
|
|
34
|
+
"vitest": "5.0.4"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@llumiverse/common": "1.6.0-dev.
|
|
38
|
-
"@vertesia/common": "1.6.0-dev.
|
|
39
|
-
"@vertesia/studio-utils": "1.6.0-dev.
|
|
37
|
+
"@llumiverse/common": "1.6.0-dev.20261022.120426Z",
|
|
38
|
+
"@vertesia/common": "1.6.0-dev.20261022.120426Z",
|
|
39
|
+
"@vertesia/studio-utils": "1.6.0-dev.20261022.120426Z",
|
|
40
40
|
"ajv": "^8.20.0",
|
|
41
41
|
"es-module-lexer": "^3.0.3",
|
|
42
42
|
"esbuild": "^0.28.2",
|
|
43
43
|
"js-yaml": "^5.4.3",
|
|
44
|
-
"zod": "4.6.
|
|
44
|
+
"zod": "4.6.7"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"@hono/node-server": "^2.1.
|
|
48
|
-
"vite": "^8.3.
|
|
47
|
+
"@hono/node-server": "^2.1.5",
|
|
48
|
+
"vite": "^8.3.4"
|
|
49
49
|
},
|
|
50
50
|
"peerDependenciesMeta": {
|
|
51
51
|
"@hono/node-server": {
|
|
@@ -76,7 +76,12 @@
|
|
|
76
76
|
"zod",
|
|
77
77
|
"validation"
|
|
78
78
|
],
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "bcaa7879b601ce9ccc394bcd3257822da13869cd",
|
|
80
|
+
"releaseIdentity": {
|
|
81
|
+
"source_sha": "bcaa7879b601ce9ccc394bcd3257822da13869cd",
|
|
82
|
+
"dependency_sha": "93466e47b06db23ac3c800e248d170afe65e5006",
|
|
83
|
+
"lock_sha256": "117e1c8068aa07d59117323a51ceccfc96cab543e50c03eb7efc19709d6f5e6b"
|
|
84
|
+
},
|
|
80
85
|
"scripts": {
|
|
81
86
|
"lint": "biome lint src",
|
|
82
87
|
"test": "vitest run",
|
|
@@ -103,6 +103,12 @@ const SkillFrontmatterSchema = z
|
|
|
103
103
|
// Asset fields (auto-discovered but can be overridden)
|
|
104
104
|
scripts: z.array(z.string()).optional(),
|
|
105
105
|
widgets: z.array(z.string()).optional(),
|
|
106
|
+
|
|
107
|
+
// Agent Skills specification fields (https://agentskills.io/specification)
|
|
108
|
+
license: z.string().optional(),
|
|
109
|
+
compatibility: z.string().max(500).optional(),
|
|
110
|
+
metadata: z.record(z.string(), z.string()).optional(),
|
|
111
|
+
'allowed-tools': z.string().optional(),
|
|
106
112
|
})
|
|
107
113
|
.strict();
|
|
108
114
|
|
|
@@ -133,7 +139,13 @@ export const SkillDefinitionSchema = z
|
|
|
133
139
|
execution: SkillExecutionSchema,
|
|
134
140
|
tools: z.array(z.string()).optional(),
|
|
135
141
|
scripts: z.array(z.string()).optional(),
|
|
142
|
+
files: z.array(z.string()).optional(),
|
|
143
|
+
files_namespace: z.string().optional(),
|
|
136
144
|
widgets: z.array(z.string()).optional(),
|
|
145
|
+
license: z.string().optional(),
|
|
146
|
+
compatibility: z.string().optional(),
|
|
147
|
+
metadata: z.record(z.string(), z.string()).optional(),
|
|
148
|
+
allowed_tools: z.array(z.string()).optional(),
|
|
137
149
|
})
|
|
138
150
|
.passthrough();
|
|
139
151
|
|
|
@@ -157,7 +169,7 @@ type SkillFrontmatter = z.infer<typeof SkillFrontmatterSchema>;
|
|
|
157
169
|
|
|
158
170
|
/**
|
|
159
171
|
* Build a SkillDefinition from frontmatter and markdown content.
|
|
160
|
-
*
|
|
172
|
+
* Includes Agent Skills frontmatter and resources discovered at build time.
|
|
161
173
|
*
|
|
162
174
|
* Supports two frontmatter structures:
|
|
163
175
|
*
|
|
@@ -181,6 +193,7 @@ type SkillFrontmatter = z.infer<typeof SkillFrontmatterSchema>;
|
|
|
181
193
|
* @param contentType - Content type ('md' or 'jst')
|
|
182
194
|
* @param widgets - Discovered widget names
|
|
183
195
|
* @param scripts - Discovered script names
|
|
196
|
+
* @param files - Discovered Agent Skills resource files (relative paths)
|
|
184
197
|
* @returns Skill definition object
|
|
185
198
|
*/
|
|
186
199
|
function buildSkillDefinition(
|
|
@@ -189,6 +202,7 @@ function buildSkillDefinition(
|
|
|
189
202
|
contentType: SkillContentType,
|
|
190
203
|
widgets: string[],
|
|
191
204
|
scripts: string[],
|
|
205
|
+
files: string[],
|
|
192
206
|
): SkillDefinition {
|
|
193
207
|
const skill: SkillDefinition = {
|
|
194
208
|
name: frontmatter.name,
|
|
@@ -198,8 +212,20 @@ function buildSkillDefinition(
|
|
|
198
212
|
content_type: contentType,
|
|
199
213
|
widgets: widgets.length > 0 ? widgets : undefined,
|
|
200
214
|
scripts: scripts.length > 0 ? scripts : undefined,
|
|
215
|
+
files: files.length > 0 ? files : undefined,
|
|
216
|
+
// Keep copied asset URLs stable when properties.ts overrides the runtime skill name.
|
|
217
|
+
files_namespace: files.length > 0 ? frontmatter.name : undefined,
|
|
201
218
|
};
|
|
202
219
|
|
|
220
|
+
// Agent Skills specification fields. `allowed-tools` is experimental in the spec and Vertesia does not
|
|
221
|
+
// support it: it pre-approves tools in the authoring harness's vocabulary, Vertesia has no approval step
|
|
222
|
+
// for it to skip, and it never unlocks a tool here (`tools` does). It is recorded for reference only.
|
|
223
|
+
if (frontmatter.license) skill.license = frontmatter.license;
|
|
224
|
+
if (frontmatter.compatibility) skill.compatibility = frontmatter.compatibility;
|
|
225
|
+
if (frontmatter.metadata) skill.metadata = frontmatter.metadata;
|
|
226
|
+
const allowedTools = frontmatter['allowed-tools']?.split(/\s+/).filter(Boolean);
|
|
227
|
+
if (allowedTools && allowedTools.length > 0) skill.allowed_tools = allowedTools;
|
|
228
|
+
|
|
203
229
|
// Build context triggers - support both flat and nested structure
|
|
204
230
|
// Nested: context_triggers: { keywords: [...], tool_names: [...] }
|
|
205
231
|
// Flat: keywords: [...], tools: [...]
|
|
@@ -353,8 +379,8 @@ function transformSkill(content: string, filePath: string, config: SkillTransfor
|
|
|
353
379
|
// Determine content type from frontmatter or file extension
|
|
354
380
|
const content_type: SkillContentType = validatedFrontmatter.content_type || 'md';
|
|
355
381
|
|
|
356
|
-
// Discover assets (scripts and
|
|
357
|
-
const assets = discoverSkillAssets(filePath);
|
|
382
|
+
// Discover assets (scripts, widgets and Agent Skills resource files) in the skill directory
|
|
383
|
+
const assets = discoverSkillAssets(filePath, { skillName: validatedFrontmatter.name });
|
|
358
384
|
|
|
359
385
|
// Build skill definition using the same logic as parseSkillFile in tools-sdk
|
|
360
386
|
const skillData = buildSkillDefinition(
|
|
@@ -363,6 +389,7 @@ function transformSkill(content: string, filePath: string, config: SkillTransfor
|
|
|
363
389
|
content_type,
|
|
364
390
|
assets.widgets,
|
|
365
391
|
assets.scripts,
|
|
392
|
+
assets.files,
|
|
366
393
|
);
|
|
367
394
|
|
|
368
395
|
// Check if properties.ts exists in the skill directory
|
package/src/core/types.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Utilities for discovering asset files (scripts, widgets) in skill directories
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { readdirSync, statSync } from 'node:fs';
|
|
5
|
+
import { lstatSync, readdirSync, statSync } from 'node:fs';
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import type { AssetFile } from '../types.js';
|
|
8
8
|
|
|
@@ -30,6 +30,12 @@ export interface DiscoveredAssets {
|
|
|
30
30
|
/** Widget metadata for compilation */
|
|
31
31
|
widgetMetadata: WidgetMetadata[];
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Agent Skills resource files, as POSIX paths relative to the skill directory
|
|
35
|
+
* (e.g. `scripts/extract.py`, `references/REFERENCE.md`).
|
|
36
|
+
*/
|
|
37
|
+
files: string[];
|
|
38
|
+
|
|
33
39
|
/** Asset files to be copied */
|
|
34
40
|
assetFiles: AssetFile[];
|
|
35
41
|
}
|
|
@@ -59,6 +65,48 @@ function getFilesInDirectory(dirPath: string): string[] {
|
|
|
59
65
|
}
|
|
60
66
|
}
|
|
61
67
|
|
|
68
|
+
/**
|
|
69
|
+
* The Agent Skills resource directories (https://agentskills.io/specification), relative to the skill
|
|
70
|
+
* directory. Unlike the flat scripts beside SKILL.md, their contents keep their relative paths.
|
|
71
|
+
*/
|
|
72
|
+
export const SKILL_RESOURCE_DIRS = ['scripts', 'references', 'assets'] as const;
|
|
73
|
+
|
|
74
|
+
/** Where a skill's resource files are copied, relative to the assets root. */
|
|
75
|
+
export const SKILL_FILES_DIR = 'skill-files';
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* List the files under a directory recursively, as POSIX paths relative to `rootDir`.
|
|
79
|
+
* Hidden entries and symlinks are skipped so resources cannot escape the skill directory or form cycles.
|
|
80
|
+
*/
|
|
81
|
+
function listFilesRecursive(rootDir: string, relDir: string): string[] {
|
|
82
|
+
const absDir = path.join(rootDir, relDir);
|
|
83
|
+
let entries: string[];
|
|
84
|
+
try {
|
|
85
|
+
// Reject linked resource roots as well as symlinks encountered below.
|
|
86
|
+
if (!lstatSync(absDir).isDirectory()) return [];
|
|
87
|
+
entries = readdirSync(absDir);
|
|
88
|
+
} catch {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
const out: string[] = [];
|
|
92
|
+
for (const entry of entries.sort()) {
|
|
93
|
+
if (entry.startsWith('.')) continue;
|
|
94
|
+
const rel = path.posix.join(relDir, entry);
|
|
95
|
+
const abs = path.join(rootDir, rel);
|
|
96
|
+
try {
|
|
97
|
+
const stat = lstatSync(abs);
|
|
98
|
+
if (stat.isDirectory()) {
|
|
99
|
+
out.push(...listFilesRecursive(rootDir, rel));
|
|
100
|
+
} else if (stat.isFile()) {
|
|
101
|
+
out.push(rel);
|
|
102
|
+
}
|
|
103
|
+
} catch {
|
|
104
|
+
// Unreadable entry: skip it like the flat scan does
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
|
|
62
110
|
/**
|
|
63
111
|
* Check if a file is a script file (.js or .py)
|
|
64
112
|
*/
|
|
@@ -92,6 +140,8 @@ export function discoverSkillAssets(
|
|
|
92
140
|
options: {
|
|
93
141
|
scriptsDir?: string;
|
|
94
142
|
widgetsDir?: string;
|
|
143
|
+
/** Skill name used to namespace resource files; defaults to the skill directory name. */
|
|
144
|
+
skillName?: string;
|
|
95
145
|
} = {},
|
|
96
146
|
): DiscoveredAssets {
|
|
97
147
|
const skillDir = path.dirname(skillFilePath);
|
|
@@ -129,10 +179,30 @@ export function discoverSkillAssets(
|
|
|
129
179
|
}
|
|
130
180
|
}
|
|
131
181
|
|
|
182
|
+
// Agent Skills resource directories keep their relative paths and are namespaced per skill, so two
|
|
183
|
+
// skills can ship files with the same name. The flat scripts above are left as they were. Only a
|
|
184
|
+
// SKILL.md owns its directory; a `*.md?skill` file may share one with other skills.
|
|
185
|
+
const resourceFiles =
|
|
186
|
+
path.basename(skillFilePath) === 'SKILL.md'
|
|
187
|
+
? SKILL_RESOURCE_DIRS.flatMap((dir) => listFilesRecursive(skillDir, dir))
|
|
188
|
+
: [];
|
|
189
|
+
const skillName = options.skillName || path.basename(skillDir);
|
|
190
|
+
if (resourceFiles.length > 0 && (skillName === '.' || skillName === '..' || /[\\/]/.test(skillName))) {
|
|
191
|
+
throw new Error(`Invalid skill name for resource files: ${skillName}`);
|
|
192
|
+
}
|
|
193
|
+
for (const file of resourceFiles) {
|
|
194
|
+
assetFiles.push({
|
|
195
|
+
sourcePath: path.join(skillDir, file),
|
|
196
|
+
destPath: path.join(SKILL_FILES_DIR, skillName, file),
|
|
197
|
+
type: 'skill-file',
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
132
201
|
return {
|
|
133
202
|
scripts,
|
|
134
203
|
widgets,
|
|
135
204
|
widgetMetadata,
|
|
205
|
+
files: resourceFiles,
|
|
136
206
|
assetFiles,
|
|
137
207
|
};
|
|
138
208
|
}
|