@nahisaho/musubix-skill-manager 2.4.2
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/application/BuiltInSkills.d.ts +51 -0
- package/dist/application/BuiltInSkills.d.ts.map +1 -0
- package/dist/application/BuiltInSkills.js +204 -0
- package/dist/application/BuiltInSkills.js.map +1 -0
- package/dist/application/SkillManager.d.ts +143 -0
- package/dist/application/SkillManager.d.ts.map +1 -0
- package/dist/application/SkillManager.js +224 -0
- package/dist/application/SkillManager.js.map +1 -0
- package/dist/application/SkillValidator.d.ts +76 -0
- package/dist/application/SkillValidator.d.ts.map +1 -0
- package/dist/application/SkillValidator.js +168 -0
- package/dist/application/SkillValidator.js.map +1 -0
- package/dist/application/index.d.ts +10 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +10 -0
- package/dist/application/index.js.map +1 -0
- package/dist/domain/entities/Skill.d.ts +99 -0
- package/dist/domain/entities/Skill.d.ts.map +1 -0
- package/dist/domain/entities/Skill.js +133 -0
- package/dist/domain/entities/Skill.js.map +1 -0
- package/dist/domain/entities/SkillRegistry.d.ts +101 -0
- package/dist/domain/entities/SkillRegistry.d.ts.map +1 -0
- package/dist/domain/entities/SkillRegistry.js +158 -0
- package/dist/domain/entities/SkillRegistry.js.map +1 -0
- package/dist/domain/entities/index.d.ts +9 -0
- package/dist/domain/entities/index.d.ts.map +1 -0
- package/dist/domain/entities/index.js +9 -0
- package/dist/domain/entities/index.js.map +1 -0
- package/dist/domain/index.d.ts +9 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +11 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/value-objects/SkillMetadata.d.ts +82 -0
- package/dist/domain/value-objects/SkillMetadata.d.ts.map +1 -0
- package/dist/domain/value-objects/SkillMetadata.js +94 -0
- package/dist/domain/value-objects/SkillMetadata.js.map +1 -0
- package/dist/domain/value-objects/SkillType.d.ts +46 -0
- package/dist/domain/value-objects/SkillType.d.ts.map +1 -0
- package/dist/domain/value-objects/SkillType.js +110 -0
- package/dist/domain/value-objects/SkillType.js.map +1 -0
- package/dist/domain/value-objects/index.d.ts +9 -0
- package/dist/domain/value-objects/index.d.ts.map +1 -0
- package/dist/domain/value-objects/index.js +9 -0
- package/dist/domain/value-objects/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SkillValidator - Application Service
|
|
3
|
+
*
|
|
4
|
+
* Validates skill definitions and execution
|
|
5
|
+
*
|
|
6
|
+
* @see TSK-SKILL-001 - SkillValidator
|
|
7
|
+
* @see REQ-SKILL-002 - Skill Validation
|
|
8
|
+
* @see DES-SKILL-002 - SkillValidator
|
|
9
|
+
*/
|
|
10
|
+
import { type Skill, type SkillContext, type SkillMetadata } from '../domain/index.js';
|
|
11
|
+
/**
|
|
12
|
+
* Validation result
|
|
13
|
+
*/
|
|
14
|
+
export interface ValidationResult {
|
|
15
|
+
readonly valid: boolean;
|
|
16
|
+
readonly errors: readonly string[];
|
|
17
|
+
readonly warnings: readonly string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Parameter validation result
|
|
21
|
+
*/
|
|
22
|
+
export interface ParameterValidationResult extends ValidationResult {
|
|
23
|
+
readonly missing: readonly string[];
|
|
24
|
+
readonly invalid: readonly string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Skill Validator
|
|
28
|
+
*
|
|
29
|
+
* Validates skill definitions and parameters
|
|
30
|
+
*/
|
|
31
|
+
export declare class SkillValidator {
|
|
32
|
+
/**
|
|
33
|
+
* Validate skill definition
|
|
34
|
+
*
|
|
35
|
+
* @param skill - Skill to validate
|
|
36
|
+
* @returns Validation result
|
|
37
|
+
*/
|
|
38
|
+
validateSkill(skill: Skill): ValidationResult;
|
|
39
|
+
/**
|
|
40
|
+
* Validate execution context against skill parameters
|
|
41
|
+
*
|
|
42
|
+
* @param skill - Skill
|
|
43
|
+
* @param context - Execution context
|
|
44
|
+
* @returns Parameter validation result
|
|
45
|
+
*/
|
|
46
|
+
validateParameters(skill: Skill, context: SkillContext): ParameterValidationResult;
|
|
47
|
+
/**
|
|
48
|
+
* Validate parameter type
|
|
49
|
+
*
|
|
50
|
+
* @param value - Value to check
|
|
51
|
+
* @param expectedType - Expected type
|
|
52
|
+
* @returns true if valid
|
|
53
|
+
*/
|
|
54
|
+
private validateParameterType;
|
|
55
|
+
/**
|
|
56
|
+
* Create validation error message
|
|
57
|
+
*
|
|
58
|
+
* @param result - Validation result
|
|
59
|
+
* @returns Formatted error message
|
|
60
|
+
*/
|
|
61
|
+
formatValidationResult(result: ValidationResult): string;
|
|
62
|
+
/**
|
|
63
|
+
* Validate skill metadata only
|
|
64
|
+
*
|
|
65
|
+
* @param metadata - Metadata to validate
|
|
66
|
+
* @returns Validation result
|
|
67
|
+
*/
|
|
68
|
+
validateMetadata(metadata: SkillMetadata): ValidationResult;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a skill validator instance
|
|
72
|
+
*
|
|
73
|
+
* @returns SkillValidator instance
|
|
74
|
+
*/
|
|
75
|
+
export declare function createSkillValidator(): SkillValidator;
|
|
76
|
+
//# sourceMappingURL=SkillValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillValidator.d.ts","sourceRoot":"","sources":["../../src/application/SkillValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,aAAa,EAGnB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,gBAAgB;IA+B7C;;;;;;OAMG;IACH,kBAAkB,CAChB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,YAAY,GACpB,yBAAyB;IAgD5B;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;;;;OAKG;IACH,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAyBxD;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,gBAAgB;CAQ5D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SkillValidator - Application Service
|
|
3
|
+
*
|
|
4
|
+
* Validates skill definitions and execution
|
|
5
|
+
*
|
|
6
|
+
* @see TSK-SKILL-001 - SkillValidator
|
|
7
|
+
* @see REQ-SKILL-002 - Skill Validation
|
|
8
|
+
* @see DES-SKILL-002 - SkillValidator
|
|
9
|
+
*/
|
|
10
|
+
import { validateSkillMetadata, } from '../domain/index.js';
|
|
11
|
+
/**
|
|
12
|
+
* Skill Validator
|
|
13
|
+
*
|
|
14
|
+
* Validates skill definitions and parameters
|
|
15
|
+
*/
|
|
16
|
+
export class SkillValidator {
|
|
17
|
+
/**
|
|
18
|
+
* Validate skill definition
|
|
19
|
+
*
|
|
20
|
+
* @param skill - Skill to validate
|
|
21
|
+
* @returns Validation result
|
|
22
|
+
*/
|
|
23
|
+
validateSkill(skill) {
|
|
24
|
+
const errors = [];
|
|
25
|
+
const warnings = [];
|
|
26
|
+
// Validate metadata
|
|
27
|
+
const metadataResult = validateSkillMetadata(skill.metadata);
|
|
28
|
+
if (!metadataResult.valid) {
|
|
29
|
+
errors.push(...metadataResult.errors);
|
|
30
|
+
}
|
|
31
|
+
// Validate executor
|
|
32
|
+
if (typeof skill.executor !== 'function') {
|
|
33
|
+
errors.push('Skill executor must be a function');
|
|
34
|
+
}
|
|
35
|
+
// Check for common issues
|
|
36
|
+
if (skill.metadata.parameters.length > 10) {
|
|
37
|
+
warnings.push('Skill has many parameters, consider simplifying');
|
|
38
|
+
}
|
|
39
|
+
if (skill.metadata.description.length < 10) {
|
|
40
|
+
warnings.push('Skill description is very short');
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
valid: errors.length === 0,
|
|
44
|
+
errors: Object.freeze(errors),
|
|
45
|
+
warnings: Object.freeze(warnings),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Validate execution context against skill parameters
|
|
50
|
+
*
|
|
51
|
+
* @param skill - Skill
|
|
52
|
+
* @param context - Execution context
|
|
53
|
+
* @returns Parameter validation result
|
|
54
|
+
*/
|
|
55
|
+
validateParameters(skill, context) {
|
|
56
|
+
const errors = [];
|
|
57
|
+
const warnings = [];
|
|
58
|
+
const missing = [];
|
|
59
|
+
const invalid = [];
|
|
60
|
+
for (const param of skill.metadata.parameters) {
|
|
61
|
+
const value = context.parameters[param.name];
|
|
62
|
+
// Check required parameters
|
|
63
|
+
if (param.required && value === undefined) {
|
|
64
|
+
missing.push(param.name);
|
|
65
|
+
errors.push(`Required parameter missing: ${param.name}`);
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
// Skip validation if not provided and not required
|
|
69
|
+
if (value === undefined) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
// Type validation
|
|
73
|
+
if (!this.validateParameterType(value, param.type)) {
|
|
74
|
+
invalid.push(param.name);
|
|
75
|
+
errors.push(`Parameter ${param.name} has invalid type. ` +
|
|
76
|
+
`Expected ${param.type}, got ${typeof value}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Check for unknown parameters
|
|
80
|
+
const paramNames = new Set(skill.metadata.parameters.map(p => p.name));
|
|
81
|
+
for (const key of Object.keys(context.parameters)) {
|
|
82
|
+
if (!paramNames.has(key)) {
|
|
83
|
+
warnings.push(`Unknown parameter: ${key}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
valid: errors.length === 0,
|
|
88
|
+
errors: Object.freeze(errors),
|
|
89
|
+
warnings: Object.freeze(warnings),
|
|
90
|
+
missing: Object.freeze(missing),
|
|
91
|
+
invalid: Object.freeze(invalid),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Validate parameter type
|
|
96
|
+
*
|
|
97
|
+
* @param value - Value to check
|
|
98
|
+
* @param expectedType - Expected type
|
|
99
|
+
* @returns true if valid
|
|
100
|
+
*/
|
|
101
|
+
validateParameterType(value, expectedType) {
|
|
102
|
+
switch (expectedType) {
|
|
103
|
+
case 'string':
|
|
104
|
+
return typeof value === 'string';
|
|
105
|
+
case 'number':
|
|
106
|
+
return typeof value === 'number' && !isNaN(value);
|
|
107
|
+
case 'boolean':
|
|
108
|
+
return typeof value === 'boolean';
|
|
109
|
+
case 'array':
|
|
110
|
+
return Array.isArray(value);
|
|
111
|
+
case 'object':
|
|
112
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
113
|
+
default:
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Create validation error message
|
|
119
|
+
*
|
|
120
|
+
* @param result - Validation result
|
|
121
|
+
* @returns Formatted error message
|
|
122
|
+
*/
|
|
123
|
+
formatValidationResult(result) {
|
|
124
|
+
const lines = [];
|
|
125
|
+
if (result.valid) {
|
|
126
|
+
lines.push('✅ Validation passed');
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
lines.push('❌ Validation failed');
|
|
130
|
+
lines.push('');
|
|
131
|
+
lines.push('**Errors:**');
|
|
132
|
+
for (const error of result.errors) {
|
|
133
|
+
lines.push(`- ${error}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (result.warnings.length > 0) {
|
|
137
|
+
lines.push('');
|
|
138
|
+
lines.push('**Warnings:**');
|
|
139
|
+
for (const warning of result.warnings) {
|
|
140
|
+
lines.push(`- ⚠️ ${warning}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return lines.join('\n');
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Validate skill metadata only
|
|
147
|
+
*
|
|
148
|
+
* @param metadata - Metadata to validate
|
|
149
|
+
* @returns Validation result
|
|
150
|
+
*/
|
|
151
|
+
validateMetadata(metadata) {
|
|
152
|
+
const result = validateSkillMetadata(metadata);
|
|
153
|
+
return {
|
|
154
|
+
valid: result.valid,
|
|
155
|
+
errors: Object.freeze(result.errors),
|
|
156
|
+
warnings: Object.freeze([]),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Create a skill validator instance
|
|
162
|
+
*
|
|
163
|
+
* @returns SkillValidator instance
|
|
164
|
+
*/
|
|
165
|
+
export function createSkillValidator() {
|
|
166
|
+
return new SkillValidator();
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=SkillValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillValidator.js","sourceRoot":"","sources":["../../src/application/SkillValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Layer barrel export
|
|
3
|
+
*
|
|
4
|
+
* @see TSK-SKILL-001 - SkillValidator
|
|
5
|
+
* @see TSK-SKILL-002 - SkillManager
|
|
6
|
+
*/
|
|
7
|
+
export { type ValidationResult, type ParameterValidationResult, SkillValidator, createSkillValidator, } from './SkillValidator.js';
|
|
8
|
+
export { type SkillManagerConfig, type SkillRegistrationResult, SkillManager, createSkillManager, } from './SkillManager.js';
|
|
9
|
+
export { createRequirementsAnalysisSkill, createDesignGenerationSkill, createCodeAnalysisSkill, createTestGenerationSkill, createKnowledgeGraphQuerySkill, getBuiltInSkills, registerBuiltInSkills, } from './BuiltInSkills.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/application/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,cAAc,EACd,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,YAAY,EACZ,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,8BAA8B,EAC9B,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Layer barrel export
|
|
3
|
+
*
|
|
4
|
+
* @see TSK-SKILL-001 - SkillValidator
|
|
5
|
+
* @see TSK-SKILL-002 - SkillManager
|
|
6
|
+
*/
|
|
7
|
+
export { SkillValidator, createSkillValidator, } from './SkillValidator.js';
|
|
8
|
+
export { SkillManager, createSkillManager, } from './SkillManager.js';
|
|
9
|
+
export { createRequirementsAnalysisSkill, createDesignGenerationSkill, createCodeAnalysisSkill, createTestGenerationSkill, createKnowledgeGraphQuerySkill, getBuiltInSkills, registerBuiltInSkills, } from './BuiltInSkills.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/application/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,cAAc,EACd,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAGL,YAAY,EACZ,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,8BAA8B,EAC9B,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Entity
|
|
3
|
+
*
|
|
4
|
+
* Represents a skill that can be executed
|
|
5
|
+
*
|
|
6
|
+
* @see REQ-SKILL-001 - Skill Loading
|
|
7
|
+
* @see DES-SKILL-001 - SkillManager
|
|
8
|
+
*/
|
|
9
|
+
import type { SkillMetadata } from '../value-objects/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Skill execution context
|
|
12
|
+
*/
|
|
13
|
+
export interface SkillContext {
|
|
14
|
+
readonly workflowId?: string;
|
|
15
|
+
readonly phaseType?: string;
|
|
16
|
+
readonly taskId?: string;
|
|
17
|
+
readonly parameters: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Skill execution result
|
|
21
|
+
*/
|
|
22
|
+
export interface SkillResult {
|
|
23
|
+
readonly success: boolean;
|
|
24
|
+
readonly data?: unknown;
|
|
25
|
+
readonly error?: string;
|
|
26
|
+
readonly duration: number;
|
|
27
|
+
readonly timestamp: Date;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Skill executor function type
|
|
31
|
+
*/
|
|
32
|
+
export type SkillExecutor = (context: SkillContext) => Promise<SkillResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Skill entity
|
|
35
|
+
*/
|
|
36
|
+
export interface Skill {
|
|
37
|
+
readonly metadata: SkillMetadata;
|
|
38
|
+
readonly executor: SkillExecutor;
|
|
39
|
+
readonly enabled: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a skill
|
|
43
|
+
*
|
|
44
|
+
* @param metadata - Skill metadata
|
|
45
|
+
* @param executor - Skill executor
|
|
46
|
+
* @param enabled - Whether skill is enabled
|
|
47
|
+
* @returns Skill entity
|
|
48
|
+
*/
|
|
49
|
+
export declare function createSkill(metadata: SkillMetadata, executor: SkillExecutor, enabled?: boolean): Skill;
|
|
50
|
+
/**
|
|
51
|
+
* Execute a skill
|
|
52
|
+
*
|
|
53
|
+
* @param skill - Skill to execute
|
|
54
|
+
* @param context - Execution context
|
|
55
|
+
* @returns Execution result
|
|
56
|
+
*/
|
|
57
|
+
export declare function executeSkill(skill: Skill, context: SkillContext): Promise<SkillResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Enable a skill
|
|
60
|
+
*
|
|
61
|
+
* @param skill - Skill to enable
|
|
62
|
+
* @returns Enabled skill
|
|
63
|
+
*/
|
|
64
|
+
export declare function enableSkill(skill: Skill): Skill;
|
|
65
|
+
/**
|
|
66
|
+
* Disable a skill
|
|
67
|
+
*
|
|
68
|
+
* @param skill - Skill to disable
|
|
69
|
+
* @returns Disabled skill
|
|
70
|
+
*/
|
|
71
|
+
export declare function disableSkill(skill: Skill): Skill;
|
|
72
|
+
/**
|
|
73
|
+
* Check if skill matches filter
|
|
74
|
+
*
|
|
75
|
+
* @param skill - Skill to check
|
|
76
|
+
* @param filter - Filter criteria
|
|
77
|
+
* @returns true if matches
|
|
78
|
+
*/
|
|
79
|
+
export declare function skillMatchesFilter(skill: Skill, filter: {
|
|
80
|
+
type?: string;
|
|
81
|
+
tags?: string[];
|
|
82
|
+
enabledOnly?: boolean;
|
|
83
|
+
}): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Create a no-op skill result
|
|
86
|
+
*
|
|
87
|
+
* @param message - Message
|
|
88
|
+
* @returns Skill result
|
|
89
|
+
*/
|
|
90
|
+
export declare function createNoOpResult(message: string): SkillResult;
|
|
91
|
+
/**
|
|
92
|
+
* Create an error result
|
|
93
|
+
*
|
|
94
|
+
* @param error - Error message
|
|
95
|
+
* @param duration - Duration in ms
|
|
96
|
+
* @returns Skill result
|
|
97
|
+
*/
|
|
98
|
+
export declare function createErrorResult(error: string, duration?: number): SkillResult;
|
|
99
|
+
//# sourceMappingURL=Skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skill.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Skill.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,OAAc,GACtB,KAAK,CAMP;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,CA2BtB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAK/C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAKhD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE;IACN,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GACA,OAAO,CAmBT;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAO7D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,WAAW,CAOlF"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Entity
|
|
3
|
+
*
|
|
4
|
+
* Represents a skill that can be executed
|
|
5
|
+
*
|
|
6
|
+
* @see REQ-SKILL-001 - Skill Loading
|
|
7
|
+
* @see DES-SKILL-001 - SkillManager
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Create a skill
|
|
11
|
+
*
|
|
12
|
+
* @param metadata - Skill metadata
|
|
13
|
+
* @param executor - Skill executor
|
|
14
|
+
* @param enabled - Whether skill is enabled
|
|
15
|
+
* @returns Skill entity
|
|
16
|
+
*/
|
|
17
|
+
export function createSkill(metadata, executor, enabled = true) {
|
|
18
|
+
return Object.freeze({
|
|
19
|
+
metadata,
|
|
20
|
+
executor,
|
|
21
|
+
enabled,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Execute a skill
|
|
26
|
+
*
|
|
27
|
+
* @param skill - Skill to execute
|
|
28
|
+
* @param context - Execution context
|
|
29
|
+
* @returns Execution result
|
|
30
|
+
*/
|
|
31
|
+
export async function executeSkill(skill, context) {
|
|
32
|
+
if (!skill.enabled) {
|
|
33
|
+
return {
|
|
34
|
+
success: false,
|
|
35
|
+
error: `Skill ${skill.metadata.id} is disabled`,
|
|
36
|
+
duration: 0,
|
|
37
|
+
timestamp: new Date(),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const startTime = Date.now();
|
|
41
|
+
try {
|
|
42
|
+
const result = await skill.executor(context);
|
|
43
|
+
return {
|
|
44
|
+
...result,
|
|
45
|
+
duration: Date.now() - startTime,
|
|
46
|
+
timestamp: new Date(),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return {
|
|
51
|
+
success: false,
|
|
52
|
+
error: error instanceof Error ? error.message : String(error),
|
|
53
|
+
duration: Date.now() - startTime,
|
|
54
|
+
timestamp: new Date(),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Enable a skill
|
|
60
|
+
*
|
|
61
|
+
* @param skill - Skill to enable
|
|
62
|
+
* @returns Enabled skill
|
|
63
|
+
*/
|
|
64
|
+
export function enableSkill(skill) {
|
|
65
|
+
return Object.freeze({
|
|
66
|
+
...skill,
|
|
67
|
+
enabled: true,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Disable a skill
|
|
72
|
+
*
|
|
73
|
+
* @param skill - Skill to disable
|
|
74
|
+
* @returns Disabled skill
|
|
75
|
+
*/
|
|
76
|
+
export function disableSkill(skill) {
|
|
77
|
+
return Object.freeze({
|
|
78
|
+
...skill,
|
|
79
|
+
enabled: false,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if skill matches filter
|
|
84
|
+
*
|
|
85
|
+
* @param skill - Skill to check
|
|
86
|
+
* @param filter - Filter criteria
|
|
87
|
+
* @returns true if matches
|
|
88
|
+
*/
|
|
89
|
+
export function skillMatchesFilter(skill, filter) {
|
|
90
|
+
if (filter.enabledOnly && !skill.enabled) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
if (filter.type && skill.metadata.type !== filter.type) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
if (filter.tags && filter.tags.length > 0) {
|
|
97
|
+
const hasAllTags = filter.tags.every(tag => skill.metadata.tags.includes(tag));
|
|
98
|
+
if (!hasAllTags) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Create a no-op skill result
|
|
106
|
+
*
|
|
107
|
+
* @param message - Message
|
|
108
|
+
* @returns Skill result
|
|
109
|
+
*/
|
|
110
|
+
export function createNoOpResult(message) {
|
|
111
|
+
return {
|
|
112
|
+
success: true,
|
|
113
|
+
data: message,
|
|
114
|
+
duration: 0,
|
|
115
|
+
timestamp: new Date(),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create an error result
|
|
120
|
+
*
|
|
121
|
+
* @param error - Error message
|
|
122
|
+
* @param duration - Duration in ms
|
|
123
|
+
* @returns Skill result
|
|
124
|
+
*/
|
|
125
|
+
export function createErrorResult(error, duration = 0) {
|
|
126
|
+
return {
|
|
127
|
+
success: false,
|
|
128
|
+
error,
|
|
129
|
+
duration,
|
|
130
|
+
timestamp: new Date(),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=Skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skill.js","sourceRoot":"","sources":["../../../src/domain/entities/Skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SkillRegistry Entity
|
|
3
|
+
*
|
|
4
|
+
* Registry of available skills
|
|
5
|
+
*
|
|
6
|
+
* @see REQ-SKILL-001 - Skill Loading
|
|
7
|
+
* @see REQ-SKILL-002 - Skill Validation
|
|
8
|
+
*/
|
|
9
|
+
import type { Skill, SkillContext, SkillResult } from './Skill.js';
|
|
10
|
+
import type { SkillType } from '../value-objects/index.js';
|
|
11
|
+
/**
|
|
12
|
+
* Skill filter criteria
|
|
13
|
+
*/
|
|
14
|
+
export interface SkillFilter {
|
|
15
|
+
readonly type?: SkillType;
|
|
16
|
+
readonly tags?: readonly string[];
|
|
17
|
+
readonly enabledOnly?: boolean;
|
|
18
|
+
readonly query?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Skill registry entity
|
|
22
|
+
*/
|
|
23
|
+
export interface SkillRegistry {
|
|
24
|
+
readonly skills: ReadonlyMap<string, Skill>;
|
|
25
|
+
readonly updatedAt: Date;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create an empty skill registry
|
|
29
|
+
*
|
|
30
|
+
* @returns Empty registry
|
|
31
|
+
*/
|
|
32
|
+
export declare function createSkillRegistry(): SkillRegistry;
|
|
33
|
+
/**
|
|
34
|
+
* Add skill to registry
|
|
35
|
+
*
|
|
36
|
+
* @param registry - Registry to update
|
|
37
|
+
* @param skill - Skill to add
|
|
38
|
+
* @returns Updated registry
|
|
39
|
+
*/
|
|
40
|
+
export declare function addSkillToRegistry(registry: SkillRegistry, skill: Skill): SkillRegistry;
|
|
41
|
+
/**
|
|
42
|
+
* Remove skill from registry
|
|
43
|
+
*
|
|
44
|
+
* @param registry - Registry to update
|
|
45
|
+
* @param skillId - Skill ID to remove
|
|
46
|
+
* @returns Updated registry
|
|
47
|
+
*/
|
|
48
|
+
export declare function removeSkillFromRegistry(registry: SkillRegistry, skillId: string): SkillRegistry;
|
|
49
|
+
/**
|
|
50
|
+
* Get skill by ID
|
|
51
|
+
*
|
|
52
|
+
* @param registry - Registry to search
|
|
53
|
+
* @param skillId - Skill ID
|
|
54
|
+
* @returns Skill or undefined
|
|
55
|
+
*/
|
|
56
|
+
export declare function getSkillById(registry: SkillRegistry, skillId: string): Skill | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Find skills by filter
|
|
59
|
+
*
|
|
60
|
+
* @param registry - Registry to search
|
|
61
|
+
* @param filter - Filter criteria
|
|
62
|
+
* @returns Matching skills
|
|
63
|
+
*/
|
|
64
|
+
export declare function findSkills(registry: SkillRegistry, filter: SkillFilter): Skill[];
|
|
65
|
+
/**
|
|
66
|
+
* Get all skills from registry
|
|
67
|
+
*
|
|
68
|
+
* @param registry - Registry
|
|
69
|
+
* @returns All skills
|
|
70
|
+
*/
|
|
71
|
+
export declare function getAllSkills(registry: SkillRegistry): Skill[];
|
|
72
|
+
/**
|
|
73
|
+
* Get skills by type
|
|
74
|
+
*
|
|
75
|
+
* @param registry - Registry
|
|
76
|
+
* @param type - Skill type
|
|
77
|
+
* @returns Skills of the specified type
|
|
78
|
+
*/
|
|
79
|
+
export declare function getSkillsByType(registry: SkillRegistry, type: SkillType): Skill[];
|
|
80
|
+
/**
|
|
81
|
+
* Execute a skill from registry
|
|
82
|
+
*
|
|
83
|
+
* @param registry - Registry
|
|
84
|
+
* @param skillId - Skill ID
|
|
85
|
+
* @param context - Execution context
|
|
86
|
+
* @returns Execution result
|
|
87
|
+
*/
|
|
88
|
+
export declare function executeSkillFromRegistry(registry: SkillRegistry, skillId: string, context: SkillContext): Promise<SkillResult>;
|
|
89
|
+
/**
|
|
90
|
+
* Get registry statistics
|
|
91
|
+
*
|
|
92
|
+
* @param registry - Registry
|
|
93
|
+
* @returns Statistics
|
|
94
|
+
*/
|
|
95
|
+
export declare function getRegistryStats(registry: SkillRegistry): {
|
|
96
|
+
total: number;
|
|
97
|
+
enabled: number;
|
|
98
|
+
disabled: number;
|
|
99
|
+
byType: Record<string, number>;
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=SkillRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillRegistry.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/SkillRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAKnD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,GACX,aAAa,CAQf;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,MAAM,GACd,aAAa,CAQf;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,MAAM,GACd,KAAK,GAAG,SAAS,CAEnB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,WAAW,GAClB,KAAK,EAAE,CA6BT;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,KAAK,EAAE,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,SAAS,GACd,KAAK,EAAE,CAET;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,CAatB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAsBA"}
|