@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.
Files changed (255) hide show
  1. package/README.md +33 -13
  2. package/dist/converters/ConverterBase.d.ts +46 -5
  3. package/dist/converters/ConverterBase.d.ts.map +1 -1
  4. package/dist/converters/ConverterBase.js +34 -3
  5. package/dist/converters/ConverterBase.js.map +1 -1
  6. package/dist/converters/GroupConverter.d.ts +25 -3
  7. package/dist/converters/GroupConverter.d.ts.map +1 -1
  8. package/dist/converters/GroupConverter.js +19 -1
  9. package/dist/converters/GroupConverter.js.map +1 -1
  10. package/dist/converters/PromptConverter.d.ts +25 -3
  11. package/dist/converters/PromptConverter.d.ts.map +1 -1
  12. package/dist/converters/PromptConverter.js +19 -1
  13. package/dist/converters/PromptConverter.js.map +1 -1
  14. package/dist/converters/ResourceConverter.d.ts +27 -3
  15. package/dist/converters/ResourceConverter.d.ts.map +1 -1
  16. package/dist/converters/ResourceConverter.js +21 -1
  17. package/dist/converters/ResourceConverter.js.map +1 -1
  18. package/dist/converters/ToolAnnotationsConverter.d.ts +25 -3
  19. package/dist/converters/ToolAnnotationsConverter.d.ts.map +1 -1
  20. package/dist/converters/ToolAnnotationsConverter.js +19 -1
  21. package/dist/converters/ToolAnnotationsConverter.js.map +1 -1
  22. package/dist/converters/ToolConverter.d.ts +27 -3
  23. package/dist/converters/ToolConverter.d.ts.map +1 -1
  24. package/dist/converters/ToolConverter.js +21 -1
  25. package/dist/converters/ToolConverter.js.map +1 -1
  26. package/dist/domain/Annotations.d.ts +42 -0
  27. package/dist/domain/Annotations.d.ts.map +1 -0
  28. package/dist/domain/Annotations.js +16 -0
  29. package/dist/domain/Annotations.js.map +1 -0
  30. package/dist/domain/BaseModel.d.ts +50 -0
  31. package/dist/domain/BaseModel.d.ts.map +1 -0
  32. package/dist/domain/BaseModel.js +41 -0
  33. package/dist/domain/BaseModel.js.map +1 -0
  34. package/dist/domain/Group.d.ts +99 -0
  35. package/dist/domain/Group.d.ts.map +1 -0
  36. package/dist/{Group.js → domain/Group.js} +76 -0
  37. package/dist/domain/Group.js.map +1 -0
  38. package/dist/domain/GroupItem.d.ts +45 -0
  39. package/dist/domain/GroupItem.d.ts.map +1 -0
  40. package/dist/domain/GroupItem.js +57 -0
  41. package/dist/domain/GroupItem.js.map +1 -0
  42. package/dist/domain/Icon.d.ts +41 -0
  43. package/dist/domain/Icon.d.ts.map +1 -0
  44. package/dist/domain/Icon.js +15 -0
  45. package/dist/domain/Icon.js.map +1 -0
  46. package/dist/domain/Prompt.d.ts +49 -0
  47. package/dist/domain/Prompt.d.ts.map +1 -0
  48. package/dist/domain/Prompt.js +59 -0
  49. package/dist/domain/Prompt.js.map +1 -0
  50. package/dist/domain/PromptArgument.d.ts +23 -0
  51. package/dist/domain/PromptArgument.d.ts.map +1 -0
  52. package/dist/domain/PromptArgument.js +27 -0
  53. package/dist/domain/PromptArgument.js.map +1 -0
  54. package/dist/domain/Resource.d.ts +37 -0
  55. package/dist/domain/Resource.d.ts.map +1 -0
  56. package/dist/domain/Resource.js +39 -0
  57. package/dist/domain/Resource.js.map +1 -0
  58. package/dist/domain/Role.d.ts +23 -0
  59. package/dist/domain/Role.d.ts.map +1 -0
  60. package/dist/domain/Role.js +24 -0
  61. package/dist/domain/Role.js.map +1 -0
  62. package/dist/domain/Tool.d.ts +39 -0
  63. package/dist/domain/Tool.d.ts.map +1 -0
  64. package/dist/domain/Tool.js +41 -0
  65. package/dist/domain/Tool.js.map +1 -0
  66. package/dist/domain/ToolAnnotations.d.ts +48 -0
  67. package/dist/domain/ToolAnnotations.d.ts.map +1 -0
  68. package/dist/domain/ToolAnnotations.js +15 -0
  69. package/dist/domain/ToolAnnotations.js.map +1 -0
  70. package/dist/domain/index.d.ts +16 -0
  71. package/dist/domain/index.d.ts.map +1 -0
  72. package/dist/domain/index.js +13 -0
  73. package/dist/domain/index.js.map +1 -0
  74. package/dist/domain/utils.d.ts.map +1 -0
  75. package/dist/domain/utils.js.map +1 -0
  76. package/dist/framework/builder/ActionGroupBuilder.d.ts +128 -0
  77. package/dist/framework/builder/ActionGroupBuilder.d.ts.map +1 -0
  78. package/dist/framework/builder/ActionGroupBuilder.js +96 -0
  79. package/dist/framework/builder/ActionGroupBuilder.js.map +1 -0
  80. package/dist/framework/builder/GroupedToolBuilder.d.ts +428 -0
  81. package/dist/framework/builder/GroupedToolBuilder.d.ts.map +1 -0
  82. package/dist/framework/builder/GroupedToolBuilder.js +499 -0
  83. package/dist/framework/builder/GroupedToolBuilder.js.map +1 -0
  84. package/dist/framework/builder/ToolDefinitionCompiler.d.ts +36 -0
  85. package/dist/framework/builder/ToolDefinitionCompiler.d.ts.map +1 -0
  86. package/dist/framework/builder/ToolDefinitionCompiler.js +55 -0
  87. package/dist/framework/builder/ToolDefinitionCompiler.js.map +1 -0
  88. package/dist/framework/builder/index.d.ts +5 -0
  89. package/dist/framework/builder/index.d.ts.map +1 -0
  90. package/dist/framework/builder/index.js +4 -0
  91. package/dist/framework/builder/index.js.map +1 -0
  92. package/dist/framework/execution/ExecutionPipeline.d.ts +40 -0
  93. package/dist/framework/execution/ExecutionPipeline.d.ts.map +1 -0
  94. package/dist/framework/execution/ExecutionPipeline.js +71 -0
  95. package/dist/framework/execution/ExecutionPipeline.js.map +1 -0
  96. package/dist/framework/{strategies → execution}/MiddlewareCompiler.d.ts +2 -2
  97. package/dist/framework/execution/MiddlewareCompiler.d.ts.map +1 -0
  98. package/dist/framework/{strategies → execution}/MiddlewareCompiler.js +10 -0
  99. package/dist/framework/execution/MiddlewareCompiler.js.map +1 -0
  100. package/dist/framework/execution/index.d.ts +4 -0
  101. package/dist/framework/execution/index.d.ts.map +1 -0
  102. package/dist/framework/execution/index.js +4 -0
  103. package/dist/framework/execution/index.js.map +1 -0
  104. package/dist/framework/index.d.ts +14 -8
  105. package/dist/framework/index.d.ts.map +1 -1
  106. package/dist/framework/index.js +12 -4
  107. package/dist/framework/index.js.map +1 -1
  108. package/dist/framework/registry/ToolFilterEngine.d.ts +27 -0
  109. package/dist/framework/registry/ToolFilterEngine.d.ts.map +1 -0
  110. package/dist/framework/registry/ToolFilterEngine.js +69 -0
  111. package/dist/framework/registry/ToolFilterEngine.js.map +1 -0
  112. package/dist/framework/registry/ToolRegistry.d.ts +181 -0
  113. package/dist/framework/registry/ToolRegistry.d.ts.map +1 -0
  114. package/dist/framework/registry/ToolRegistry.js +210 -0
  115. package/dist/framework/registry/ToolRegistry.js.map +1 -0
  116. package/dist/framework/registry/index.d.ts +4 -0
  117. package/dist/framework/registry/index.d.ts.map +1 -0
  118. package/dist/framework/registry/index.js +4 -0
  119. package/dist/framework/registry/index.js.map +1 -0
  120. package/dist/framework/response.d.ts +159 -0
  121. package/dist/framework/response.d.ts.map +1 -0
  122. package/dist/framework/response.js +150 -0
  123. package/dist/framework/response.js.map +1 -0
  124. package/dist/framework/result.d.ts +93 -0
  125. package/dist/framework/result.d.ts.map +1 -0
  126. package/dist/framework/result.js +66 -0
  127. package/dist/framework/result.js.map +1 -0
  128. package/dist/framework/{strategies → schema}/AnnotationAggregator.d.ts +1 -1
  129. package/dist/framework/schema/AnnotationAggregator.d.ts.map +1 -0
  130. package/dist/framework/{strategies → schema}/AnnotationAggregator.js +12 -3
  131. package/dist/framework/schema/AnnotationAggregator.js.map +1 -0
  132. package/dist/framework/{strategies → schema}/DescriptionGenerator.d.ts +1 -1
  133. package/dist/framework/schema/DescriptionGenerator.d.ts.map +1 -0
  134. package/dist/framework/{strategies → schema}/DescriptionGenerator.js +10 -0
  135. package/dist/framework/schema/DescriptionGenerator.js.map +1 -0
  136. package/dist/framework/{strategies → schema}/SchemaGenerator.d.ts +1 -1
  137. package/dist/framework/schema/SchemaGenerator.d.ts.map +1 -0
  138. package/dist/framework/{strategies → schema}/SchemaGenerator.js +14 -2
  139. package/dist/framework/schema/SchemaGenerator.js.map +1 -0
  140. package/dist/framework/schema/SchemaUtils.d.ts +8 -0
  141. package/dist/framework/schema/SchemaUtils.d.ts.map +1 -0
  142. package/dist/framework/{strategies → schema}/SchemaUtils.js +12 -10
  143. package/dist/framework/schema/SchemaUtils.js.map +1 -0
  144. package/dist/framework/{strategies → schema}/ToonDescriptionGenerator.d.ts +1 -1
  145. package/dist/framework/schema/ToonDescriptionGenerator.d.ts.map +1 -0
  146. package/dist/framework/{strategies → schema}/ToonDescriptionGenerator.js +1 -0
  147. package/dist/framework/schema/ToonDescriptionGenerator.js.map +1 -0
  148. package/dist/framework/schema/index.d.ts +7 -0
  149. package/dist/framework/schema/index.d.ts.map +1 -0
  150. package/dist/framework/{strategies → schema}/index.js +2 -6
  151. package/dist/framework/schema/index.js.map +1 -0
  152. package/dist/framework/server/ServerAttachment.d.ts +42 -0
  153. package/dist/framework/server/ServerAttachment.d.ts.map +1 -0
  154. package/dist/framework/server/ServerAttachment.js +55 -0
  155. package/dist/framework/server/ServerAttachment.js.map +1 -0
  156. package/dist/framework/server/ServerResolver.d.ts +24 -0
  157. package/dist/framework/server/ServerResolver.d.ts.map +1 -0
  158. package/dist/framework/server/ServerResolver.js +50 -0
  159. package/dist/framework/server/ServerResolver.js.map +1 -0
  160. package/dist/framework/server/index.d.ts +4 -0
  161. package/dist/framework/server/index.d.ts.map +1 -0
  162. package/dist/framework/server/index.js +4 -0
  163. package/dist/framework/server/index.js.map +1 -0
  164. package/dist/framework/types.d.ts +212 -0
  165. package/dist/framework/types.d.ts.map +1 -0
  166. package/dist/framework/types.js +15 -0
  167. package/dist/framework/types.js.map +1 -0
  168. package/dist/index.d.ts +13 -13
  169. package/dist/index.d.ts.map +1 -1
  170. package/dist/index.js +15 -13
  171. package/dist/index.js.map +1 -1
  172. package/package.json +2 -3
  173. package/dist/Annotations.d.ts +0 -12
  174. package/dist/Annotations.d.ts.map +0 -1
  175. package/dist/Annotations.js +0 -5
  176. package/dist/Annotations.js.map +0 -1
  177. package/dist/BaseModel.d.ts +0 -13
  178. package/dist/BaseModel.d.ts.map +0 -1
  179. package/dist/BaseModel.js +0 -14
  180. package/dist/BaseModel.js.map +0 -1
  181. package/dist/Group.d.ts +0 -27
  182. package/dist/Group.d.ts.map +0 -1
  183. package/dist/Group.js.map +0 -1
  184. package/dist/GroupItem.d.ts +0 -10
  185. package/dist/GroupItem.d.ts.map +0 -1
  186. package/dist/GroupItem.js +0 -22
  187. package/dist/GroupItem.js.map +0 -1
  188. package/dist/Icon.d.ts +0 -12
  189. package/dist/Icon.d.ts.map +0 -1
  190. package/dist/Icon.js +0 -5
  191. package/dist/Icon.js.map +0 -1
  192. package/dist/Prompt.d.ts +0 -9
  193. package/dist/Prompt.d.ts.map +0 -1
  194. package/dist/Prompt.js +0 -18
  195. package/dist/Prompt.js.map +0 -1
  196. package/dist/PromptArgument.d.ts +0 -7
  197. package/dist/PromptArgument.d.ts.map +0 -1
  198. package/dist/PromptArgument.js +0 -11
  199. package/dist/PromptArgument.js.map +0 -1
  200. package/dist/Resource.d.ts +0 -10
  201. package/dist/Resource.d.ts.map +0 -1
  202. package/dist/Resource.js +0 -11
  203. package/dist/Resource.js.map +0 -1
  204. package/dist/Role.d.ts +0 -5
  205. package/dist/Role.d.ts.map +0 -1
  206. package/dist/Role.js +0 -6
  207. package/dist/Role.js.map +0 -1
  208. package/dist/Tool.d.ts +0 -9
  209. package/dist/Tool.d.ts.map +0 -1
  210. package/dist/Tool.js +0 -10
  211. package/dist/Tool.js.map +0 -1
  212. package/dist/ToolAnnotations.d.ts +0 -14
  213. package/dist/ToolAnnotations.d.ts.map +0 -1
  214. package/dist/ToolAnnotations.js +0 -5
  215. package/dist/ToolAnnotations.js.map +0 -1
  216. package/dist/framework/GroupedToolBuilder.d.ts +0 -138
  217. package/dist/framework/GroupedToolBuilder.d.ts.map +0 -1
  218. package/dist/framework/GroupedToolBuilder.js +0 -304
  219. package/dist/framework/GroupedToolBuilder.js.map +0 -1
  220. package/dist/framework/ResponseHelper.d.ts +0 -43
  221. package/dist/framework/ResponseHelper.d.ts.map +0 -1
  222. package/dist/framework/ResponseHelper.js +0 -51
  223. package/dist/framework/ResponseHelper.js.map +0 -1
  224. package/dist/framework/ToolBuilder.d.ts +0 -46
  225. package/dist/framework/ToolBuilder.d.ts.map +0 -1
  226. package/dist/framework/ToolBuilder.js +0 -2
  227. package/dist/framework/ToolBuilder.js.map +0 -1
  228. package/dist/framework/ToolRegistry.d.ts +0 -88
  229. package/dist/framework/ToolRegistry.d.ts.map +0 -1
  230. package/dist/framework/ToolRegistry.js +0 -157
  231. package/dist/framework/ToolRegistry.js.map +0 -1
  232. package/dist/framework/strategies/AnnotationAggregator.d.ts.map +0 -1
  233. package/dist/framework/strategies/AnnotationAggregator.js.map +0 -1
  234. package/dist/framework/strategies/DescriptionGenerator.d.ts.map +0 -1
  235. package/dist/framework/strategies/DescriptionGenerator.js.map +0 -1
  236. package/dist/framework/strategies/MiddlewareCompiler.d.ts.map +0 -1
  237. package/dist/framework/strategies/MiddlewareCompiler.js.map +0 -1
  238. package/dist/framework/strategies/SchemaGenerator.d.ts.map +0 -1
  239. package/dist/framework/strategies/SchemaGenerator.js.map +0 -1
  240. package/dist/framework/strategies/SchemaUtils.d.ts +0 -18
  241. package/dist/framework/strategies/SchemaUtils.d.ts.map +0 -1
  242. package/dist/framework/strategies/SchemaUtils.js.map +0 -1
  243. package/dist/framework/strategies/ToonDescriptionGenerator.d.ts.map +0 -1
  244. package/dist/framework/strategies/ToonDescriptionGenerator.js.map +0 -1
  245. package/dist/framework/strategies/Types.d.ts +0 -34
  246. package/dist/framework/strategies/Types.d.ts.map +0 -1
  247. package/dist/framework/strategies/Types.js +0 -2
  248. package/dist/framework/strategies/Types.js.map +0 -1
  249. package/dist/framework/strategies/index.d.ts +0 -13
  250. package/dist/framework/strategies/index.d.ts.map +0 -1
  251. package/dist/framework/strategies/index.js.map +0 -1
  252. package/dist/utils.d.ts.map +0 -1
  253. package/dist/utils.js.map +0 -1
  254. /package/dist/{utils.d.ts → domain/utils.d.ts} +0 -0
  255. /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
- ### Domain Model Layer
247
- Beyond the framework, the package provides a full domain model for MCP primitives:
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 Pattern Internals
261
- Six pure-function modules orchestrated by `GroupedToolBuilder`. Every module is independently testable and replaceable. **Zero shared state.**
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: `convertFrom` and `convertTo`.
6
+ * the single-item abstract methods: {@link convertFrom} and {@link convertTo}.
7
7
  *
8
- * @template TSource - The domain model type (e.g. Group, Tool)
9
- * @template TTarget - The external/DTO type
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
- /** Convert a single source item to a target item. */
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
- /** Convert a single target item back to a source item. */
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;;;;;;;;;GASG;AACH,8BAAsB,aAAa,CAAC,OAAO,EAAE,OAAO;IAChD;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAM/C,qDAAqD;IACrD,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAE9C;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAM7C,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CAC/C"}
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: `convertFrom` and `convertTo`.
6
+ * the single-item abstract methods: {@link convertFrom} and {@link convertTo}.
7
7
  *
8
- * @template TSource - The domain model type (e.g. Group, Tool)
9
- * @template TTarget - The external/DTO type
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;;;;;;;;;GASG;AACH,MAAM,OAAgB,aAAa;IAC/B;;;OAGG;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;IAKD;;;OAGG;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;CAIJ"}
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
- /** Type-safe Group converter contract. */
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
- * Extend and implement `convertFrom(group)` and `convertTo(dto)`.
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,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,0CAA0C;AAC1C,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAExD;;;GAGG;AACH,8BAAsB,kBAAkB,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;CAAG"}
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
- * Extend and implement `convertFrom(group)` and `convertTo(dto)`.
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":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD;;;GAGG;AACH,MAAM,OAAgB,kBAAsB,SAAQ,aAAuB;CAAG"}
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
- /** Type-safe Prompt converter contract. */
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
- * Extend and implement `convertFrom(prompt)` and `convertTo(dto)`.
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,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,2CAA2C;AAC3C,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAE1D;;;GAGG;AACH,8BAAsB,mBAAmB,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;CAAG"}
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
- * Extend and implement `convertFrom(prompt)` and `convertTo(dto)`.
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":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD;;;GAGG;AACH,MAAM,OAAgB,mBAAuB,SAAQ,aAAwB;CAAG"}
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
- /** Type-safe Resource converter contract. */
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
- * Extend and implement `convertFrom(resource)` and `convertTo(dto)`.
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,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,6CAA6C;AAC7C,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAE9D;;;GAGG;AACH,8BAAsB,qBAAqB,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;CAAG"}
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
- * Extend and implement `convertFrom(resource)` and `convertTo(dto)`.
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":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD;;;GAGG;AACH,MAAM,OAAgB,qBAAyB,SAAQ,aAA0B;CAAG"}
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
- /** Type-safe ToolAnnotations converter contract. */
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
- * Extend and implement `convertFrom(toolAnnotation)` and `convertTo(dto)`.
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,uBAAuB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,oDAAoD;AACpD,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAE5E;;;GAGG;AACH,8BAAsB,4BAA4B,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC;CAAG"}
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
- * Extend and implement `convertFrom(toolAnnotation)` and `convertTo(dto)`.
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":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD;;;GAGG;AACH,MAAM,OAAgB,4BAAgC,SAAQ,aAAiC;CAAG"}
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
- /** Type-safe Tool converter contract. */
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
- * Extend and implement `convertFrom(tool)` and `convertTo(dto)`.
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,YAAY,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,yCAAyC;AACzC,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAEtD;;;GAGG;AACH,8BAAsB,iBAAiB,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;CAAG"}
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
- * Extend and implement `convertFrom(tool)` and `convertTo(dto)`.
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":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD;;;GAGG;AACH,MAAM,OAAgB,iBAAqB,SAAQ,aAAsB;CAAG"}
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"}