dino-spec 17.4.2 → 17.5.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.
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +10 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/core/agents/__tests__/confidence-gate.test.d.ts +5 -0
- package/dist/core/agents/__tests__/confidence-gate.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/confidence-gate.test.js +329 -0
- package/dist/core/agents/__tests__/confidence-gate.test.js.map +1 -0
- package/dist/core/agents/__tests__/gap-detector.test.d.ts +5 -0
- package/dist/core/agents/__tests__/gap-detector.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/gap-detector.test.js +609 -0
- package/dist/core/agents/__tests__/gap-detector.test.js.map +1 -0
- package/dist/core/agents/__tests__/learning-loop.test.d.ts +5 -0
- package/dist/core/agents/__tests__/learning-loop.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/learning-loop.test.js +663 -0
- package/dist/core/agents/__tests__/learning-loop.test.js.map +1 -0
- package/dist/core/agents/__tests__/parallel-executor.test.d.ts +5 -0
- package/dist/core/agents/__tests__/parallel-executor.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/parallel-executor.test.js +610 -0
- package/dist/core/agents/__tests__/parallel-executor.test.js.map +1 -0
- package/dist/core/agents/__tests__/research-validator.test.js +5 -5
- package/dist/core/agents/__tests__/research-validator.test.js.map +1 -1
- package/dist/core/agents/__tests__/skill-creator.test.d.ts +5 -0
- package/dist/core/agents/__tests__/skill-creator.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/skill-creator.test.js +443 -0
- package/dist/core/agents/__tests__/skill-creator.test.js.map +1 -0
- package/dist/core/agents/__tests__/state-persistence.test.d.ts +2 -0
- package/dist/core/agents/__tests__/state-persistence.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/state-persistence.test.js +270 -0
- package/dist/core/agents/__tests__/state-persistence.test.js.map +1 -0
- package/dist/core/agents/__tests__/validation-cache.test.d.ts +2 -0
- package/dist/core/agents/__tests__/validation-cache.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/validation-cache.test.js +181 -0
- package/dist/core/agents/__tests__/validation-cache.test.js.map +1 -0
- package/dist/core/agents/blackboard.d.ts +22 -3
- package/dist/core/agents/blackboard.d.ts.map +1 -1
- package/dist/core/agents/blackboard.js +52 -2
- package/dist/core/agents/blackboard.js.map +1 -1
- package/dist/core/agents/circuit-breaker.d.ts +79 -1
- package/dist/core/agents/circuit-breaker.d.ts.map +1 -1
- package/dist/core/agents/circuit-breaker.js +175 -1
- package/dist/core/agents/circuit-breaker.js.map +1 -1
- package/dist/core/agents/clarification-phase.d.ts +128 -0
- package/dist/core/agents/clarification-phase.d.ts.map +1 -0
- package/dist/core/agents/clarification-phase.js +375 -0
- package/dist/core/agents/clarification-phase.js.map +1 -0
- package/dist/core/agents/confidence-gate.d.ts +116 -3
- package/dist/core/agents/confidence-gate.d.ts.map +1 -1
- package/dist/core/agents/confidence-gate.js +363 -3
- package/dist/core/agents/confidence-gate.js.map +1 -1
- package/dist/core/agents/correction-tracker.d.ts +197 -0
- package/dist/core/agents/correction-tracker.d.ts.map +1 -0
- package/dist/core/agents/correction-tracker.js +366 -0
- package/dist/core/agents/correction-tracker.js.map +1 -0
- package/dist/core/agents/dependency-graph.d.ts +193 -0
- package/dist/core/agents/dependency-graph.d.ts.map +1 -0
- package/dist/core/agents/dependency-graph.js +462 -0
- package/dist/core/agents/dependency-graph.js.map +1 -0
- package/dist/core/agents/gap-detector.d.ts +277 -0
- package/dist/core/agents/gap-detector.d.ts.map +1 -0
- package/dist/core/agents/gap-detector.js +540 -0
- package/dist/core/agents/gap-detector.js.map +1 -0
- package/dist/core/agents/index.d.ts +14 -1
- package/dist/core/agents/index.d.ts.map +1 -1
- package/dist/core/agents/index.js +26 -1
- package/dist/core/agents/index.js.map +1 -1
- package/dist/core/agents/message-protocol.d.ts +13 -2
- package/dist/core/agents/message-protocol.d.ts.map +1 -1
- package/dist/core/agents/message-protocol.js +20 -1
- package/dist/core/agents/message-protocol.js.map +1 -1
- package/dist/core/agents/parallel-executor.d.ts +182 -0
- package/dist/core/agents/parallel-executor.d.ts.map +1 -0
- package/dist/core/agents/parallel-executor.js +474 -0
- package/dist/core/agents/parallel-executor.js.map +1 -0
- package/dist/core/agents/pattern-detector.d.ts +157 -0
- package/dist/core/agents/pattern-detector.d.ts.map +1 -0
- package/dist/core/agents/pattern-detector.js +370 -0
- package/dist/core/agents/pattern-detector.js.map +1 -0
- package/dist/core/agents/registry-client.d.ts +6 -0
- package/dist/core/agents/registry-client.d.ts.map +1 -1
- package/dist/core/agents/registry-client.js +3 -0
- package/dist/core/agents/registry-client.js.map +1 -1
- package/dist/core/agents/research-phase.d.ts +114 -0
- package/dist/core/agents/research-phase.d.ts.map +1 -0
- package/dist/core/agents/research-phase.js +355 -0
- package/dist/core/agents/research-phase.js.map +1 -0
- package/dist/core/agents/research-validator.d.ts +13 -2
- package/dist/core/agents/research-validator.d.ts.map +1 -1
- package/dist/core/agents/research-validator.js +63 -31
- package/dist/core/agents/research-validator.js.map +1 -1
- package/dist/core/agents/skill-creator.d.ts +174 -0
- package/dist/core/agents/skill-creator.d.ts.map +1 -0
- package/dist/core/agents/skill-creator.js +570 -0
- package/dist/core/agents/skill-creator.js.map +1 -0
- package/dist/core/agents/state-persistence.d.ts +184 -0
- package/dist/core/agents/state-persistence.d.ts.map +1 -0
- package/dist/core/agents/state-persistence.js +394 -0
- package/dist/core/agents/state-persistence.js.map +1 -0
- package/dist/core/agents/validation-cache.d.ts +122 -0
- package/dist/core/agents/validation-cache.d.ts.map +1 -0
- package/dist/core/agents/validation-cache.js +280 -0
- package/dist/core/agents/validation-cache.js.map +1 -0
- package/dist/core/agents/validators/__tests__/validators.test.d.ts +5 -0
- package/dist/core/agents/validators/__tests__/validators.test.d.ts.map +1 -0
- package/dist/core/agents/validators/__tests__/validators.test.js +321 -0
- package/dist/core/agents/validators/__tests__/validators.test.js.map +1 -0
- package/dist/core/agents/validators/base-validator.d.ts +191 -0
- package/dist/core/agents/validators/base-validator.d.ts.map +1 -0
- package/dist/core/agents/validators/base-validator.js +192 -0
- package/dist/core/agents/validators/base-validator.js.map +1 -0
- package/dist/core/agents/validators/index.d.ts +7 -0
- package/dist/core/agents/validators/index.d.ts.map +1 -0
- package/dist/core/agents/validators/index.js +7 -0
- package/dist/core/agents/validators/index.js.map +1 -0
- package/dist/core/agents/validators/npm-validator.d.ts +50 -0
- package/dist/core/agents/validators/npm-validator.d.ts.map +1 -0
- package/dist/core/agents/validators/npm-validator.js +211 -0
- package/dist/core/agents/validators/npm-validator.js.map +1 -0
- package/dist/core/agents/validators/pip-validator.d.ts +49 -0
- package/dist/core/agents/validators/pip-validator.d.ts.map +1 -0
- package/dist/core/agents/validators/pip-validator.js +191 -0
- package/dist/core/agents/validators/pip-validator.js.map +1 -0
- package/dist/core/agents/validators/validator-registry.d.ts +122 -0
- package/dist/core/agents/validators/validator-registry.d.ts.map +1 -0
- package/dist/core/agents/validators/validator-registry.js +321 -0
- package/dist/core/agents/validators/validator-registry.js.map +1 -0
- package/dist/core/context-repl/types.d.ts +4 -4
- package/dist/core/memory/index.d.ts +1 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +2 -0
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/memory/learning-store.d.ts +222 -0
- package/dist/core/memory/learning-store.d.ts.map +1 -0
- package/dist/core/memory/learning-store.js +477 -0
- package/dist/core/memory/learning-store.js.map +1 -0
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts +5 -0
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts.map +1 -0
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js +401 -0
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js.map +1 -0
- package/dist/core/spec-analyzer/ambiguity-detector.d.ts +99 -0
- package/dist/core/spec-analyzer/ambiguity-detector.d.ts.map +1 -0
- package/dist/core/spec-analyzer/ambiguity-detector.js +250 -0
- package/dist/core/spec-analyzer/ambiguity-detector.js.map +1 -0
- package/dist/core/spec-analyzer/clarification-generator.d.ts +76 -0
- package/dist/core/spec-analyzer/clarification-generator.d.ts.map +1 -0
- package/dist/core/spec-analyzer/clarification-generator.js +257 -0
- package/dist/core/spec-analyzer/clarification-generator.js.map +1 -0
- package/dist/core/spec-analyzer/index.d.ts +10 -1
- package/dist/core/spec-analyzer/index.d.ts.map +1 -1
- package/dist/core/spec-analyzer/index.js +13 -1
- package/dist/core/spec-analyzer/index.js.map +1 -1
- package/dist/core/spec-analyzer/patterns.d.ts +73 -0
- package/dist/core/spec-analyzer/patterns.d.ts.map +1 -0
- package/dist/core/spec-analyzer/patterns.js +412 -0
- package/dist/core/spec-analyzer/patterns.js.map +1 -0
- package/dist/hooks/__tests__/dynamic-generator.test.d.ts +5 -0
- package/dist/hooks/__tests__/dynamic-generator.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/dynamic-generator.test.js +425 -0
- package/dist/hooks/__tests__/dynamic-generator.test.js.map +1 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts +5 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.js +315 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.js.map +1 -0
- package/dist/hooks/dynamic-generator.d.ts +158 -0
- package/dist/hooks/dynamic-generator.d.ts.map +1 -0
- package/dist/hooks/dynamic-generator.js +448 -0
- package/dist/hooks/dynamic-generator.js.map +1 -0
- package/dist/hooks/hook-agent-bridge.d.ts +252 -0
- package/dist/hooks/hook-agent-bridge.d.ts.map +1 -0
- package/dist/hooks/hook-agent-bridge.js +489 -0
- package/dist/hooks/hook-agent-bridge.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +5 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/mcp/tool-catalog.d.ts.map +1 -1
- package/dist/mcp/tool-catalog.js +47 -0
- package/dist/mcp/tool-catalog.js.map +1 -1
- package/dist/mcp/tool-tiers.d.ts.map +1 -1
- package/dist/mcp/tool-tiers.js +4 -0
- package/dist/mcp/tool-tiers.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +2 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +15 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/learning-store.d.ts +30 -0
- package/dist/mcp/tools/learning-store.d.ts.map +1 -0
- package/dist/mcp/tools/learning-store.js +286 -0
- package/dist/mcp/tools/learning-store.js.map +1 -0
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +2 -47
- package/dist/rules/index.js.map +1 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +159 -38
- package/dist/skills/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Validator - v17.5.0
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class for package validators.
|
|
5
|
+
* Provides common interface and utilities for ecosystem-specific validators.
|
|
6
|
+
*
|
|
7
|
+
* @module base-validator
|
|
8
|
+
*/
|
|
9
|
+
import { RateLimiter, ValidationCache } from '../validation-cache.js';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Constants
|
|
12
|
+
// =============================================================================
|
|
13
|
+
export const DEFAULT_VALIDATOR_CONFIG = {
|
|
14
|
+
enableCache: true,
|
|
15
|
+
cacheTtlMs: 60 * 60 * 1000, // 1 hour
|
|
16
|
+
enableRateLimit: true,
|
|
17
|
+
timeoutMs: 10000, // 10 seconds
|
|
18
|
+
blockOnCritical: true,
|
|
19
|
+
blockOnHigh: false,
|
|
20
|
+
};
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// Base Validator Class
|
|
23
|
+
// =============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Abstract base class for package validators
|
|
26
|
+
*/
|
|
27
|
+
export class BaseValidator {
|
|
28
|
+
config;
|
|
29
|
+
cache;
|
|
30
|
+
rateLimiter;
|
|
31
|
+
ecosystem;
|
|
32
|
+
constructor(ecosystem, config = {}) {
|
|
33
|
+
this.ecosystem = ecosystem;
|
|
34
|
+
this.config = { ...DEFAULT_VALIDATOR_CONFIG, ...config };
|
|
35
|
+
this.cache = new ValidationCache({
|
|
36
|
+
maxEntries: 1000,
|
|
37
|
+
ttlMs: this.config.cacheTtlMs,
|
|
38
|
+
});
|
|
39
|
+
this.rateLimiter = new RateLimiter();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the ecosystem this validator handles
|
|
43
|
+
*/
|
|
44
|
+
getEcosystem() {
|
|
45
|
+
return this.ecosystem;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if this validator can handle a package
|
|
49
|
+
*/
|
|
50
|
+
canHandle(pkg) {
|
|
51
|
+
return pkg.ecosystem === this.ecosystem;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Validate a package
|
|
55
|
+
*/
|
|
56
|
+
async validate(pkg) {
|
|
57
|
+
// Check cache first
|
|
58
|
+
const cacheKey = this.getCacheKey(pkg);
|
|
59
|
+
if (this.config.enableCache) {
|
|
60
|
+
const cached = this.cache.get(cacheKey);
|
|
61
|
+
if (cached) {
|
|
62
|
+
return { ...cached, cached: true };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Perform validation
|
|
66
|
+
const result = await this.performValidation(pkg);
|
|
67
|
+
// Determine if should block
|
|
68
|
+
result.blocked = this.shouldBlock(result.issues);
|
|
69
|
+
// Cache result
|
|
70
|
+
if (this.config.enableCache) {
|
|
71
|
+
this.cache.set(cacheKey, result, this.config.cacheTtlMs);
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Validate multiple packages
|
|
77
|
+
*/
|
|
78
|
+
async validateBatch(packages) {
|
|
79
|
+
const results = [];
|
|
80
|
+
for (const pkg of packages) {
|
|
81
|
+
if (this.canHandle(pkg)) {
|
|
82
|
+
results.push(await this.validate(pkg));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return results;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Check if issues should block installation
|
|
89
|
+
*/
|
|
90
|
+
shouldBlock(issues) {
|
|
91
|
+
if (this.config.blockOnCritical) {
|
|
92
|
+
if (issues.some((i) => i.severity === 'critical')) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (this.config.blockOnHigh) {
|
|
97
|
+
if (issues.some((i) => i.severity === 'high')) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Generate cache key for a package
|
|
105
|
+
*/
|
|
106
|
+
getCacheKey(pkg) {
|
|
107
|
+
return `${this.ecosystem}:${pkg.name}:${pkg.version || 'latest'}`;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Clear the validation cache
|
|
111
|
+
*/
|
|
112
|
+
clearCache() {
|
|
113
|
+
this.cache.clear();
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get cache statistics
|
|
117
|
+
*/
|
|
118
|
+
getCacheStats() {
|
|
119
|
+
return this.cache.getStats();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// =============================================================================
|
|
123
|
+
// Helper Functions
|
|
124
|
+
// =============================================================================
|
|
125
|
+
/**
|
|
126
|
+
* Create a validation issue
|
|
127
|
+
*/
|
|
128
|
+
export function createIssue(type, severity, message, options) {
|
|
129
|
+
return {
|
|
130
|
+
type,
|
|
131
|
+
severity,
|
|
132
|
+
message,
|
|
133
|
+
...options,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Create a successful validation result
|
|
138
|
+
*/
|
|
139
|
+
export function createSuccessResult(pkg) {
|
|
140
|
+
return {
|
|
141
|
+
package: pkg,
|
|
142
|
+
valid: true,
|
|
143
|
+
blocked: false,
|
|
144
|
+
issues: [],
|
|
145
|
+
timestamp: new Date(),
|
|
146
|
+
cached: false,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Format validation result for display
|
|
151
|
+
*/
|
|
152
|
+
export function formatValidationResult(result) {
|
|
153
|
+
const lines = [];
|
|
154
|
+
const status = result.blocked ? '🚫 BLOCKED' : result.valid ? '✅ VALID' : '⚠️ ISSUES';
|
|
155
|
+
lines.push(`## ${result.package.name}@${result.package.version || 'latest'}`);
|
|
156
|
+
lines.push('');
|
|
157
|
+
lines.push(`**Status:** ${status}`);
|
|
158
|
+
lines.push(`**Ecosystem:** ${result.package.ecosystem}`);
|
|
159
|
+
lines.push('');
|
|
160
|
+
if (result.metadata) {
|
|
161
|
+
lines.push('### Metadata');
|
|
162
|
+
if (result.metadata.latestVersion) {
|
|
163
|
+
lines.push(`- Latest: ${result.metadata.latestVersion}`);
|
|
164
|
+
}
|
|
165
|
+
if (result.metadata.license) {
|
|
166
|
+
lines.push(`- License: ${result.metadata.license}`);
|
|
167
|
+
}
|
|
168
|
+
if (result.metadata.downloads !== undefined) {
|
|
169
|
+
lines.push(`- Downloads: ${result.metadata.downloads.toLocaleString()}/week`);
|
|
170
|
+
}
|
|
171
|
+
lines.push('');
|
|
172
|
+
}
|
|
173
|
+
if (result.issues.length > 0) {
|
|
174
|
+
lines.push('### Issues');
|
|
175
|
+
for (const issue of result.issues) {
|
|
176
|
+
const emoji = issue.severity === 'critical'
|
|
177
|
+
? '🔴'
|
|
178
|
+
: issue.severity === 'high'
|
|
179
|
+
? '🟠'
|
|
180
|
+
: issue.severity === 'moderate'
|
|
181
|
+
? '🟡'
|
|
182
|
+
: '🟢';
|
|
183
|
+
lines.push(`${emoji} **[${issue.severity}]** ${issue.message}`);
|
|
184
|
+
if (issue.suggestion) {
|
|
185
|
+
lines.push(` _Suggestion:_ ${issue.suggestion}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
lines.push('');
|
|
189
|
+
}
|
|
190
|
+
return lines.join('\n');
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=base-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-validator.js","sourceRoot":"","sources":["../../../../src/core/agents/validators/base-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AA8GrE,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;IACrC,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,KAAK,EAAE,aAAa;IAC/B,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,KAAK;CACnB,CAAA;AAED,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,OAAgB,aAAa;IACvB,MAAM,CAAiB;IACvB,KAAK,CAAmC;IACxC,WAAW,CAAa;IACxB,SAAS,CAAkB;IAErC,YAAY,SAA2B,EAAE,SAAmC,EAAE;QAC5E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,wBAAwB,EAAE,GAAG,MAAM,EAAE,CAAA;QACxD,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAmB;YACjD,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAc;QACtB,OAAO,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAA;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAc;QAC3B,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvC,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YACpC,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAEhD,4BAA4B;QAC5B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAEhD,eAAe;QACf,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC1D,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,QAAqB;QACvC,MAAM,OAAO,GAAuB,EAAE,CAAA;QAEtC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,MAAyB;QAC7C,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC;gBAC9C,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,GAAc;QAClC,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAA;IACnE,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;IAC9B,CAAC;CA8BF;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,IAA6B,EAC7B,QAA4B,EAC5B,OAAe,EACf,OAGC;IAED,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,GAAG,OAAO;KACX,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAc;IAChD,OAAO;QACL,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,MAAM,EAAE,KAAK;KACd,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAA;IACrF,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAA;IAC7E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,EAAE,CAAC,CAAA;IACnC,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAA;QAC1D,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;QACrD,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;QAC/E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,KAAK,GACT,KAAK,CAAC,QAAQ,KAAK,UAAU;gBAC3B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM;oBACzB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU;wBAC7B,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,IAAI,CAAA;YACd,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,QAAQ,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YAC/D,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAA;YACnD,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/validators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/agents/validators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NPM Validator - v17.5.0
|
|
3
|
+
*
|
|
4
|
+
* Validates npm packages for security, quality, and deprecation.
|
|
5
|
+
* Refactored from research-validator to use plugin architecture.
|
|
6
|
+
*
|
|
7
|
+
* @module npm-validator
|
|
8
|
+
*/
|
|
9
|
+
import { BaseValidator, type PackageId, type PackageMetadata, type ValidationIssue, type ValidationResult, type ValidatorConfig } from './base-validator.js';
|
|
10
|
+
/**
|
|
11
|
+
* NPM package validator
|
|
12
|
+
*/
|
|
13
|
+
export declare class NpmValidator extends BaseValidator {
|
|
14
|
+
constructor(config?: Partial<ValidatorConfig>);
|
|
15
|
+
/**
|
|
16
|
+
* Perform NPM package validation
|
|
17
|
+
*/
|
|
18
|
+
protected performValidation(pkg: PackageId): Promise<ValidationResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Fetch NPM package metadata
|
|
21
|
+
*/
|
|
22
|
+
fetchMetadata(pkg: PackageId): Promise<PackageMetadata | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* Convert registry metadata to common format
|
|
25
|
+
*/
|
|
26
|
+
private convertMetadata;
|
|
27
|
+
/**
|
|
28
|
+
* Check for security vulnerabilities
|
|
29
|
+
*/
|
|
30
|
+
checkSecurity(pkg: PackageId): Promise<ValidationIssue[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Check for deprecation
|
|
33
|
+
*/
|
|
34
|
+
checkDeprecation(pkg: PackageId): Promise<ValidationIssue[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Check quality indicators
|
|
37
|
+
*/
|
|
38
|
+
checkQuality(_pkg: PackageId, metadata?: PackageMetadata): Promise<ValidationIssue[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Check package size
|
|
41
|
+
*/
|
|
42
|
+
checkSize(pkg: PackageId): Promise<ValidationIssue[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Get the latest version of a package
|
|
45
|
+
*/
|
|
46
|
+
getLatestVersion(packageName: string): Promise<string | undefined>;
|
|
47
|
+
}
|
|
48
|
+
/** Default NPM validator instance */
|
|
49
|
+
export declare const npmValidator: NpmValidator;
|
|
50
|
+
//# sourceMappingURL=npm-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-validator.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/validators/npm-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EACL,aAAa,EAGb,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAA;AAM5B;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa;gBACjC,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAIjD;;OAEG;cACa,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyC5E;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAWzE;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA4B/D;;OAEG;IACG,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAwBlE;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAiD3F;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAiC3D;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAQzE;AAMD,qCAAqC;AACrC,eAAO,MAAM,YAAY,cAAqB,CAAA"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NPM Validator - v17.5.0
|
|
3
|
+
*
|
|
4
|
+
* Validates npm packages for security, quality, and deprecation.
|
|
5
|
+
* Refactored from research-validator to use plugin architecture.
|
|
6
|
+
*
|
|
7
|
+
* @module npm-validator
|
|
8
|
+
*/
|
|
9
|
+
import { fetchPackageMetadata, getPackageSize, } from '../registry-client.js';
|
|
10
|
+
import { scanPackage } from '../security-scanner.js';
|
|
11
|
+
import { BaseValidator, createIssue, createSuccessResult, } from './base-validator.js';
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// NPM Validator
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* NPM package validator
|
|
17
|
+
*/
|
|
18
|
+
export class NpmValidator extends BaseValidator {
|
|
19
|
+
constructor(config = {}) {
|
|
20
|
+
super('npm', config);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Perform NPM package validation
|
|
24
|
+
*/
|
|
25
|
+
async performValidation(pkg) {
|
|
26
|
+
const result = createSuccessResult(pkg);
|
|
27
|
+
const issues = [];
|
|
28
|
+
try {
|
|
29
|
+
// Fetch metadata
|
|
30
|
+
const metadata = await this.fetchMetadata(pkg);
|
|
31
|
+
result.metadata = metadata;
|
|
32
|
+
// Check security
|
|
33
|
+
const securityIssues = await this.checkSecurity(pkg);
|
|
34
|
+
issues.push(...securityIssues);
|
|
35
|
+
// Check deprecation
|
|
36
|
+
const deprecationIssues = await this.checkDeprecation(pkg);
|
|
37
|
+
issues.push(...deprecationIssues);
|
|
38
|
+
// Check quality
|
|
39
|
+
const qualityIssues = await this.checkQuality(pkg, metadata);
|
|
40
|
+
issues.push(...qualityIssues);
|
|
41
|
+
// Check size
|
|
42
|
+
const sizeIssues = await this.checkSize(pkg);
|
|
43
|
+
issues.push(...sizeIssues);
|
|
44
|
+
result.issues = issues;
|
|
45
|
+
result.valid = !issues.some((i) => i.severity === 'critical' || i.severity === 'high');
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
// If validation fails, add error issue
|
|
49
|
+
issues.push(createIssue('quality', 'moderate', `Validation error: ${String(error)}`, {
|
|
50
|
+
suggestion: 'Check package name and try again',
|
|
51
|
+
}));
|
|
52
|
+
result.issues = issues;
|
|
53
|
+
result.valid = true; // Don't block on validation errors
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Fetch NPM package metadata
|
|
59
|
+
*/
|
|
60
|
+
async fetchMetadata(pkg) {
|
|
61
|
+
try {
|
|
62
|
+
const registryMeta = await fetchPackageMetadata(pkg.name);
|
|
63
|
+
if (!registryMeta)
|
|
64
|
+
return undefined;
|
|
65
|
+
return this.convertMetadata(registryMeta, pkg.version);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Convert registry metadata to common format
|
|
73
|
+
*/
|
|
74
|
+
convertMetadata(meta, requestedVersion) {
|
|
75
|
+
return {
|
|
76
|
+
latestVersion: meta.version,
|
|
77
|
+
requestedVersion: requestedVersion,
|
|
78
|
+
deprecated: !!meta.deprecated,
|
|
79
|
+
deprecationMessage: meta.deprecated || undefined,
|
|
80
|
+
license: meta.license,
|
|
81
|
+
downloads: meta.weeklyDownloads,
|
|
82
|
+
lastPublish: meta.lastPublish ? new Date(meta.lastPublish) : undefined,
|
|
83
|
+
maintainerCount: meta.maintainers?.length ?? 0,
|
|
84
|
+
repository: meta.repository,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Check for security vulnerabilities
|
|
89
|
+
*/
|
|
90
|
+
async checkSecurity(pkg) {
|
|
91
|
+
const issues = [];
|
|
92
|
+
try {
|
|
93
|
+
const scan = await scanPackage(pkg.name, pkg.version);
|
|
94
|
+
for (const vuln of scan.vulnerabilities) {
|
|
95
|
+
issues.push(createIssue('security', vuln.severity, `${vuln.title}: ${vuln.overview}`, {
|
|
96
|
+
details: {
|
|
97
|
+
id: vuln.id,
|
|
98
|
+
url: vuln.url,
|
|
99
|
+
patchedVersions: vuln.patched_versions,
|
|
100
|
+
},
|
|
101
|
+
suggestion: vuln.patched_versions && vuln.patched_versions !== 'none'
|
|
102
|
+
? `Upgrade to ${vuln.patched_versions}`
|
|
103
|
+
: 'Consider using an alternative package',
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Security scan failed - don't block, just note it
|
|
109
|
+
}
|
|
110
|
+
return issues;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check for deprecation
|
|
114
|
+
*/
|
|
115
|
+
async checkDeprecation(pkg) {
|
|
116
|
+
const issues = [];
|
|
117
|
+
try {
|
|
118
|
+
const meta = await fetchPackageMetadata(pkg.name);
|
|
119
|
+
if (meta?.deprecated) {
|
|
120
|
+
issues.push(createIssue('deprecation', 'high', `Package "${pkg.name}" is deprecated: ${meta.deprecated}`, {
|
|
121
|
+
suggestion: 'Consider using an alternative package',
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// Ignore errors
|
|
127
|
+
}
|
|
128
|
+
return issues;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check quality indicators
|
|
132
|
+
*/
|
|
133
|
+
async checkQuality(_pkg, metadata) {
|
|
134
|
+
const issues = [];
|
|
135
|
+
if (!metadata)
|
|
136
|
+
return issues;
|
|
137
|
+
// Check downloads
|
|
138
|
+
if (metadata.downloads !== undefined && metadata.downloads < 100) {
|
|
139
|
+
issues.push(createIssue('quality', 'info', `Low weekly downloads: ${metadata.downloads}`, {
|
|
140
|
+
suggestion: 'This package has limited usage. Consider alternatives.',
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
// Check last publish
|
|
144
|
+
if (metadata.lastPublish) {
|
|
145
|
+
const twoYearsAgo = new Date();
|
|
146
|
+
twoYearsAgo.setFullYear(twoYearsAgo.getFullYear() - 2);
|
|
147
|
+
if (metadata.lastPublish < twoYearsAgo) {
|
|
148
|
+
issues.push(createIssue('maintenance', 'moderate', 'Package not updated in over 2 years', {
|
|
149
|
+
suggestion: 'Check if package is still maintained',
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Check maintainers
|
|
154
|
+
if (metadata.maintainerCount === 0) {
|
|
155
|
+
issues.push(createIssue('maintenance', 'high', 'No maintainers listed', {
|
|
156
|
+
suggestion: 'This package may be abandoned',
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
// Check license
|
|
160
|
+
if (!metadata.license) {
|
|
161
|
+
issues.push(createIssue('license', 'moderate', 'No license specified', {
|
|
162
|
+
suggestion: 'Verify license compatibility before using',
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
return issues;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Check package size
|
|
169
|
+
*/
|
|
170
|
+
async checkSize(pkg) {
|
|
171
|
+
const issues = [];
|
|
172
|
+
try {
|
|
173
|
+
const version = pkg.version || (await this.getLatestVersion(pkg.name)) || 'latest';
|
|
174
|
+
const sizeInfo = await getPackageSize(pkg.name, version);
|
|
175
|
+
if (sizeInfo) {
|
|
176
|
+
// Warn if gzipped size > 100KB
|
|
177
|
+
if (sizeInfo.gzip > 100 * 1024) {
|
|
178
|
+
issues.push(createIssue('size', 'moderate', `Large package size: ${Math.round(sizeInfo.gzip / 1024)}KB gzipped`, {
|
|
179
|
+
details: {
|
|
180
|
+
gzip: sizeInfo.gzip,
|
|
181
|
+
size: sizeInfo.size,
|
|
182
|
+
},
|
|
183
|
+
suggestion: 'Consider if this size is acceptable for your use case',
|
|
184
|
+
}));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
// Size check failed - non-critical
|
|
190
|
+
}
|
|
191
|
+
return issues;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get the latest version of a package
|
|
195
|
+
*/
|
|
196
|
+
async getLatestVersion(packageName) {
|
|
197
|
+
try {
|
|
198
|
+
const meta = await fetchPackageMetadata(packageName);
|
|
199
|
+
return meta?.version;
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
return undefined;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// =============================================================================
|
|
207
|
+
// Singleton Instance
|
|
208
|
+
// =============================================================================
|
|
209
|
+
/** Default NPM validator instance */
|
|
210
|
+
export const npmValidator = new NpmValidator();
|
|
211
|
+
//# sourceMappingURL=npm-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-validator.js","sourceRoot":"","sources":["../../../../src/core/agents/validators/npm-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,oBAAoB,EACpB,cAAc,GAEf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EACL,aAAa,EACb,WAAW,EACX,mBAAmB,GAMpB,MAAM,qBAAqB,CAAA;AAE5B,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,aAAa;IAC7C,YAAY,SAAmC,EAAE;QAC/C,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACtB,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,iBAAiB,CAAC,GAAc;QAC9C,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;QACvC,MAAM,MAAM,GAAsB,EAAE,CAAA;QAEpC,IAAI,CAAC;YACH,iBAAiB;YACjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YAC9C,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;YAE1B,iBAAiB;YACjB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YACpD,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAA;YAE9B,oBAAoB;YACpB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAA;YAEjC,gBAAgB;YAChB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAA;YAE7B,aAAa;YACb,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;YAE1B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;YACtB,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAA;QACxF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uCAAuC;YACvC,MAAM,CAAC,IAAI,CACT,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,qBAAqB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;gBACvE,UAAU,EAAE,kCAAkC;aAC/C,CAAC,CACH,CAAA;YACD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;YACtB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA,CAAC,mCAAmC;QACzD,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,GAAc;QAChC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACzD,IAAI,CAAC,YAAY;gBAAE,OAAO,SAAS,CAAA;YAEnC,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,IAAsB,EAAE,gBAAyB;QACvE,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,OAAO;YAC3B,gBAAgB,EAAE,gBAAgB;YAClC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU;YAC7B,kBAAkB,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;YAChD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,eAAe;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;YACtE,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;YAC9C,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,GAAc;QAChC,MAAM,MAAM,GAAsB,EAAE,CAAA;QAEpC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;YAErD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,CACT,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE;oBACxE,OAAO,EAAE;wBACP,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,eAAe,EAAE,IAAI,CAAC,gBAAgB;qBACvC;oBACD,UAAU,EACR,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM;wBACvD,CAAC,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE;wBACvC,CAAC,CAAC,uCAAuC;iBAC9C,CAAC,CACH,CAAA;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,GAAc;QACnC,MAAM,MAAM,GAAsB,EAAE,CAAA;QAEpC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACjD,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CACT,WAAW,CACT,aAAa,EACb,MAAM,EACN,YAAY,GAAG,CAAC,IAAI,oBAAoB,IAAI,CAAC,UAAU,EAAE,EACzD;oBACE,UAAU,EAAE,uCAAuC;iBACpD,CACF,CACF,CAAA;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAe,EAAE,QAA0B;QAC5D,MAAM,MAAM,GAAsB,EAAE,CAAA;QAEpC,IAAI,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAA;QAE5B,kBAAkB;QAClB,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;YACjE,MAAM,CAAC,IAAI,CACT,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,yBAAyB,QAAQ,CAAC,SAAS,EAAE,EAAE;gBAC5E,UAAU,EAAE,wDAAwD;aACrE,CAAC,CACH,CAAA;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;YAC9B,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAA;YAEtD,IAAI,QAAQ,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CACT,WAAW,CAAC,aAAa,EAAE,UAAU,EAAE,qCAAqC,EAAE;oBAC5E,UAAU,EAAE,sCAAsC;iBACnD,CAAC,CACH,CAAA;YACH,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,QAAQ,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CACT,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,uBAAuB,EAAE;gBAC1D,UAAU,EAAE,+BAA+B;aAC5C,CAAC,CACH,CAAA;QACH,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CACT,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,sBAAsB,EAAE;gBACzD,UAAU,EAAE,2CAA2C;aACxD,CAAC,CACH,CAAA;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAc;QAC5B,MAAM,MAAM,GAAsB,EAAE,CAAA;QAEpC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAA;YAClF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAExD,IAAI,QAAQ,EAAE,CAAC;gBACb,+BAA+B;gBAC/B,IAAI,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CACT,WAAW,CACT,MAAM,EACN,UAAU,EACV,uBAAuB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EACnE;wBACE,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;yBACpB;wBACD,UAAU,EAAE,uDAAuD;qBACpE,CACF,CACF,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAA;YACpD,OAAO,IAAI,EAAE,OAAO,CAAA;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;CACF;AAED,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,qCAAqC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PIP Validator - v17.5.0
|
|
3
|
+
*
|
|
4
|
+
* Validates Python packages from PyPI for security, quality, and deprecation.
|
|
5
|
+
*
|
|
6
|
+
* @module pip-validator
|
|
7
|
+
*/
|
|
8
|
+
import { BaseValidator, type PackageId, type PackageMetadata, type ValidationIssue, type ValidationResult, type ValidatorConfig } from './base-validator.js';
|
|
9
|
+
/**
|
|
10
|
+
* Python/PyPI package validator
|
|
11
|
+
*/
|
|
12
|
+
export declare class PipValidator extends BaseValidator {
|
|
13
|
+
private readonly pypiBaseUrl;
|
|
14
|
+
constructor(config?: Partial<ValidatorConfig>);
|
|
15
|
+
/**
|
|
16
|
+
* Perform PyPI package validation
|
|
17
|
+
*/
|
|
18
|
+
protected performValidation(pkg: PackageId): Promise<ValidationResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Fetch PyPI package metadata
|
|
21
|
+
*/
|
|
22
|
+
fetchMetadata(pkg: PackageId): Promise<PackageMetadata | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* Convert PyPI metadata to common format
|
|
25
|
+
*/
|
|
26
|
+
private convertMetadata;
|
|
27
|
+
/**
|
|
28
|
+
* Check for security vulnerabilities
|
|
29
|
+
*
|
|
30
|
+
* Note: PyPI doesn't have a built-in vulnerability database like npm.
|
|
31
|
+
* For production use, integrate with safety-db or pip-audit.
|
|
32
|
+
*/
|
|
33
|
+
checkSecurity(_pkg: PackageId): Promise<ValidationIssue[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Check for deprecation
|
|
36
|
+
*/
|
|
37
|
+
checkDeprecation(pkg: PackageId): Promise<ValidationIssue[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Check quality indicators
|
|
40
|
+
*/
|
|
41
|
+
private checkQuality;
|
|
42
|
+
/**
|
|
43
|
+
* Get the latest version of a package
|
|
44
|
+
*/
|
|
45
|
+
getLatestVersion(packageName: string): Promise<string | undefined>;
|
|
46
|
+
}
|
|
47
|
+
/** Default PIP validator instance */
|
|
48
|
+
export declare const pipValidator: PipValidator;
|
|
49
|
+
//# sourceMappingURL=pip-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pip-validator.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/validators/pip-validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,aAAa,EAGb,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAA;AA2C5B;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;gBAE1C,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAIjD;;OAEG;cACa,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA+C5E;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAsBzE;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;;;;OAKG;IACG,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAMhE;;OAEG;IACG,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAoBlE;;OAEG;YACW,YAAY;IA2C1B;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAgBzE;AAMD,qCAAqC;AACrC,eAAO,MAAM,YAAY,cAAqB,CAAA"}
|