@vinkius-core/mcp-fusion 0.1.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/LICENSE +190 -0
- package/README.md +391 -0
- package/dist/src/AbstractBase.d.ts +24 -0
- package/dist/src/AbstractBase.d.ts.map +1 -0
- package/dist/src/AbstractBase.js +63 -0
- package/dist/src/AbstractBase.js.map +1 -0
- package/dist/src/AbstractLeaf.d.ts +12 -0
- package/dist/src/AbstractLeaf.d.ts.map +1 -0
- package/dist/src/AbstractLeaf.js +32 -0
- package/dist/src/AbstractLeaf.js.map +1 -0
- package/dist/src/Annotations.d.ts +15 -0
- package/dist/src/Annotations.d.ts.map +1 -0
- package/dist/src/Annotations.js +29 -0
- package/dist/src/Annotations.js.map +1 -0
- package/dist/src/Group.d.ts +32 -0
- package/dist/src/Group.d.ts.map +1 -0
- package/dist/src/Group.js +131 -0
- package/dist/src/Group.js.map +1 -0
- package/dist/src/Icon.d.ts +19 -0
- package/dist/src/Icon.d.ts.map +1 -0
- package/dist/src/Icon.js +33 -0
- package/dist/src/Icon.js.map +1 -0
- package/dist/src/Prompt.d.ts +11 -0
- package/dist/src/Prompt.d.ts.map +1 -0
- package/dist/src/Prompt.js +28 -0
- package/dist/src/Prompt.js.map +1 -0
- package/dist/src/PromptArgument.d.ts +10 -0
- package/dist/src/PromptArgument.d.ts.map +1 -0
- package/dist/src/PromptArgument.js +20 -0
- package/dist/src/PromptArgument.js.map +1 -0
- package/dist/src/Resource.d.ts +19 -0
- package/dist/src/Resource.d.ts.map +1 -0
- package/dist/src/Resource.js +34 -0
- package/dist/src/Resource.js.map +1 -0
- package/dist/src/Role.d.ts +5 -0
- package/dist/src/Role.d.ts.map +1 -0
- package/dist/src/Role.js +6 -0
- package/dist/src/Role.js.map +1 -0
- package/dist/src/Tool.d.ts +16 -0
- package/dist/src/Tool.d.ts.map +1 -0
- package/dist/src/Tool.js +28 -0
- package/dist/src/Tool.js.map +1 -0
- package/dist/src/ToolAnnotations.d.ts +23 -0
- package/dist/src/ToolAnnotations.d.ts.map +1 -0
- package/dist/src/ToolAnnotations.js +44 -0
- package/dist/src/ToolAnnotations.js.map +1 -0
- package/dist/src/converters/GroupConverter.d.ts +14 -0
- package/dist/src/converters/GroupConverter.d.ts.map +1 -0
- package/dist/src/converters/GroupConverter.js +13 -0
- package/dist/src/converters/GroupConverter.js.map +1 -0
- package/dist/src/converters/PromptConverter.d.ts +14 -0
- package/dist/src/converters/PromptConverter.d.ts.map +1 -0
- package/dist/src/converters/PromptConverter.js +13 -0
- package/dist/src/converters/PromptConverter.js.map +1 -0
- package/dist/src/converters/ResourceConverter.d.ts +14 -0
- package/dist/src/converters/ResourceConverter.d.ts.map +1 -0
- package/dist/src/converters/ResourceConverter.js +13 -0
- package/dist/src/converters/ResourceConverter.js.map +1 -0
- package/dist/src/converters/ToolAnnotationsConverter.d.ts +16 -0
- package/dist/src/converters/ToolAnnotationsConverter.d.ts.map +1 -0
- package/dist/src/converters/ToolAnnotationsConverter.js +23 -0
- package/dist/src/converters/ToolAnnotationsConverter.js.map +1 -0
- package/dist/src/converters/ToolConverter.d.ts +14 -0
- package/dist/src/converters/ToolConverter.d.ts.map +1 -0
- package/dist/src/converters/ToolConverter.js +13 -0
- package/dist/src/converters/ToolConverter.js.map +1 -0
- package/dist/src/converters/index.d.ts +6 -0
- package/dist/src/converters/index.d.ts.map +1 -0
- package/dist/src/converters/index.js +6 -0
- package/dist/src/converters/index.js.map +1 -0
- package/dist/src/framework/GroupedToolBuilder.d.ts +137 -0
- package/dist/src/framework/GroupedToolBuilder.d.ts.map +1 -0
- package/dist/src/framework/GroupedToolBuilder.js +289 -0
- package/dist/src/framework/GroupedToolBuilder.js.map +1 -0
- package/dist/src/framework/ResponseHelper.d.ts +43 -0
- package/dist/src/framework/ResponseHelper.d.ts.map +1 -0
- package/dist/src/framework/ResponseHelper.js +49 -0
- package/dist/src/framework/ResponseHelper.js.map +1 -0
- package/dist/src/framework/ToolBuilder.d.ts +46 -0
- package/dist/src/framework/ToolBuilder.d.ts.map +1 -0
- package/dist/src/framework/ToolBuilder.js +2 -0
- package/dist/src/framework/ToolBuilder.js.map +1 -0
- package/dist/src/framework/ToolRegistry.d.ts +85 -0
- package/dist/src/framework/ToolRegistry.d.ts.map +1 -0
- package/dist/src/framework/ToolRegistry.js +153 -0
- package/dist/src/framework/ToolRegistry.js.map +1 -0
- package/dist/src/framework/index.d.ts +9 -0
- package/dist/src/framework/index.d.ts.map +1 -0
- package/dist/src/framework/index.js +8 -0
- package/dist/src/framework/index.js.map +1 -0
- package/dist/src/framework/strategies/AnnotationAggregator.d.ts +11 -0
- package/dist/src/framework/strategies/AnnotationAggregator.d.ts.map +1 -0
- package/dist/src/framework/strategies/AnnotationAggregator.js +25 -0
- package/dist/src/framework/strategies/AnnotationAggregator.js.map +1 -0
- package/dist/src/framework/strategies/DescriptionGenerator.d.ts +12 -0
- package/dist/src/framework/strategies/DescriptionGenerator.d.ts.map +1 -0
- package/dist/src/framework/strategies/DescriptionGenerator.js +70 -0
- package/dist/src/framework/strategies/DescriptionGenerator.js.map +1 -0
- package/dist/src/framework/strategies/MiddlewareCompiler.d.ts +13 -0
- package/dist/src/framework/strategies/MiddlewareCompiler.d.ts.map +1 -0
- package/dist/src/framework/strategies/MiddlewareCompiler.js +24 -0
- package/dist/src/framework/strategies/MiddlewareCompiler.js.map +1 -0
- package/dist/src/framework/strategies/SchemaGenerator.d.ts +15 -0
- package/dist/src/framework/strategies/SchemaGenerator.d.ts.map +1 -0
- package/dist/src/framework/strategies/SchemaGenerator.js +97 -0
- package/dist/src/framework/strategies/SchemaGenerator.js.map +1 -0
- package/dist/src/framework/strategies/SchemaUtils.d.ts +7 -0
- package/dist/src/framework/strategies/SchemaUtils.d.ts.map +1 -0
- package/dist/src/framework/strategies/SchemaUtils.js +17 -0
- package/dist/src/framework/strategies/SchemaUtils.js.map +1 -0
- package/dist/src/framework/strategies/ToonDescriptionGenerator.d.ts +3 -0
- package/dist/src/framework/strategies/ToonDescriptionGenerator.d.ts.map +1 -0
- package/dist/src/framework/strategies/ToonDescriptionGenerator.js +53 -0
- package/dist/src/framework/strategies/ToonDescriptionGenerator.js.map +1 -0
- package/dist/src/framework/strategies/Types.d.ts +34 -0
- package/dist/src/framework/strategies/Types.d.ts.map +1 -0
- package/dist/src/framework/strategies/Types.js +2 -0
- package/dist/src/framework/strategies/Types.js.map +1 -0
- package/dist/src/framework/strategies/index.d.ts +12 -0
- package/dist/src/framework/strategies/index.d.ts.map +1 -0
- package/dist/src/framework/strategies/index.js +11 -0
- package/dist/src/framework/strategies/index.js.map +1 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +15 -0
- package/dist/src/index.js.map +1 -0
- package/dist/tests/AbstractBase.test.d.ts +2 -0
- package/dist/tests/AbstractBase.test.d.ts.map +1 -0
- package/dist/tests/AbstractBase.test.js +130 -0
- package/dist/tests/AbstractBase.test.js.map +1 -0
- package/dist/tests/AbstractLeaf.test.d.ts +2 -0
- package/dist/tests/AbstractLeaf.test.d.ts.map +1 -0
- package/dist/tests/AbstractLeaf.test.js +65 -0
- package/dist/tests/AbstractLeaf.test.js.map +1 -0
- package/dist/tests/Annotations.test.d.ts +2 -0
- package/dist/tests/Annotations.test.d.ts.map +1 -0
- package/dist/tests/Annotations.test.js +34 -0
- package/dist/tests/Annotations.test.js.map +1 -0
- package/dist/tests/BarrelExport.test.d.ts +2 -0
- package/dist/tests/BarrelExport.test.d.ts.map +1 -0
- package/dist/tests/BarrelExport.test.js +42 -0
- package/dist/tests/BarrelExport.test.js.map +1 -0
- package/dist/tests/Converters.test.d.ts +2 -0
- package/dist/tests/Converters.test.d.ts.map +1 -0
- package/dist/tests/Converters.test.js +193 -0
- package/dist/tests/Converters.test.js.map +1 -0
- package/dist/tests/Group.test.d.ts +2 -0
- package/dist/tests/Group.test.d.ts.map +1 -0
- package/dist/tests/Group.test.js +257 -0
- package/dist/tests/Group.test.js.map +1 -0
- package/dist/tests/Icon.test.d.ts +2 -0
- package/dist/tests/Icon.test.d.ts.map +1 -0
- package/dist/tests/Icon.test.js +44 -0
- package/dist/tests/Icon.test.js.map +1 -0
- package/dist/tests/Prompt.test.d.ts +2 -0
- package/dist/tests/Prompt.test.d.ts.map +1 -0
- package/dist/tests/Prompt.test.js +63 -0
- package/dist/tests/Prompt.test.js.map +1 -0
- package/dist/tests/PromptArgument.test.d.ts +2 -0
- package/dist/tests/PromptArgument.test.d.ts.map +1 -0
- package/dist/tests/PromptArgument.test.js +37 -0
- package/dist/tests/PromptArgument.test.js.map +1 -0
- package/dist/tests/Resource.test.d.ts +2 -0
- package/dist/tests/Resource.test.d.ts.map +1 -0
- package/dist/tests/Resource.test.js +61 -0
- package/dist/tests/Resource.test.js.map +1 -0
- package/dist/tests/Role.test.d.ts +2 -0
- package/dist/tests/Role.test.d.ts.map +1 -0
- package/dist/tests/Role.test.js +17 -0
- package/dist/tests/Role.test.js.map +1 -0
- package/dist/tests/Tool.test.d.ts +2 -0
- package/dist/tests/Tool.test.d.ts.map +1 -0
- package/dist/tests/Tool.test.js +62 -0
- package/dist/tests/Tool.test.js.map +1 -0
- package/dist/tests/ToolAnnotations.test.d.ts +2 -0
- package/dist/tests/ToolAnnotations.test.d.ts.map +1 -0
- package/dist/tests/ToolAnnotations.test.js +55 -0
- package/dist/tests/ToolAnnotations.test.js.map +1 -0
- package/dist/tests/framework/AdversarialQA.test.d.ts +2 -0
- package/dist/tests/framework/AdversarialQA.test.d.ts.map +1 -0
- package/dist/tests/framework/AdversarialQA.test.js +906 -0
- package/dist/tests/framework/AdversarialQA.test.js.map +1 -0
- package/dist/tests/framework/GroupedToolBuilder.test.d.ts +2 -0
- package/dist/tests/framework/GroupedToolBuilder.test.d.ts.map +1 -0
- package/dist/tests/framework/GroupedToolBuilder.test.js +712 -0
- package/dist/tests/framework/GroupedToolBuilder.test.js.map +1 -0
- package/dist/tests/framework/LargeScaleScenarios.test.d.ts +2 -0
- package/dist/tests/framework/LargeScaleScenarios.test.d.ts.map +1 -0
- package/dist/tests/framework/LargeScaleScenarios.test.js +1043 -0
- package/dist/tests/framework/LargeScaleScenarios.test.js.map +1 -0
- package/dist/tests/framework/McpServerAdapter.test.d.ts +2 -0
- package/dist/tests/framework/McpServerAdapter.test.d.ts.map +1 -0
- package/dist/tests/framework/McpServerAdapter.test.js +380 -0
- package/dist/tests/framework/McpServerAdapter.test.js.map +1 -0
- package/dist/tests/framework/ResponseHelper.test.d.ts +2 -0
- package/dist/tests/framework/ResponseHelper.test.d.ts.map +1 -0
- package/dist/tests/framework/ResponseHelper.test.js +202 -0
- package/dist/tests/framework/ResponseHelper.test.js.map +1 -0
- package/dist/tests/framework/SecurityDeep.test.d.ts +2 -0
- package/dist/tests/framework/SecurityDeep.test.d.ts.map +1 -0
- package/dist/tests/framework/SecurityDeep.test.js +825 -0
- package/dist/tests/framework/SecurityDeep.test.js.map +1 -0
- package/dist/tests/framework/ToolRegistry.test.d.ts +2 -0
- package/dist/tests/framework/ToolRegistry.test.d.ts.map +1 -0
- package/dist/tests/framework/ToolRegistry.test.js +152 -0
- package/dist/tests/framework/ToolRegistry.test.js.map +1 -0
- package/dist/tests/framework/ToonDescription.test.d.ts +2 -0
- package/dist/tests/framework/ToonDescription.test.d.ts.map +1 -0
- package/dist/tests/framework/ToonDescription.test.js +287 -0
- package/dist/tests/framework/ToonDescription.test.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { Group } from '../src/Group.js';
|
|
3
|
+
import { Tool } from '../src/Tool.js';
|
|
4
|
+
import { Prompt } from '../src/Prompt.js';
|
|
5
|
+
import { Resource } from '../src/Resource.js';
|
|
6
|
+
import { ToolAnnotations } from '../src/ToolAnnotations.js';
|
|
7
|
+
import { AbstractGroupConverter, AbstractToolConverter, AbstractPromptConverter, AbstractResourceConverter, AbstractToolAnnotationsConverter } from '../src/converters/index.js';
|
|
8
|
+
class TestGroupConverter extends AbstractGroupConverter {
|
|
9
|
+
convertFromGroup(group) {
|
|
10
|
+
return { name: group.getName(), title: group.getTitle() };
|
|
11
|
+
}
|
|
12
|
+
convertToGroup(dto) {
|
|
13
|
+
const group = new Group(dto.name);
|
|
14
|
+
if (dto.title)
|
|
15
|
+
group.setTitle(dto.title);
|
|
16
|
+
return group;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
class TestToolConverter extends AbstractToolConverter {
|
|
20
|
+
convertFromTool(tool) {
|
|
21
|
+
return { name: tool.getName(), schema: tool.getInputSchema() };
|
|
22
|
+
}
|
|
23
|
+
convertToTool(dto) {
|
|
24
|
+
const tool = new Tool(dto.name);
|
|
25
|
+
if (dto.schema)
|
|
26
|
+
tool.setInputSchema(dto.schema);
|
|
27
|
+
return tool;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
class TestPromptConverter extends AbstractPromptConverter {
|
|
31
|
+
convertFromPrompt(prompt) {
|
|
32
|
+
return { name: prompt.getName() };
|
|
33
|
+
}
|
|
34
|
+
convertToPrompt(dto) {
|
|
35
|
+
return new Prompt(dto.name);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
class TestResourceConverter extends AbstractResourceConverter {
|
|
39
|
+
convertFromResource(resource) {
|
|
40
|
+
return { name: resource.getName(), uri: resource.getUri() };
|
|
41
|
+
}
|
|
42
|
+
convertToResource(dto) {
|
|
43
|
+
const resource = new Resource(dto.name);
|
|
44
|
+
if (dto.uri)
|
|
45
|
+
resource.setUri(dto.uri);
|
|
46
|
+
return resource;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
class TestToolAnnotationsConverter extends AbstractToolAnnotationsConverter {
|
|
50
|
+
convertFromToolAnnotationsSingle(ta) {
|
|
51
|
+
return { title: ta.getTitle(), readOnly: ta.getReadOnlyHint() };
|
|
52
|
+
}
|
|
53
|
+
convertToToolAnnotationsSingle(dto) {
|
|
54
|
+
const ta = new ToolAnnotations();
|
|
55
|
+
if (dto.title)
|
|
56
|
+
ta.setTitle(dto.title);
|
|
57
|
+
if (dto.readOnly !== undefined)
|
|
58
|
+
ta.setReadOnlyHint(dto.readOnly);
|
|
59
|
+
return ta;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// --- Tests ---
|
|
63
|
+
describe('GroupConverter', () => {
|
|
64
|
+
const converter = new TestGroupConverter();
|
|
65
|
+
it('should convert group to DTO', () => {
|
|
66
|
+
const group = new Group('ci');
|
|
67
|
+
group.setTitle('CI');
|
|
68
|
+
const dto = converter.convertFromGroup(group);
|
|
69
|
+
expect(dto.name).toBe('ci');
|
|
70
|
+
expect(dto.title).toBe('CI');
|
|
71
|
+
});
|
|
72
|
+
it('should convert DTO to group', () => {
|
|
73
|
+
const group = converter.convertToGroup({ name: 'deploy', title: 'Deploy' });
|
|
74
|
+
expect(group.getName()).toBe('deploy');
|
|
75
|
+
expect(group.getTitle()).toBe('Deploy');
|
|
76
|
+
});
|
|
77
|
+
it('should batch convert groups to DTOs', () => {
|
|
78
|
+
const groups = [new Group('ci'), new Group('deploy')];
|
|
79
|
+
const dtos = converter.convertFromGroups(groups);
|
|
80
|
+
expect(dtos).toHaveLength(2);
|
|
81
|
+
expect(dtos[0].name).toBe('ci');
|
|
82
|
+
expect(dtos[1].name).toBe('deploy');
|
|
83
|
+
});
|
|
84
|
+
it('should batch convert DTOs to groups', () => {
|
|
85
|
+
const dtos = [{ name: 'ci' }, { name: 'deploy' }];
|
|
86
|
+
const groups = converter.convertToGroups(dtos);
|
|
87
|
+
expect(groups).toHaveLength(2);
|
|
88
|
+
expect(groups[0].getName()).toBe('ci');
|
|
89
|
+
expect(groups[1].getName()).toBe('deploy');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe('ToolConverter', () => {
|
|
93
|
+
const converter = new TestToolConverter();
|
|
94
|
+
it('should convert tool to DTO', () => {
|
|
95
|
+
const tool = new Tool('build');
|
|
96
|
+
tool.setInputSchema('{"type":"object"}');
|
|
97
|
+
const dto = converter.convertFromTool(tool);
|
|
98
|
+
expect(dto.name).toBe('build');
|
|
99
|
+
expect(dto.schema).toBe('{"type":"object"}');
|
|
100
|
+
});
|
|
101
|
+
it('should convert DTO to tool', () => {
|
|
102
|
+
const tool = converter.convertToTool({ name: 'deploy', schema: '{}' });
|
|
103
|
+
expect(tool.getName()).toBe('deploy');
|
|
104
|
+
expect(tool.getInputSchema()).toBe('{}');
|
|
105
|
+
});
|
|
106
|
+
it('should batch convert tools to DTOs', () => {
|
|
107
|
+
const tools = [new Tool('build'), new Tool('test')];
|
|
108
|
+
const dtos = converter.convertFromTools(tools);
|
|
109
|
+
expect(dtos).toHaveLength(2);
|
|
110
|
+
});
|
|
111
|
+
it('should batch convert DTOs to tools', () => {
|
|
112
|
+
const dtos = [{ name: 'build' }, { name: 'test' }];
|
|
113
|
+
const tools = converter.convertToTools(dtos);
|
|
114
|
+
expect(tools).toHaveLength(2);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
describe('PromptConverter', () => {
|
|
118
|
+
const converter = new TestPromptConverter();
|
|
119
|
+
it('should convert prompt to DTO', () => {
|
|
120
|
+
const prompt = new Prompt('review');
|
|
121
|
+
const dto = converter.convertFromPrompt(prompt);
|
|
122
|
+
expect(dto.name).toBe('review');
|
|
123
|
+
});
|
|
124
|
+
it('should convert DTO to prompt', () => {
|
|
125
|
+
const prompt = converter.convertToPrompt({ name: 'summarize' });
|
|
126
|
+
expect(prompt.getName()).toBe('summarize');
|
|
127
|
+
});
|
|
128
|
+
it('should batch convert prompts', () => {
|
|
129
|
+
const prompts = [new Prompt('review'), new Prompt('summarize')];
|
|
130
|
+
const dtos = converter.convertFromPrompts(prompts);
|
|
131
|
+
expect(dtos).toHaveLength(2);
|
|
132
|
+
});
|
|
133
|
+
it('should batch convert DTOs to prompts', () => {
|
|
134
|
+
const dtos = [{ name: 'review' }, { name: 'summarize' }];
|
|
135
|
+
const prompts = converter.convertToPrompts(dtos);
|
|
136
|
+
expect(prompts).toHaveLength(2);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
describe('ResourceConverter', () => {
|
|
140
|
+
const converter = new TestResourceConverter();
|
|
141
|
+
it('should convert resource to DTO', () => {
|
|
142
|
+
const resource = new Resource('config');
|
|
143
|
+
resource.setUri('file:///config.yaml');
|
|
144
|
+
const dto = converter.convertFromResource(resource);
|
|
145
|
+
expect(dto.name).toBe('config');
|
|
146
|
+
expect(dto.uri).toBe('file:///config.yaml');
|
|
147
|
+
});
|
|
148
|
+
it('should convert DTO to resource', () => {
|
|
149
|
+
const resource = converter.convertToResource({ name: 'readme', uri: 'file:///README.md' });
|
|
150
|
+
expect(resource.getName()).toBe('readme');
|
|
151
|
+
expect(resource.getUri()).toBe('file:///README.md');
|
|
152
|
+
});
|
|
153
|
+
it('should batch convert resources', () => {
|
|
154
|
+
const resources = [new Resource('a'), new Resource('b')];
|
|
155
|
+
const dtos = converter.convertFromResources(resources);
|
|
156
|
+
expect(dtos).toHaveLength(2);
|
|
157
|
+
});
|
|
158
|
+
it('should batch convert DTOs to resources', () => {
|
|
159
|
+
const dtos = [{ name: 'a' }, { name: 'b' }];
|
|
160
|
+
const resources = converter.convertToResources(dtos);
|
|
161
|
+
expect(resources).toHaveLength(2);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe('ToolAnnotationsConverter', () => {
|
|
165
|
+
const converter = new TestToolAnnotationsConverter();
|
|
166
|
+
it('should convert single tool annotations to DTO', () => {
|
|
167
|
+
const ta = new ToolAnnotations();
|
|
168
|
+
ta.setTitle('Deploy');
|
|
169
|
+
ta.setReadOnlyHint(false);
|
|
170
|
+
const dto = converter.convertFromToolAnnotations(ta);
|
|
171
|
+
expect(dto.title).toBe('Deploy');
|
|
172
|
+
expect(dto.readOnly).toBe(false);
|
|
173
|
+
});
|
|
174
|
+
it('should convert single DTO to tool annotations', () => {
|
|
175
|
+
const ta = converter.convertToToolAnnotations({ title: 'Build', readOnly: true });
|
|
176
|
+
expect(ta.getTitle()).toBe('Build');
|
|
177
|
+
expect(ta.getReadOnlyHint()).toBe(true);
|
|
178
|
+
});
|
|
179
|
+
it('should batch convert tool annotations to DTOs', () => {
|
|
180
|
+
const ta1 = new ToolAnnotations();
|
|
181
|
+
ta1.setTitle('A');
|
|
182
|
+
const ta2 = new ToolAnnotations();
|
|
183
|
+
ta2.setTitle('B');
|
|
184
|
+
const dtos = converter.convertFromToolAnnotations([ta1, ta2]);
|
|
185
|
+
expect(dtos).toHaveLength(2);
|
|
186
|
+
});
|
|
187
|
+
it('should batch convert DTOs to tool annotations', () => {
|
|
188
|
+
const dtos = [{ title: 'A' }, { title: 'B' }];
|
|
189
|
+
const tas = converter.convertToToolAnnotations(dtos);
|
|
190
|
+
expect(tas).toHaveLength(2);
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
//# sourceMappingURL=Converters.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Converters.test.js","sourceRoot":"","sources":["../../tests/Converters.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Group.test.d.ts","sourceRoot":"","sources":["../../tests/Group.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { Group } from '../src/Group.js';
|
|
3
|
+
import { Tool } from '../src/Tool.js';
|
|
4
|
+
import { Prompt } from '../src/Prompt.js';
|
|
5
|
+
import { Resource } from '../src/Resource.js';
|
|
6
|
+
describe('Group', () => {
|
|
7
|
+
describe('basic properties', () => {
|
|
8
|
+
it('should create with name', () => {
|
|
9
|
+
const group = new Group('devops');
|
|
10
|
+
expect(group.getName()).toBe('devops');
|
|
11
|
+
});
|
|
12
|
+
it('should be root when no parent', () => {
|
|
13
|
+
const group = new Group('devops');
|
|
14
|
+
expect(group.isRoot()).toBe(true);
|
|
15
|
+
expect(group.getParent()).toBeNull();
|
|
16
|
+
});
|
|
17
|
+
it('should return itself as root when no parent', () => {
|
|
18
|
+
const group = new Group('devops');
|
|
19
|
+
expect(group.getRoot()).toBe(group);
|
|
20
|
+
});
|
|
21
|
+
it('should set title and description', () => {
|
|
22
|
+
const group = new Group('devops');
|
|
23
|
+
group.setTitle('DevOps');
|
|
24
|
+
group.setDescription('DevOps tools');
|
|
25
|
+
expect(group.getTitle()).toBe('DevOps');
|
|
26
|
+
expect(group.getDescription()).toBe('DevOps tools');
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe('fully qualified name', () => {
|
|
30
|
+
it('should return name for root group', () => {
|
|
31
|
+
const group = new Group('devops');
|
|
32
|
+
expect(group.getFullyQualifiedName()).toBe('devops');
|
|
33
|
+
});
|
|
34
|
+
it('should return parent.child for nested group', () => {
|
|
35
|
+
const root = new Group('devops');
|
|
36
|
+
const child = new Group('ci');
|
|
37
|
+
root.addChildGroup(child);
|
|
38
|
+
expect(child.getFullyQualifiedName()).toBe('devops.ci');
|
|
39
|
+
});
|
|
40
|
+
it('should handle deep nesting', () => {
|
|
41
|
+
const root = new Group('devops');
|
|
42
|
+
const mid = new Group('ci');
|
|
43
|
+
const leaf = new Group('build');
|
|
44
|
+
root.addChildGroup(mid);
|
|
45
|
+
mid.addChildGroup(leaf);
|
|
46
|
+
expect(leaf.getFullyQualifiedName()).toBe('devops.ci.build');
|
|
47
|
+
});
|
|
48
|
+
it('should use custom separator', () => {
|
|
49
|
+
const root = new Group('devops', '/');
|
|
50
|
+
const child = new Group('ci', '/');
|
|
51
|
+
root.addChildGroup(child);
|
|
52
|
+
expect(child.getFullyQualifiedName()).toBe('devops/ci');
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
describe('child groups', () => {
|
|
56
|
+
it('should start with empty children', () => {
|
|
57
|
+
const group = new Group('devops');
|
|
58
|
+
expect(group.getChildrenGroups()).toHaveLength(0);
|
|
59
|
+
});
|
|
60
|
+
it('should add child group', () => {
|
|
61
|
+
const parent = new Group('devops');
|
|
62
|
+
const child = new Group('ci');
|
|
63
|
+
expect(parent.addChildGroup(child)).toBe(true);
|
|
64
|
+
expect(parent.getChildrenGroups()).toHaveLength(1);
|
|
65
|
+
expect(child.getParent()).toBe(parent);
|
|
66
|
+
expect(child.isRoot()).toBe(false);
|
|
67
|
+
});
|
|
68
|
+
it('should not add duplicate child group', () => {
|
|
69
|
+
const parent = new Group('devops');
|
|
70
|
+
const child = new Group('ci');
|
|
71
|
+
parent.addChildGroup(child);
|
|
72
|
+
expect(parent.addChildGroup(child)).toBe(false);
|
|
73
|
+
expect(parent.getChildrenGroups()).toHaveLength(1);
|
|
74
|
+
});
|
|
75
|
+
it('should remove child group', () => {
|
|
76
|
+
const parent = new Group('devops');
|
|
77
|
+
const child = new Group('ci');
|
|
78
|
+
parent.addChildGroup(child);
|
|
79
|
+
expect(parent.removeChildGroup(child)).toBe(true);
|
|
80
|
+
expect(parent.getChildrenGroups()).toHaveLength(0);
|
|
81
|
+
expect(child.getParent()).toBeNull();
|
|
82
|
+
});
|
|
83
|
+
it('should return false when removing non-existing child group', () => {
|
|
84
|
+
const parent = new Group('devops');
|
|
85
|
+
const child = new Group('ci');
|
|
86
|
+
expect(parent.removeChildGroup(child)).toBe(false);
|
|
87
|
+
});
|
|
88
|
+
it('should get root from deeply nested group', () => {
|
|
89
|
+
const root = new Group('devops');
|
|
90
|
+
const mid = new Group('ci');
|
|
91
|
+
const leaf = new Group('build');
|
|
92
|
+
root.addChildGroup(mid);
|
|
93
|
+
mid.addChildGroup(leaf);
|
|
94
|
+
expect(leaf.getRoot()).toBe(root);
|
|
95
|
+
expect(mid.getRoot()).toBe(root);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('child tools', () => {
|
|
99
|
+
it('should start with empty tools', () => {
|
|
100
|
+
const group = new Group('devops');
|
|
101
|
+
expect(group.getChildrenTools()).toHaveLength(0);
|
|
102
|
+
});
|
|
103
|
+
it('should add child tool and set bidirectional reference', () => {
|
|
104
|
+
const group = new Group('ci');
|
|
105
|
+
const tool = new Tool('run_pipeline');
|
|
106
|
+
expect(group.addChildTool(tool)).toBe(true);
|
|
107
|
+
expect(group.getChildrenTools()).toHaveLength(1);
|
|
108
|
+
expect(tool.getParentGroups()).toContain(group);
|
|
109
|
+
});
|
|
110
|
+
it('should not add duplicate tool', () => {
|
|
111
|
+
const group = new Group('ci');
|
|
112
|
+
const tool = new Tool('run_pipeline');
|
|
113
|
+
group.addChildTool(tool);
|
|
114
|
+
expect(group.addChildTool(tool)).toBe(false);
|
|
115
|
+
expect(group.getChildrenTools()).toHaveLength(1);
|
|
116
|
+
});
|
|
117
|
+
it('should remove child tool and clear bidirectional reference', () => {
|
|
118
|
+
const group = new Group('ci');
|
|
119
|
+
const tool = new Tool('run_pipeline');
|
|
120
|
+
group.addChildTool(tool);
|
|
121
|
+
expect(group.removeChildTool(tool)).toBe(true);
|
|
122
|
+
expect(group.getChildrenTools()).toHaveLength(0);
|
|
123
|
+
expect(tool.getParentGroups()).not.toContain(group);
|
|
124
|
+
});
|
|
125
|
+
it('should return false when removing non-existing tool', () => {
|
|
126
|
+
const group = new Group('ci');
|
|
127
|
+
const tool = new Tool('run_pipeline');
|
|
128
|
+
expect(group.removeChildTool(tool)).toBe(false);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
describe('child prompts', () => {
|
|
132
|
+
it('should start with empty prompts', () => {
|
|
133
|
+
const group = new Group('templates');
|
|
134
|
+
expect(group.getChildrenPrompts()).toHaveLength(0);
|
|
135
|
+
});
|
|
136
|
+
it('should add child prompt and set bidirectional reference', () => {
|
|
137
|
+
const group = new Group('templates');
|
|
138
|
+
const prompt = new Prompt('code_review');
|
|
139
|
+
expect(group.addChildPrompt(prompt)).toBe(true);
|
|
140
|
+
expect(group.getChildrenPrompts()).toHaveLength(1);
|
|
141
|
+
expect(prompt.getParentGroups()).toContain(group);
|
|
142
|
+
});
|
|
143
|
+
it('should not add duplicate prompt', () => {
|
|
144
|
+
const group = new Group('templates');
|
|
145
|
+
const prompt = new Prompt('code_review');
|
|
146
|
+
group.addChildPrompt(prompt);
|
|
147
|
+
expect(group.addChildPrompt(prompt)).toBe(false);
|
|
148
|
+
});
|
|
149
|
+
it('should remove child prompt', () => {
|
|
150
|
+
const group = new Group('templates');
|
|
151
|
+
const prompt = new Prompt('code_review');
|
|
152
|
+
group.addChildPrompt(prompt);
|
|
153
|
+
expect(group.removeChildPrompt(prompt)).toBe(true);
|
|
154
|
+
expect(group.getChildrenPrompts()).toHaveLength(0);
|
|
155
|
+
expect(prompt.getParentGroups()).not.toContain(group);
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
describe('child resources', () => {
|
|
159
|
+
it('should start with empty resources', () => {
|
|
160
|
+
const group = new Group('config');
|
|
161
|
+
expect(group.getChildrenResources()).toHaveLength(0);
|
|
162
|
+
});
|
|
163
|
+
it('should add child resource and set bidirectional reference', () => {
|
|
164
|
+
const group = new Group('config');
|
|
165
|
+
const resource = new Resource('settings.yaml');
|
|
166
|
+
expect(group.addChildResource(resource)).toBe(true);
|
|
167
|
+
expect(group.getChildrenResources()).toHaveLength(1);
|
|
168
|
+
expect(resource.getParentGroups()).toContain(group);
|
|
169
|
+
});
|
|
170
|
+
it('should not add duplicate resource', () => {
|
|
171
|
+
const group = new Group('config');
|
|
172
|
+
const resource = new Resource('settings.yaml');
|
|
173
|
+
group.addChildResource(resource);
|
|
174
|
+
expect(group.addChildResource(resource)).toBe(false);
|
|
175
|
+
});
|
|
176
|
+
it('should remove child resource', () => {
|
|
177
|
+
const group = new Group('config');
|
|
178
|
+
const resource = new Resource('settings.yaml');
|
|
179
|
+
group.addChildResource(resource);
|
|
180
|
+
expect(group.removeChildResource(resource)).toBe(true);
|
|
181
|
+
expect(group.getChildrenResources()).toHaveLength(0);
|
|
182
|
+
expect(resource.getParentGroups()).not.toContain(group);
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
describe('complex tree', () => {
|
|
186
|
+
it('should build a full hierarchy', () => {
|
|
187
|
+
// Root
|
|
188
|
+
const root = new Group('devops');
|
|
189
|
+
// Sub-groups
|
|
190
|
+
const ci = new Group('ci');
|
|
191
|
+
const deploy = new Group('deploy');
|
|
192
|
+
root.addChildGroup(ci);
|
|
193
|
+
root.addChildGroup(deploy);
|
|
194
|
+
// Tools
|
|
195
|
+
const runPipeline = new Tool('run_pipeline');
|
|
196
|
+
const checkStatus = new Tool('check_status');
|
|
197
|
+
ci.addChildTool(runPipeline);
|
|
198
|
+
ci.addChildTool(checkStatus);
|
|
199
|
+
const deployStaging = new Tool('deploy_staging');
|
|
200
|
+
const deployProd = new Tool('deploy_production');
|
|
201
|
+
deploy.addChildTool(deployStaging);
|
|
202
|
+
deploy.addChildTool(deployProd);
|
|
203
|
+
// Prompt
|
|
204
|
+
const reviewPrompt = new Prompt('review_deploy');
|
|
205
|
+
deploy.addChildPrompt(reviewPrompt);
|
|
206
|
+
// Resource
|
|
207
|
+
const config = new Resource('config.yaml');
|
|
208
|
+
root.addChildResource(config);
|
|
209
|
+
// Assertions
|
|
210
|
+
expect(root.getChildrenGroups()).toHaveLength(2);
|
|
211
|
+
expect(ci.getChildrenTools()).toHaveLength(2);
|
|
212
|
+
expect(deploy.getChildrenTools()).toHaveLength(2);
|
|
213
|
+
expect(deploy.getChildrenPrompts()).toHaveLength(1);
|
|
214
|
+
expect(root.getChildrenResources()).toHaveLength(1);
|
|
215
|
+
expect(ci.getFullyQualifiedName()).toBe('devops.ci');
|
|
216
|
+
expect(deploy.getFullyQualifiedName()).toBe('devops.deploy');
|
|
217
|
+
expect(deployStaging.getParentGroups()[0].getFullyQualifiedName()).toBe('devops.deploy');
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
describe('manual reparenting via setParent', () => {
|
|
221
|
+
it('should reassign parent directly', () => {
|
|
222
|
+
// Scenario: moving a "staging" group from "deploy" to "testing"
|
|
223
|
+
const deploy = new Group('deploy');
|
|
224
|
+
const testing = new Group('testing');
|
|
225
|
+
const staging = new Group('staging');
|
|
226
|
+
deploy.addChildGroup(staging);
|
|
227
|
+
expect(staging.getParent()).toBe(deploy);
|
|
228
|
+
// Manual reparent (setParent only changes the reference, not the tree)
|
|
229
|
+
staging.setParent(testing);
|
|
230
|
+
expect(staging.getParent()).toBe(testing);
|
|
231
|
+
expect(staging.isRoot()).toBe(false);
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
describe('remove non-existing children', () => {
|
|
235
|
+
it('should return false when removing a prompt that was never added', () => {
|
|
236
|
+
const group = new Group('templates');
|
|
237
|
+
const prompt = new Prompt('never_added');
|
|
238
|
+
expect(group.removeChildPrompt(prompt)).toBe(false);
|
|
239
|
+
});
|
|
240
|
+
it('should return false when removing a resource that was never added', () => {
|
|
241
|
+
const group = new Group('config');
|
|
242
|
+
const resource = new Resource('ghost.yaml');
|
|
243
|
+
expect(group.removeChildResource(resource)).toBe(false);
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
describe('toString', () => {
|
|
247
|
+
it('should produce correct toString', () => {
|
|
248
|
+
const group = new Group('devops');
|
|
249
|
+
group.setTitle('DevOps');
|
|
250
|
+
const str = group.toString();
|
|
251
|
+
expect(str).toContain('Group');
|
|
252
|
+
expect(str).toContain('name=devops');
|
|
253
|
+
expect(str).toContain('isRoot=true');
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
//# sourceMappingURL=Group.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Group.test.js","sourceRoot":"","sources":["../../tests/Group.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.test.d.ts","sourceRoot":"","sources":["../../tests/Icon.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { Icon } from '../src/Icon.js';
|
|
3
|
+
describe('Icon', () => {
|
|
4
|
+
it('should initialize with undefined values', () => {
|
|
5
|
+
const icon = new Icon();
|
|
6
|
+
expect(icon.getSrc()).toBeUndefined();
|
|
7
|
+
expect(icon.getMimeType()).toBeUndefined();
|
|
8
|
+
expect(icon.getSizes()).toBeUndefined();
|
|
9
|
+
expect(icon.getTheme()).toBeUndefined();
|
|
10
|
+
});
|
|
11
|
+
it('should set and get src', () => {
|
|
12
|
+
const icon = new Icon();
|
|
13
|
+
icon.setSrc('https://example.com/icon.png');
|
|
14
|
+
expect(icon.getSrc()).toBe('https://example.com/icon.png');
|
|
15
|
+
});
|
|
16
|
+
it('should set and get mimeType', () => {
|
|
17
|
+
const icon = new Icon();
|
|
18
|
+
icon.setMimeType('image/png');
|
|
19
|
+
expect(icon.getMimeType()).toBe('image/png');
|
|
20
|
+
});
|
|
21
|
+
it('should set and get sizes', () => {
|
|
22
|
+
const icon = new Icon();
|
|
23
|
+
icon.setSizes(['16x16', '32x32', '64x64']);
|
|
24
|
+
expect(icon.getSizes()).toEqual(['16x16', '32x32', '64x64']);
|
|
25
|
+
});
|
|
26
|
+
it('should set and get theme', () => {
|
|
27
|
+
const icon = new Icon();
|
|
28
|
+
icon.setTheme('dark');
|
|
29
|
+
expect(icon.getTheme()).toBe('dark');
|
|
30
|
+
});
|
|
31
|
+
it('should produce correct toString', () => {
|
|
32
|
+
const icon = new Icon();
|
|
33
|
+
icon.setSrc('icon.png');
|
|
34
|
+
icon.setMimeType('image/png');
|
|
35
|
+
icon.setSizes(['32x32']);
|
|
36
|
+
icon.setTheme('light');
|
|
37
|
+
const str = icon.toString();
|
|
38
|
+
expect(str).toContain('icon.png');
|
|
39
|
+
expect(str).toContain('image/png');
|
|
40
|
+
expect(str).toContain('32x32');
|
|
41
|
+
expect(str).toContain('light');
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=Icon.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.test.js","sourceRoot":"","sources":["../../tests/Icon.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IAClB,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACnC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Prompt.test.d.ts","sourceRoot":"","sources":["../../tests/Prompt.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { Prompt } from '../src/Prompt.js';
|
|
3
|
+
import { PromptArgument } from '../src/PromptArgument.js';
|
|
4
|
+
import { Group } from '../src/Group.js';
|
|
5
|
+
describe('Prompt', () => {
|
|
6
|
+
it('should create with name', () => {
|
|
7
|
+
const prompt = new Prompt('code_review');
|
|
8
|
+
expect(prompt.getName()).toBe('code_review');
|
|
9
|
+
});
|
|
10
|
+
it('should start with empty arguments', () => {
|
|
11
|
+
const prompt = new Prompt('code_review');
|
|
12
|
+
expect(prompt.getPromptArguments()).toHaveLength(0);
|
|
13
|
+
});
|
|
14
|
+
it('should add prompt argument', () => {
|
|
15
|
+
const prompt = new Prompt('code_review');
|
|
16
|
+
const arg = new PromptArgument('language');
|
|
17
|
+
arg.setRequired(true);
|
|
18
|
+
prompt.addPromptArgument(arg);
|
|
19
|
+
expect(prompt.getPromptArguments()).toHaveLength(1);
|
|
20
|
+
expect(prompt.getPromptArguments()[0].getName()).toBe('language');
|
|
21
|
+
expect(prompt.getPromptArguments()[0].isRequired()).toBe(true);
|
|
22
|
+
});
|
|
23
|
+
it('should not add duplicate arguments', () => {
|
|
24
|
+
const prompt = new Prompt('code_review');
|
|
25
|
+
const arg = new PromptArgument('language');
|
|
26
|
+
prompt.addPromptArgument(arg);
|
|
27
|
+
prompt.addPromptArgument(arg);
|
|
28
|
+
expect(prompt.getPromptArguments()).toHaveLength(1);
|
|
29
|
+
});
|
|
30
|
+
it('should throw when adding null argument', () => {
|
|
31
|
+
const prompt = new Prompt('code_review');
|
|
32
|
+
expect(() => prompt.addPromptArgument(null)).toThrow('promptArgument must not be null');
|
|
33
|
+
});
|
|
34
|
+
it('should remove prompt argument', () => {
|
|
35
|
+
const prompt = new Prompt('code_review');
|
|
36
|
+
const arg = new PromptArgument('language');
|
|
37
|
+
prompt.addPromptArgument(arg);
|
|
38
|
+
expect(prompt.removePromptArgument(arg)).toBe(true);
|
|
39
|
+
expect(prompt.getPromptArguments()).toHaveLength(0);
|
|
40
|
+
});
|
|
41
|
+
it('should return false when removing non-existing argument', () => {
|
|
42
|
+
const prompt = new Prompt('code_review');
|
|
43
|
+
const arg = new PromptArgument('language');
|
|
44
|
+
expect(prompt.removePromptArgument(arg)).toBe(false);
|
|
45
|
+
});
|
|
46
|
+
it('should manage parent groups', () => {
|
|
47
|
+
const prompt = new Prompt('code_review');
|
|
48
|
+
const group = new Group('templates');
|
|
49
|
+
prompt.addParentGroup(group);
|
|
50
|
+
expect(prompt.getParentGroups()).toHaveLength(1);
|
|
51
|
+
});
|
|
52
|
+
it('should return name as fully qualified name', () => {
|
|
53
|
+
const prompt = new Prompt('code_review');
|
|
54
|
+
expect(prompt.getFullyQualifiedName()).toBe('code_review');
|
|
55
|
+
});
|
|
56
|
+
it('should produce correct toString', () => {
|
|
57
|
+
const prompt = new Prompt('summarize');
|
|
58
|
+
const str = prompt.toString();
|
|
59
|
+
expect(str).toContain('Prompt');
|
|
60
|
+
expect(str).toContain('name=summarize');
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=Prompt.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Prompt.test.js","sourceRoot":"","sources":["../../tests/Prompt.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptArgument.test.d.ts","sourceRoot":"","sources":["../../tests/PromptArgument.test.ts"],"names":[],"mappings":""}
|