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,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for plugin-based validators (v17.5.0)
|
|
3
|
+
*/
|
|
4
|
+
import { beforeEach, describe, expect, it } from 'vitest';
|
|
5
|
+
import { BaseValidator, createIssue, formatValidationResult, } from '../base-validator.js';
|
|
6
|
+
import { NpmValidator } from '../npm-validator.js';
|
|
7
|
+
import { PipValidator } from '../pip-validator.js';
|
|
8
|
+
import { formatBatchResult, ValidatorRegistry } from '../validator-registry.js';
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Mock Validator for Testing
|
|
11
|
+
// =============================================================================
|
|
12
|
+
class MockValidator extends BaseValidator {
|
|
13
|
+
mockResults = new Map();
|
|
14
|
+
constructor() {
|
|
15
|
+
super('npm');
|
|
16
|
+
}
|
|
17
|
+
setMockResult(name, result) {
|
|
18
|
+
const pkg = { name, ecosystem: 'npm' };
|
|
19
|
+
this.mockResults.set(name, {
|
|
20
|
+
package: pkg,
|
|
21
|
+
valid: true,
|
|
22
|
+
blocked: false,
|
|
23
|
+
issues: [],
|
|
24
|
+
timestamp: new Date(),
|
|
25
|
+
cached: false,
|
|
26
|
+
...result,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async performValidation(pkg) {
|
|
30
|
+
const mock = this.mockResults.get(pkg.name);
|
|
31
|
+
if (mock) {
|
|
32
|
+
return mock;
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
package: pkg,
|
|
36
|
+
valid: true,
|
|
37
|
+
blocked: false,
|
|
38
|
+
issues: [],
|
|
39
|
+
timestamp: new Date(),
|
|
40
|
+
cached: false,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async fetchMetadata(_pkg) {
|
|
44
|
+
return {
|
|
45
|
+
latestVersion: '1.0.0',
|
|
46
|
+
license: 'MIT',
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
async checkSecurity(_pkg) {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
async checkDeprecation(_pkg) {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
async getLatestVersion(_packageName) {
|
|
56
|
+
return '1.0.0';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// =============================================================================
|
|
60
|
+
// Tests
|
|
61
|
+
// =============================================================================
|
|
62
|
+
describe('BaseValidator', () => {
|
|
63
|
+
it('should provide ecosystem', () => {
|
|
64
|
+
const validator = new MockValidator();
|
|
65
|
+
expect(validator.getEcosystem()).toBe('npm');
|
|
66
|
+
});
|
|
67
|
+
it('should check if it can handle a package', () => {
|
|
68
|
+
const validator = new MockValidator();
|
|
69
|
+
expect(validator.canHandle({ name: 'test', ecosystem: 'npm' })).toBe(true);
|
|
70
|
+
expect(validator.canHandle({ name: 'test', ecosystem: 'pip' })).toBe(false);
|
|
71
|
+
});
|
|
72
|
+
it('should validate packages', async () => {
|
|
73
|
+
const validator = new MockValidator();
|
|
74
|
+
const result = await validator.validate({ name: 'test-pkg', ecosystem: 'npm' });
|
|
75
|
+
expect(result.package.name).toBe('test-pkg');
|
|
76
|
+
expect(result.valid).toBe(true);
|
|
77
|
+
});
|
|
78
|
+
it('should cache results', async () => {
|
|
79
|
+
const validator = new MockValidator();
|
|
80
|
+
const pkg = { name: 'cached-pkg', ecosystem: 'npm' };
|
|
81
|
+
const result1 = await validator.validate(pkg);
|
|
82
|
+
expect(result1.cached).toBe(false);
|
|
83
|
+
const result2 = await validator.validate(pkg);
|
|
84
|
+
expect(result2.cached).toBe(true);
|
|
85
|
+
});
|
|
86
|
+
it('should clear cache', async () => {
|
|
87
|
+
const validator = new MockValidator();
|
|
88
|
+
const pkg = { name: 'clear-cache-pkg', ecosystem: 'npm' };
|
|
89
|
+
await validator.validate(pkg);
|
|
90
|
+
validator.clearCache();
|
|
91
|
+
const result = await validator.validate(pkg);
|
|
92
|
+
expect(result.cached).toBe(false);
|
|
93
|
+
});
|
|
94
|
+
it('should validate batch', async () => {
|
|
95
|
+
const validator = new MockValidator();
|
|
96
|
+
const packages = [
|
|
97
|
+
{ name: 'pkg1', ecosystem: 'npm' },
|
|
98
|
+
{ name: 'pkg2', ecosystem: 'npm' },
|
|
99
|
+
];
|
|
100
|
+
const results = await validator.validateBatch(packages);
|
|
101
|
+
expect(results).toHaveLength(2);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe('createIssue', () => {
|
|
105
|
+
it('should create validation issue', () => {
|
|
106
|
+
const issue = createIssue('security', 'high', 'Test vulnerability', {
|
|
107
|
+
suggestion: 'Upgrade package',
|
|
108
|
+
});
|
|
109
|
+
expect(issue.type).toBe('security');
|
|
110
|
+
expect(issue.severity).toBe('high');
|
|
111
|
+
expect(issue.message).toBe('Test vulnerability');
|
|
112
|
+
expect(issue.suggestion).toBe('Upgrade package');
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe('formatValidationResult', () => {
|
|
116
|
+
it('should format result as markdown', () => {
|
|
117
|
+
const result = {
|
|
118
|
+
package: { name: 'test-pkg', version: '1.0.0', ecosystem: 'npm' },
|
|
119
|
+
valid: true,
|
|
120
|
+
blocked: false,
|
|
121
|
+
issues: [],
|
|
122
|
+
timestamp: new Date(),
|
|
123
|
+
cached: false,
|
|
124
|
+
};
|
|
125
|
+
const markdown = formatValidationResult(result);
|
|
126
|
+
expect(markdown).toContain('test-pkg@1.0.0');
|
|
127
|
+
expect(markdown).toContain('VALID');
|
|
128
|
+
});
|
|
129
|
+
it('should show issues', () => {
|
|
130
|
+
const result = {
|
|
131
|
+
package: { name: 'test-pkg', ecosystem: 'npm' },
|
|
132
|
+
valid: false,
|
|
133
|
+
blocked: true,
|
|
134
|
+
issues: [createIssue('security', 'critical', 'Critical vulnerability')],
|
|
135
|
+
timestamp: new Date(),
|
|
136
|
+
cached: false,
|
|
137
|
+
};
|
|
138
|
+
const markdown = formatValidationResult(result);
|
|
139
|
+
expect(markdown).toContain('BLOCKED');
|
|
140
|
+
expect(markdown).toContain('Critical vulnerability');
|
|
141
|
+
expect(markdown).toContain('critical');
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
describe('NpmValidator', () => {
|
|
145
|
+
let validator;
|
|
146
|
+
beforeEach(() => {
|
|
147
|
+
validator = new NpmValidator();
|
|
148
|
+
});
|
|
149
|
+
it('should handle npm ecosystem', () => {
|
|
150
|
+
expect(validator.getEcosystem()).toBe('npm');
|
|
151
|
+
expect(validator.canHandle({ name: 'test', ecosystem: 'npm' })).toBe(true);
|
|
152
|
+
});
|
|
153
|
+
it('should get cache stats', () => {
|
|
154
|
+
const stats = validator.getCacheStats();
|
|
155
|
+
expect(stats).toHaveProperty('hits');
|
|
156
|
+
expect(stats).toHaveProperty('misses');
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
describe('PipValidator', () => {
|
|
160
|
+
let validator;
|
|
161
|
+
beforeEach(() => {
|
|
162
|
+
validator = new PipValidator();
|
|
163
|
+
});
|
|
164
|
+
it('should handle pip ecosystem', () => {
|
|
165
|
+
expect(validator.getEcosystem()).toBe('pip');
|
|
166
|
+
expect(validator.canHandle({ name: 'test', ecosystem: 'pip' })).toBe(true);
|
|
167
|
+
});
|
|
168
|
+
it('should get cache stats', () => {
|
|
169
|
+
const stats = validator.getCacheStats();
|
|
170
|
+
expect(stats).toHaveProperty('hits');
|
|
171
|
+
expect(stats).toHaveProperty('misses');
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
describe('ValidatorRegistry', () => {
|
|
175
|
+
let registry;
|
|
176
|
+
beforeEach(() => {
|
|
177
|
+
registry = new ValidatorRegistry();
|
|
178
|
+
});
|
|
179
|
+
describe('registration', () => {
|
|
180
|
+
it('should have built-in validators', () => {
|
|
181
|
+
expect(registry.isSupported('npm')).toBe(true);
|
|
182
|
+
expect(registry.isSupported('pip')).toBe(true);
|
|
183
|
+
});
|
|
184
|
+
it('should register custom validator', () => {
|
|
185
|
+
const custom = new MockValidator();
|
|
186
|
+
registry.register(custom, { priority: 200 });
|
|
187
|
+
const validators = registry.getValidators('npm');
|
|
188
|
+
expect(validators.length).toBeGreaterThan(1);
|
|
189
|
+
});
|
|
190
|
+
it('should unregister validator', () => {
|
|
191
|
+
const custom = new MockValidator();
|
|
192
|
+
registry.register(custom);
|
|
193
|
+
const removed = registry.unregister(custom);
|
|
194
|
+
expect(removed).toBe(true);
|
|
195
|
+
});
|
|
196
|
+
it('should get all ecosystems', () => {
|
|
197
|
+
const ecosystems = registry.getEcosystems();
|
|
198
|
+
expect(ecosystems).toContain('npm');
|
|
199
|
+
expect(ecosystems).toContain('pip');
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
describe('ecosystem detection', () => {
|
|
203
|
+
it('should detect npm from prefix', () => {
|
|
204
|
+
expect(registry.detectEcosystem('npm:lodash')).toBe('npm');
|
|
205
|
+
});
|
|
206
|
+
it('should detect pip from prefix', () => {
|
|
207
|
+
expect(registry.detectEcosystem('pip:requests')).toBe('pip');
|
|
208
|
+
});
|
|
209
|
+
it('should detect pip from version syntax', () => {
|
|
210
|
+
expect(registry.detectEcosystem('requests==2.28.0')).toBe('pip');
|
|
211
|
+
expect(registry.detectEcosystem('django>=4.0')).toBe('pip');
|
|
212
|
+
});
|
|
213
|
+
it('should detect npm scoped packages', () => {
|
|
214
|
+
expect(registry.detectEcosystem('@types/node')).toBe('npm');
|
|
215
|
+
});
|
|
216
|
+
it('should default to npm', () => {
|
|
217
|
+
expect(registry.detectEcosystem('lodash')).toBe('npm');
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
describe('package spec parsing', () => {
|
|
221
|
+
it('should parse npm packages', () => {
|
|
222
|
+
const pkg = registry.parsePackageSpec('lodash@4.17.21');
|
|
223
|
+
expect(pkg.name).toBe('lodash');
|
|
224
|
+
expect(pkg.version).toBe('4.17.21');
|
|
225
|
+
expect(pkg.ecosystem).toBe('npm');
|
|
226
|
+
});
|
|
227
|
+
it('should parse scoped npm packages', () => {
|
|
228
|
+
const pkg = registry.parsePackageSpec('@types/node@18.0.0');
|
|
229
|
+
expect(pkg.name).toBe('@types/node');
|
|
230
|
+
expect(pkg.version).toBe('18.0.0');
|
|
231
|
+
expect(pkg.ecosystem).toBe('npm');
|
|
232
|
+
});
|
|
233
|
+
it('should parse pip packages', () => {
|
|
234
|
+
const pkg = registry.parsePackageSpec('pip:requests==2.28.0');
|
|
235
|
+
expect(pkg.name).toBe('requests');
|
|
236
|
+
expect(pkg.version).toBe('2.28.0');
|
|
237
|
+
expect(pkg.ecosystem).toBe('pip');
|
|
238
|
+
});
|
|
239
|
+
it('should parse packages without version', () => {
|
|
240
|
+
const pkg = registry.parsePackageSpec('lodash');
|
|
241
|
+
expect(pkg.name).toBe('lodash');
|
|
242
|
+
expect(pkg.version).toBeUndefined();
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
describe('validation', () => {
|
|
246
|
+
it('should validate with mock validator', async () => {
|
|
247
|
+
// Create fresh registry with only mock validator to avoid network
|
|
248
|
+
const mockRegistry = new ValidatorRegistry();
|
|
249
|
+
const mock = new MockValidator();
|
|
250
|
+
mock.setMockResult('test-pkg', { valid: true });
|
|
251
|
+
mockRegistry.register(mock, { priority: 200 });
|
|
252
|
+
const result = await mockRegistry.validate({ name: 'test-pkg', ecosystem: 'npm' });
|
|
253
|
+
expect(result.package.ecosystem).toBe('npm');
|
|
254
|
+
expect(result.valid).toBe(true);
|
|
255
|
+
});
|
|
256
|
+
it('should handle unsupported ecosystem', async () => {
|
|
257
|
+
const result = await registry.validate({
|
|
258
|
+
name: 'test',
|
|
259
|
+
ecosystem: 'cargo',
|
|
260
|
+
});
|
|
261
|
+
expect(result.valid).toBe(true);
|
|
262
|
+
expect(result.issues[0].message).toContain('No validator');
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
describe('batch validation', () => {
|
|
266
|
+
it('should validate multiple packages with mock', async () => {
|
|
267
|
+
// Create fresh registry with only mock validator to avoid network
|
|
268
|
+
const mockRegistry = new ValidatorRegistry();
|
|
269
|
+
const mock = new MockValidator();
|
|
270
|
+
mockRegistry.register(mock, { priority: 200 });
|
|
271
|
+
const result = await mockRegistry.validateBatch([
|
|
272
|
+
{ name: 'pkg1', ecosystem: 'npm' },
|
|
273
|
+
{ name: 'pkg2', ecosystem: 'npm' },
|
|
274
|
+
]);
|
|
275
|
+
expect(result.results).toHaveLength(2);
|
|
276
|
+
expect(result.summary.total).toBe(2);
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
describe('statistics', () => {
|
|
280
|
+
it('should return stats', () => {
|
|
281
|
+
const stats = registry.getStats();
|
|
282
|
+
expect(stats.ecosystems).toBeGreaterThanOrEqual(2);
|
|
283
|
+
expect(stats.validators).toBeGreaterThanOrEqual(2);
|
|
284
|
+
expect(stats.builtIn).toBeGreaterThanOrEqual(2);
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
describe('cache management', () => {
|
|
288
|
+
it('should clear all caches', () => {
|
|
289
|
+
registry.clearCaches();
|
|
290
|
+
// Should not throw
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
describe('formatBatchResult', () => {
|
|
295
|
+
it('should format batch result as markdown', () => {
|
|
296
|
+
const result = {
|
|
297
|
+
results: [
|
|
298
|
+
{
|
|
299
|
+
package: { name: 'pkg1', ecosystem: 'npm' },
|
|
300
|
+
valid: true,
|
|
301
|
+
blocked: false,
|
|
302
|
+
issues: [],
|
|
303
|
+
timestamp: new Date(),
|
|
304
|
+
cached: false,
|
|
305
|
+
},
|
|
306
|
+
],
|
|
307
|
+
summary: {
|
|
308
|
+
total: 1,
|
|
309
|
+
valid: 1,
|
|
310
|
+
blocked: 0,
|
|
311
|
+
errors: 0,
|
|
312
|
+
},
|
|
313
|
+
passed: true,
|
|
314
|
+
};
|
|
315
|
+
const markdown = formatBatchResult(result);
|
|
316
|
+
expect(markdown).toContain('Package Validation Report');
|
|
317
|
+
expect(markdown).toContain('Summary');
|
|
318
|
+
expect(markdown).toContain('Total');
|
|
319
|
+
});
|
|
320
|
+
});
|
|
321
|
+
//# sourceMappingURL=validators.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.test.js","sourceRoot":"","sources":["../../../../../src/core/agents/validators/__tests__/validators.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,191 @@
|
|
|
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
|
+
* Package identifier
|
|
12
|
+
*/
|
|
13
|
+
export interface PackageId {
|
|
14
|
+
/** Package name */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Version (optional, defaults to latest) */
|
|
17
|
+
version?: string;
|
|
18
|
+
/** Package ecosystem */
|
|
19
|
+
ecosystem: PackageEcosystem;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Supported package ecosystems
|
|
23
|
+
*/
|
|
24
|
+
export type PackageEcosystem = 'npm' | 'pip' | 'cargo' | 'go' | 'gem';
|
|
25
|
+
/**
|
|
26
|
+
* Validation severity levels
|
|
27
|
+
*/
|
|
28
|
+
export type ValidationSeverity = 'critical' | 'high' | 'moderate' | 'low' | 'info';
|
|
29
|
+
/**
|
|
30
|
+
* Individual validation issue
|
|
31
|
+
*/
|
|
32
|
+
export interface ValidationIssue {
|
|
33
|
+
/** Issue type */
|
|
34
|
+
type: 'security' | 'quality' | 'deprecation' | 'license' | 'size' | 'maintenance';
|
|
35
|
+
/** Severity */
|
|
36
|
+
severity: ValidationSeverity;
|
|
37
|
+
/** Issue description */
|
|
38
|
+
message: string;
|
|
39
|
+
/** Additional details */
|
|
40
|
+
details?: Record<string, unknown>;
|
|
41
|
+
/** Suggested fix or alternative */
|
|
42
|
+
suggestion?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Validation result for a package
|
|
46
|
+
*/
|
|
47
|
+
export interface ValidationResult {
|
|
48
|
+
/** Package identifier */
|
|
49
|
+
package: PackageId;
|
|
50
|
+
/** Overall validation passed */
|
|
51
|
+
valid: boolean;
|
|
52
|
+
/** Whether package should be blocked */
|
|
53
|
+
blocked: boolean;
|
|
54
|
+
/** List of issues found */
|
|
55
|
+
issues: ValidationIssue[];
|
|
56
|
+
/** Package metadata */
|
|
57
|
+
metadata?: PackageMetadata;
|
|
58
|
+
/** Validation timestamp */
|
|
59
|
+
timestamp: Date;
|
|
60
|
+
/** Cache hit */
|
|
61
|
+
cached: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Package metadata
|
|
65
|
+
*/
|
|
66
|
+
export interface PackageMetadata {
|
|
67
|
+
/** Latest version */
|
|
68
|
+
latestVersion?: string;
|
|
69
|
+
/** Requested version */
|
|
70
|
+
requestedVersion?: string;
|
|
71
|
+
/** Whether package is deprecated */
|
|
72
|
+
deprecated?: boolean;
|
|
73
|
+
/** Deprecation message */
|
|
74
|
+
deprecationMessage?: string;
|
|
75
|
+
/** Alternative package if deprecated */
|
|
76
|
+
alternative?: string;
|
|
77
|
+
/** License */
|
|
78
|
+
license?: string;
|
|
79
|
+
/** Package size (bytes) */
|
|
80
|
+
size?: number;
|
|
81
|
+
/** Weekly downloads */
|
|
82
|
+
downloads?: number;
|
|
83
|
+
/** Last publish date */
|
|
84
|
+
lastPublish?: Date;
|
|
85
|
+
/** Maintainer count */
|
|
86
|
+
maintainerCount?: number;
|
|
87
|
+
/** Repository URL */
|
|
88
|
+
repository?: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Validator configuration
|
|
92
|
+
*/
|
|
93
|
+
export interface ValidatorConfig {
|
|
94
|
+
/** Enable caching */
|
|
95
|
+
enableCache: boolean;
|
|
96
|
+
/** Cache TTL (ms) */
|
|
97
|
+
cacheTtlMs: number;
|
|
98
|
+
/** Enable rate limiting */
|
|
99
|
+
enableRateLimit: boolean;
|
|
100
|
+
/** Request timeout (ms) */
|
|
101
|
+
timeoutMs: number;
|
|
102
|
+
/** Block on critical issues */
|
|
103
|
+
blockOnCritical: boolean;
|
|
104
|
+
/** Block on high severity issues */
|
|
105
|
+
blockOnHigh: boolean;
|
|
106
|
+
}
|
|
107
|
+
export declare const DEFAULT_VALIDATOR_CONFIG: ValidatorConfig;
|
|
108
|
+
/**
|
|
109
|
+
* Abstract base class for package validators
|
|
110
|
+
*/
|
|
111
|
+
export declare abstract class BaseValidator {
|
|
112
|
+
protected config: ValidatorConfig;
|
|
113
|
+
protected cache: ValidationCache<ValidationResult>;
|
|
114
|
+
protected rateLimiter: RateLimiter;
|
|
115
|
+
protected ecosystem: PackageEcosystem;
|
|
116
|
+
constructor(ecosystem: PackageEcosystem, config?: Partial<ValidatorConfig>);
|
|
117
|
+
/**
|
|
118
|
+
* Get the ecosystem this validator handles
|
|
119
|
+
*/
|
|
120
|
+
getEcosystem(): PackageEcosystem;
|
|
121
|
+
/**
|
|
122
|
+
* Check if this validator can handle a package
|
|
123
|
+
*/
|
|
124
|
+
canHandle(pkg: PackageId): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Validate a package
|
|
127
|
+
*/
|
|
128
|
+
validate(pkg: PackageId): Promise<ValidationResult>;
|
|
129
|
+
/**
|
|
130
|
+
* Validate multiple packages
|
|
131
|
+
*/
|
|
132
|
+
validateBatch(packages: PackageId[]): Promise<ValidationResult[]>;
|
|
133
|
+
/**
|
|
134
|
+
* Check if issues should block installation
|
|
135
|
+
*/
|
|
136
|
+
protected shouldBlock(issues: ValidationIssue[]): boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Generate cache key for a package
|
|
139
|
+
*/
|
|
140
|
+
protected getCacheKey(pkg: PackageId): string;
|
|
141
|
+
/**
|
|
142
|
+
* Clear the validation cache
|
|
143
|
+
*/
|
|
144
|
+
clearCache(): void;
|
|
145
|
+
/**
|
|
146
|
+
* Get cache statistics
|
|
147
|
+
*/
|
|
148
|
+
getCacheStats(): {
|
|
149
|
+
size: number;
|
|
150
|
+
maxSize: number;
|
|
151
|
+
hits: number;
|
|
152
|
+
misses: number;
|
|
153
|
+
hitRate: number;
|
|
154
|
+
};
|
|
155
|
+
/**
|
|
156
|
+
* Perform the actual validation
|
|
157
|
+
*/
|
|
158
|
+
protected abstract performValidation(pkg: PackageId): Promise<ValidationResult>;
|
|
159
|
+
/**
|
|
160
|
+
* Fetch package metadata from registry
|
|
161
|
+
*/
|
|
162
|
+
abstract fetchMetadata(pkg: PackageId): Promise<PackageMetadata | undefined>;
|
|
163
|
+
/**
|
|
164
|
+
* Check for security vulnerabilities
|
|
165
|
+
*/
|
|
166
|
+
abstract checkSecurity(pkg: PackageId): Promise<ValidationIssue[]>;
|
|
167
|
+
/**
|
|
168
|
+
* Check for deprecation
|
|
169
|
+
*/
|
|
170
|
+
abstract checkDeprecation(pkg: PackageId): Promise<ValidationIssue[]>;
|
|
171
|
+
/**
|
|
172
|
+
* Get the latest version of a package
|
|
173
|
+
*/
|
|
174
|
+
abstract getLatestVersion(packageName: string): Promise<string | undefined>;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Create a validation issue
|
|
178
|
+
*/
|
|
179
|
+
export declare function createIssue(type: ValidationIssue['type'], severity: ValidationSeverity, message: string, options?: {
|
|
180
|
+
details?: Record<string, unknown>;
|
|
181
|
+
suggestion?: string;
|
|
182
|
+
}): ValidationIssue;
|
|
183
|
+
/**
|
|
184
|
+
* Create a successful validation result
|
|
185
|
+
*/
|
|
186
|
+
export declare function createSuccessResult(pkg: PackageId): ValidationResult;
|
|
187
|
+
/**
|
|
188
|
+
* Format validation result for display
|
|
189
|
+
*/
|
|
190
|
+
export declare function formatValidationResult(result: ValidationResult): string;
|
|
191
|
+
//# sourceMappingURL=base-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-validator.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/validators/base-validator.ts"],"names":[],"mappings":"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"}
|