@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.
Files changed (49) hide show
  1. package/dist/application/BuiltInSkills.d.ts +51 -0
  2. package/dist/application/BuiltInSkills.d.ts.map +1 -0
  3. package/dist/application/BuiltInSkills.js +204 -0
  4. package/dist/application/BuiltInSkills.js.map +1 -0
  5. package/dist/application/SkillManager.d.ts +143 -0
  6. package/dist/application/SkillManager.d.ts.map +1 -0
  7. package/dist/application/SkillManager.js +224 -0
  8. package/dist/application/SkillManager.js.map +1 -0
  9. package/dist/application/SkillValidator.d.ts +76 -0
  10. package/dist/application/SkillValidator.d.ts.map +1 -0
  11. package/dist/application/SkillValidator.js +168 -0
  12. package/dist/application/SkillValidator.js.map +1 -0
  13. package/dist/application/index.d.ts +10 -0
  14. package/dist/application/index.d.ts.map +1 -0
  15. package/dist/application/index.js +10 -0
  16. package/dist/application/index.js.map +1 -0
  17. package/dist/domain/entities/Skill.d.ts +99 -0
  18. package/dist/domain/entities/Skill.d.ts.map +1 -0
  19. package/dist/domain/entities/Skill.js +133 -0
  20. package/dist/domain/entities/Skill.js.map +1 -0
  21. package/dist/domain/entities/SkillRegistry.d.ts +101 -0
  22. package/dist/domain/entities/SkillRegistry.d.ts.map +1 -0
  23. package/dist/domain/entities/SkillRegistry.js +158 -0
  24. package/dist/domain/entities/SkillRegistry.js.map +1 -0
  25. package/dist/domain/entities/index.d.ts +9 -0
  26. package/dist/domain/entities/index.d.ts.map +1 -0
  27. package/dist/domain/entities/index.js +9 -0
  28. package/dist/domain/entities/index.js.map +1 -0
  29. package/dist/domain/index.d.ts +9 -0
  30. package/dist/domain/index.d.ts.map +1 -0
  31. package/dist/domain/index.js +11 -0
  32. package/dist/domain/index.js.map +1 -0
  33. package/dist/domain/value-objects/SkillMetadata.d.ts +82 -0
  34. package/dist/domain/value-objects/SkillMetadata.d.ts.map +1 -0
  35. package/dist/domain/value-objects/SkillMetadata.js +94 -0
  36. package/dist/domain/value-objects/SkillMetadata.js.map +1 -0
  37. package/dist/domain/value-objects/SkillType.d.ts +46 -0
  38. package/dist/domain/value-objects/SkillType.d.ts.map +1 -0
  39. package/dist/domain/value-objects/SkillType.js +110 -0
  40. package/dist/domain/value-objects/SkillType.js.map +1 -0
  41. package/dist/domain/value-objects/index.d.ts +9 -0
  42. package/dist/domain/value-objects/index.d.ts.map +1 -0
  43. package/dist/domain/value-objects/index.js +9 -0
  44. package/dist/domain/value-objects/index.js.map +1 -0
  45. package/dist/index.d.ts +16 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +16 -0
  48. package/dist/index.js.map +1 -0
  49. 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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAIL,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,UAAU,+BAA+B;IAC7C,MAAM,QAAQ,GAAG,mBAAmB,CAAC;QACnC,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE;YACV,oBAAoB,CAAC;gBACnB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,cAAc;aAC5B,CAAC;YACF,oBAAoB,CAAC;gBACnB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,uBAAuB;gBACpC,OAAO,EAAE,UAAU;aACpB,CAAC;SACH;QACD,IAAI,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC;KAC3C,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAqB,EAAwB,EAAE;QACrE,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAe,CAAC;QACjD,6BAA6B;QAC7B,OAAO,gBAAgB,CAAC,+BAA+B,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,QAAQ,GAAG,mBAAmB,CAAC;QACnC,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,gBAAgB;QAC7B,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,oBAAoB,CAAC;gBACnB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,YAAY;aAC1B,CAAC;YACF,oBAAoB,CAAC;gBACnB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,6CAA6C;gBAC1D,OAAO,EAAE,WAAW;aACrB,CAAC;SACH;QACD,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC;KACrC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAqB,EAAwB,EAAE;QACrE,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,YAAyB,CAAC;QAClE,OAAO,gBAAgB,CAAC,wBAAwB,YAAY,CAAC,MAAM,eAAe,CAAC,CAAC;IACtF,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,QAAQ,GAAG,mBAAmB,CAAC;QACnC,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,aAAa;QAC1B,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE;YACV,oBAAoB,CAAC;gBACnB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,aAAa;aAC3B,CAAC;YACF,oBAAoB,CAAC;gBACnB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,uCAAuC;gBACpD,OAAO,EAAE,KAAK;aACf,CAAC;SACH;QACD,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;KAClC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAqB,EAAwB,EAAE;QACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,QAAkB,CAAC;QACvD,OAAO,gBAAgB,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,QAAQ,GAAG,mBAAmB,CAAC;QACnC,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,eAAe;QAC5B,IAAI,EAAE,SAAS;QACf,UAAU,EAAE;YACV,oBAAoB,CAAC;gBACnB,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,cAAc;aAC5B,CAAC;YACF,oBAAoB,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,2BAA2B;gBACxC,OAAO,EAAE,QAAQ;aAClB,CAAC;SACH;QACD,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC;KACvC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAqB,EAAwB,EAAE;QACrE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,UAAoB,CAAC;QAC3D,OAAO,gBAAgB,CAAC,iCAAiC,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC;IAC3F,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B;IAC5C,MAAM,QAAQ,GAAG,mBAAmB,CAAC;QACnC,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,iBAAiB;QACvB,UAAU,EAAE;YACV,oBAAoB,CAAC;gBACnB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,qBAAqB;aACnC,CAAC;YACF,oBAAoB,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,WAAW;gBACxB,OAAO,EAAE,SAAS;aACnB,CAAC;SACH;QACD,IAAI,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC;KAC3C,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAqB,EAAwB,EAAE;QACrE,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAe,CAAC;QACjD,OAAO,gBAAgB,CAAC,4BAA4B,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IACnF,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,+BAA+B,EAAE;QACjC,2BAA2B,EAAE;QAC7B,uBAAuB,EAAE;QACzB,yBAAyB,EAAE;QAC3B,8BAA8B,EAAE;KACjC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAkC;IAElC,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAQL,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAyB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAsB5E;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACf,QAAQ,CAAgB;IACf,SAAS,CAAiB;IAC1B,MAAM,CAAqB;IAE5C,YAAY,SAA6B,EAAE;QACzC,IAAI,CAAC,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG;YACZ,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,KAAK;YACnB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,KAAY;QACxB,yBAAyB;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAEvD,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACnD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,4BAA4B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACjE,UAAU;iBACX,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAEzD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;gBAC1B,UAAU;aACX,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEzD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;SAC3B,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CACf,QAAmD,EACnD,QAAuB;QAEvB,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,OAAe;QAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,OAAe;QACtB,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,MAAmB;QAC5B,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAChB,OAAe,EACf,OAAqB;QAErB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,oBAAoB,OAAO,EAAE;gBACpC,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAE1E,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,gCAAgC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC1E,QAAQ,EAAE,CAAC;oBACX,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,OAAe;QACzB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,OAAe;QAC1B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,OAAO,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,KAAY;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,IAAe;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,OAAe;QACtB,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC;IAC5D,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA2B;IAC5D,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}