@specverse/engine-registry 4.0.2 → 4.0.4

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 (55) hide show
  1. package/package.json +1 -1
  2. package/dist/cache/cache-manager.d.ts +0 -132
  3. package/dist/cache/cache-manager.d.ts.map +0 -1
  4. package/dist/cache/cache-manager.js +0 -218
  5. package/dist/cache/cache-manager.js.map +0 -1
  6. package/dist/client/registry-client.d.ts +0 -129
  7. package/dist/client/registry-client.d.ts.map +0 -1
  8. package/dist/client/registry-client.js +0 -317
  9. package/dist/client/registry-client.js.map +0 -1
  10. package/dist/formatters/error-formatter.d.ts +0 -100
  11. package/dist/formatters/error-formatter.d.ts.map +0 -1
  12. package/dist/formatters/error-formatter.js +0 -290
  13. package/dist/formatters/error-formatter.js.map +0 -1
  14. package/dist/formatters/index.d.ts +0 -8
  15. package/dist/formatters/index.d.ts.map +0 -1
  16. package/dist/formatters/index.js +0 -7
  17. package/dist/formatters/index.js.map +0 -1
  18. package/dist/index.d.ts +0 -19
  19. package/dist/index.js +0 -22
  20. package/dist/index.js.map +0 -1
  21. package/dist/offline/offline-handler.d.ts +0 -150
  22. package/dist/offline/offline-handler.d.ts.map +0 -1
  23. package/dist/offline/offline-handler.js +0 -290
  24. package/dist/offline/offline-handler.js.map +0 -1
  25. package/dist/types/index.d.ts +0 -13
  26. package/dist/types/index.d.ts.map +0 -1
  27. package/dist/types/index.js +0 -11
  28. package/dist/types/index.js.map +0 -1
  29. package/dist/types/registry.d.ts +0 -220
  30. package/dist/types/registry.d.ts.map +0 -1
  31. package/dist/types/registry.js +0 -55
  32. package/dist/types/registry.js.map +0 -1
  33. package/dist/types/validation.d.ts +0 -197
  34. package/dist/types/validation.d.ts.map +0 -1
  35. package/dist/types/validation.js +0 -140
  36. package/dist/types/validation.js.map +0 -1
  37. package/dist/utils/manifest-adapter.d.ts +0 -42
  38. package/dist/utils/manifest-adapter.js +0 -182
  39. package/dist/utils/manifest-adapter.js.map +0 -1
  40. package/dist/validators/index.d.ts +0 -12
  41. package/dist/validators/index.d.ts.map +0 -1
  42. package/dist/validators/index.js +0 -9
  43. package/dist/validators/index.js.map +0 -1
  44. package/dist/validators/installation-validator.d.ts +0 -75
  45. package/dist/validators/installation-validator.d.ts.map +0 -1
  46. package/dist/validators/installation-validator.js +0 -142
  47. package/dist/validators/installation-validator.js.map +0 -1
  48. package/dist/validators/manifest-validator.d.ts +0 -82
  49. package/dist/validators/manifest-validator.d.ts.map +0 -1
  50. package/dist/validators/manifest-validator.js +0 -213
  51. package/dist/validators/manifest-validator.js.map +0 -1
  52. package/dist/validators/validator.d.ts +0 -113
  53. package/dist/validators/validator.d.ts.map +0 -1
  54. package/dist/validators/validator.js +0 -165
  55. package/dist/validators/validator.js.map +0 -1
@@ -1,75 +0,0 @@
1
- /**
2
- * Installation Validator
3
- *
4
- * Validates that instance factory npm packages are installed locally
5
- * and that the factory files exist at the specified locations.
6
- *
7
- * @module registry/validators/installation-validator
8
- * @version 2.0.0
9
- */
10
- import type { ValidationResult, RegistryFactoryMetadata } from '../types/index.js';
11
- import type { SpecVerseManifest } from './manifest-validator.js';
12
- /**
13
- * Installation validation options
14
- */
15
- export interface InstallationValidationOptions {
16
- /** Auto-install missing packages (not implemented yet) */
17
- autoInstall?: boolean;
18
- /** Project root directory (default: process.cwd()) */
19
- projectRoot?: string;
20
- /** File path for error reporting */
21
- filePath?: string;
22
- }
23
- /**
24
- * Package installation info
25
- */
26
- export interface PackageInfo {
27
- /** Package name */
28
- name: string;
29
- /** Is package installed? */
30
- installed: boolean;
31
- /** Installed version (if available) */
32
- version?: string;
33
- /** Package.json path */
34
- packageJsonPath?: string;
35
- }
36
- /**
37
- * Installation Validator
38
- *
39
- * Validates that required npm packages are installed locally.
40
- */
41
- export declare class InstallationValidator {
42
- /**
43
- * Validate installation
44
- *
45
- * @param manifest - Manifest to validate
46
- * @param registryFactories - Factory metadata from registry
47
- * @param options - Validation options
48
- * @returns Validation result
49
- */
50
- validate(manifest: SpecVerseManifest, registryFactories: Map<string, RegistryFactoryMetadata>, options?: InstallationValidationOptions): Promise<ValidationResult>;
51
- /**
52
- * Check if a package is installed
53
- *
54
- * @param packageName - Package name
55
- * @param projectRoot - Project root directory
56
- * @returns Package info
57
- */
58
- private checkPackageInstallation;
59
- /**
60
- * Check if a file exists
61
- *
62
- * @param filePath - File path to check
63
- * @returns True if file exists
64
- */
65
- private checkFileExists;
66
- /**
67
- * Get package info for a specific package
68
- *
69
- * @param packageName - Package name
70
- * @param projectRoot - Project root directory
71
- * @returns Package info
72
- */
73
- getPackageInfo(packageName: string, projectRoot?: string): Promise<PackageInfo>;
74
- }
75
- //# sourceMappingURL=installation-validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"installation-validator.d.ts","sourceRoot":"","sources":["../../src/validators/installation-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAEhB,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,0DAA0D;IAC1D,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,4BAA4B;IAC5B,SAAS,EAAE,OAAO,CAAC;IAEnB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,wBAAwB;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,qBAAqB;IAChC;;;;;;;OAOG;IACG,QAAQ,CACZ,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACvD,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,gBAAgB,CAAC;IA2H5B;;;;;;OAMG;YACW,wBAAwB;IAiCtC;;;;;OAKG;YACW,eAAe;IAS7B;;;;;;OAMG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAGtF"}
@@ -1,142 +0,0 @@
1
- /**
2
- * Installation Validator
3
- *
4
- * Validates that instance factory npm packages are installed locally
5
- * and that the factory files exist at the specified locations.
6
- *
7
- * @module registry/validators/installation-validator
8
- * @version 2.0.0
9
- */
10
- import { promises as fs } from 'fs';
11
- import { join } from 'path';
12
- import { createIssue, withFix, withSuggestions, ErrorCodes } from '../types/index.js';
13
- /**
14
- * Installation Validator
15
- *
16
- * Validates that required npm packages are installed locally.
17
- */
18
- export class InstallationValidator {
19
- /**
20
- * Validate installation
21
- *
22
- * @param manifest - Manifest to validate
23
- * @param registryFactories - Factory metadata from registry
24
- * @param options - Validation options
25
- * @returns Validation result
26
- */
27
- async validate(manifest, registryFactories, options = {}) {
28
- const errors = [];
29
- const warnings = [];
30
- const info = [];
31
- const projectRoot = options.projectRoot || process.cwd();
32
- const filePath = options.filePath || 'manifests/implementation.yaml';
33
- // Check each instance factory
34
- for (const instanceFactory of manifest.instanceFactories) {
35
- const registryFactory = registryFactories.get(instanceFactory.name);
36
- if (!registryFactory) {
37
- // Factory not in registry - skip (already reported by manifest validator)
38
- continue;
39
- }
40
- // Only check npm packages
41
- if (registryFactory.source.type !== 'npm') {
42
- info.push(createIssue('REALIZE-004', 'info', 'installation', 'Non-npm source', `Skipping installation check for "${instanceFactory.name}" (source type: ${registryFactory.source.type})`, filePath));
43
- continue;
44
- }
45
- const packageName = registryFactory.source.package;
46
- const requiredVersion = registryFactory.source.version;
47
- // Check if package is installed
48
- const packageInfo = await this.checkPackageInstallation(packageName, projectRoot);
49
- if (!packageInfo.installed) {
50
- const installCmd = `npm install ${packageName}${requiredVersion ? '@' + requiredVersion : ''}`;
51
- errors.push(withFix(withSuggestions(createIssue(ErrorCodes.PACKAGE_NOT_INSTALLED, 'error', 'installation', 'Package not installed', `The npm package "${packageName}" is required by "${instanceFactory.name}" but is not installed.`, filePath), [
52
- `Run: ${installCmd}`,
53
- 'Or install all dependencies: npm install'
54
- ]), installCmd));
55
- continue;
56
- }
57
- // Package is installed - check version
58
- if (requiredVersion && packageInfo.version) {
59
- if (packageInfo.version !== requiredVersion) {
60
- warnings.push(withFix(createIssue(ErrorCodes.VERSION_MISMATCH, 'warning', 'installation', 'Version mismatch', `Package "${packageName}" version mismatch: installed=${packageInfo.version}, required=${requiredVersion}`, filePath), `npm install ${packageName}@${requiredVersion}`));
61
- }
62
- }
63
- // Check if factory file exists
64
- const entrypoint = registryFactory.source.entrypoint || 'factory.yaml';
65
- const factoryPath = join(projectRoot, 'node_modules', packageName, entrypoint);
66
- const factoryExists = await this.checkFileExists(factoryPath);
67
- if (!factoryExists) {
68
- errors.push(withSuggestions(createIssue(ErrorCodes.FACTORY_FILE_NOT_FOUND, 'error', 'installation', 'Factory file not found', `The factory file "${entrypoint}" was not found in package "${packageName}" at expected location: ${factoryPath}`, filePath), [
69
- 'The package may be corrupted',
70
- `Try: npm install ${packageName}@${requiredVersion || 'latest'} --force`,
71
- 'Check that the package contains the factory file'
72
- ]));
73
- }
74
- }
75
- return {
76
- valid: errors.length === 0,
77
- errors,
78
- warnings,
79
- info
80
- };
81
- }
82
- /**
83
- * Check if a package is installed
84
- *
85
- * @param packageName - Package name
86
- * @param projectRoot - Project root directory
87
- * @returns Package info
88
- */
89
- async checkPackageInstallation(packageName, projectRoot) {
90
- const packageJsonPath = join(projectRoot, 'node_modules', packageName, 'package.json');
91
- try {
92
- const packageJsonContent = await fs.readFile(packageJsonPath, 'utf8');
93
- const packageJson = JSON.parse(packageJsonContent);
94
- return {
95
- name: packageName,
96
- installed: true,
97
- version: packageJson.version,
98
- packageJsonPath
99
- };
100
- }
101
- catch (error) {
102
- if (error.code === 'ENOENT') {
103
- // Package not installed
104
- return {
105
- name: packageName,
106
- installed: false
107
- };
108
- }
109
- // Other error (permission, invalid JSON, etc.) - treat as not installed
110
- return {
111
- name: packageName,
112
- installed: false
113
- };
114
- }
115
- }
116
- /**
117
- * Check if a file exists
118
- *
119
- * @param filePath - File path to check
120
- * @returns True if file exists
121
- */
122
- async checkFileExists(filePath) {
123
- try {
124
- await fs.access(filePath);
125
- return true;
126
- }
127
- catch {
128
- return false;
129
- }
130
- }
131
- /**
132
- * Get package info for a specific package
133
- *
134
- * @param packageName - Package name
135
- * @param projectRoot - Project root directory
136
- * @returns Package info
137
- */
138
- async getPackageInfo(packageName, projectRoot) {
139
- return this.checkPackageInstallation(packageName, projectRoot || process.cwd());
140
- }
141
- }
142
- //# sourceMappingURL=installation-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"installation-validator.js","sourceRoot":"","sources":["../../src/validators/installation-validator.ts"],"names":[],"mappings":"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"}
@@ -1,82 +0,0 @@
1
- /**
2
- * Manifest Validator
3
- *
4
- * Validates SpecVerse manifests against registry metadata.
5
- * Checks that all instance factories referenced in the manifest exist
6
- * in the registry and validates capability mappings.
7
- *
8
- * @module registry/validators/manifest-validator
9
- * @version 2.0.0
10
- */
11
- import { OfflineHandler } from '../offline/offline-handler.js';
12
- import type { ValidationResult } from '../types/index.js';
13
- /**
14
- * Manifest to validate
15
- */
16
- export interface SpecVerseManifest {
17
- /** Spec version */
18
- specVersion: string;
19
- /** Instance factories used */
20
- instanceFactories: Array<{
21
- name: string;
22
- source: string;
23
- }>;
24
- /** Capability mappings */
25
- capabilityMappings?: Array<{
26
- capability: string;
27
- instanceFactory: string;
28
- }>;
29
- }
30
- /**
31
- * Manifest validation options
32
- */
33
- export interface ManifestValidationOptions {
34
- /** Treat warnings as errors */
35
- strict?: boolean;
36
- /** Skip deprecated factory checks */
37
- skipDeprecated?: boolean;
38
- /** Offline mode - only use cache */
39
- offline?: boolean;
40
- /** File path for error reporting */
41
- filePath?: string;
42
- }
43
- /**
44
- * Manifest Validator
45
- *
46
- * Validates manifests against registry metadata.
47
- */
48
- export declare class ManifestValidator {
49
- private offlineHandler;
50
- constructor(offlineHandler?: OfflineHandler);
51
- /**
52
- * Validate manifest
53
- *
54
- * @param manifest - Manifest to validate
55
- * @param options - Validation options
56
- * @returns Validation result with errors, warnings, and info
57
- */
58
- validate(manifest: SpecVerseManifest, options?: ManifestValidationOptions): Promise<ValidationResult>;
59
- /**
60
- * Find similar factory names using Levenshtein distance
61
- *
62
- * @param target - Target name
63
- * @param candidates - Candidate names
64
- * @returns Top 5 similar names
65
- */
66
- private findSimilarFactories;
67
- /**
68
- * Calculate Levenshtein distance between two strings
69
- *
70
- * @param a - First string
71
- * @param b - Second string
72
- * @returns Edit distance
73
- */
74
- private levenshteinDistance;
75
- /**
76
- * Get offline handler
77
- *
78
- * @returns Offline handler instance
79
- */
80
- getOfflineHandler(): OfflineHandler;
81
- }
82
- //# sourceMappingURL=manifest-validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest-validator.d.ts","sourceRoot":"","sources":["../../src/validators/manifest-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;AAU3B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IAEpB,8BAA8B;IAC9B,iBAAiB,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IAEH,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,KAAK,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,qCAAqC;IACrC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,cAAc,CAAiB;gBAE3B,cAAc,CAAC,EAAE,cAAc;IAI3C;;;;;;OAMG;IACG,QAAQ,CACZ,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,gBAAgB,CAAC;IA4N5B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;;;OAIG;IACH,iBAAiB,IAAI,cAAc;CAGpC"}
@@ -1,213 +0,0 @@
1
- /**
2
- * Manifest Validator
3
- *
4
- * Validates SpecVerse manifests against registry metadata.
5
- * Checks that all instance factories referenced in the manifest exist
6
- * in the registry and validates capability mappings.
7
- *
8
- * @module registry/validators/manifest-validator
9
- * @version 2.0.0
10
- */
11
- import { OfflineHandler } from '../offline/offline-handler.js';
12
- import { createIssue, withSuggestions, withLearnMore, ErrorCodes, LearnMoreUrls } from '../types/index.js';
13
- /**
14
- * Manifest Validator
15
- *
16
- * Validates manifests against registry metadata.
17
- */
18
- export class ManifestValidator {
19
- offlineHandler;
20
- constructor(offlineHandler) {
21
- this.offlineHandler = offlineHandler || new OfflineHandler();
22
- }
23
- /**
24
- * Validate manifest
25
- *
26
- * @param manifest - Manifest to validate
27
- * @param options - Validation options
28
- * @returns Validation result with errors, warnings, and info
29
- */
30
- async validate(manifest, options = {}) {
31
- const errors = [];
32
- const warnings = [];
33
- const info = [];
34
- const filePath = options.filePath || 'manifests/implementation.yaml';
35
- // Enable offline mode if requested
36
- if (options.offline) {
37
- this.offlineHandler.enableOfflineMode();
38
- }
39
- try {
40
- // Fetch registry metadata
41
- const registryResult = await this.offlineHandler.fetchFactories();
42
- // Add any registry fetch warnings
43
- warnings.push(...registryResult.issues);
44
- // Build factory lookup map
45
- const factoryMap = new Map();
46
- for (const factory of registryResult.data.results) {
47
- factoryMap.set(factory.name, factory);
48
- }
49
- // Validate instance factories
50
- for (const instanceFactory of manifest.instanceFactories) {
51
- const registryFactory = factoryMap.get(instanceFactory.name);
52
- if (!registryFactory) {
53
- // Factory not found in registry
54
- const similar = this.findSimilarFactories(instanceFactory.name, Array.from(factoryMap.keys()));
55
- const issue = createIssue(ErrorCodes.FACTORY_NOT_FOUND, 'error', 'manifest', 'Instance factory not found', `The instance factory "${instanceFactory.name}" was not found in the registry.`, filePath);
56
- if (similar.length > 0) {
57
- errors.push(withLearnMore(withSuggestions(issue, [
58
- `Did you mean "${similar[0]}"?`,
59
- ...similar.slice(1, 3).map(name => `Or try: "${name}"`),
60
- 'Run "specverse lib search <query>" to find factories'
61
- ]), LearnMoreUrls.REGISTRY));
62
- }
63
- else {
64
- errors.push(withLearnMore(withSuggestions(issue, [
65
- 'Check the factory name spelling',
66
- 'Run "specverse lib list" to see available factories',
67
- 'The factory may not be published yet'
68
- ]), LearnMoreUrls.REGISTRY));
69
- }
70
- continue;
71
- }
72
- // Check if deprecated
73
- if (!options.skipDeprecated && registryFactory.deprecated) {
74
- const issue = createIssue(ErrorCodes.FACTORY_DEPRECATED, options.strict ? 'error' : 'warning', 'manifest', 'Instance factory is deprecated', `The instance factory "${instanceFactory.name}" is deprecated${registryFactory.deprecationReason ? ': ' + registryFactory.deprecationReason : ''}`, filePath);
75
- const suggestions = [];
76
- if (registryFactory.replacedBy) {
77
- suggestions.push(`Use "${registryFactory.replacedBy}" instead`);
78
- }
79
- if (registryFactory.alternatives && registryFactory.alternatives.length > 0) {
80
- suggestions.push(`Alternatives: ${registryFactory.alternatives.slice(0, 3).join(', ')}`);
81
- }
82
- suggestions.push('Update your manifest to use a supported factory');
83
- const deprecatedIssue = withLearnMore(withSuggestions(issue, suggestions), LearnMoreUrls.MIGRATION);
84
- if (options.strict) {
85
- errors.push(deprecatedIssue);
86
- }
87
- else {
88
- warnings.push(deprecatedIssue);
89
- }
90
- }
91
- }
92
- // Validate capability mappings
93
- if (manifest.capabilityMappings) {
94
- for (const mapping of manifest.capabilityMappings) {
95
- const factory = factoryMap.get(mapping.instanceFactory);
96
- if (!factory) {
97
- // Factory not found (already reported above, skip duplicate)
98
- continue;
99
- }
100
- // Check if factory provides the capability
101
- if (!factory.capabilities.includes(mapping.capability)) {
102
- const issue = createIssue(ErrorCodes.INVALID_CAPABILITY_MAPPING, 'error', 'manifest', 'Invalid capability mapping', `The instance factory "${mapping.instanceFactory}" does not provide capability "${mapping.capability}". ` +
103
- `Available capabilities: ${factory.capabilities.join(', ')}`, filePath);
104
- // Find factories that DO provide this capability
105
- const providingFactories = registryResult.data.results
106
- .filter(f => f.capabilities.includes(mapping.capability))
107
- .map(f => f.name)
108
- .slice(0, 5);
109
- if (providingFactories.length > 0) {
110
- errors.push(withSuggestions(issue, [
111
- `Use one of these factories instead: ${providingFactories.join(', ')}`,
112
- `Or remove the capability mapping for "${mapping.capability}"`
113
- ]));
114
- }
115
- else {
116
- errors.push(withSuggestions(issue, [
117
- `No factories provide capability "${mapping.capability}"`,
118
- 'Check the capability name spelling',
119
- 'The capability may not be supported yet'
120
- ]));
121
- }
122
- }
123
- }
124
- }
125
- // Check for unused factories (info)
126
- const usedFactoryNames = new Set((manifest.capabilityMappings || []).map(m => m.instanceFactory));
127
- for (const instanceFactory of manifest.instanceFactories) {
128
- if (!usedFactoryNames.has(instanceFactory.name)) {
129
- info.push(createIssue('MANIFEST-003', 'info', 'manifest', 'Unused instance factory', `The instance factory "${instanceFactory.name}" is declared but not mapped to any capability.`, filePath));
130
- }
131
- }
132
- }
133
- catch (error) {
134
- // Handle offline errors
135
- if (error.name === 'OfflineError') {
136
- errors.push(withLearnMore(withSuggestions(createIssue(ErrorCodes.NETWORK_ERROR, 'error', 'manifest', 'Registry unavailable', 'Cannot validate manifest: registry is unavailable and no cache exists.', filePath), [
137
- 'Check your internet connection',
138
- 'Run with network access to populate cache',
139
- 'Use --offline flag with existing cache'
140
- ]), LearnMoreUrls.REGISTRY));
141
- }
142
- else {
143
- // Unexpected error
144
- errors.push(createIssue('MANIFEST-999', 'error', 'manifest', 'Validation error', `Unexpected error during validation: ${error.message}`, filePath));
145
- }
146
- }
147
- return {
148
- valid: errors.length === 0,
149
- errors,
150
- warnings,
151
- info
152
- };
153
- }
154
- /**
155
- * Find similar factory names using Levenshtein distance
156
- *
157
- * @param target - Target name
158
- * @param candidates - Candidate names
159
- * @returns Top 5 similar names
160
- */
161
- findSimilarFactories(target, candidates) {
162
- const scored = candidates.map(candidate => ({
163
- name: candidate,
164
- distance: this.levenshteinDistance(target.toLowerCase(), candidate.toLowerCase())
165
- }));
166
- // Sort by distance (lower is better)
167
- scored.sort((a, b) => a.distance - b.distance);
168
- // Return top 5 with distance <= 5
169
- return scored
170
- .filter(s => s.distance <= 5)
171
- .slice(0, 5)
172
- .map(s => s.name);
173
- }
174
- /**
175
- * Calculate Levenshtein distance between two strings
176
- *
177
- * @param a - First string
178
- * @param b - Second string
179
- * @returns Edit distance
180
- */
181
- levenshteinDistance(a, b) {
182
- const matrix = [];
183
- for (let i = 0; i <= b.length; i++) {
184
- matrix[i] = [i];
185
- }
186
- for (let j = 0; j <= a.length; j++) {
187
- matrix[0][j] = j;
188
- }
189
- for (let i = 1; i <= b.length; i++) {
190
- for (let j = 1; j <= a.length; j++) {
191
- if (b.charAt(i - 1) === a.charAt(j - 1)) {
192
- matrix[i][j] = matrix[i - 1][j - 1];
193
- }
194
- else {
195
- matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
196
- matrix[i][j - 1] + 1, // insertion
197
- matrix[i - 1][j] + 1 // deletion
198
- );
199
- }
200
- }
201
- }
202
- return matrix[b.length][a.length];
203
- }
204
- /**
205
- * Get offline handler
206
- *
207
- * @returns Offline handler instance
208
- */
209
- getOfflineHandler() {
210
- return this.offlineHandler;
211
- }
212
- }
213
- //# sourceMappingURL=manifest-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest-validator.js","sourceRoot":"","sources":["../../src/validators/manifest-validator.ts"],"names":[],"mappings":"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"}
@@ -1,113 +0,0 @@
1
- /**
2
- * Main Validator
3
- *
4
- * Orchestrates manifest and installation validation.
5
- * Provides a unified interface for validating SpecVerse projects.
6
- *
7
- * @module registry/validators/validator
8
- * @version 2.0.0
9
- */
10
- import { ManifestValidator } from './manifest-validator.js';
11
- import { InstallationValidator } from './installation-validator.js';
12
- import { OfflineHandler } from '../offline/offline-handler.js';
13
- import type { SpecVerseManifest } from './manifest-validator.js';
14
- import type { ValidationResult, ManifestValidationOptions, InstallationValidationOptions } from '../types/index.js';
15
- /**
16
- * Complete validation options
17
- */
18
- export interface ValidatorOptions {
19
- /** Manifest validation options */
20
- manifest?: ManifestValidationOptions;
21
- /** Installation validation options */
22
- installation?: InstallationValidationOptions;
23
- /** Skip manifest validation */
24
- skipManifest?: boolean;
25
- /** Skip installation validation */
26
- skipInstallation?: boolean;
27
- /** Offline mode - only use cache */
28
- offline?: boolean;
29
- }
30
- /**
31
- * Validation report
32
- */
33
- export interface ValidationReport {
34
- /** Overall validation result */
35
- result: ValidationResult;
36
- /** Manifest validation result (if run) */
37
- manifestResult?: ValidationResult;
38
- /** Installation validation result (if run) */
39
- installationResult?: ValidationResult;
40
- /** Summary statistics */
41
- summary: {
42
- totalIssues: number;
43
- errorCount: number;
44
- warningCount: number;
45
- infoCount: number;
46
- validationsPassed: string[];
47
- validationsFailed: string[];
48
- };
49
- }
50
- /**
51
- * Main Validator
52
- *
53
- * Orchestrates all validation stages.
54
- */
55
- export declare class Validator {
56
- private manifestValidator;
57
- private installationValidator;
58
- private offlineHandler;
59
- constructor(offlineHandler?: OfflineHandler);
60
- /**
61
- * Validate a manifest file
62
- *
63
- * Runs both manifest and installation validation unless skipped.
64
- *
65
- * @param manifest - Manifest to validate
66
- * @param options - Validation options
67
- * @returns Validation report
68
- */
69
- validate(manifest: SpecVerseManifest, options?: ValidatorOptions): Promise<ValidationReport>;
70
- /**
71
- * Validate manifest only (skip installation check)
72
- *
73
- * @param manifest - Manifest to validate
74
- * @param options - Manifest validation options
75
- * @returns Validation report
76
- */
77
- validateManifestOnly(manifest: SpecVerseManifest, options?: ManifestValidationOptions): Promise<ValidationReport>;
78
- /**
79
- * Validate installation only (skip manifest check)
80
- *
81
- * @param manifest - Manifest to validate
82
- * @param options - Installation validation options
83
- * @returns Validation report
84
- */
85
- validateInstallationOnly(manifest: SpecVerseManifest, options?: InstallationValidationOptions): Promise<ValidationReport>;
86
- /**
87
- * Get offline handler
88
- *
89
- * @returns Offline handler instance
90
- */
91
- getOfflineHandler(): OfflineHandler;
92
- /**
93
- * Get manifest validator
94
- *
95
- * @returns Manifest validator instance
96
- */
97
- getManifestValidator(): ManifestValidator;
98
- /**
99
- * Get installation validator
100
- *
101
- * @returns Installation validator instance
102
- */
103
- getInstallationValidator(): InstallationValidator;
104
- /**
105
- * Enable offline mode
106
- */
107
- enableOfflineMode(): void;
108
- /**
109
- * Disable offline mode
110
- */
111
- disableOfflineMode(): void;
112
- }
113
- //# sourceMappingURL=validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/validators/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EACV,gBAAgB,EAEhB,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAErC,sCAAsC;IACtC,YAAY,CAAC,EAAE,6BAA6B,CAAC;IAE7C,+BAA+B;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,MAAM,EAAE,gBAAgB,CAAC;IAEzB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAElC,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,gBAAgB,CAAC;IAEtC,yBAAyB;IACzB,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;CACH;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,cAAc,CAAiB;gBAE3B,cAAc,CAAC,EAAE,cAAc;IAM3C;;;;;;;;OAQG;IACG,QAAQ,CACZ,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;IAkF5B;;;;;;OAMG;IACG,oBAAoB,CACxB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,gBAAgB,CAAC;IAO5B;;;;;;OAMG;IACG,wBAAwB,CAC5B,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,gBAAgB,CAAC;IAO5B;;;;OAIG;IACH,iBAAiB,IAAI,cAAc;IAInC;;;;OAIG;IACH,oBAAoB,IAAI,iBAAiB;IAIzC;;;;OAIG;IACH,wBAAwB,IAAI,qBAAqB;IAIjD;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,kBAAkB,IAAI,IAAI;CAG3B"}