@forge/manifest 12.8.1-next.2 → 12.8.1-next.2-experimental-49a346a
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/CHANGELOG.md +13 -0
- package/out/text/errors.d.ts +5 -0
- package/out/text/errors.d.ts.map +1 -1
- package/out/text/errors.js +6 -1
- package/out/utils/index.d.ts +1 -0
- package/out/utils/index.d.ts.map +1 -1
- package/out/utils/index.js +1 -0
- package/out/utils/regex.d.ts +2 -0
- package/out/utils/regex.d.ts.map +1 -0
- package/out/utils/regex.js +4 -0
- package/out/validators/modules-validator.d.ts.map +1 -1
- package/out/validators/modules-validator.js +2 -2
- package/out/validators/modules-validators/rovo/index.d.ts +2 -2
- package/out/validators/modules-validators/rovo/index.d.ts.map +1 -1
- package/out/validators/modules-validators/rovo/index.js +3 -1
- package/out/validators/modules-validators/rovo/validate-skill-path.d.ts +4 -0
- package/out/validators/modules-validators/rovo/validate-skill-path.d.ts.map +1 -0
- package/out/validators/modules-validators/rovo/validate-skill-path.js +78 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @forge/manifest
|
|
2
2
|
|
|
3
|
+
## 12.8.1-next.2-experimental-49a346a
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 9f3add6: Forge skill path validation
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- ccdcfc3: Add `customerServiceManagement:crmImport` module type and corresponding CLI templates (UI Kit + Custom UI).
|
|
12
|
+
- 5beb8ad: Add multi-entry resource bundling support for worker runtime
|
|
13
|
+
- f1f11f0: Update manifest definitions
|
|
14
|
+
- b7b1f36: Update manifest definitions
|
|
15
|
+
|
|
3
16
|
## 12.8.1-next.2
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/out/text/errors.d.ts
CHANGED
|
@@ -151,6 +151,11 @@ export declare const errors: {
|
|
|
151
151
|
incorrectA2AEndpointReference: (module: string, endpointKey: string) => string;
|
|
152
152
|
incorrectA2AEndpointConfiguration: (module: string, endpointKey: string) => string;
|
|
153
153
|
incorrectSkill: (module: string, toolKey: string) => string;
|
|
154
|
+
skillPathInvalidFormat: (module: string) => string;
|
|
155
|
+
skillSubdirNotFound: (module: string, subdirectory: string) => string;
|
|
156
|
+
skillSubdirMissingSkillMD: (module: string, subdirectory: string) => string;
|
|
157
|
+
skillPathUnknownResourceKey: (module: string, resourceKey: string) => string;
|
|
158
|
+
skillPathNotUnique: (module: string, path: string) => string;
|
|
154
159
|
};
|
|
155
160
|
action: {
|
|
156
161
|
unreferencedAction: (action: string) => string;
|
package/out/text/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/text/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,eAAO,MAAM,MAAM;8BACS,MAAM,KAAG,MAAM;+BACd,MAAM,EAAE,KAAG,MAAM;2BAIvB,MAAM;yBAEN,MAAM,GAAG,SAAS,QAAQ,MAAM,EAAE,UAAU,MAAM,GAAG,SAAS,KAAG,MAAM;;uBAO3E,MAAM,EAAE,EAAE,GAAG,SAAS,KAAG,MAAM;4BAI1B,MAAM,EAAE,KAAG,MAAM;mCACV,MAAM,SAAS,MAAM,mBAAmB,MAAM,KAAG,MAAM;mDAIvC,MAAM,KAAG,MAAM;4BAEtC,MAAM,EAAE,GAAG,SAAS,KAAG,MAAM;+CAIV,MAAM;6CACR,MAAM,gBAAgB,MAAM;qCAEpC,MAAM;2CACA,MAAM;6CACJ,MAAM;;;qCAGd,MAAM,SAAS,MAAM,KAAG,MAAM;4CAEvB,MAAM,SAAS,MAAM,KAAG,MAAM;0DAEhB,MAAM,YAAY,MAAM,mBAAmB,MAAM,EAAE,KAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/text/errors.ts"],"names":[],"mappings":"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"}
|
package/out/text/errors.js
CHANGED
|
@@ -164,7 +164,12 @@ exports.errors = {
|
|
|
164
164
|
undefinedActionName: (action) => `Action '${action}' does not have a name property. 'name' property will be required when Forge Agents are GA.`,
|
|
165
165
|
incorrectA2AEndpointReference: (module, endpointKey) => `${module} references undefined endpoint '${endpointKey}' in agent2Agent protocol.`,
|
|
166
166
|
incorrectA2AEndpointConfiguration: (module, endpointKey) => `${module} endpoint '${endpointKey}' must reference a remote. Agent2Agent protocol requires remote endpoints.`,
|
|
167
|
-
incorrectSkill: (module, toolKey) => `${module} references undefined action module with key '${toolKey}'
|
|
167
|
+
incorrectSkill: (module, toolKey) => `${module} references undefined action module with key '${toolKey}'.`,
|
|
168
|
+
skillPathInvalidFormat: (module) => `Skill ${module} has an invalid path. Path must match pattern: "resource:<resource-key>;<subdirectory>"`,
|
|
169
|
+
skillSubdirNotFound: (module, subdirectory) => `Subdirectory '${subdirectory}' specified in skill ${module} does not exist in the associated resource path.`,
|
|
170
|
+
skillSubdirMissingSkillMD: (module, subdirectory) => `Subdirectory '${subdirectory}' specified in skill ${module} does not contain a SKILL.md file.`,
|
|
171
|
+
skillPathUnknownResourceKey: (module, resourceKey) => `Resource key '${resourceKey}' referenced by skill ${module} not found.`,
|
|
172
|
+
skillPathNotUnique: (module, path) => `Skill ${module} has a duplicate path '${path}'. rovo:skill path values must be unique.`
|
|
168
173
|
},
|
|
169
174
|
action: {
|
|
170
175
|
unreferencedAction: (action) => `Action '${action}' is not referenced by any Rovo agent or automation:actionProvider module.`,
|
package/out/utils/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from './line-finder';
|
|
|
3
3
|
export * from './module-key-cleaner';
|
|
4
4
|
export * from './module-references';
|
|
5
5
|
export * from './manifest-parser-builder';
|
|
6
|
+
export * from './regex';
|
|
6
7
|
export type { ManifestParser } from './manifest-parser';
|
|
7
8
|
export * from './i18n';
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
package/out/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,cAAc,QAAQ,CAAC"}
|
package/out/utils/index.js
CHANGED
|
@@ -6,4 +6,5 @@ tslib_1.__exportStar(require("./line-finder"), exports);
|
|
|
6
6
|
tslib_1.__exportStar(require("./module-key-cleaner"), exports);
|
|
7
7
|
tslib_1.__exportStar(require("./module-references"), exports);
|
|
8
8
|
tslib_1.__exportStar(require("./manifest-parser-builder"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./regex"), exports);
|
|
9
10
|
tslib_1.__exportStar(require("./i18n"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex.d.ts","sourceRoot":"","sources":["../../src/utils/regex.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,QAA2E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules-validator.d.ts","sourceRoot":"","sources":["../../src/validators/modules-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,cAAc,EAAE,wBAAwB,EAAsC,MAAM,UAAU,CAAC;AASxH,OAAO,EAEL,cAAc,EAMf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA2B3D,qBAAa,gBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAGzF,OAAO,CAAC,oBAAoB,CAAsE;IAE5F,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"modules-validator.d.ts","sourceRoot":"","sources":["../../src/validators/modules-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,cAAc,EAAE,wBAAwB,EAAsC,MAAM,UAAU,CAAC;AASxH,OAAO,EAEL,cAAc,EAMf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA2B3D,qBAAa,gBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAGzF,OAAO,CAAC,oBAAoB,CAAsE;IAE5F,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAmEpD,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,4BAA4B;IAapC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,4BAA4B;IA0BpC,OAAO,CAAC,mBAAmB;IA2E3B,OAAO,CAAC,4BAA4B;IA2BpC,OAAO,CAAC,yBAAyB;CAkClC"}
|
|
@@ -37,8 +37,8 @@ class ModulesValidator {
|
|
|
37
37
|
}
|
|
38
38
|
let validationErrors = [...this.connectModuleValidation(manifest)];
|
|
39
39
|
if (manifest.typedContent.modules) {
|
|
40
|
-
const { typedContent: { modules, connectModules, remotes, permissions, services, providers }, yamlContentByLine, filePath } = manifest;
|
|
41
|
-
validationErrors = validationErrors.concat(this.checkUnsupportedModules(manifest.typedContent.modules, yamlContentByLine), this.functionKeyLength(modules, yamlContentByLine), this.minimumModuleCountValidation(modules, yamlContentByLine), this.functionKeyDefinedValidation(modules, yamlContentByLine), this.endpointValidations(modules, yamlContentByLine, remotes, permissions?.scopes || [], services), this.duplicateModuleKeyValidation(modules, connectModules || {}, yamlContentByLine), this.functionHandlerValidation(modules, yamlContentByLine, filePath), (0, validate_workflow_1.validateJiraWorkflowValidator)(modules, yamlContentByLine), (0, validate_workflow_1.validateJiraWorkflowCondition)(modules, yamlContentByLine), (0, ui_modifications_1.validateUiModificationsModule)(modules, yamlContentByLine), (0, validate_full_admin_page_1.validateJiraFullAdminPage)(modules, yamlContentByLine), (0, validate_full_page_1.validateJiraFullPage)(modules, yamlContentByLine), (0, validate_full_page_module_1.validateJiraFullPageModule)(modules, yamlContentByLine), (0, validate_custom_field_1.validateJiraCustomField)(modules, yamlContentByLine), (0, confluence_1.validateConfluenceModules)(modules, yamlContentByLine), (0, bitbucket_1.validateBitbucketModules)(modules, yamlContentByLine), (0, validate_trigger_1.validateJiraTriggers)(modules, yamlContentByLine), (0, remote_1.validateRemoteModules)(modules, yamlContentByLine), (0, dataResidency_1.validateMigrationDataResidencyModule)(modules, remotes, yamlContentByLine), (0, validateModuleScopes_1.validateModuleScopes)(modules, yamlContentByLine, permissions), (0, rovo_1.validateRovoModules)(modules, yamlContentByLine), (0, automation_1.validateAutomationModules)(modules, yamlContentByLine), (0, validate_timetrackingprovider_module_1.validateJiraTimeTrackingModule)(modules, yamlContentByLine), (0, validate_command_1.validateJiraCommandModule)(modules, yamlContentByLine), (0, validate_action_validator_1.validateJiraActionValidator)(modules, yamlContentByLine), (0, validate_global_background_script_1.validateJiraGlobalBackgroundScript)(modules, yamlContentByLine), (0, graph_1.validateGraphModules)(modules, providers, yamlContentByLine), (0, validate_global_ui_1.validateGlobalUi)(modules, manifest.typedContent.app, yamlContentByLine));
|
|
40
|
+
const { typedContent: { modules, connectModules, remotes, permissions, services, providers, resources }, yamlContentByLine, filePath } = manifest;
|
|
41
|
+
validationErrors = validationErrors.concat(this.checkUnsupportedModules(manifest.typedContent.modules, yamlContentByLine), this.functionKeyLength(modules, yamlContentByLine), this.minimumModuleCountValidation(modules, yamlContentByLine), this.functionKeyDefinedValidation(modules, yamlContentByLine), this.endpointValidations(modules, yamlContentByLine, remotes, permissions?.scopes || [], services), this.duplicateModuleKeyValidation(modules, connectModules || {}, yamlContentByLine), this.functionHandlerValidation(modules, yamlContentByLine, filePath), (0, validate_workflow_1.validateJiraWorkflowValidator)(modules, yamlContentByLine), (0, validate_workflow_1.validateJiraWorkflowCondition)(modules, yamlContentByLine), (0, ui_modifications_1.validateUiModificationsModule)(modules, yamlContentByLine), (0, validate_full_admin_page_1.validateJiraFullAdminPage)(modules, yamlContentByLine), (0, validate_full_page_1.validateJiraFullPage)(modules, yamlContentByLine), (0, validate_full_page_module_1.validateJiraFullPageModule)(modules, yamlContentByLine), (0, validate_custom_field_1.validateJiraCustomField)(modules, yamlContentByLine), (0, confluence_1.validateConfluenceModules)(modules, yamlContentByLine), (0, bitbucket_1.validateBitbucketModules)(modules, yamlContentByLine), (0, validate_trigger_1.validateJiraTriggers)(modules, yamlContentByLine), (0, remote_1.validateRemoteModules)(modules, yamlContentByLine), (0, dataResidency_1.validateMigrationDataResidencyModule)(modules, remotes, yamlContentByLine), (0, validateModuleScopes_1.validateModuleScopes)(modules, yamlContentByLine, permissions), (0, rovo_1.validateRovoModules)(modules, resources, (0, path_1.dirname)(filePath), yamlContentByLine), (0, automation_1.validateAutomationModules)(modules, yamlContentByLine), (0, validate_timetrackingprovider_module_1.validateJiraTimeTrackingModule)(modules, yamlContentByLine), (0, validate_command_1.validateJiraCommandModule)(modules, yamlContentByLine), (0, validate_action_validator_1.validateJiraActionValidator)(modules, yamlContentByLine), (0, validate_global_background_script_1.validateJiraGlobalBackgroundScript)(modules, yamlContentByLine), (0, graph_1.validateGraphModules)(modules, providers, yamlContentByLine), (0, validate_global_ui_1.validateGlobalUi)(modules, manifest.typedContent.app, yamlContentByLine));
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
44
|
const { typedContent: { connectModules }, yamlContentByLine } = manifest;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ValidationError } from '../../../types';
|
|
2
|
-
import { Modules } from '../../../schema/manifest';
|
|
3
|
-
export declare const validateRovoModules: (modules: Modules, yamlContentByLine?: string[]) => ValidationError[];
|
|
2
|
+
import { Modules, Resources } from '../../../schema/manifest';
|
|
3
|
+
export declare const validateRovoModules: (modules: Modules, resources?: Resources, manifestDir?: string, yamlContentByLine?: string[]) => ValidationError[];
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/validators/modules-validators/rovo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/validators/modules-validators/rovo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAQ9D,eAAO,MAAM,mBAAmB,YACrB,OAAO,cACJ,SAAS,gBACP,MAAM,sBACA,MAAM,EAAE,KAC3B,eAAe,EAWjB,CAAC"}
|
|
@@ -6,13 +6,15 @@ const validate_unreferenced_actions_1 = require("./validate-unreferenced-actions
|
|
|
6
6
|
const validate_rovo_skill_actions_1 = require("./validate-rovo-skill-actions");
|
|
7
7
|
const validate_undefined_action_name_1 = require("./validate-undefined-action-name");
|
|
8
8
|
const validate_agent_connector_remote_endpoints_1 = require("./validate-agent-connector-remote-endpoints");
|
|
9
|
-
const
|
|
9
|
+
const validate_skill_path_1 = require("./validate-skill-path");
|
|
10
|
+
const validateRovoModules = (modules, resources, manifestDir, yamlContentByLine) => {
|
|
10
11
|
const validationErrors = [];
|
|
11
12
|
validationErrors.push(...(0, validate_rovo_agent_actions_1.validateRovoAgentActions)(modules, yamlContentByLine));
|
|
12
13
|
validationErrors.push(...(0, validate_unreferenced_actions_1.validateUnreferencedActions)(modules, yamlContentByLine));
|
|
13
14
|
validationErrors.push(...(0, validate_rovo_skill_actions_1.validateRovoSkillActions)(modules, yamlContentByLine));
|
|
14
15
|
validationErrors.push(...(0, validate_undefined_action_name_1.validateUndefinedActionName)(modules, yamlContentByLine));
|
|
15
16
|
validationErrors.push(...(0, validate_agent_connector_remote_endpoints_1.validateAgentConnectorRemoteEndpoints)(modules, yamlContentByLine));
|
|
17
|
+
validationErrors.push(...(0, validate_skill_path_1.validateSkillPath)(modules, resources, manifestDir, yamlContentByLine));
|
|
16
18
|
return validationErrors;
|
|
17
19
|
};
|
|
18
20
|
exports.validateRovoModules = validateRovoModules;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ValidationError } from '../../../types';
|
|
2
|
+
import { Modules, Resources } from '../../../schema/manifest';
|
|
3
|
+
export declare const validateSkillPath: (allModules: Modules, resources?: Resources, manifestDir?: string, yamlContentByLine?: string[]) => ValidationError[];
|
|
4
|
+
//# sourceMappingURL=validate-skill-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-skill-path.d.ts","sourceRoot":"","sources":["../../../../src/validators/modules-validators/rovo/validate-skill-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkB,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAM9D,eAAO,MAAM,iBAAiB,eAChB,OAAO,cACP,SAAS,gBACP,MAAM,sBACA,MAAM,EAAE,KAC3B,eAAe,EAiFjB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateSkillPath = void 0;
|
|
4
|
+
const types_1 = require("../../../types");
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
6
|
+
const text_1 = require("../../../text");
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
const validateSkillPath = (allModules, resources, manifestDir, yamlContentByLine) => {
|
|
10
|
+
const validationErrors = [];
|
|
11
|
+
const rovoSkills = allModules[types_1.AllModuleTypes.RovoSkill];
|
|
12
|
+
const seenPaths = new Set();
|
|
13
|
+
const resourceMap = new Map((resources ?? []).map((resource) => [resource.key, resource.path]));
|
|
14
|
+
rovoSkills?.forEach((skill) => {
|
|
15
|
+
if (seenPaths.has(skill.path)) {
|
|
16
|
+
validationErrors.push({
|
|
17
|
+
message: text_1.errors.modules.rovo.skillPathNotUnique(skill.key, skill.path),
|
|
18
|
+
reference: text_1.References.Modules,
|
|
19
|
+
level: 'error',
|
|
20
|
+
...(0, utils_1.findPosition)(skill.key, yamlContentByLine)
|
|
21
|
+
});
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
seenPaths.add(skill.path);
|
|
25
|
+
const match = utils_1.rovoSkillPathRegex.exec(skill.path);
|
|
26
|
+
if (!match?.groups) {
|
|
27
|
+
validationErrors.push({
|
|
28
|
+
message: text_1.errors.modules.rovo.skillPathInvalidFormat(skill.key),
|
|
29
|
+
reference: text_1.References.Modules,
|
|
30
|
+
level: 'error',
|
|
31
|
+
...(0, utils_1.findPosition)(skill.key, yamlContentByLine)
|
|
32
|
+
});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const resourceKey = match.groups.resourceKey;
|
|
36
|
+
const subdirectory = match.groups.subdirectory;
|
|
37
|
+
if (subdirectory.startsWith('..')) {
|
|
38
|
+
validationErrors.push({
|
|
39
|
+
message: text_1.errors.modules.rovo.skillPathInvalidFormat(skill.key),
|
|
40
|
+
reference: text_1.References.Modules,
|
|
41
|
+
level: 'error',
|
|
42
|
+
...(0, utils_1.findPosition)(skill.key, yamlContentByLine)
|
|
43
|
+
});
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const resourcePath = resourceMap.get(resourceKey);
|
|
47
|
+
if (!resourcePath) {
|
|
48
|
+
validationErrors.push({
|
|
49
|
+
message: text_1.errors.modules.rovo.skillPathUnknownResourceKey(skill.key, resourceKey),
|
|
50
|
+
reference: text_1.References.Modules,
|
|
51
|
+
level: 'error',
|
|
52
|
+
...(0, utils_1.findPosition)(skill.key, yamlContentByLine)
|
|
53
|
+
});
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const subdirectoryPath = (0, path_1.resolve)(manifestDir ?? '', resourcePath, subdirectory);
|
|
57
|
+
if (!(0, fs_1.existsSync)(subdirectoryPath)) {
|
|
58
|
+
validationErrors.push({
|
|
59
|
+
message: text_1.errors.modules.rovo.skillSubdirNotFound(skill.key, subdirectory),
|
|
60
|
+
reference: text_1.References.Modules,
|
|
61
|
+
level: 'error',
|
|
62
|
+
...(0, utils_1.findPosition)(skill.key, yamlContentByLine)
|
|
63
|
+
});
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const skillMdPath = (0, path_1.resolve)(subdirectoryPath, 'SKILL.md');
|
|
67
|
+
if (!(0, fs_1.existsSync)(skillMdPath)) {
|
|
68
|
+
validationErrors.push({
|
|
69
|
+
message: text_1.errors.modules.rovo.skillSubdirMissingSkillMD(skill.key, subdirectory),
|
|
70
|
+
reference: text_1.References.Modules,
|
|
71
|
+
level: 'error',
|
|
72
|
+
...(0, utils_1.findPosition)(skill.key, yamlContentByLine)
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
return validationErrors;
|
|
77
|
+
};
|
|
78
|
+
exports.validateSkillPath = validateSkillPath;
|