@vinkius-core/mcp-fusion 0.6.0 → 0.7.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/README.md +33 -13
- package/dist/converters/ConverterBase.d.ts +46 -5
- package/dist/converters/ConverterBase.d.ts.map +1 -1
- package/dist/converters/ConverterBase.js +34 -3
- package/dist/converters/ConverterBase.js.map +1 -1
- package/dist/converters/GroupConverter.d.ts +25 -3
- package/dist/converters/GroupConverter.d.ts.map +1 -1
- package/dist/converters/GroupConverter.js +19 -1
- package/dist/converters/GroupConverter.js.map +1 -1
- package/dist/converters/PromptConverter.d.ts +25 -3
- package/dist/converters/PromptConverter.d.ts.map +1 -1
- package/dist/converters/PromptConverter.js +19 -1
- package/dist/converters/PromptConverter.js.map +1 -1
- package/dist/converters/ResourceConverter.d.ts +27 -3
- package/dist/converters/ResourceConverter.d.ts.map +1 -1
- package/dist/converters/ResourceConverter.js +21 -1
- package/dist/converters/ResourceConverter.js.map +1 -1
- package/dist/converters/ToolAnnotationsConverter.d.ts +25 -3
- package/dist/converters/ToolAnnotationsConverter.d.ts.map +1 -1
- package/dist/converters/ToolAnnotationsConverter.js +19 -1
- package/dist/converters/ToolAnnotationsConverter.js.map +1 -1
- package/dist/converters/ToolConverter.d.ts +27 -3
- package/dist/converters/ToolConverter.d.ts.map +1 -1
- package/dist/converters/ToolConverter.js +21 -1
- package/dist/converters/ToolConverter.js.map +1 -1
- package/dist/domain/Annotations.d.ts +42 -0
- package/dist/domain/Annotations.d.ts.map +1 -0
- package/dist/domain/Annotations.js +16 -0
- package/dist/domain/Annotations.js.map +1 -0
- package/dist/domain/BaseModel.d.ts +50 -0
- package/dist/domain/BaseModel.d.ts.map +1 -0
- package/dist/domain/BaseModel.js +41 -0
- package/dist/domain/BaseModel.js.map +1 -0
- package/dist/domain/Group.d.ts +99 -0
- package/dist/domain/Group.d.ts.map +1 -0
- package/dist/{Group.js → domain/Group.js} +76 -0
- package/dist/domain/Group.js.map +1 -0
- package/dist/domain/GroupItem.d.ts +45 -0
- package/dist/domain/GroupItem.d.ts.map +1 -0
- package/dist/domain/GroupItem.js +57 -0
- package/dist/domain/GroupItem.js.map +1 -0
- package/dist/domain/Icon.d.ts +41 -0
- package/dist/domain/Icon.d.ts.map +1 -0
- package/dist/domain/Icon.js +15 -0
- package/dist/domain/Icon.js.map +1 -0
- package/dist/domain/Prompt.d.ts +49 -0
- package/dist/domain/Prompt.d.ts.map +1 -0
- package/dist/domain/Prompt.js +59 -0
- package/dist/domain/Prompt.js.map +1 -0
- package/dist/domain/PromptArgument.d.ts +23 -0
- package/dist/domain/PromptArgument.d.ts.map +1 -0
- package/dist/domain/PromptArgument.js +27 -0
- package/dist/domain/PromptArgument.js.map +1 -0
- package/dist/domain/Resource.d.ts +37 -0
- package/dist/domain/Resource.d.ts.map +1 -0
- package/dist/domain/Resource.js +39 -0
- package/dist/domain/Resource.js.map +1 -0
- package/dist/domain/Role.d.ts +23 -0
- package/dist/domain/Role.d.ts.map +1 -0
- package/dist/domain/Role.js +24 -0
- package/dist/domain/Role.js.map +1 -0
- package/dist/domain/Tool.d.ts +39 -0
- package/dist/domain/Tool.d.ts.map +1 -0
- package/dist/domain/Tool.js +41 -0
- package/dist/domain/Tool.js.map +1 -0
- package/dist/domain/ToolAnnotations.d.ts +48 -0
- package/dist/domain/ToolAnnotations.d.ts.map +1 -0
- package/dist/domain/ToolAnnotations.js +15 -0
- package/dist/domain/ToolAnnotations.js.map +1 -0
- package/dist/domain/index.d.ts +16 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +13 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/utils.d.ts.map +1 -0
- package/dist/domain/utils.js.map +1 -0
- package/dist/framework/builder/ActionGroupBuilder.d.ts +128 -0
- package/dist/framework/builder/ActionGroupBuilder.d.ts.map +1 -0
- package/dist/framework/builder/ActionGroupBuilder.js +96 -0
- package/dist/framework/builder/ActionGroupBuilder.js.map +1 -0
- package/dist/framework/builder/GroupedToolBuilder.d.ts +428 -0
- package/dist/framework/builder/GroupedToolBuilder.d.ts.map +1 -0
- package/dist/framework/builder/GroupedToolBuilder.js +499 -0
- package/dist/framework/builder/GroupedToolBuilder.js.map +1 -0
- package/dist/framework/builder/ToolDefinitionCompiler.d.ts +36 -0
- package/dist/framework/builder/ToolDefinitionCompiler.d.ts.map +1 -0
- package/dist/framework/builder/ToolDefinitionCompiler.js +55 -0
- package/dist/framework/builder/ToolDefinitionCompiler.js.map +1 -0
- package/dist/framework/builder/index.d.ts +5 -0
- package/dist/framework/builder/index.d.ts.map +1 -0
- package/dist/framework/builder/index.js +4 -0
- package/dist/framework/builder/index.js.map +1 -0
- package/dist/framework/execution/ExecutionPipeline.d.ts +40 -0
- package/dist/framework/execution/ExecutionPipeline.d.ts.map +1 -0
- package/dist/framework/execution/ExecutionPipeline.js +71 -0
- package/dist/framework/execution/ExecutionPipeline.js.map +1 -0
- package/dist/framework/{strategies → execution}/MiddlewareCompiler.d.ts +2 -2
- package/dist/framework/execution/MiddlewareCompiler.d.ts.map +1 -0
- package/dist/framework/{strategies → execution}/MiddlewareCompiler.js +10 -0
- package/dist/framework/execution/MiddlewareCompiler.js.map +1 -0
- package/dist/framework/execution/index.d.ts +4 -0
- package/dist/framework/execution/index.d.ts.map +1 -0
- package/dist/framework/execution/index.js +4 -0
- package/dist/framework/execution/index.js.map +1 -0
- package/dist/framework/index.d.ts +14 -8
- package/dist/framework/index.d.ts.map +1 -1
- package/dist/framework/index.js +12 -4
- package/dist/framework/index.js.map +1 -1
- package/dist/framework/registry/ToolFilterEngine.d.ts +27 -0
- package/dist/framework/registry/ToolFilterEngine.d.ts.map +1 -0
- package/dist/framework/registry/ToolFilterEngine.js +69 -0
- package/dist/framework/registry/ToolFilterEngine.js.map +1 -0
- package/dist/framework/registry/ToolRegistry.d.ts +181 -0
- package/dist/framework/registry/ToolRegistry.d.ts.map +1 -0
- package/dist/framework/registry/ToolRegistry.js +210 -0
- package/dist/framework/registry/ToolRegistry.js.map +1 -0
- package/dist/framework/registry/index.d.ts +4 -0
- package/dist/framework/registry/index.d.ts.map +1 -0
- package/dist/framework/registry/index.js +4 -0
- package/dist/framework/registry/index.js.map +1 -0
- package/dist/framework/response.d.ts +159 -0
- package/dist/framework/response.d.ts.map +1 -0
- package/dist/framework/response.js +150 -0
- package/dist/framework/response.js.map +1 -0
- package/dist/framework/result.d.ts +93 -0
- package/dist/framework/result.d.ts.map +1 -0
- package/dist/framework/result.js +66 -0
- package/dist/framework/result.js.map +1 -0
- package/dist/framework/{strategies → schema}/AnnotationAggregator.d.ts +1 -1
- package/dist/framework/schema/AnnotationAggregator.d.ts.map +1 -0
- package/dist/framework/{strategies → schema}/AnnotationAggregator.js +12 -3
- package/dist/framework/schema/AnnotationAggregator.js.map +1 -0
- package/dist/framework/{strategies → schema}/DescriptionGenerator.d.ts +1 -1
- package/dist/framework/schema/DescriptionGenerator.d.ts.map +1 -0
- package/dist/framework/{strategies → schema}/DescriptionGenerator.js +10 -0
- package/dist/framework/schema/DescriptionGenerator.js.map +1 -0
- package/dist/framework/{strategies → schema}/SchemaGenerator.d.ts +1 -1
- package/dist/framework/schema/SchemaGenerator.d.ts.map +1 -0
- package/dist/framework/{strategies → schema}/SchemaGenerator.js +14 -2
- package/dist/framework/schema/SchemaGenerator.js.map +1 -0
- package/dist/framework/schema/SchemaUtils.d.ts +8 -0
- package/dist/framework/schema/SchemaUtils.d.ts.map +1 -0
- package/dist/framework/{strategies → schema}/SchemaUtils.js +12 -10
- package/dist/framework/schema/SchemaUtils.js.map +1 -0
- package/dist/framework/{strategies → schema}/ToonDescriptionGenerator.d.ts +1 -1
- package/dist/framework/schema/ToonDescriptionGenerator.d.ts.map +1 -0
- package/dist/framework/{strategies → schema}/ToonDescriptionGenerator.js +1 -0
- package/dist/framework/schema/ToonDescriptionGenerator.js.map +1 -0
- package/dist/framework/schema/index.d.ts +7 -0
- package/dist/framework/schema/index.d.ts.map +1 -0
- package/dist/framework/{strategies → schema}/index.js +2 -6
- package/dist/framework/schema/index.js.map +1 -0
- package/dist/framework/server/ServerAttachment.d.ts +42 -0
- package/dist/framework/server/ServerAttachment.d.ts.map +1 -0
- package/dist/framework/server/ServerAttachment.js +55 -0
- package/dist/framework/server/ServerAttachment.js.map +1 -0
- package/dist/framework/server/ServerResolver.d.ts +24 -0
- package/dist/framework/server/ServerResolver.d.ts.map +1 -0
- package/dist/framework/server/ServerResolver.js +50 -0
- package/dist/framework/server/ServerResolver.js.map +1 -0
- package/dist/framework/server/index.d.ts +4 -0
- package/dist/framework/server/index.d.ts.map +1 -0
- package/dist/framework/server/index.js +4 -0
- package/dist/framework/server/index.js.map +1 -0
- package/dist/framework/types.d.ts +212 -0
- package/dist/framework/types.d.ts.map +1 -0
- package/dist/framework/types.js +15 -0
- package/dist/framework/types.js.map +1 -0
- package/dist/index.d.ts +13 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -13
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
- package/dist/Annotations.d.ts +0 -12
- package/dist/Annotations.d.ts.map +0 -1
- package/dist/Annotations.js +0 -5
- package/dist/Annotations.js.map +0 -1
- package/dist/BaseModel.d.ts +0 -13
- package/dist/BaseModel.d.ts.map +0 -1
- package/dist/BaseModel.js +0 -14
- package/dist/BaseModel.js.map +0 -1
- package/dist/Group.d.ts +0 -27
- package/dist/Group.d.ts.map +0 -1
- package/dist/Group.js.map +0 -1
- package/dist/GroupItem.d.ts +0 -10
- package/dist/GroupItem.d.ts.map +0 -1
- package/dist/GroupItem.js +0 -22
- package/dist/GroupItem.js.map +0 -1
- package/dist/Icon.d.ts +0 -12
- package/dist/Icon.d.ts.map +0 -1
- package/dist/Icon.js +0 -5
- package/dist/Icon.js.map +0 -1
- package/dist/Prompt.d.ts +0 -9
- package/dist/Prompt.d.ts.map +0 -1
- package/dist/Prompt.js +0 -18
- package/dist/Prompt.js.map +0 -1
- package/dist/PromptArgument.d.ts +0 -7
- package/dist/PromptArgument.d.ts.map +0 -1
- package/dist/PromptArgument.js +0 -11
- package/dist/PromptArgument.js.map +0 -1
- package/dist/Resource.d.ts +0 -10
- package/dist/Resource.d.ts.map +0 -1
- package/dist/Resource.js +0 -11
- package/dist/Resource.js.map +0 -1
- package/dist/Role.d.ts +0 -5
- package/dist/Role.d.ts.map +0 -1
- package/dist/Role.js +0 -6
- package/dist/Role.js.map +0 -1
- package/dist/Tool.d.ts +0 -9
- package/dist/Tool.d.ts.map +0 -1
- package/dist/Tool.js +0 -10
- package/dist/Tool.js.map +0 -1
- package/dist/ToolAnnotations.d.ts +0 -14
- package/dist/ToolAnnotations.d.ts.map +0 -1
- package/dist/ToolAnnotations.js +0 -5
- package/dist/ToolAnnotations.js.map +0 -1
- package/dist/framework/GroupedToolBuilder.d.ts +0 -138
- package/dist/framework/GroupedToolBuilder.d.ts.map +0 -1
- package/dist/framework/GroupedToolBuilder.js +0 -304
- package/dist/framework/GroupedToolBuilder.js.map +0 -1
- package/dist/framework/ResponseHelper.d.ts +0 -43
- package/dist/framework/ResponseHelper.d.ts.map +0 -1
- package/dist/framework/ResponseHelper.js +0 -51
- package/dist/framework/ResponseHelper.js.map +0 -1
- package/dist/framework/ToolBuilder.d.ts +0 -46
- package/dist/framework/ToolBuilder.d.ts.map +0 -1
- package/dist/framework/ToolBuilder.js +0 -2
- package/dist/framework/ToolBuilder.js.map +0 -1
- package/dist/framework/ToolRegistry.d.ts +0 -88
- package/dist/framework/ToolRegistry.d.ts.map +0 -1
- package/dist/framework/ToolRegistry.js +0 -157
- package/dist/framework/ToolRegistry.js.map +0 -1
- package/dist/framework/strategies/AnnotationAggregator.d.ts.map +0 -1
- package/dist/framework/strategies/AnnotationAggregator.js.map +0 -1
- package/dist/framework/strategies/DescriptionGenerator.d.ts.map +0 -1
- package/dist/framework/strategies/DescriptionGenerator.js.map +0 -1
- package/dist/framework/strategies/MiddlewareCompiler.d.ts.map +0 -1
- package/dist/framework/strategies/MiddlewareCompiler.js.map +0 -1
- package/dist/framework/strategies/SchemaGenerator.d.ts.map +0 -1
- package/dist/framework/strategies/SchemaGenerator.js.map +0 -1
- package/dist/framework/strategies/SchemaUtils.d.ts +0 -18
- package/dist/framework/strategies/SchemaUtils.d.ts.map +0 -1
- package/dist/framework/strategies/SchemaUtils.js.map +0 -1
- package/dist/framework/strategies/ToonDescriptionGenerator.d.ts.map +0 -1
- package/dist/framework/strategies/ToonDescriptionGenerator.js.map +0 -1
- package/dist/framework/strategies/Types.d.ts +0 -34
- package/dist/framework/strategies/Types.d.ts.map +0 -1
- package/dist/framework/strategies/Types.js +0 -2
- package/dist/framework/strategies/Types.js.map +0 -1
- package/dist/framework/strategies/index.d.ts +0 -13
- package/dist/framework/strategies/index.d.ts.map +0 -1
- package/dist/framework/strategies/index.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
- /package/dist/{utils.d.ts → domain/utils.d.ts} +0 -0
- /package/dist/{utils.js → domain/utils.js} +0 -0
package/README.md
CHANGED
|
@@ -243,8 +243,28 @@ const meta = builder.getActionMetadata();
|
|
|
243
243
|
|
|
244
244
|
## 🔬 Architecture & Internals
|
|
245
245
|
|
|
246
|
-
###
|
|
247
|
-
|
|
246
|
+
### Project Structure
|
|
247
|
+
|
|
248
|
+
The codebase is organized into bounded contexts with shallow nesting (max 2 levels):
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
src/
|
|
252
|
+
├── domain/ → Pure immutable domain models
|
|
253
|
+
├── converters/ → Domain-to-DTO converters
|
|
254
|
+
├── framework/
|
|
255
|
+
│ ├── types.ts → ALL contracts & shared types (single file)
|
|
256
|
+
│ ├── result.ts → Result<T> monad (cross-cutting)
|
|
257
|
+
│ ├── response.ts → Response helpers (cross-cutting)
|
|
258
|
+
│ ├── builder/ → GroupedToolBuilder, ActionGroupBuilder, Compiler
|
|
259
|
+
│ ├── execution/ → ExecutionPipeline, MiddlewareCompiler
|
|
260
|
+
│ ├── schema/ → Schema, Description, Annotation strategies
|
|
261
|
+
│ ├── registry/ → ToolRegistry, ToolFilterEngine
|
|
262
|
+
│ └── server/ → ServerResolver, ServerAttachment
|
|
263
|
+
└── index.ts → Public API barrel
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Domain Model Layer (`src/domain/`)
|
|
267
|
+
The package provides a full domain model for MCP primitives:
|
|
248
268
|
|
|
249
269
|
| Class | Purpose |
|
|
250
270
|
|---|---|
|
|
@@ -257,17 +277,17 @@ Beyond the framework, the package provides a full domain model for MCP primitive
|
|
|
257
277
|
|
|
258
278
|
*Features Bidirectional converters (`ToolConverterBase`, `GroupConverterBase`, etc.) with null filtering for clean conversion to external representations.*
|
|
259
279
|
|
|
260
|
-
### Strategy
|
|
261
|
-
Six pure-function modules
|
|
262
|
-
|
|
263
|
-
| Module | Responsibility |
|
|
264
|
-
|
|
265
|
-
| `SchemaGenerator` | 4-tier per-field annotations from Zod schemas |
|
|
266
|
-
| `DescriptionGenerator` | 3-layer descriptions with ⚠️ DESTRUCTIVE warnings |
|
|
267
|
-
| `ToonDescriptionGenerator` | TOON-encoded descriptions via `@toon-format/toon` |
|
|
268
|
-
| `AnnotationAggregator` | Conservative behavioral hint aggregation |
|
|
269
|
-
| `MiddlewareCompiler` | Right-to-left closure composition at build time |
|
|
270
|
-
| `SchemaUtils` | Zod field extraction + build-time schema collision detection |
|
|
280
|
+
### Strategy Modules
|
|
281
|
+
Six pure-function modules organized by bounded context. Every module is independently testable and replaceable. **Zero shared state.**
|
|
282
|
+
|
|
283
|
+
| Context | Module | Responsibility |
|
|
284
|
+
|---|---|---|
|
|
285
|
+
| `schema/` | `SchemaGenerator` | 4-tier per-field annotations from Zod schemas |
|
|
286
|
+
| `schema/` | `DescriptionGenerator` | 3-layer descriptions with ⚠️ DESTRUCTIVE warnings |
|
|
287
|
+
| `schema/` | `ToonDescriptionGenerator` | TOON-encoded descriptions via `@toon-format/toon` |
|
|
288
|
+
| `schema/` | `AnnotationAggregator` | Conservative behavioral hint aggregation |
|
|
289
|
+
| `execution/` | `MiddlewareCompiler` | Right-to-left closure composition at build time |
|
|
290
|
+
| `schema/` | `SchemaUtils` | Zod field extraction + build-time schema collision detection |
|
|
271
291
|
|
|
272
292
|
---
|
|
273
293
|
|
|
@@ -3,25 +3,66 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provides batch conversion with null filtering in both directions.
|
|
5
5
|
* Domain-specific converters extend this class and only implement
|
|
6
|
-
* the single-item abstract methods:
|
|
6
|
+
* the single-item abstract methods: {@link convertFrom} and {@link convertTo}.
|
|
7
7
|
*
|
|
8
|
-
* @
|
|
9
|
-
* @
|
|
8
|
+
* @typeParam TSource - The domain model type (e.g. Group, Tool)
|
|
9
|
+
* @typeParam TTarget - The external/DTO type
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { ToolConverterBase, Tool } from '@vinkius-core/mcp-fusion';
|
|
14
|
+
*
|
|
15
|
+
* interface ToolDto { id: string; label: string }
|
|
16
|
+
*
|
|
17
|
+
* class MyToolConverter extends ToolConverterBase<ToolDto> {
|
|
18
|
+
* convertFrom(tool: Tool): ToolDto {
|
|
19
|
+
* return { id: tool.name, label: tool.title ?? tool.name };
|
|
20
|
+
* }
|
|
21
|
+
* convertTo(dto: ToolDto): Tool {
|
|
22
|
+
* const tool = new Tool(dto.id);
|
|
23
|
+
* tool.title = dto.label;
|
|
24
|
+
* return tool;
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* const converter = new MyToolConverter();
|
|
29
|
+
* const dtos = converter.convertFromBatch(tools); // Tool[] → ToolDto[]
|
|
30
|
+
* const tools = converter.convertToBatch(dtos); // ToolDto[] → Tool[]
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @see {@link ToolConverterBase} for tool-specific converters
|
|
34
|
+
* @see {@link GroupConverterBase} for group-specific converters
|
|
10
35
|
*/
|
|
11
36
|
export declare abstract class ConverterBase<TSource, TTarget> {
|
|
12
37
|
/**
|
|
13
38
|
* Convert a batch of source items to target items.
|
|
14
39
|
* Null/undefined results from single-item conversion are filtered out.
|
|
40
|
+
*
|
|
41
|
+
* @param sources - Array of domain model instances
|
|
42
|
+
* @returns Array of converted DTOs (nulls removed)
|
|
15
43
|
*/
|
|
16
44
|
convertFromBatch(sources: TSource[]): TTarget[];
|
|
17
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Convert a single source item to a target item.
|
|
47
|
+
*
|
|
48
|
+
* @param source - Domain model instance
|
|
49
|
+
* @returns The converted DTO
|
|
50
|
+
*/
|
|
18
51
|
abstract convertFrom(source: TSource): TTarget;
|
|
19
52
|
/**
|
|
20
53
|
* Convert a batch of target items back to source items.
|
|
21
54
|
* Null/undefined results from single-item conversion are filtered out.
|
|
55
|
+
*
|
|
56
|
+
* @param targets - Array of DTOs
|
|
57
|
+
* @returns Array of domain model instances (nulls removed)
|
|
22
58
|
*/
|
|
23
59
|
convertToBatch(targets: TTarget[]): TSource[];
|
|
24
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Convert a single target item back to a source item.
|
|
62
|
+
*
|
|
63
|
+
* @param target - DTO instance
|
|
64
|
+
* @returns The domain model instance
|
|
65
|
+
*/
|
|
25
66
|
abstract convertTo(target: TTarget): TSource;
|
|
26
67
|
}
|
|
27
68
|
//# sourceMappingURL=ConverterBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConverterBase.d.ts","sourceRoot":"","sources":["../../src/converters/ConverterBase.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ConverterBase.d.ts","sourceRoot":"","sources":["../../src/converters/ConverterBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,8BAAsB,aAAa,CAAC,OAAO,EAAE,OAAO;IAChD;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAM/C;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAE9C;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAM7C;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CAC/C"}
|
|
@@ -3,15 +3,43 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provides batch conversion with null filtering in both directions.
|
|
5
5
|
* Domain-specific converters extend this class and only implement
|
|
6
|
-
* the single-item abstract methods:
|
|
6
|
+
* the single-item abstract methods: {@link convertFrom} and {@link convertTo}.
|
|
7
7
|
*
|
|
8
|
-
* @
|
|
9
|
-
* @
|
|
8
|
+
* @typeParam TSource - The domain model type (e.g. Group, Tool)
|
|
9
|
+
* @typeParam TTarget - The external/DTO type
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { ToolConverterBase, Tool } from '@vinkius-core/mcp-fusion';
|
|
14
|
+
*
|
|
15
|
+
* interface ToolDto { id: string; label: string }
|
|
16
|
+
*
|
|
17
|
+
* class MyToolConverter extends ToolConverterBase<ToolDto> {
|
|
18
|
+
* convertFrom(tool: Tool): ToolDto {
|
|
19
|
+
* return { id: tool.name, label: tool.title ?? tool.name };
|
|
20
|
+
* }
|
|
21
|
+
* convertTo(dto: ToolDto): Tool {
|
|
22
|
+
* const tool = new Tool(dto.id);
|
|
23
|
+
* tool.title = dto.label;
|
|
24
|
+
* return tool;
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* const converter = new MyToolConverter();
|
|
29
|
+
* const dtos = converter.convertFromBatch(tools); // Tool[] → ToolDto[]
|
|
30
|
+
* const tools = converter.convertToBatch(dtos); // ToolDto[] → Tool[]
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @see {@link ToolConverterBase} for tool-specific converters
|
|
34
|
+
* @see {@link GroupConverterBase} for group-specific converters
|
|
10
35
|
*/
|
|
11
36
|
export class ConverterBase {
|
|
12
37
|
/**
|
|
13
38
|
* Convert a batch of source items to target items.
|
|
14
39
|
* Null/undefined results from single-item conversion are filtered out.
|
|
40
|
+
*
|
|
41
|
+
* @param sources - Array of domain model instances
|
|
42
|
+
* @returns Array of converted DTOs (nulls removed)
|
|
15
43
|
*/
|
|
16
44
|
convertFromBatch(sources) {
|
|
17
45
|
return sources
|
|
@@ -21,6 +49,9 @@ export class ConverterBase {
|
|
|
21
49
|
/**
|
|
22
50
|
* Convert a batch of target items back to source items.
|
|
23
51
|
* Null/undefined results from single-item conversion are filtered out.
|
|
52
|
+
*
|
|
53
|
+
* @param targets - Array of DTOs
|
|
54
|
+
* @returns Array of domain model instances (nulls removed)
|
|
24
55
|
*/
|
|
25
56
|
convertToBatch(targets) {
|
|
26
57
|
return targets
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConverterBase.js","sourceRoot":"","sources":["../../src/converters/ConverterBase.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ConverterBase.js","sourceRoot":"","sources":["../../src/converters/ConverterBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,OAAgB,aAAa;IAC/B;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAkB;QAC/B,OAAO,OAAO;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;aAC7B,MAAM,CAAC,CAAC,IAAI,EAAgC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACtE,CAAC;IAUD;;;;;;OAMG;IACH,cAAc,CAAC,OAAkB;QAC7B,OAAO,OAAO;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC3B,MAAM,CAAC,CAAC,IAAI,EAAgC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACtE,CAAC;CASJ"}
|
|
@@ -1,10 +1,32 @@
|
|
|
1
|
-
import { type Group } from '../Group.js';
|
|
1
|
+
import { type Group } from '../domain/Group.js';
|
|
2
2
|
import { ConverterBase } from './ConverterBase.js';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Type-safe Group converter contract.
|
|
5
|
+
*
|
|
6
|
+
* @typeParam T - The target DTO type
|
|
7
|
+
* @see {@link GroupConverterBase} for the base implementation class
|
|
8
|
+
*/
|
|
4
9
|
export type GroupConverter<T> = ConverterBase<Group, T>;
|
|
5
10
|
/**
|
|
6
11
|
* Base class for Group converters.
|
|
7
|
-
*
|
|
12
|
+
*
|
|
13
|
+
* Extend this and implement `convertFrom(group)` and `convertTo(dto)`.
|
|
14
|
+
*
|
|
15
|
+
* @typeParam T - The target DTO type
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* class MyGroupConverter extends GroupConverterBase<GroupDto> {
|
|
20
|
+
* convertFrom(group: Group): GroupDto {
|
|
21
|
+
* return { name: group.name, children: group.childGroups.length };
|
|
22
|
+
* }
|
|
23
|
+
* convertTo(dto: GroupDto): Group {
|
|
24
|
+
* return new Group(dto.name);
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
8
30
|
*/
|
|
9
31
|
export declare abstract class GroupConverterBase<T> extends ConverterBase<Group, T> {
|
|
10
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupConverter.d.ts","sourceRoot":"","sources":["../../src/converters/GroupConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"GroupConverter.d.ts","sourceRoot":"","sources":["../../src/converters/GroupConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,8BAAsB,kBAAkB,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;CAAG"}
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
import {} from '../domain/Group.js';
|
|
1
2
|
import { ConverterBase } from './ConverterBase.js';
|
|
2
3
|
/**
|
|
3
4
|
* Base class for Group converters.
|
|
4
|
-
*
|
|
5
|
+
*
|
|
6
|
+
* Extend this and implement `convertFrom(group)` and `convertTo(dto)`.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam T - The target DTO type
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* class MyGroupConverter extends GroupConverterBase<GroupDto> {
|
|
13
|
+
* convertFrom(group: Group): GroupDto {
|
|
14
|
+
* return { name: group.name, children: group.childGroups.length };
|
|
15
|
+
* }
|
|
16
|
+
* convertTo(dto: GroupDto): Group {
|
|
17
|
+
* return new Group(dto.name);
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
5
23
|
*/
|
|
6
24
|
export class GroupConverterBase extends ConverterBase {
|
|
7
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupConverter.js","sourceRoot":"","sources":["../../src/converters/GroupConverter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GroupConverter.js","sourceRoot":"","sources":["../../src/converters/GroupConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAgB,kBAAsB,SAAQ,aAAuB;CAAG"}
|
|
@@ -1,10 +1,32 @@
|
|
|
1
|
-
import { type Prompt } from '../Prompt.js';
|
|
1
|
+
import { type Prompt } from '../domain/Prompt.js';
|
|
2
2
|
import { ConverterBase } from './ConverterBase.js';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Type-safe Prompt converter contract.
|
|
5
|
+
*
|
|
6
|
+
* @typeParam T - The target DTO type
|
|
7
|
+
* @see {@link PromptConverterBase} for the base implementation class
|
|
8
|
+
*/
|
|
4
9
|
export type PromptConverter<T> = ConverterBase<Prompt, T>;
|
|
5
10
|
/**
|
|
6
11
|
* Base class for Prompt converters.
|
|
7
|
-
*
|
|
12
|
+
*
|
|
13
|
+
* Extend this and implement `convertFrom(prompt)` and `convertTo(dto)`.
|
|
14
|
+
*
|
|
15
|
+
* @typeParam T - The target DTO type
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* class MyPromptConverter extends PromptConverterBase<PromptDto> {
|
|
20
|
+
* convertFrom(prompt: Prompt): PromptDto {
|
|
21
|
+
* return { name: prompt.name, args: prompt.promptArguments.length };
|
|
22
|
+
* }
|
|
23
|
+
* convertTo(dto: PromptDto): Prompt {
|
|
24
|
+
* return new Prompt(dto.name);
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
8
30
|
*/
|
|
9
31
|
export declare abstract class PromptConverterBase<T> extends ConverterBase<Prompt, T> {
|
|
10
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptConverter.d.ts","sourceRoot":"","sources":["../../src/converters/PromptConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"PromptConverter.d.ts","sourceRoot":"","sources":["../../src/converters/PromptConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,8BAAsB,mBAAmB,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;CAAG"}
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
import {} from '../domain/Prompt.js';
|
|
1
2
|
import { ConverterBase } from './ConverterBase.js';
|
|
2
3
|
/**
|
|
3
4
|
* Base class for Prompt converters.
|
|
4
|
-
*
|
|
5
|
+
*
|
|
6
|
+
* Extend this and implement `convertFrom(prompt)` and `convertTo(dto)`.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam T - The target DTO type
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* class MyPromptConverter extends PromptConverterBase<PromptDto> {
|
|
13
|
+
* convertFrom(prompt: Prompt): PromptDto {
|
|
14
|
+
* return { name: prompt.name, args: prompt.promptArguments.length };
|
|
15
|
+
* }
|
|
16
|
+
* convertTo(dto: PromptDto): Prompt {
|
|
17
|
+
* return new Prompt(dto.name);
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
5
23
|
*/
|
|
6
24
|
export class PromptConverterBase extends ConverterBase {
|
|
7
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptConverter.js","sourceRoot":"","sources":["../../src/converters/PromptConverter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PromptConverter.js","sourceRoot":"","sources":["../../src/converters/PromptConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAgB,mBAAuB,SAAQ,aAAwB;CAAG"}
|
|
@@ -1,10 +1,34 @@
|
|
|
1
|
-
import { type Resource } from '../Resource.js';
|
|
1
|
+
import { type Resource } from '../domain/Resource.js';
|
|
2
2
|
import { ConverterBase } from './ConverterBase.js';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Type-safe Resource converter contract.
|
|
5
|
+
*
|
|
6
|
+
* @typeParam T - The target DTO type
|
|
7
|
+
* @see {@link ResourceConverterBase} for the base implementation class
|
|
8
|
+
*/
|
|
4
9
|
export type ResourceConverter<T> = ConverterBase<Resource, T>;
|
|
5
10
|
/**
|
|
6
11
|
* Base class for Resource converters.
|
|
7
|
-
*
|
|
12
|
+
*
|
|
13
|
+
* Extend this and implement `convertFrom(resource)` and `convertTo(dto)`.
|
|
14
|
+
*
|
|
15
|
+
* @typeParam T - The target DTO type
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* class MyResourceConverter extends ResourceConverterBase<ResourceDto> {
|
|
20
|
+
* convertFrom(resource: Resource): ResourceDto {
|
|
21
|
+
* return { name: resource.name, uri: resource.uri ?? '' };
|
|
22
|
+
* }
|
|
23
|
+
* convertTo(dto: ResourceDto): Resource {
|
|
24
|
+
* const r = new Resource(dto.name);
|
|
25
|
+
* r.uri = dto.uri;
|
|
26
|
+
* return r;
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
8
32
|
*/
|
|
9
33
|
export declare abstract class ResourceConverterBase<T> extends ConverterBase<Resource, T> {
|
|
10
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceConverter.d.ts","sourceRoot":"","sources":["../../src/converters/ResourceConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ResourceConverter.d.ts","sourceRoot":"","sources":["../../src/converters/ResourceConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,8BAAsB,qBAAqB,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;CAAG"}
|
|
@@ -1,7 +1,27 @@
|
|
|
1
|
+
import {} from '../domain/Resource.js';
|
|
1
2
|
import { ConverterBase } from './ConverterBase.js';
|
|
2
3
|
/**
|
|
3
4
|
* Base class for Resource converters.
|
|
4
|
-
*
|
|
5
|
+
*
|
|
6
|
+
* Extend this and implement `convertFrom(resource)` and `convertTo(dto)`.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam T - The target DTO type
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* class MyResourceConverter extends ResourceConverterBase<ResourceDto> {
|
|
13
|
+
* convertFrom(resource: Resource): ResourceDto {
|
|
14
|
+
* return { name: resource.name, uri: resource.uri ?? '' };
|
|
15
|
+
* }
|
|
16
|
+
* convertTo(dto: ResourceDto): Resource {
|
|
17
|
+
* const r = new Resource(dto.name);
|
|
18
|
+
* r.uri = dto.uri;
|
|
19
|
+
* return r;
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
5
25
|
*/
|
|
6
26
|
export class ResourceConverterBase extends ConverterBase {
|
|
7
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceConverter.js","sourceRoot":"","sources":["../../src/converters/ResourceConverter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ResourceConverter.js","sourceRoot":"","sources":["../../src/converters/ResourceConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAgB,qBAAyB,SAAQ,aAA0B;CAAG"}
|
|
@@ -1,10 +1,32 @@
|
|
|
1
|
-
import { type ToolAnnotations } from '../ToolAnnotations.js';
|
|
1
|
+
import { type ToolAnnotations } from '../domain/ToolAnnotations.js';
|
|
2
2
|
import { ConverterBase } from './ConverterBase.js';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Type-safe ToolAnnotations converter contract.
|
|
5
|
+
*
|
|
6
|
+
* @typeParam T - The target DTO type
|
|
7
|
+
* @see {@link ToolAnnotationsConverterBase} for the base implementation class
|
|
8
|
+
*/
|
|
4
9
|
export type ToolAnnotationsConverter<T> = ConverterBase<ToolAnnotations, T>;
|
|
5
10
|
/**
|
|
6
11
|
* Base class for ToolAnnotations converters.
|
|
7
|
-
*
|
|
12
|
+
*
|
|
13
|
+
* Extend this and implement `convertFrom(annotations)` and `convertTo(dto)`.
|
|
14
|
+
*
|
|
15
|
+
* @typeParam T - The target DTO type
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* class MyAnnotationsConverter extends ToolAnnotationsConverterBase<McpAnnotations> {
|
|
20
|
+
* convertFrom(ta: ToolAnnotations): McpAnnotations {
|
|
21
|
+
* return { readOnly: ta.readOnlyHint ?? false, destructive: ta.destructiveHint ?? false };
|
|
22
|
+
* }
|
|
23
|
+
* convertTo(mcp: McpAnnotations): ToolAnnotations {
|
|
24
|
+
* return createToolAnnotations({ readOnlyHint: mcp.readOnly, destructiveHint: mcp.destructive });
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
8
30
|
*/
|
|
9
31
|
export declare abstract class ToolAnnotationsConverterBase<T> extends ConverterBase<ToolAnnotations, T> {
|
|
10
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolAnnotationsConverter.d.ts","sourceRoot":"","sources":["../../src/converters/ToolAnnotationsConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ToolAnnotationsConverter.d.ts","sourceRoot":"","sources":["../../src/converters/ToolAnnotationsConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,8BAAsB,4BAA4B,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC;CAAG"}
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
import {} from '../domain/ToolAnnotations.js';
|
|
1
2
|
import { ConverterBase } from './ConverterBase.js';
|
|
2
3
|
/**
|
|
3
4
|
* Base class for ToolAnnotations converters.
|
|
4
|
-
*
|
|
5
|
+
*
|
|
6
|
+
* Extend this and implement `convertFrom(annotations)` and `convertTo(dto)`.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam T - The target DTO type
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* class MyAnnotationsConverter extends ToolAnnotationsConverterBase<McpAnnotations> {
|
|
13
|
+
* convertFrom(ta: ToolAnnotations): McpAnnotations {
|
|
14
|
+
* return { readOnly: ta.readOnlyHint ?? false, destructive: ta.destructiveHint ?? false };
|
|
15
|
+
* }
|
|
16
|
+
* convertTo(mcp: McpAnnotations): ToolAnnotations {
|
|
17
|
+
* return createToolAnnotations({ readOnlyHint: mcp.readOnly, destructiveHint: mcp.destructive });
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
5
23
|
*/
|
|
6
24
|
export class ToolAnnotationsConverterBase extends ConverterBase {
|
|
7
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolAnnotationsConverter.js","sourceRoot":"","sources":["../../src/converters/ToolAnnotationsConverter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolAnnotationsConverter.js","sourceRoot":"","sources":["../../src/converters/ToolAnnotationsConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAgB,4BAAgC,SAAQ,aAAiC;CAAG"}
|
|
@@ -1,10 +1,34 @@
|
|
|
1
|
-
import { type Tool } from '../Tool.js';
|
|
1
|
+
import { type Tool } from '../domain/Tool.js';
|
|
2
2
|
import { ConverterBase } from './ConverterBase.js';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Type-safe Tool converter contract.
|
|
5
|
+
*
|
|
6
|
+
* @typeParam T - The target DTO type
|
|
7
|
+
* @see {@link ToolConverterBase} for the base implementation class
|
|
8
|
+
*/
|
|
4
9
|
export type ToolConverter<T> = ConverterBase<Tool, T>;
|
|
5
10
|
/**
|
|
6
11
|
* Base class for Tool converters.
|
|
7
|
-
*
|
|
12
|
+
*
|
|
13
|
+
* Extend this and implement `convertFrom(tool)` and `convertTo(dto)`.
|
|
14
|
+
*
|
|
15
|
+
* @typeParam T - The target DTO type
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* class McpToolConverter extends ToolConverterBase<McpTool> {
|
|
20
|
+
* convertFrom(tool: Tool): McpTool {
|
|
21
|
+
* return { name: tool.name, description: tool.description ?? '' };
|
|
22
|
+
* }
|
|
23
|
+
* convertTo(mcp: McpTool): Tool {
|
|
24
|
+
* const tool = new Tool(mcp.name);
|
|
25
|
+
* tool.description = mcp.description;
|
|
26
|
+
* return tool;
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
8
32
|
*/
|
|
9
33
|
export declare abstract class ToolConverterBase<T> extends ConverterBase<Tool, T> {
|
|
10
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolConverter.d.ts","sourceRoot":"","sources":["../../src/converters/ToolConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ToolConverter.d.ts","sourceRoot":"","sources":["../../src/converters/ToolConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,8BAAsB,iBAAiB,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;CAAG"}
|
|
@@ -1,7 +1,27 @@
|
|
|
1
|
+
import {} from '../domain/Tool.js';
|
|
1
2
|
import { ConverterBase } from './ConverterBase.js';
|
|
2
3
|
/**
|
|
3
4
|
* Base class for Tool converters.
|
|
4
|
-
*
|
|
5
|
+
*
|
|
6
|
+
* Extend this and implement `convertFrom(tool)` and `convertTo(dto)`.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam T - The target DTO type
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* class McpToolConverter extends ToolConverterBase<McpTool> {
|
|
13
|
+
* convertFrom(tool: Tool): McpTool {
|
|
14
|
+
* return { name: tool.name, description: tool.description ?? '' };
|
|
15
|
+
* }
|
|
16
|
+
* convertTo(mcp: McpTool): Tool {
|
|
17
|
+
* const tool = new Tool(mcp.name);
|
|
18
|
+
* tool.description = mcp.description;
|
|
19
|
+
* return tool;
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
5
25
|
*/
|
|
6
26
|
export class ToolConverterBase extends ConverterBase {
|
|
7
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolConverter.js","sourceRoot":"","sources":["../../src/converters/ToolConverter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolConverter.js","sourceRoot":"","sources":["../../src/converters/ToolConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAgB,iBAAqB,SAAQ,aAAsB;CAAG"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type Role } from './Role.js';
|
|
2
|
+
/**
|
|
3
|
+
* Resource Annotations — audience, priority, and freshness metadata.
|
|
4
|
+
*
|
|
5
|
+
* Used on {@link Resource} instances to provide hints about who
|
|
6
|
+
* should see the resource and how important it is.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { createAnnotations, Role } from '@vinkius-core/mcp-fusion';
|
|
11
|
+
*
|
|
12
|
+
* const annotations = createAnnotations({
|
|
13
|
+
* audience: [Role.ASSISTANT],
|
|
14
|
+
* priority: 0.8,
|
|
15
|
+
* lastModified: '2025-01-15T10:30:00Z',
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @see {@link Resource} for usage on resources
|
|
20
|
+
* @see {@link createAnnotations} for the factory function
|
|
21
|
+
*/
|
|
22
|
+
export interface Annotations {
|
|
23
|
+
/** Target audience roles for this resource */
|
|
24
|
+
readonly audience?: readonly Role[];
|
|
25
|
+
/** Priority weight (0.0 = lowest, 1.0 = highest) */
|
|
26
|
+
readonly priority?: number;
|
|
27
|
+
/** ISO 8601 timestamp of last modification */
|
|
28
|
+
readonly lastModified?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create Annotations from partial properties.
|
|
32
|
+
*
|
|
33
|
+
* @param props - Annotation properties (all optional)
|
|
34
|
+
* @returns An Annotations instance
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const ann = createAnnotations({ priority: 0.5 });
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function createAnnotations(props?: Annotations): Annotations;
|
|
42
|
+
//# sourceMappingURL=Annotations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Annotations.d.ts","sourceRoot":"","sources":["../../src/domain/Annotations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,WAAW;IACxB,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACpC,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,8CAA8C;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,WAAgB,GAAG,WAAW,CAEtE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {} from './Role.js';
|
|
2
|
+
/**
|
|
3
|
+
* Create Annotations from partial properties.
|
|
4
|
+
*
|
|
5
|
+
* @param props - Annotation properties (all optional)
|
|
6
|
+
* @returns An Annotations instance
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const ann = createAnnotations({ priority: 0.5 });
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export function createAnnotations(props = {}) {
|
|
14
|
+
return { ...props };
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=Annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Annotations.js","sourceRoot":"","sources":["../../src/domain/Annotations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,WAAW,CAAC;AA+BtC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAqB,EAAE;IACrD,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;AACxB,CAAC"}
|