@vinkius-core/mcp-fusion 2.9.0 → 2.12.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 (172) hide show
  1. package/dist/cli/fusion.d.ts +3 -0
  2. package/dist/cli/fusion.d.ts.map +1 -1
  3. package/dist/cli/fusion.js +125 -3
  4. package/dist/cli/fusion.js.map +1 -1
  5. package/dist/cli/templates/config.js +3 -3
  6. package/dist/cli/templates/config.js.map +1 -1
  7. package/dist/cli/templates/constants.d.ts +1 -1
  8. package/dist/cli/templates/constants.d.ts.map +1 -1
  9. package/dist/cli/templates/constants.js +1 -1
  10. package/dist/cli/templates/constants.js.map +1 -1
  11. package/dist/cli/templates/core.js +5 -5
  12. package/dist/cli/templates/middleware.d.ts +1 -1
  13. package/dist/cli/templates/middleware.d.ts.map +1 -1
  14. package/dist/cli/templates/middleware.js +16 -13
  15. package/dist/cli/templates/middleware.js.map +1 -1
  16. package/dist/cli/templates/readme.d.ts.map +1 -1
  17. package/dist/cli/templates/readme.js +14 -18
  18. package/dist/cli/templates/readme.js.map +1 -1
  19. package/dist/cli/templates/tools.d.ts +4 -0
  20. package/dist/cli/templates/tools.d.ts.map +1 -1
  21. package/dist/cli/templates/tools.js +26 -29
  22. package/dist/cli/templates/tools.js.map +1 -1
  23. package/dist/cli/templates/vectors/database.d.ts.map +1 -1
  24. package/dist/cli/templates/vectors/database.js +14 -19
  25. package/dist/cli/templates/vectors/database.js.map +1 -1
  26. package/dist/cli/templates/vectors/oauth.d.ts.map +1 -1
  27. package/dist/cli/templates/vectors/oauth.js +4 -5
  28. package/dist/cli/templates/vectors/oauth.js.map +1 -1
  29. package/dist/cli/templates/vectors/openapi.js +2 -2
  30. package/dist/cli/templates/vectors/workflow.js +1 -1
  31. package/dist/cli/templates/vectors/workflow.js.map +1 -1
  32. package/dist/client/FusionClient.d.ts +55 -0
  33. package/dist/client/FusionClient.d.ts.map +1 -1
  34. package/dist/client/FusionClient.js +30 -0
  35. package/dist/client/FusionClient.js.map +1 -1
  36. package/dist/client/index.d.ts +1 -1
  37. package/dist/client/index.d.ts.map +1 -1
  38. package/dist/client/index.js.map +1 -1
  39. package/dist/core/builder/ActionGroupBuilder.d.ts +86 -46
  40. package/dist/core/builder/ActionGroupBuilder.d.ts.map +1 -1
  41. package/dist/core/builder/ActionGroupBuilder.js +68 -26
  42. package/dist/core/builder/ActionGroupBuilder.js.map +1 -1
  43. package/dist/core/builder/ErrorBuilder.d.ts +59 -0
  44. package/dist/core/builder/ErrorBuilder.d.ts.map +1 -0
  45. package/dist/core/builder/ErrorBuilder.js +99 -0
  46. package/dist/core/builder/ErrorBuilder.js.map +1 -0
  47. package/dist/core/builder/FluentRouter.d.ts +91 -0
  48. package/dist/core/builder/FluentRouter.d.ts.map +1 -0
  49. package/dist/core/builder/FluentRouter.js +121 -0
  50. package/dist/core/builder/FluentRouter.js.map +1 -0
  51. package/dist/core/builder/FluentSchemaHelpers.d.ts +237 -0
  52. package/dist/core/builder/FluentSchemaHelpers.d.ts.map +1 -0
  53. package/dist/core/builder/FluentSchemaHelpers.js +227 -0
  54. package/dist/core/builder/FluentSchemaHelpers.js.map +1 -0
  55. package/dist/core/builder/FluentToolBuilder.d.ts +347 -0
  56. package/dist/core/builder/FluentToolBuilder.d.ts.map +1 -0
  57. package/dist/core/builder/FluentToolBuilder.js +525 -0
  58. package/dist/core/builder/FluentToolBuilder.js.map +1 -0
  59. package/dist/core/builder/GroupedToolBuilder.d.ts +91 -1
  60. package/dist/core/builder/GroupedToolBuilder.d.ts.map +1 -1
  61. package/dist/core/builder/GroupedToolBuilder.js +122 -4
  62. package/dist/core/builder/GroupedToolBuilder.js.map +1 -1
  63. package/dist/core/builder/ToolDefinitionCompiler.d.ts +1 -0
  64. package/dist/core/builder/ToolDefinitionCompiler.d.ts.map +1 -1
  65. package/dist/core/builder/ToolDefinitionCompiler.js +1 -1
  66. package/dist/core/builder/ToolDefinitionCompiler.js.map +1 -1
  67. package/dist/core/builder/index.d.ts +4 -0
  68. package/dist/core/builder/index.d.ts.map +1 -1
  69. package/dist/core/builder/index.js +7 -0
  70. package/dist/core/builder/index.js.map +1 -1
  71. package/dist/core/execution/EgressGuard.js +1 -1
  72. package/dist/core/execution/EgressGuard.js.map +1 -1
  73. package/dist/core/execution/ExecutionPipeline.d.ts +8 -2
  74. package/dist/core/execution/ExecutionPipeline.d.ts.map +1 -1
  75. package/dist/core/execution/ExecutionPipeline.js +18 -9
  76. package/dist/core/execution/ExecutionPipeline.js.map +1 -1
  77. package/dist/core/execution/PipelineHooks.d.ts +0 -6
  78. package/dist/core/execution/PipelineHooks.d.ts.map +1 -1
  79. package/dist/core/execution/PipelineHooks.js +7 -3
  80. package/dist/core/execution/PipelineHooks.js.map +1 -1
  81. package/dist/core/index.d.ts +5 -7
  82. package/dist/core/index.d.ts.map +1 -1
  83. package/dist/core/index.js +2 -4
  84. package/dist/core/index.js.map +1 -1
  85. package/dist/core/initFusion.d.ts +119 -87
  86. package/dist/core/initFusion.d.ts.map +1 -1
  87. package/dist/core/initFusion.js +56 -66
  88. package/dist/core/initFusion.js.map +1 -1
  89. package/dist/core/registry/ToolRegistry.d.ts +1 -1
  90. package/dist/core/registry/ToolRegistry.d.ts.map +1 -1
  91. package/dist/core/registry/ToolRegistry.js +1 -1
  92. package/dist/core/registry/ToolRegistry.js.map +1 -1
  93. package/dist/core/schema/SchemaGenerator.d.ts +1 -1
  94. package/dist/core/schema/SchemaGenerator.d.ts.map +1 -1
  95. package/dist/core/schema/SchemaGenerator.js +38 -1
  96. package/dist/core/schema/SchemaGenerator.js.map +1 -1
  97. package/dist/core/types.d.ts +19 -0
  98. package/dist/core/types.d.ts.map +1 -1
  99. package/dist/exposition/ExpositionCompiler.d.ts.map +1 -1
  100. package/dist/exposition/ExpositionCompiler.js +25 -2
  101. package/dist/exposition/ExpositionCompiler.js.map +1 -1
  102. package/dist/index.d.ts +3 -3
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +4 -2
  105. package/dist/index.js.map +1 -1
  106. package/dist/introspection/BehaviorDigest.d.ts +2 -2
  107. package/dist/introspection/BehaviorDigest.d.ts.map +1 -1
  108. package/dist/introspection/BehaviorDigest.js +38 -36
  109. package/dist/introspection/BehaviorDigest.js.map +1 -1
  110. package/dist/introspection/CapabilityLockfile.d.ts +2 -2
  111. package/dist/introspection/CapabilityLockfile.d.ts.map +1 -1
  112. package/dist/introspection/CapabilityLockfile.js +9 -9
  113. package/dist/introspection/CapabilityLockfile.js.map +1 -1
  114. package/dist/introspection/CryptoAttestation.d.ts.map +1 -1
  115. package/dist/introspection/CryptoAttestation.js +27 -36
  116. package/dist/introspection/CryptoAttestation.js.map +1 -1
  117. package/dist/introspection/ToolContract.d.ts +2 -2
  118. package/dist/introspection/ToolContract.d.ts.map +1 -1
  119. package/dist/introspection/ToolContract.js +9 -9
  120. package/dist/introspection/ToolContract.js.map +1 -1
  121. package/dist/introspection/canonicalize.d.ts +16 -1
  122. package/dist/introspection/canonicalize.d.ts.map +1 -1
  123. package/dist/introspection/canonicalize.js +24 -3
  124. package/dist/introspection/canonicalize.js.map +1 -1
  125. package/dist/presenter/PostProcessor.d.ts +4 -2
  126. package/dist/presenter/PostProcessor.d.ts.map +1 -1
  127. package/dist/presenter/PostProcessor.js +10 -10
  128. package/dist/presenter/PostProcessor.js.map +1 -1
  129. package/dist/presenter/Presenter.d.ts +112 -6
  130. package/dist/presenter/Presenter.d.ts.map +1 -1
  131. package/dist/presenter/Presenter.js +134 -40
  132. package/dist/presenter/Presenter.js.map +1 -1
  133. package/dist/presenter/SelectUtils.d.ts +78 -0
  134. package/dist/presenter/SelectUtils.d.ts.map +1 -0
  135. package/dist/presenter/SelectUtils.js +141 -0
  136. package/dist/presenter/SelectUtils.js.map +1 -0
  137. package/dist/presenter/index.d.ts +3 -0
  138. package/dist/presenter/index.d.ts.map +1 -1
  139. package/dist/presenter/index.js +6 -0
  140. package/dist/presenter/index.js.map +1 -1
  141. package/dist/presenter/suggest.d.ts +39 -0
  142. package/dist/presenter/suggest.d.ts.map +1 -0
  143. package/dist/presenter/suggest.js +41 -0
  144. package/dist/presenter/suggest.js.map +1 -0
  145. package/dist/presenter/typeHelpers.d.ts +147 -0
  146. package/dist/presenter/typeHelpers.d.ts.map +1 -0
  147. package/dist/presenter/typeHelpers.js +152 -0
  148. package/dist/presenter/typeHelpers.js.map +1 -0
  149. package/dist/prompt/FluentPromptBuilder.d.ts +155 -0
  150. package/dist/prompt/FluentPromptBuilder.d.ts.map +1 -0
  151. package/dist/prompt/FluentPromptBuilder.js +193 -0
  152. package/dist/prompt/FluentPromptBuilder.js.map +1 -0
  153. package/dist/prompt/index.d.ts +1 -0
  154. package/dist/prompt/index.d.ts.map +1 -1
  155. package/dist/prompt/index.js +1 -0
  156. package/dist/prompt/index.js.map +1 -1
  157. package/dist/server/DevServer.js +8 -8
  158. package/dist/server/DevServer.js.map +1 -1
  159. package/dist/server/ServerAttachment.d.ts +1 -1
  160. package/dist/server/ServerAttachment.d.ts.map +1 -1
  161. package/dist/server/ServerAttachment.js +57 -4
  162. package/dist/server/ServerAttachment.js.map +1 -1
  163. package/dist/state-sync/ResponseDecorator.d.ts +1 -1
  164. package/dist/state-sync/StateSyncBuilder.d.ts +75 -0
  165. package/dist/state-sync/StateSyncBuilder.d.ts.map +1 -0
  166. package/dist/state-sync/StateSyncBuilder.js +123 -0
  167. package/dist/state-sync/StateSyncBuilder.js.map +1 -0
  168. package/dist/state-sync/index.d.ts +1 -0
  169. package/dist/state-sync/index.d.ts.map +1 -1
  170. package/dist/state-sync/index.js +1 -0
  171. package/dist/state-sync/index.js.map +1 -1
  172. package/package.json +1 -1
@@ -4,19 +4,17 @@
4
4
  * Public API for the core tool consolidation engine.
5
5
  * Contains only the foundational building blocks: response helpers,
6
6
  * result monad, types, builder, registry, schema, execution, and middleware.
7
- *
8
- * Top-level modules (client, observability, presenter, prompt, server,
9
- * state-sync, introspection, exposition) are exported from their own
10
- * barrel files and re-aggregated in src/index.ts.
11
7
  */
12
8
  export { success, error, required, toonSuccess, toolError } from './response.js';
13
9
  export type { ToolResponse, ToolErrorOptions, ErrorCode, ErrorSeverity } from './response.js';
14
10
  export { succeed, fail } from './result.js';
15
11
  export type { Result, Success, Failure } from './result.js';
16
- export type { ToolBuilder, ActionMetadata, InternalAction, MiddlewareFn, ActionConfig, } from './types.js';
12
+ export type { ToolBuilder, ActionMetadata, InternalAction, MiddlewareFn, ActionConfig, StateSyncHint, } from './types.js';
17
13
  export { GroupedToolBuilder, ActionGroupBuilder, createTool, defineTool } from './builder/index.js';
14
+ export { FluentToolBuilder } from './builder/index.js';
15
+ export { FluentRouter } from './builder/index.js';
18
16
  export type { GroupConfigurator, ToolConfig, ActionDef, GroupDef } from './builder/index.js';
19
- export type { ParamDef, ParamsMap, InferParams, StringParamDef, NumberParamDef, BooleanParamDef, EnumParamDef, ArrayParamDef, } from './builder/index.js';
17
+ export type { SemanticDefaults } from './builder/index.js';
20
18
  export { ToolRegistry } from './registry/index.js';
21
19
  export type { ToolFilter } from './registry/index.js';
22
20
  export { generateToonDescription } from './schema/index.js';
@@ -27,7 +25,7 @@ export type { EgressConfig } from './execution/index.js';
27
25
  export { defineMiddleware, resolveMiddleware } from './middleware/index.js';
28
26
  export type { MiddlewareDefinition, MergeContext, InferContextOut } from './middleware/index.js';
29
27
  export { initFusion } from './initFusion.js';
30
- export type { FusionInstance, FusionToolConfig } from './initFusion.js';
28
+ export type { FusionInstance } from './initFusion.js';
31
29
  export { createGroup } from './createGroup.js';
32
30
  export type { GroupConfig, GroupAction, CompiledGroup } from './createGroup.js';
33
31
  export { toStandardValidator, fromZodSchema, isStandardSchema, autoValidator, } from './StandardSchema.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG5D,YAAY,EACR,WAAW,EAAE,cAAc,EAC3B,cAAc,EAAE,YAAY,EAC5B,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpG,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC7F,YAAY,EACR,QAAQ,EAAE,SAAS,EAAE,WAAW,EAChC,cAAc,EAAE,cAAc,EAAE,eAAe,EAC/C,YAAY,EAAE,aAAa,GAC9B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGhF,OAAO,EACH,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,GACtE,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACR,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAC1D,eAAe,EAAE,gBAAgB,GACpC,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG5D,YAAY,EACR,WAAW,EAAE,cAAc,EAC3B,cAAc,EAAE,YAAY,EAC5B,YAAY,EAAE,aAAa,GAC9B,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC7F,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGhF,OAAO,EACH,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,GACtE,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACR,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAC1D,eAAe,EAAE,gBAAgB,GACpC,MAAM,qBAAqB,CAAC"}
@@ -4,16 +4,14 @@
4
4
  * Public API for the core tool consolidation engine.
5
5
  * Contains only the foundational building blocks: response helpers,
6
6
  * result monad, types, builder, registry, schema, execution, and middleware.
7
- *
8
- * Top-level modules (client, observability, presenter, prompt, server,
9
- * state-sync, introspection, exposition) are exported from their own
10
- * barrel files and re-aggregated in src/index.ts.
11
7
  */
12
8
  // ── Cross-cutting ────────────────────────────────────────
13
9
  export { success, error, required, toonSuccess, toolError } from './response.js';
14
10
  export { succeed, fail } from './result.js';
15
11
  // ── Builder ──────────────────────────────────────────────
16
12
  export { GroupedToolBuilder, ActionGroupBuilder, createTool, defineTool } from './builder/index.js';
13
+ export { FluentToolBuilder } from './builder/index.js';
14
+ export { FluentRouter } from './builder/index.js';
17
15
  // ── Registry ─────────────────────────────────────────────
18
16
  export { ToolRegistry } from './registry/index.js';
19
17
  // ── Schema (public strategies) ───────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,4DAA4D;AAC5D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAU5C,4DAA4D;AAC5D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQpG,4DAA4D;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,4DAA4D;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,4DAA4D;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKhD,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG5E,2DAA2D;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,4DAA4D;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,4DAA4D;AAC5D,OAAO,EACH,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,GACtE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4DAA4D;AAC5D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAU5C,4DAA4D;AAC5D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,4DAA4D;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,4DAA4D;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,4DAA4D;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKhD,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG5E,2DAA2D;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,4DAA4D;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,4DAA4D;AAC5D,OAAO,EACH,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,GACtE,MAAM,qBAAqB,CAAC"}
@@ -2,9 +2,8 @@
2
2
  * initFusion() — tRPC-Style Context Initialization
3
3
  *
4
4
  * Eliminates the need to pass `<AppContext>` as a generic parameter
5
- * everywhere. Define your context type once, and every `f.tool()`,
6
- * `f.presenter()`, `f.prompt()`, and `f.middleware()` call
7
- * automatically inherits it.
5
+ * everywhere. Define your context type once, and every `f.query()`,
6
+ * `f.mutation()`, `f.action()` call automatically inherits it.
8
7
  *
9
8
  * @example
10
9
  * ```typescript
@@ -18,69 +17,33 @@
18
17
  *
19
18
  * export const f = initFusion<AppContext>();
20
19
  *
21
- * // src/tools/billing.ts — daily usage, super clean
20
+ * // src/tools/billing.ts — clean fluent API
22
21
  * import { f } from '../fusion';
23
- * import { z } from 'zod';
24
22
  *
25
- * export const getInvoice = f.tool({
26
- * name: 'billing.get_invoice',
27
- * input: z.object({ id: z.string() }),
28
- * handler: async ({ input, ctx }) => {
29
- * // ctx is fully typed as AppContext!
30
- * return await ctx.db.invoices.findUnique(input.id);
31
- * },
32
- * });
23
+ * export const getInvoice = f.query('billing.get_invoice')
24
+ * .describe('Get an invoice by ID')
25
+ * .withString('id', 'The invoice ID')
26
+ * .handle(async (input, ctx) => {
27
+ * return await ctx.db.invoices.findUnique(input.id);
28
+ * });
33
29
  * ```
34
30
  *
35
31
  * @module
36
32
  */
37
- import { type ZodType, type ZodObject, type ZodRawShape } from 'zod';
33
+ import { type ZodType } from 'zod';
38
34
  import { GroupedToolBuilder } from './builder/GroupedToolBuilder.js';
39
- import { type ToolResponse } from './response.js';
40
- import { type MiddlewareFn } from './types.js';
41
35
  import { ToolRegistry } from './registry/ToolRegistry.js';
42
36
  import { type Presenter } from '../presenter/Presenter.js';
43
37
  import { type PresenterConfig } from '../presenter/definePresenter.js';
44
38
  import { type MiddlewareDefinition } from './middleware/index.js';
45
39
  import { type ToolConfig } from './builder/defineTool.js';
40
+ import { FluentPromptBuilder } from '../prompt/FluentPromptBuilder.js';
46
41
  import { type PromptBuilder, type PromptConfig } from '../prompt/types.js';
47
- import { type ParamsMap, type InferParams } from './builder/ParamDescriptors.js';
48
- /**
49
- * Ergonomic tool config for `f.tool()`.
50
- *
51
- * The `handler` receives `{ input, ctx }` instead of `(ctx, args)` —
52
- * a more intuitive destructured pattern inspired by tRPC v11.
53
- *
54
- * @typeParam TContext - Application context (inherited from `initFusion`)
55
- * @typeParam TInput - Input schema type (inferred from `input`)
56
- */
57
- export interface FusionToolConfig<TContext, TInput extends ZodObject<ZodRawShape> | ParamsMap = ParamsMap> {
58
- /** Tool name — use `domain.action` convention for flat exposition */
59
- readonly name: string;
60
- /** Human-readable description for the LLM */
61
- readonly description?: string;
62
- /** Input schema (Zod object or JSON param descriptors) */
63
- readonly input?: TInput;
64
- /** Capability tags for filtering */
65
- readonly tags?: string[];
66
- /** MCP annotations */
67
- readonly annotations?: Record<string, unknown>;
68
- /** Mark as read-only (no side effects) */
69
- readonly readOnly?: boolean;
70
- /** Mark as destructive (irreversible) */
71
- readonly destructive?: boolean;
72
- /** Mark as idempotent (safe to retry) */
73
- readonly idempotent?: boolean;
74
- /** Global middleware */
75
- readonly middleware?: MiddlewareFn<TContext>[];
76
- /** MVA Presenter for automatic response formatting */
77
- readonly returns?: Presenter<unknown>;
78
- /** Handler function — receives destructured `{ input, ctx }` */
79
- readonly handler: (args: {
80
- input: TInput extends ZodObject<ZodRawShape> ? TInput['_output'] : TInput extends ParamsMap ? InferParams<TInput> : Record<string, unknown>;
81
- ctx: TContext;
82
- }) => Promise<ToolResponse | unknown>;
83
- }
42
+ import { FluentToolBuilder } from './builder/FluentToolBuilder.js';
43
+ import { FluentRouter } from './builder/FluentRouter.js';
44
+ import { ErrorBuilder } from './builder/ErrorBuilder.js';
45
+ import { StateSyncBuilder } from '../state-sync/StateSyncBuilder.js';
46
+ import { type ErrorCode } from './response.js';
84
47
  /**
85
48
  * The initialized Fusion instance.
86
49
  *
@@ -92,24 +55,59 @@ export interface FusionToolConfig<TContext, TInput extends ZodObject<ZodRawShape
92
55
  */
93
56
  export interface FusionInstance<TContext> {
94
57
  /**
95
- * Define a tool with automatic context typing.
58
+ * Create a **read-only** query tool (readOnly: true by default).
96
59
  *
97
- * The handler receives `{ input, ctx }` where `ctx` is your `AppContext`
98
- * and `input` is fully typed from the `input` schema.
60
+ * @param name - Tool name in `domain.action` format
61
+ * @returns A type-chaining {@link FluentToolBuilder}
99
62
  *
100
63
  * @example
101
64
  * ```typescript
102
- * const myTool = f.tool({
103
- * name: 'users.list',
104
- * input: z.object({ limit: z.number().optional() }),
105
- * readOnly: true,
106
- * handler: async ({ input, ctx }) => {
107
- * return await ctx.db.users.findMany({ take: input.limit });
108
- * },
109
- * });
65
+ * const listUsers = f.query('users.list')
66
+ * .describe('List users from the database')
67
+ * .withNumber('limit', 'Max results to return')
68
+ * .withOptionalEnum('status', ['active', 'inactive'], 'Filter by status')
69
+ * .handle(async (input, ctx) => {
70
+ * return ctx.db.user.findMany({ take: input.limit });
71
+ * });
72
+ * ```
73
+ */
74
+ query(name: string): FluentToolBuilder<TContext>;
75
+ /**
76
+ * Create a **destructive** mutation tool (destructive: true by default).
77
+ *
78
+ * @param name - Tool name in `domain.action` format
79
+ * @returns A type-chaining {@link FluentToolBuilder}
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const deleteUser = f.mutation('users.delete')
84
+ * .describe('Delete a user permanently')
85
+ * .withString('id', 'User ID to delete')
86
+ * .handle(async (input, ctx) => {
87
+ * await ctx.db.user.delete({ where: { id: input.id } });
88
+ * });
110
89
  * ```
111
90
  */
112
- tool<TInput extends ZodObject<ZodRawShape> | ParamsMap>(config: FusionToolConfig<TContext, TInput>): GroupedToolBuilder<TContext>;
91
+ mutation(name: string): FluentToolBuilder<TContext>;
92
+ /**
93
+ * Create a **neutral** action tool (no defaults applied).
94
+ *
95
+ * @param name - Tool name in `domain.action` format
96
+ * @returns A type-chaining {@link FluentToolBuilder}
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * const updateUser = f.action('users.update')
101
+ * .describe('Update user profile')
102
+ * .idempotent()
103
+ * .withString('id', 'User ID')
104
+ * .withOptionalString('name', 'New display name')
105
+ * .handle(async (input, ctx) => {
106
+ * return ctx.db.user.update({ where: { id: input.id }, data: input });
107
+ * });
108
+ * ```
109
+ */
110
+ action(name: string): FluentToolBuilder<TContext>;
113
111
  /**
114
112
  * Define a Presenter with the standard object-config API.
115
113
  *
@@ -127,18 +125,19 @@ export interface FusionInstance<TContext> {
127
125
  schema: TSchema;
128
126
  }): Presenter<TSchema['_output']>;
129
127
  /**
130
- * Define a prompt with automatic context typing.
128
+ * Define a prompt fluent builder.
131
129
  *
132
130
  * @example
133
131
  * ```typescript
134
- * const greetPrompt = f.prompt('greet', {
135
- * args: z.object({ name: z.string() }),
136
- * handler: async (ctx, args) => ({
137
- * messages: [PromptMessage.user(`Hello ${args.name}`)],
138
- * }),
139
- * });
132
+ * const greet = f.prompt('greet')
133
+ * .describe('Greet a user')
134
+ * .withString('name', 'User name')
135
+ * .handler(async (ctx, { name }) => ({
136
+ * messages: [PromptMessage.user(`Hello ${name}!`)],
137
+ * }));
140
138
  * ```
141
139
  */
140
+ prompt(name: string): FluentPromptBuilder<TContext>;
142
141
  prompt(name: string, config: Omit<PromptConfig<TContext>, 'handler'> & {
143
142
  handler: PromptConfig<TContext>['handler'];
144
143
  }): PromptBuilder<TContext>;
@@ -154,28 +153,58 @@ export interface FusionInstance<TContext> {
154
153
  */
155
154
  middleware<TDerived extends Record<string, unknown>>(derive: (ctx: TContext) => TDerived | Promise<TDerived>): MiddlewareDefinition<TContext, TDerived>;
156
155
  /**
157
- * Create a fully configured tool using the standard `defineTool()` config.
158
- * For power users who want the full `ToolConfig` API with context typing.
156
+ * Create a pre-typed ToolRegistry ready for registration.
159
157
  *
160
158
  * @example
161
159
  * ```typescript
162
- * const platform = f.defineTool('platform', {
163
- * shared: { workspace_id: 'string' },
164
- * groups: { users: { actions: { list: { handler: listUsers } } } },
165
- * });
160
+ * const registry = f.registry();
161
+ * registry.register(listUsers);
166
162
  * ```
167
163
  */
168
- defineTool(name: string, config: ToolConfig<TContext>): GroupedToolBuilder<TContext>;
164
+ registry(): ToolRegistry<TContext>;
169
165
  /**
170
- * Create a pre-typed ToolRegistry ready for registration.
166
+ * Create a router that shares prefix, middleware, and tags.
167
+ *
168
+ * @param prefix - Common prefix for all tools (e.g. `'users'`)
169
+ * @returns A {@link FluentRouter} for creating child tools
171
170
  *
172
171
  * @example
173
172
  * ```typescript
174
- * const registry = f.registry();
175
- * registry.register(myTool);
173
+ * const users = f.router('users')
174
+ * .describe('User management')
175
+ * .use(requireAuth);
176
+ *
177
+ * const listUsers = users.query('list')
178
+ * .withNumber('limit', 'Max results')
179
+ * .handle(async (input) => { ... });
176
180
  * ```
177
181
  */
178
- registry(): ToolRegistry<TContext>;
182
+ router(prefix: string): FluentRouter<TContext>;
183
+ /**
184
+ * Create a fluent, self-healing error builder.
185
+ *
186
+ * @param code - Canonical error code
187
+ * @param message - Human-readable error message
188
+ * @returns A chaining {@link ErrorBuilder}
189
+ *
190
+ * @example
191
+ * ```typescript
192
+ * return f.error('NOT_FOUND', `Project "${id}" not found`)
193
+ * .suggest('Check the list for valid IDs')
194
+ * .actions('projects.list');
195
+ * ```
196
+ */
197
+ error(code: ErrorCode, message: string): ErrorBuilder;
198
+ /**
199
+ * Create a fluent builder for centralized State Sync policies.
200
+ */
201
+ stateSync(): StateSyncBuilder;
202
+ /**
203
+ * Create a tool using the low-level `defineTool()` config.
204
+ * For internal use and advanced scenarios only.
205
+ * @internal
206
+ */
207
+ defineTool(name: string, config: ToolConfig<TContext>): GroupedToolBuilder<TContext>;
179
208
  }
180
209
  /**
181
210
  * Initialize a Fusion instance with a fixed context type.
@@ -191,10 +220,13 @@ export interface FusionInstance<TContext> {
191
220
  * // Single definition, typically in src/fusion.ts
192
221
  * export const f = initFusion<AppContext>();
193
222
  *
194
- * // Usage anywhere in the project
195
- * const tool = f.tool({ name: 'tasks.list', handler: ... });
196
- * const presenter = f.presenter({ name: 'Task', schema: taskSchema });
197
- * const registry = f.registry();
223
+ * // Build tools with the Fluent API
224
+ * const listUsers = f.query('users.list')
225
+ * .describe('List all users')
226
+ * .withOptionalNumber('limit', 'Max results (default: 50)')
227
+ * .handle(async (input, ctx) => {
228
+ * return ctx.db.users.findMany({ take: input.limit ?? 50 });
229
+ * });
198
230
  * ```
199
231
  */
200
232
  export declare function initFusion<TContext = void>(): FusionInstance<TContext>;
@@ -1 +1 @@
1
- {"version":3,"file":"initFusion.d.ts","sourceRoot":"","sources":["../../src/core/initFusion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initFusion.d.ts","sourceRoot":"","sources":["../../src/core/initFusion.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,8 @@
2
2
  * initFusion() — tRPC-Style Context Initialization
3
3
  *
4
4
  * Eliminates the need to pass `<AppContext>` as a generic parameter
5
- * everywhere. Define your context type once, and every `f.tool()`,
6
- * `f.presenter()`, `f.prompt()`, and `f.middleware()` call
7
- * automatically inherits it.
5
+ * everywhere. Define your context type once, and every `f.query()`,
6
+ * `f.mutation()`, `f.action()` call automatically inherits it.
8
7
  *
9
8
  * @example
10
9
  * ```typescript
@@ -18,25 +17,22 @@
18
17
  *
19
18
  * export const f = initFusion<AppContext>();
20
19
  *
21
- * // src/tools/billing.ts — daily usage, super clean
20
+ * // src/tools/billing.ts — clean fluent API
22
21
  * import { f } from '../fusion';
23
- * import { z } from 'zod';
24
22
  *
25
- * export const getInvoice = f.tool({
26
- * name: 'billing.get_invoice',
27
- * input: z.object({ id: z.string() }),
28
- * handler: async ({ input, ctx }) => {
29
- * // ctx is fully typed as AppContext!
30
- * return await ctx.db.invoices.findUnique(input.id);
31
- * },
32
- * });
23
+ * export const getInvoice = f.query('billing.get_invoice')
24
+ * .describe('Get an invoice by ID')
25
+ * .withString('id', 'The invoice ID')
26
+ * .handle(async (input, ctx) => {
27
+ * return await ctx.db.invoices.findUnique(input.id);
28
+ * });
33
29
  * ```
34
30
  *
35
31
  * @module
36
32
  */
37
33
  import {} from 'zod';
38
34
  import { GroupedToolBuilder } from './builder/GroupedToolBuilder.js';
39
- import { success } from './response.js';
35
+ import {} from './response.js';
40
36
  import {} from './types.js';
41
37
  import { ToolRegistry } from './registry/ToolRegistry.js';
42
38
  import {} from '../presenter/Presenter.js';
@@ -44,9 +40,13 @@ import { definePresenter } from '../presenter/definePresenter.js';
44
40
  import { defineMiddleware } from './middleware/index.js';
45
41
  import { defineTool } from './builder/defineTool.js';
46
42
  import { definePrompt } from '../prompt/definePrompt.js';
43
+ import { FluentPromptBuilder } from '../prompt/FluentPromptBuilder.js';
47
44
  import {} from '../prompt/types.js';
48
- import { isZodSchema } from './schema/SchemaUtils.js';
49
- import { convertParamsToZod } from './builder/ParamDescriptors.js';
45
+ import { FluentToolBuilder, QUERY_DEFAULTS, MUTATION_DEFAULTS, ACTION_DEFAULTS, } from './builder/FluentToolBuilder.js';
46
+ import { FluentRouter } from './builder/FluentRouter.js';
47
+ import { ErrorBuilder } from './builder/ErrorBuilder.js';
48
+ import { StateSyncBuilder } from '../state-sync/StateSyncBuilder.js';
49
+ import {} from './response.js';
50
50
  // ── Factory ──────────────────────────────────────────────
51
51
  /**
52
52
  * Initialize a Fusion instance with a fixed context type.
@@ -62,73 +62,63 @@ import { convertParamsToZod } from './builder/ParamDescriptors.js';
62
62
  * // Single definition, typically in src/fusion.ts
63
63
  * export const f = initFusion<AppContext>();
64
64
  *
65
- * // Usage anywhere in the project
66
- * const tool = f.tool({ name: 'tasks.list', handler: ... });
67
- * const presenter = f.presenter({ name: 'Task', schema: taskSchema });
68
- * const registry = f.registry();
65
+ * // Build tools with the Fluent API
66
+ * const listUsers = f.query('users.list')
67
+ * .describe('List all users')
68
+ * .withOptionalNumber('limit', 'Max results (default: 50)')
69
+ * .handle(async (input, ctx) => {
70
+ * return ctx.db.users.findMany({ take: input.limit ?? 50 });
71
+ * });
69
72
  * ```
70
73
  */
71
74
  export function initFusion() {
72
75
  return {
73
- tool(config) {
74
- // Parse the tool name into group + action
75
- // Convention: 'domain.action' → tool named 'domain' with single action 'action'
76
- const dotIndex = config.name.indexOf('.');
77
- const toolName = dotIndex > 0 ? config.name.slice(0, dotIndex) : config.name;
78
- const actionName = dotIndex > 0 ? config.name.slice(dotIndex + 1) : 'default';
79
- // Resolve input schema
80
- let schema;
81
- if (config.input) {
82
- schema = isZodSchema(config.input)
83
- ? config.input
84
- : convertParamsToZod(config.input);
85
- }
86
- // Wrap handler: { input, ctx } → (ctx, args)
87
- const wrappedHandler = async (ctx, args) => {
88
- const result = await config.handler({ input: args, ctx });
89
- // Auto-wrap non-ToolResponse results
90
- if (typeof result === 'object' &&
91
- result !== null &&
92
- 'content' in result &&
93
- Array.isArray(result.content)) {
94
- return result;
95
- }
96
- return success(result);
97
- };
98
- // Build via defineTool for consistency
99
- const toolConfig = {
100
- ...(config.description ? { description: config.description } : {}),
101
- ...(config.tags && config.tags.length > 0 ? { tags: config.tags } : {}),
102
- ...(config.annotations ? { annotations: config.annotations } : {}),
103
- ...(config.middleware ? { middleware: config.middleware } : {}),
104
- actions: {
105
- [actionName]: {
106
- handler: wrappedHandler,
107
- ...(schema ? { params: schema } : {}),
108
- ...(config.readOnly !== undefined ? { readOnly: config.readOnly } : {}),
109
- ...(config.destructive !== undefined ? { destructive: config.destructive } : {}),
110
- ...(config.idempotent !== undefined ? { idempotent: config.idempotent } : {}),
111
- ...(config.returns ? { returns: config.returns } : {}),
112
- },
113
- },
114
- };
115
- return defineTool(toolName, toolConfig);
76
+ // ── Semantic Verbs ────────────────────────────────
77
+ query(name) {
78
+ return new FluentToolBuilder(name, QUERY_DEFAULTS);
79
+ },
80
+ mutation(name) {
81
+ return new FluentToolBuilder(name, MUTATION_DEFAULTS);
116
82
  },
83
+ action(name) {
84
+ return new FluentToolBuilder(name, ACTION_DEFAULTS);
85
+ },
86
+ // ── MVA Presenter ────────────────────────────────
117
87
  presenter(config) {
118
88
  return definePresenter(config);
119
89
  },
90
+ // ── Prompts ──────────────────────────────────────
91
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
120
92
  prompt(name, config) {
93
+ if (!config) {
94
+ return new FluentPromptBuilder(name);
95
+ }
121
96
  return definePrompt(name, config);
122
97
  },
98
+ // ── Middleware ───────────────────────────────────
123
99
  middleware(derive) {
124
100
  return defineMiddleware(derive);
125
101
  },
126
- defineTool(name, config) {
127
- return defineTool(name, config);
128
- },
102
+ // ── Registry ─────────────────────────────────────
129
103
  registry() {
130
104
  return new ToolRegistry();
131
105
  },
106
+ // ── Router ───────────────────────────────────────
107
+ router(prefix) {
108
+ return new FluentRouter(prefix);
109
+ },
110
+ // ── Error Builder ────────────────────────────────
111
+ error(code, message) {
112
+ return new ErrorBuilder(code, message);
113
+ },
114
+ // ── State Sync ───────────────────────────────────
115
+ stateSync() {
116
+ return new StateSyncBuilder();
117
+ },
118
+ // ── Internal / Advanced ──────────────────────────
119
+ defineTool(name, config) {
120
+ return defineTool(name, config);
121
+ },
132
122
  };
133
123
  }
134
124
  //# sourceMappingURL=initFusion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"initFusion.js","sourceRoot":"","sources":["../../src/core/initFusion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initFusion.js","sourceRoot":"","sources":["../../src/core/initFusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAkD,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAqB,MAAM,eAAe,CAAC;AAClD,OAAO,EAAqB,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAkB,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAwB,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAA6B,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAmB,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAyC,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EACH,iBAAiB,EACjB,cAAc,EAAE,iBAAiB,EAAE,eAAe,GACrD,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAkB,MAAM,eAAe,CAAC;AAsM/C,4DAA4D;AAE5D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,UAAU;IACtB,OAAO;QACH,qDAAqD;QAErD,KAAK,CAAC,IAAY;YACd,OAAO,IAAI,iBAAiB,CAAW,IAAI,EAAE,cAAc,CAAC,CAAC;QACjE,CAAC;QAED,QAAQ,CAAC,IAAY;YACjB,OAAO,IAAI,iBAAiB,CAAW,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,CAAC,IAAY;YACf,OAAO,IAAI,iBAAiB,CAAW,IAAI,EAAE,eAAe,CAAC,CAAC;QAClE,CAAC;QAED,oDAAoD;QAEpD,SAAS,CACL,MAAiE;YAEjE,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,oDAAoD;QAEpD,8DAA8D;QAC9D,MAAM,CAAC,IAAY,EAAE,MAAY;YAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO,IAAI,mBAAmB,CAAW,IAAI,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,YAAY,CAAW,IAAI,EAAE,MAAe,CAAC,CAAC;QACzD,CAAC;QAED,oDAAoD;QAEpD,UAAU,CACN,MAAuD;YAEvD,OAAO,gBAAgB,CAAqB,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,oDAAoD;QAEpD,QAAQ;YACJ,OAAO,IAAI,YAAY,EAAY,CAAC;QACxC,CAAC;QAED,oDAAoD;QAEpD,MAAM,CAAC,MAAc;YACjB,OAAO,IAAI,YAAY,CAAW,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,oDAAoD;QAEpD,KAAK,CAAC,IAAe,EAAE,OAAe;YAClC,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QAED,oDAAoD;QAEpD,SAAS;YACL,OAAO,IAAI,gBAAgB,EAAE,CAAC;QAClC,CAAC;QAED,oDAAoD;QAEpD,UAAU,CAAC,IAAY,EAAE,MAA4B;YACjD,OAAO,UAAU,CAAW,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -187,7 +187,7 @@ export declare class ToolRegistry<TContext = void> {
187
187
  * @see {@link DetachFn} for the teardown function type
188
188
  * @see {@link AttachOptions} for all options
189
189
  */
190
- attachToServer(server: unknown, options?: AttachOptions<TContext>): DetachFn;
190
+ attachToServer(server: unknown, options?: AttachOptions<TContext>): Promise<DetachFn>;
191
191
  /** Check if a tool with the given name is registered. */
192
192
  has(name: string): boolean;
193
193
  /** Remove all registered tools. */
@@ -1 +1 @@
1
- {"version":3,"file":"ToolRegistry.d.ts","sourceRoot":"","sources":["../../../src/core/registry/ToolRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAEH,KAAK,aAAa,EAAE,KAAK,QAAQ,EACpC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAInE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAMhF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,YAAY,CAAC,QAAQ,GAAG,IAAI;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IACtE,OAAO,CAAC,MAAM,CAAC,CAAkB;IACjC,OAAO,CAAC,OAAO,CAAC,CAAe;IAE/B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI;IAS9C;;;;;;;;;OASG;IACH,WAAW,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI;IAMvD;;;;;;OAMG;IACH,WAAW,IAAI,OAAO,EAAE;IAQxB;;;;;;;OAOG;IACH,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI9C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,EAAE;IAIvC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,SAAS,CACX,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAsBxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,cAAc,CACV,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,aAAa,CAAC,QAAQ,CAAM,GACtC,QAAQ;IAIX,yDAAyD;IACzD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAE1B,mCAAmC;IACnC,KAAK,IAAI,IAAI;IAEb,kCAAkC;IAClC,IAAI,IAAI,IAAI,MAAM,CAAgC;IAElD;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAa5C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;CAY5C"}
1
+ {"version":3,"file":"ToolRegistry.d.ts","sourceRoot":"","sources":["../../../src/core/registry/ToolRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAEH,KAAK,aAAa,EAAE,KAAK,QAAQ,EACpC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAInE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAMhF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,YAAY,CAAC,QAAQ,GAAG,IAAI;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IACtE,OAAO,CAAC,MAAM,CAAC,CAAkB;IACjC,OAAO,CAAC,OAAO,CAAC,CAAe;IAE/B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI;IAS9C;;;;;;;;;OASG;IACH,WAAW,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI;IAMvD;;;;;;OAMG;IACH,WAAW,IAAI,OAAO,EAAE;IAQxB;;;;;;;OAOG;IACH,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI9C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,EAAE;IAIvC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,SAAS,CACX,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,CAAC,EAAE,YAAY,EAC3B,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAsBxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,cAAc,CAChB,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,aAAa,CAAC,QAAQ,CAAM,GACtC,OAAO,CAAC,QAAQ,CAAC;IAIpB,yDAAyD;IACzD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAE1B,mCAAmC;IACnC,KAAK,IAAI,IAAI;IAEb,kCAAkC;IAClC,IAAI,IAAI,IAAI,MAAM,CAAgC;IAElD;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAa5C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;CAY5C"}
@@ -229,7 +229,7 @@ export class ToolRegistry {
229
229
  * @see {@link DetachFn} for the teardown function type
230
230
  * @see {@link AttachOptions} for all options
231
231
  */
232
- attachToServer(server, options = {}) {
232
+ async attachToServer(server, options = {}) {
233
233
  return attachToServerStrategy(server, this, options);
234
234
  }
235
235
  /** Check if a tool with the given name is registered. */
@@ -1 +1 @@
1
- {"version":3,"file":"ToolRegistry.js","sourceRoot":"","sources":["../../../src/core/registry/ToolRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolRegistry.js","sourceRoot":"","sources":["../../../src/core/registry/ToolRegistry.ts"],"names":[],"mappings":"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"}