@vibe-agent-toolkit/cli 0.1.2 → 0.1.3
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/dist/commands/resources/index.d.ts.map +1 -1
- package/dist/commands/resources/index.js +29 -2
- package/dist/commands/resources/index.js.map +1 -1
- package/dist/commands/resources/validate.d.ts +1 -0
- package/dist/commands/resources/validate.d.ts.map +1 -1
- package/dist/commands/resources/validate.js +34 -1
- package/dist/commands/resources/validate.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,IAAI,OAAO,CA+FhD;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -39,6 +39,7 @@ Example:
|
|
|
39
39
|
.command('validate [path]')
|
|
40
40
|
.description('Validate markdown resources (link integrity, anchors)')
|
|
41
41
|
.option('--debug', 'Enable debug logging')
|
|
42
|
+
.option('--frontmatter-schema <path>', 'Validate frontmatter against JSON Schema file (.json or .yaml)')
|
|
42
43
|
.action(validateCommand)
|
|
43
44
|
.addHelpText('after', `
|
|
44
45
|
Description:
|
|
@@ -52,11 +53,37 @@ Description:
|
|
|
52
53
|
Checks:
|
|
53
54
|
Internal file links, anchor links (#heading), cross-file anchors (file.md#heading)
|
|
54
55
|
|
|
56
|
+
Frontmatter Validation:
|
|
57
|
+
--frontmatter-schema <path>
|
|
58
|
+
Validate frontmatter against JSON Schema file.
|
|
59
|
+
|
|
60
|
+
Behavior:
|
|
61
|
+
- Files without frontmatter: OK (unless schema requires fields)
|
|
62
|
+
- Extra fields: OK by default (unless schema sets additionalProperties: false)
|
|
63
|
+
- YAML syntax errors: Always reported
|
|
64
|
+
|
|
65
|
+
Common pattern: Define minimum required fields, allow extras.
|
|
66
|
+
|
|
67
|
+
Example schema:
|
|
68
|
+
{
|
|
69
|
+
"type": "object",
|
|
70
|
+
"required": ["title", "description"],
|
|
71
|
+
"properties": {
|
|
72
|
+
"title": { "type": "string" },
|
|
73
|
+
"description": { "type": "string" },
|
|
74
|
+
"category": { "enum": ["guide", "reference", "tutorial"] }
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
55
78
|
Exit Codes:
|
|
56
79
|
0 - Success | 1 - Validation errors | 2 - System error
|
|
57
80
|
|
|
58
|
-
|
|
59
|
-
$ vat resources validate docs/
|
|
81
|
+
Examples:
|
|
82
|
+
$ vat resources validate docs/
|
|
83
|
+
Parse frontmatter, report YAML syntax errors only
|
|
84
|
+
|
|
85
|
+
$ vat resources validate docs/ --frontmatter-schema schema.json
|
|
86
|
+
Validate frontmatter against schema
|
|
60
87
|
`);
|
|
61
88
|
return resources;
|
|
62
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,UAAU,sBAAsB;IACpC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3C,SAAS;SACN,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC;SACxC,WAAW,CAAC,KAAK,CAAC,CAAC,uDAAuD;SAC1E,WAAW,CACV,OAAO,EACP;;;;;;CAML,CACI,CAAC;IAEJ,SAAS;SACN,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,WAAW,CAAC;SACnB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;CAYL,CACI,CAAC;IAEJ,SAAS;SACN,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,eAAe,CAAC;SACvB,WAAW,CACV,OAAO,EACP
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,UAAU,sBAAsB;IACpC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3C,SAAS;SACN,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC;SACxC,WAAW,CAAC,KAAK,CAAC,CAAC,uDAAuD;SAC1E,WAAW,CACV,OAAO,EACP;;;;;;CAML,CACI,CAAC;IAEJ,SAAS;SACN,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,WAAW,CAAC;SACnB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;CAYL,CACI,CAAC;IAEJ,SAAS;SACN,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,6BAA6B,EAAE,gEAAgE,CAAC;SACvG,MAAM,CAAC,eAAe,CAAC;SACvB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CL,CACI,CAAC;IAEJ,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqCH,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAsEf"}
|
|
@@ -1,18 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Resources validate command - strict validation with error reporting
|
|
3
3
|
*/
|
|
4
|
+
import { readFile } from 'node:fs/promises';
|
|
5
|
+
import * as path from 'node:path';
|
|
6
|
+
import * as yaml from 'js-yaml';
|
|
4
7
|
import { createLogger } from '../../utils/logger.js';
|
|
5
8
|
import { flushStdout, writeTestFormatError, writeYamlOutput } from '../../utils/output.js';
|
|
6
9
|
import { loadResourcesWithConfig } from '../../utils/resource-loader.js';
|
|
7
10
|
import { handleCommandError } from './command-helpers.js';
|
|
11
|
+
/**
|
|
12
|
+
* Load JSON Schema from file (supports .json and .yaml).
|
|
13
|
+
*
|
|
14
|
+
* @param schemaPath - Path to schema file
|
|
15
|
+
* @returns Parsed schema object
|
|
16
|
+
*/
|
|
17
|
+
async function loadSchema(schemaPath) {
|
|
18
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- schemaPath is user-provided CLI argument
|
|
19
|
+
const content = await readFile(schemaPath, 'utf-8');
|
|
20
|
+
const ext = path.extname(schemaPath).toLowerCase();
|
|
21
|
+
if (ext === '.json') {
|
|
22
|
+
return JSON.parse(content);
|
|
23
|
+
}
|
|
24
|
+
else if (ext === '.yaml' || ext === '.yml') {
|
|
25
|
+
const parsed = yaml.load(content);
|
|
26
|
+
if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {
|
|
27
|
+
return parsed;
|
|
28
|
+
}
|
|
29
|
+
throw new Error('YAML schema must be an object');
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
throw new Error(`Unsupported schema format: ${ext} (use .json or .yaml)`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
8
35
|
export async function validateCommand(pathArg, options) {
|
|
9
36
|
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
10
37
|
const startTime = Date.now();
|
|
11
38
|
try {
|
|
12
39
|
// Load resources with config support
|
|
13
40
|
const { registry } = await loadResourcesWithConfig(pathArg, logger);
|
|
41
|
+
// Load frontmatter schema if provided
|
|
42
|
+
let frontmatterSchemaObj;
|
|
43
|
+
if (options.frontmatterSchema) {
|
|
44
|
+
logger.debug(`Loading frontmatter schema from: ${options.frontmatterSchema}`);
|
|
45
|
+
frontmatterSchemaObj = await loadSchema(options.frontmatterSchema);
|
|
46
|
+
}
|
|
14
47
|
// Validate all resources
|
|
15
|
-
const validationResult = await registry.validate();
|
|
48
|
+
const validationResult = await registry.validate(...(frontmatterSchemaObj ? [{ frontmatterSchema: frontmatterSchemaObj }] : []));
|
|
16
49
|
const stats = registry.getStats();
|
|
17
50
|
const duration = Date.now() - startTime;
|
|
18
51
|
// Filter out external_url issues (informational only, not actual errors)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/resources/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/resources/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibe-agent-toolkit/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Command-line interface for vibe-agent-toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -40,16 +40,16 @@
|
|
|
40
40
|
"license": "MIT",
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@anthropic-ai/sdk": "^0.71.2",
|
|
43
|
-
"@vibe-agent-toolkit/agent-config": "0.1.
|
|
44
|
-
"@vibe-agent-toolkit/agent-schema": "0.1.
|
|
45
|
-
"@vibe-agent-toolkit/discovery": "0.1.
|
|
46
|
-
"@vibe-agent-toolkit/gateway-mcp": "0.1.
|
|
47
|
-
"@vibe-agent-toolkit/rag": "0.1.
|
|
48
|
-
"@vibe-agent-toolkit/rag-lancedb": "0.1.
|
|
49
|
-
"@vibe-agent-toolkit/resources": "0.1.
|
|
50
|
-
"@vibe-agent-toolkit/runtime-claude-skills": "0.1.
|
|
51
|
-
"@vibe-agent-toolkit/utils": "0.1.
|
|
52
|
-
"@vibe-agent-toolkit/vat-example-cat-agents": "0.1.
|
|
43
|
+
"@vibe-agent-toolkit/agent-config": "0.1.3",
|
|
44
|
+
"@vibe-agent-toolkit/agent-schema": "0.1.3",
|
|
45
|
+
"@vibe-agent-toolkit/discovery": "0.1.3",
|
|
46
|
+
"@vibe-agent-toolkit/gateway-mcp": "0.1.3",
|
|
47
|
+
"@vibe-agent-toolkit/rag": "0.1.3",
|
|
48
|
+
"@vibe-agent-toolkit/rag-lancedb": "0.1.3",
|
|
49
|
+
"@vibe-agent-toolkit/resources": "0.1.3",
|
|
50
|
+
"@vibe-agent-toolkit/runtime-claude-skills": "0.1.3",
|
|
51
|
+
"@vibe-agent-toolkit/utils": "0.1.3",
|
|
52
|
+
"@vibe-agent-toolkit/vat-example-cat-agents": "0.1.3",
|
|
53
53
|
"commander": "^12.1.0",
|
|
54
54
|
"js-yaml": "^4.1.0",
|
|
55
55
|
"semver": "^7.7.3",
|