@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,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BuiltInSkills - Pre-defined skills
|
|
3
|
+
*
|
|
4
|
+
* Built-in skills for MUSUBIX
|
|
5
|
+
*
|
|
6
|
+
* @see REQ-SKILL-001 - Skill Loading
|
|
7
|
+
*/
|
|
8
|
+
import { type Skill } from '../domain/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Create requirements analysis skill
|
|
11
|
+
*
|
|
12
|
+
* @returns Skill
|
|
13
|
+
*/
|
|
14
|
+
export declare function createRequirementsAnalysisSkill(): Skill;
|
|
15
|
+
/**
|
|
16
|
+
* Create design generation skill
|
|
17
|
+
*
|
|
18
|
+
* @returns Skill
|
|
19
|
+
*/
|
|
20
|
+
export declare function createDesignGenerationSkill(): Skill;
|
|
21
|
+
/**
|
|
22
|
+
* Create code analysis skill
|
|
23
|
+
*
|
|
24
|
+
* @returns Skill
|
|
25
|
+
*/
|
|
26
|
+
export declare function createCodeAnalysisSkill(): Skill;
|
|
27
|
+
/**
|
|
28
|
+
* Create test generation skill
|
|
29
|
+
*
|
|
30
|
+
* @returns Skill
|
|
31
|
+
*/
|
|
32
|
+
export declare function createTestGenerationSkill(): Skill;
|
|
33
|
+
/**
|
|
34
|
+
* Create knowledge graph query skill
|
|
35
|
+
*
|
|
36
|
+
* @returns Skill
|
|
37
|
+
*/
|
|
38
|
+
export declare function createKnowledgeGraphQuerySkill(): Skill;
|
|
39
|
+
/**
|
|
40
|
+
* Get all built-in skills
|
|
41
|
+
*
|
|
42
|
+
* @returns Array of built-in skills
|
|
43
|
+
*/
|
|
44
|
+
export declare function getBuiltInSkills(): Skill[];
|
|
45
|
+
/**
|
|
46
|
+
* Register all built-in skills with a manager
|
|
47
|
+
*
|
|
48
|
+
* @param registerFn - Registration function
|
|
49
|
+
*/
|
|
50
|
+
export declare function registerBuiltInSkills(registerFn: (skill: Skill) => void): void;
|
|
51
|
+
//# sourceMappingURL=BuiltInSkills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuiltInSkills.d.ts","sourceRoot":"","sources":["../../src/application/BuiltInSkills.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,KAAK,EAOX,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,KAAK,CA+BvD;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,KAAK,CA8BnD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,KAAK,CA8B/C;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,KAAK,CA8BjD;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,KAAK,CA8BtD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,KAAK,EAAE,CAQ1C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GACjC,IAAI,CAIN"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BuiltInSkills - Pre-defined skills
|
|
3
|
+
*
|
|
4
|
+
* Built-in skills for MUSUBIX
|
|
5
|
+
*
|
|
6
|
+
* @see REQ-SKILL-001 - Skill Loading
|
|
7
|
+
*/
|
|
8
|
+
import { createSkill, createSkillMetadata, createSkillParameter, createNoOpResult, } from '../domain/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Create requirements analysis skill
|
|
11
|
+
*
|
|
12
|
+
* @returns Skill
|
|
13
|
+
*/
|
|
14
|
+
export function createRequirementsAnalysisSkill() {
|
|
15
|
+
const metadata = createSkillMetadata({
|
|
16
|
+
id: 'SKILL-REQ-EARS-001',
|
|
17
|
+
name: 'EARS Requirements Analysis',
|
|
18
|
+
description: '自然言語をEARS形式の要件に変換',
|
|
19
|
+
type: 'requirements',
|
|
20
|
+
parameters: [
|
|
21
|
+
createSkillParameter({
|
|
22
|
+
name: 'input',
|
|
23
|
+
type: 'string',
|
|
24
|
+
required: true,
|
|
25
|
+
description: '分析する自然言語テキスト',
|
|
26
|
+
}),
|
|
27
|
+
createSkillParameter({
|
|
28
|
+
name: 'outputFormat',
|
|
29
|
+
type: 'string',
|
|
30
|
+
required: false,
|
|
31
|
+
description: '出力形式 (markdown, json)',
|
|
32
|
+
default: 'markdown',
|
|
33
|
+
}),
|
|
34
|
+
],
|
|
35
|
+
tags: ['ears', 'requirements', 'analysis'],
|
|
36
|
+
});
|
|
37
|
+
const executor = async (context) => {
|
|
38
|
+
const input = context.parameters.input;
|
|
39
|
+
// Placeholder implementation
|
|
40
|
+
return createNoOpResult(`Analyzed requirements from: ${input.substring(0, 50)}...`);
|
|
41
|
+
};
|
|
42
|
+
return createSkill(metadata, executor);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Create design generation skill
|
|
46
|
+
*
|
|
47
|
+
* @returns Skill
|
|
48
|
+
*/
|
|
49
|
+
export function createDesignGenerationSkill() {
|
|
50
|
+
const metadata = createSkillMetadata({
|
|
51
|
+
id: 'SKILL-DES-C4-001',
|
|
52
|
+
name: 'C4 Design Generation',
|
|
53
|
+
description: '要件からC4モデル設計を生成',
|
|
54
|
+
type: 'design',
|
|
55
|
+
parameters: [
|
|
56
|
+
createSkillParameter({
|
|
57
|
+
name: 'requirements',
|
|
58
|
+
type: 'array',
|
|
59
|
+
required: true,
|
|
60
|
+
description: '設計対象の要件リスト',
|
|
61
|
+
}),
|
|
62
|
+
createSkillParameter({
|
|
63
|
+
name: 'level',
|
|
64
|
+
type: 'string',
|
|
65
|
+
required: false,
|
|
66
|
+
description: 'C4レベル (context, container, component, code)',
|
|
67
|
+
default: 'component',
|
|
68
|
+
}),
|
|
69
|
+
],
|
|
70
|
+
tags: ['c4', 'design', 'generation'],
|
|
71
|
+
});
|
|
72
|
+
const executor = async (context) => {
|
|
73
|
+
const requirements = context.parameters.requirements;
|
|
74
|
+
return createNoOpResult(`Generated design for ${requirements.length} requirements`);
|
|
75
|
+
};
|
|
76
|
+
return createSkill(metadata, executor);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create code analysis skill
|
|
80
|
+
*
|
|
81
|
+
* @returns Skill
|
|
82
|
+
*/
|
|
83
|
+
export function createCodeAnalysisSkill() {
|
|
84
|
+
const metadata = createSkillMetadata({
|
|
85
|
+
id: 'SKILL-CODE-ANALYZE-001',
|
|
86
|
+
name: 'Code Analysis',
|
|
87
|
+
description: 'コードの静的解析を実行',
|
|
88
|
+
type: 'code-analysis',
|
|
89
|
+
parameters: [
|
|
90
|
+
createSkillParameter({
|
|
91
|
+
name: 'filePath',
|
|
92
|
+
type: 'string',
|
|
93
|
+
required: true,
|
|
94
|
+
description: '解析対象のファイルパス',
|
|
95
|
+
}),
|
|
96
|
+
createSkillParameter({
|
|
97
|
+
name: 'analysisType',
|
|
98
|
+
type: 'string',
|
|
99
|
+
required: false,
|
|
100
|
+
description: '解析タイプ (ast, complexity, dependencies)',
|
|
101
|
+
default: 'ast',
|
|
102
|
+
}),
|
|
103
|
+
],
|
|
104
|
+
tags: ['code', 'analysis', 'ast'],
|
|
105
|
+
});
|
|
106
|
+
const executor = async (context) => {
|
|
107
|
+
const filePath = context.parameters.filePath;
|
|
108
|
+
return createNoOpResult(`Analyzed code at: ${filePath}`);
|
|
109
|
+
};
|
|
110
|
+
return createSkill(metadata, executor);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Create test generation skill
|
|
114
|
+
*
|
|
115
|
+
* @returns Skill
|
|
116
|
+
*/
|
|
117
|
+
export function createTestGenerationSkill() {
|
|
118
|
+
const metadata = createSkillMetadata({
|
|
119
|
+
id: 'SKILL-TEST-GEN-001',
|
|
120
|
+
name: 'Test Generation',
|
|
121
|
+
description: 'コードからテストを自動生成',
|
|
122
|
+
type: 'testing',
|
|
123
|
+
parameters: [
|
|
124
|
+
createSkillParameter({
|
|
125
|
+
name: 'sourceCode',
|
|
126
|
+
type: 'string',
|
|
127
|
+
required: true,
|
|
128
|
+
description: 'テスト対象のソースコード',
|
|
129
|
+
}),
|
|
130
|
+
createSkillParameter({
|
|
131
|
+
name: 'framework',
|
|
132
|
+
type: 'string',
|
|
133
|
+
required: false,
|
|
134
|
+
description: 'テストフレームワーク (vitest, jest)',
|
|
135
|
+
default: 'vitest',
|
|
136
|
+
}),
|
|
137
|
+
],
|
|
138
|
+
tags: ['test', 'generation', 'vitest'],
|
|
139
|
+
});
|
|
140
|
+
const executor = async (context) => {
|
|
141
|
+
const sourceCode = context.parameters.sourceCode;
|
|
142
|
+
return createNoOpResult(`Generated tests for code with ${sourceCode.length} characters`);
|
|
143
|
+
};
|
|
144
|
+
return createSkill(metadata, executor);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Create knowledge graph query skill
|
|
148
|
+
*
|
|
149
|
+
* @returns Skill
|
|
150
|
+
*/
|
|
151
|
+
export function createKnowledgeGraphQuerySkill() {
|
|
152
|
+
const metadata = createSkillMetadata({
|
|
153
|
+
id: 'SKILL-KG-QUERY-001',
|
|
154
|
+
name: 'Knowledge Graph Query',
|
|
155
|
+
description: 'YATA知識グラフへのクエリ実行',
|
|
156
|
+
type: 'knowledge-graph',
|
|
157
|
+
parameters: [
|
|
158
|
+
createSkillParameter({
|
|
159
|
+
name: 'query',
|
|
160
|
+
type: 'string',
|
|
161
|
+
required: true,
|
|
162
|
+
description: 'SPARQLクエリまたは自然言語クエリ',
|
|
163
|
+
}),
|
|
164
|
+
createSkillParameter({
|
|
165
|
+
name: 'namespace',
|
|
166
|
+
type: 'string',
|
|
167
|
+
required: false,
|
|
168
|
+
description: '検索対象の名前空間',
|
|
169
|
+
default: 'default',
|
|
170
|
+
}),
|
|
171
|
+
],
|
|
172
|
+
tags: ['yata', 'knowledge-graph', 'query'],
|
|
173
|
+
});
|
|
174
|
+
const executor = async (context) => {
|
|
175
|
+
const query = context.parameters.query;
|
|
176
|
+
return createNoOpResult(`Queried knowledge graph: ${query.substring(0, 50)}...`);
|
|
177
|
+
};
|
|
178
|
+
return createSkill(metadata, executor);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get all built-in skills
|
|
182
|
+
*
|
|
183
|
+
* @returns Array of built-in skills
|
|
184
|
+
*/
|
|
185
|
+
export function getBuiltInSkills() {
|
|
186
|
+
return [
|
|
187
|
+
createRequirementsAnalysisSkill(),
|
|
188
|
+
createDesignGenerationSkill(),
|
|
189
|
+
createCodeAnalysisSkill(),
|
|
190
|
+
createTestGenerationSkill(),
|
|
191
|
+
createKnowledgeGraphQuerySkill(),
|
|
192
|
+
];
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Register all built-in skills with a manager
|
|
196
|
+
*
|
|
197
|
+
* @param registerFn - Registration function
|
|
198
|
+
*/
|
|
199
|
+
export function registerBuiltInSkills(registerFn) {
|
|
200
|
+
for (const skill of getBuiltInSkills()) {
|
|
201
|
+
registerFn(skill);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=BuiltInSkills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuiltInSkills.js","sourceRoot":"","sources":["../../src/application/BuiltInSkills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SkillManager - Application Service
|
|
3
|
+
*
|
|
4
|
+
* Main service for managing skills
|
|
5
|
+
*
|
|
6
|
+
* @see TSK-SKILL-002 - SkillManager
|
|
7
|
+
* @see REQ-SKILL-001 - Skill Loading
|
|
8
|
+
* @see DES-SKILL-001 - SkillManager Component
|
|
9
|
+
*/
|
|
10
|
+
import { type Skill, type SkillContext, type SkillResult, type SkillFilter, type SkillType, type SkillExecutor, getRegistryStats, createSkillMetadata } from '../domain/index.js';
|
|
11
|
+
import { type ValidationResult } from './SkillValidator.js';
|
|
12
|
+
/**
|
|
13
|
+
* Skill manager configuration
|
|
14
|
+
*/
|
|
15
|
+
export interface SkillManagerConfig {
|
|
16
|
+
/** Auto-validate skills on registration */
|
|
17
|
+
autoValidate?: boolean;
|
|
18
|
+
/** Allow registering invalid skills */
|
|
19
|
+
allowInvalid?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Skill registration result
|
|
23
|
+
*/
|
|
24
|
+
export interface SkillRegistrationResult {
|
|
25
|
+
readonly success: boolean;
|
|
26
|
+
readonly skillId?: string;
|
|
27
|
+
readonly error?: string;
|
|
28
|
+
readonly validation?: ValidationResult;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Skill Manager
|
|
32
|
+
*
|
|
33
|
+
* Manages skill lifecycle and execution
|
|
34
|
+
*/
|
|
35
|
+
export declare class SkillManager {
|
|
36
|
+
private registry;
|
|
37
|
+
private readonly validator;
|
|
38
|
+
private readonly config;
|
|
39
|
+
constructor(config?: SkillManagerConfig);
|
|
40
|
+
/**
|
|
41
|
+
* Register a skill
|
|
42
|
+
*
|
|
43
|
+
* @param skill - Skill to register
|
|
44
|
+
* @returns Registration result
|
|
45
|
+
*/
|
|
46
|
+
registerSkill(skill: Skill): SkillRegistrationResult;
|
|
47
|
+
/**
|
|
48
|
+
* Create and register a skill
|
|
49
|
+
*
|
|
50
|
+
* @param metadata - Skill metadata params
|
|
51
|
+
* @param executor - Skill executor
|
|
52
|
+
* @returns Registration result
|
|
53
|
+
*/
|
|
54
|
+
createAndRegister(metadata: Parameters<typeof createSkillMetadata>[0], executor: SkillExecutor): SkillRegistrationResult;
|
|
55
|
+
/**
|
|
56
|
+
* Unregister a skill
|
|
57
|
+
*
|
|
58
|
+
* @param skillId - Skill ID
|
|
59
|
+
* @returns true if removed
|
|
60
|
+
*/
|
|
61
|
+
unregisterSkill(skillId: string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Get a skill by ID
|
|
64
|
+
*
|
|
65
|
+
* @param skillId - Skill ID
|
|
66
|
+
* @returns Skill or undefined
|
|
67
|
+
*/
|
|
68
|
+
getSkill(skillId: string): Skill | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Find skills by filter
|
|
71
|
+
*
|
|
72
|
+
* @param filter - Filter criteria
|
|
73
|
+
* @returns Matching skills
|
|
74
|
+
*/
|
|
75
|
+
findSkills(filter: SkillFilter): Skill[];
|
|
76
|
+
/**
|
|
77
|
+
* Get all skills
|
|
78
|
+
*
|
|
79
|
+
* @returns All skills
|
|
80
|
+
*/
|
|
81
|
+
getAllSkills(): Skill[];
|
|
82
|
+
/**
|
|
83
|
+
* Execute a skill
|
|
84
|
+
*
|
|
85
|
+
* @param skillId - Skill ID
|
|
86
|
+
* @param context - Execution context
|
|
87
|
+
* @returns Execution result
|
|
88
|
+
*/
|
|
89
|
+
executeSkill(skillId: string, context: SkillContext): Promise<SkillResult>;
|
|
90
|
+
/**
|
|
91
|
+
* Enable a skill
|
|
92
|
+
*
|
|
93
|
+
* @param skillId - Skill ID
|
|
94
|
+
* @returns true if enabled
|
|
95
|
+
*/
|
|
96
|
+
enableSkill(skillId: string): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Disable a skill
|
|
99
|
+
*
|
|
100
|
+
* @param skillId - Skill ID
|
|
101
|
+
* @returns true if disabled
|
|
102
|
+
*/
|
|
103
|
+
disableSkill(skillId: string): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Get registry statistics
|
|
106
|
+
*
|
|
107
|
+
* @returns Statistics
|
|
108
|
+
*/
|
|
109
|
+
getStats(): ReturnType<typeof getRegistryStats>;
|
|
110
|
+
/**
|
|
111
|
+
* Validate a skill without registering
|
|
112
|
+
*
|
|
113
|
+
* @param skill - Skill to validate
|
|
114
|
+
* @returns Validation result
|
|
115
|
+
*/
|
|
116
|
+
validateSkill(skill: Skill): ValidationResult;
|
|
117
|
+
/**
|
|
118
|
+
* Clear all skills
|
|
119
|
+
*/
|
|
120
|
+
clearAll(): void;
|
|
121
|
+
/**
|
|
122
|
+
* Get skills by type
|
|
123
|
+
*
|
|
124
|
+
* @param type - Skill type
|
|
125
|
+
* @returns Skills of the specified type
|
|
126
|
+
*/
|
|
127
|
+
getSkillsByType(type: SkillType): Skill[];
|
|
128
|
+
/**
|
|
129
|
+
* Check if a skill exists
|
|
130
|
+
*
|
|
131
|
+
* @param skillId - Skill ID
|
|
132
|
+
* @returns true if exists
|
|
133
|
+
*/
|
|
134
|
+
hasSkill(skillId: string): boolean;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Create a skill manager instance
|
|
138
|
+
*
|
|
139
|
+
* @param config - Configuration
|
|
140
|
+
* @returns SkillManager instance
|
|
141
|
+
*/
|
|
142
|
+
export declare function createSkillManager(config?: SkillManagerConfig): SkillManager;
|
|
143
|
+
//# sourceMappingURL=SkillManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillManager.d.ts","sourceRoot":"","sources":["../../src/application/SkillManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,WAAW,EAEhB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAQlB,gBAAgB,EAEhB,mBAAmB,EAGpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uCAAuC;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACxC;AAED;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAEhC,MAAM,GAAE,kBAAuB;IAU3C;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,uBAAuB;IA8BpD;;;;;;OAMG;IACH,iBAAiB,CACf,QAAQ,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,EACnD,QAAQ,EAAE,aAAa,GACtB,uBAAuB;IAM1B;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAUzC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAI5C;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE;IAIxC;;;;OAIG;IACH,YAAY,IAAI,KAAK,EAAE;IAIvB;;;;;;OAMG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC;IA6BvB;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWrC;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWtC;;;;OAIG;IACH,QAAQ,IAAI,UAAU,CAAC,OAAO,gBAAgB,CAAC;IAI/C;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,gBAAgB;IAI7C;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE;IAIzC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGnC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,YAAY,CAE5E"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SkillManager - Application Service
|
|
3
|
+
*
|
|
4
|
+
* Main service for managing skills
|
|
5
|
+
*
|
|
6
|
+
* @see TSK-SKILL-002 - SkillManager
|
|
7
|
+
* @see REQ-SKILL-001 - Skill Loading
|
|
8
|
+
* @see DES-SKILL-001 - SkillManager Component
|
|
9
|
+
*/
|
|
10
|
+
import { createSkillRegistry, addSkillToRegistry, removeSkillFromRegistry, getSkillById, findSkills, getAllSkills, executeSkillFromRegistry, getRegistryStats, createSkill, createSkillMetadata, enableSkill, disableSkill, } from '../domain/index.js';
|
|
11
|
+
import { SkillValidator } from './SkillValidator.js';
|
|
12
|
+
/**
|
|
13
|
+
* Skill Manager
|
|
14
|
+
*
|
|
15
|
+
* Manages skill lifecycle and execution
|
|
16
|
+
*/
|
|
17
|
+
export class SkillManager {
|
|
18
|
+
registry;
|
|
19
|
+
validator;
|
|
20
|
+
config;
|
|
21
|
+
constructor(config = {}) {
|
|
22
|
+
this.registry = createSkillRegistry();
|
|
23
|
+
this.validator = new SkillValidator();
|
|
24
|
+
this.config = {
|
|
25
|
+
autoValidate: true,
|
|
26
|
+
allowInvalid: false,
|
|
27
|
+
...config,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Register a skill
|
|
32
|
+
*
|
|
33
|
+
* @param skill - Skill to register
|
|
34
|
+
* @returns Registration result
|
|
35
|
+
*/
|
|
36
|
+
registerSkill(skill) {
|
|
37
|
+
// Validate if configured
|
|
38
|
+
if (this.config.autoValidate) {
|
|
39
|
+
const validation = this.validator.validateSkill(skill);
|
|
40
|
+
if (!validation.valid && !this.config.allowInvalid) {
|
|
41
|
+
return {
|
|
42
|
+
success: false,
|
|
43
|
+
error: `Skill validation failed: ${validation.errors.join(', ')}`,
|
|
44
|
+
validation,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
this.registry = addSkillToRegistry(this.registry, skill);
|
|
48
|
+
return {
|
|
49
|
+
success: true,
|
|
50
|
+
skillId: skill.metadata.id,
|
|
51
|
+
validation,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
this.registry = addSkillToRegistry(this.registry, skill);
|
|
55
|
+
return {
|
|
56
|
+
success: true,
|
|
57
|
+
skillId: skill.metadata.id,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create and register a skill
|
|
62
|
+
*
|
|
63
|
+
* @param metadata - Skill metadata params
|
|
64
|
+
* @param executor - Skill executor
|
|
65
|
+
* @returns Registration result
|
|
66
|
+
*/
|
|
67
|
+
createAndRegister(metadata, executor) {
|
|
68
|
+
const skillMetadata = createSkillMetadata(metadata);
|
|
69
|
+
const skill = createSkill(skillMetadata, executor);
|
|
70
|
+
return this.registerSkill(skill);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Unregister a skill
|
|
74
|
+
*
|
|
75
|
+
* @param skillId - Skill ID
|
|
76
|
+
* @returns true if removed
|
|
77
|
+
*/
|
|
78
|
+
unregisterSkill(skillId) {
|
|
79
|
+
const skill = getSkillById(this.registry, skillId);
|
|
80
|
+
if (!skill) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
this.registry = removeSkillFromRegistry(this.registry, skillId);
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get a skill by ID
|
|
88
|
+
*
|
|
89
|
+
* @param skillId - Skill ID
|
|
90
|
+
* @returns Skill or undefined
|
|
91
|
+
*/
|
|
92
|
+
getSkill(skillId) {
|
|
93
|
+
return getSkillById(this.registry, skillId);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Find skills by filter
|
|
97
|
+
*
|
|
98
|
+
* @param filter - Filter criteria
|
|
99
|
+
* @returns Matching skills
|
|
100
|
+
*/
|
|
101
|
+
findSkills(filter) {
|
|
102
|
+
return findSkills(this.registry, filter);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get all skills
|
|
106
|
+
*
|
|
107
|
+
* @returns All skills
|
|
108
|
+
*/
|
|
109
|
+
getAllSkills() {
|
|
110
|
+
return getAllSkills(this.registry);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Execute a skill
|
|
114
|
+
*
|
|
115
|
+
* @param skillId - Skill ID
|
|
116
|
+
* @param context - Execution context
|
|
117
|
+
* @returns Execution result
|
|
118
|
+
*/
|
|
119
|
+
async executeSkill(skillId, context) {
|
|
120
|
+
const skill = getSkillById(this.registry, skillId);
|
|
121
|
+
if (!skill) {
|
|
122
|
+
return {
|
|
123
|
+
success: false,
|
|
124
|
+
error: `Skill not found: ${skillId}`,
|
|
125
|
+
duration: 0,
|
|
126
|
+
timestamp: new Date(),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// Validate parameters if configured
|
|
130
|
+
if (this.config.autoValidate) {
|
|
131
|
+
const paramValidation = this.validator.validateParameters(skill, context);
|
|
132
|
+
if (!paramValidation.valid) {
|
|
133
|
+
return {
|
|
134
|
+
success: false,
|
|
135
|
+
error: `Parameter validation failed: ${paramValidation.errors.join(', ')}`,
|
|
136
|
+
duration: 0,
|
|
137
|
+
timestamp: new Date(),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return executeSkillFromRegistry(this.registry, skillId, context);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Enable a skill
|
|
145
|
+
*
|
|
146
|
+
* @param skillId - Skill ID
|
|
147
|
+
* @returns true if enabled
|
|
148
|
+
*/
|
|
149
|
+
enableSkill(skillId) {
|
|
150
|
+
const skill = getSkillById(this.registry, skillId);
|
|
151
|
+
if (!skill) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
const enabled = enableSkill(skill);
|
|
155
|
+
this.registry = addSkillToRegistry(this.registry, enabled);
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Disable a skill
|
|
160
|
+
*
|
|
161
|
+
* @param skillId - Skill ID
|
|
162
|
+
* @returns true if disabled
|
|
163
|
+
*/
|
|
164
|
+
disableSkill(skillId) {
|
|
165
|
+
const skill = getSkillById(this.registry, skillId);
|
|
166
|
+
if (!skill) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
const disabled = disableSkill(skill);
|
|
170
|
+
this.registry = addSkillToRegistry(this.registry, disabled);
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Get registry statistics
|
|
175
|
+
*
|
|
176
|
+
* @returns Statistics
|
|
177
|
+
*/
|
|
178
|
+
getStats() {
|
|
179
|
+
return getRegistryStats(this.registry);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Validate a skill without registering
|
|
183
|
+
*
|
|
184
|
+
* @param skill - Skill to validate
|
|
185
|
+
* @returns Validation result
|
|
186
|
+
*/
|
|
187
|
+
validateSkill(skill) {
|
|
188
|
+
return this.validator.validateSkill(skill);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Clear all skills
|
|
192
|
+
*/
|
|
193
|
+
clearAll() {
|
|
194
|
+
this.registry = createSkillRegistry();
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Get skills by type
|
|
198
|
+
*
|
|
199
|
+
* @param type - Skill type
|
|
200
|
+
* @returns Skills of the specified type
|
|
201
|
+
*/
|
|
202
|
+
getSkillsByType(type) {
|
|
203
|
+
return this.findSkills({ type, enabledOnly: true });
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Check if a skill exists
|
|
207
|
+
*
|
|
208
|
+
* @param skillId - Skill ID
|
|
209
|
+
* @returns true if exists
|
|
210
|
+
*/
|
|
211
|
+
hasSkill(skillId) {
|
|
212
|
+
return getSkillById(this.registry, skillId) !== undefined;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Create a skill manager instance
|
|
217
|
+
*
|
|
218
|
+
* @param config - Configuration
|
|
219
|
+
* @returns SkillManager instance
|
|
220
|
+
*/
|
|
221
|
+
export function createSkillManager(config) {
|
|
222
|
+
return new SkillManager(config);
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=SkillManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillManager.js","sourceRoot":"","sources":["../../src/application/SkillManager.ts"],"names":[],"mappings":"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"}
|