@vurb/core 3.2.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 (642) hide show
  1. package/README.md +677 -0
  2. package/dist/cli/args.d.ts +26 -0
  3. package/dist/cli/args.d.ts.map +1 -0
  4. package/dist/cli/args.js +117 -0
  5. package/dist/cli/args.js.map +1 -0
  6. package/dist/cli/commands/create.d.ts +11 -0
  7. package/dist/cli/commands/create.d.ts.map +1 -0
  8. package/dist/cli/commands/create.js +121 -0
  9. package/dist/cli/commands/create.js.map +1 -0
  10. package/dist/cli/commands/deploy.d.ts +3 -0
  11. package/dist/cli/commands/deploy.d.ts.map +1 -0
  12. package/dist/cli/commands/deploy.js +268 -0
  13. package/dist/cli/commands/deploy.js.map +1 -0
  14. package/dist/cli/commands/dev.d.ts +9 -0
  15. package/dist/cli/commands/dev.d.ts.map +1 -0
  16. package/dist/cli/commands/dev.js +58 -0
  17. package/dist/cli/commands/dev.js.map +1 -0
  18. package/dist/cli/commands/lock.d.ts +5 -0
  19. package/dist/cli/commands/lock.d.ts.map +1 -0
  20. package/dist/cli/commands/lock.js +94 -0
  21. package/dist/cli/commands/lock.js.map +1 -0
  22. package/dist/cli/commands/remote.d.ts +3 -0
  23. package/dist/cli/commands/remote.d.ts.map +1 -0
  24. package/dist/cli/commands/remote.js +37 -0
  25. package/dist/cli/commands/remote.js.map +1 -0
  26. package/dist/cli/constants.d.ts +18 -0
  27. package/dist/cli/constants.d.ts.map +1 -0
  28. package/dist/cli/constants.js +95 -0
  29. package/dist/cli/constants.js.map +1 -0
  30. package/dist/cli/progress.d.ts +34 -0
  31. package/dist/cli/progress.d.ts.map +1 -0
  32. package/dist/cli/progress.js +102 -0
  33. package/dist/cli/progress.js.map +1 -0
  34. package/dist/cli/rc.d.ts +11 -0
  35. package/dist/cli/rc.d.ts.map +1 -0
  36. package/dist/cli/rc.js +75 -0
  37. package/dist/cli/rc.js.map +1 -0
  38. package/dist/cli/registry.d.ts +25 -0
  39. package/dist/cli/registry.d.ts.map +1 -0
  40. package/dist/cli/registry.js +86 -0
  41. package/dist/cli/registry.js.map +1 -0
  42. package/dist/cli/scaffold.d.ts +10 -0
  43. package/dist/cli/scaffold.d.ts.map +1 -0
  44. package/dist/cli/scaffold.js +105 -0
  45. package/dist/cli/scaffold.js.map +1 -0
  46. package/dist/cli/templates/config.d.ts +14 -0
  47. package/dist/cli/templates/config.d.ts.map +1 -0
  48. package/dist/cli/templates/config.js +133 -0
  49. package/dist/cli/templates/config.js.map +1 -0
  50. package/dist/cli/templates/constants.d.ts +9 -0
  51. package/dist/cli/templates/constants.d.ts.map +1 -0
  52. package/dist/cli/templates/constants.js +9 -0
  53. package/dist/cli/templates/constants.js.map +1 -0
  54. package/dist/cli/templates/core.d.ts +14 -0
  55. package/dist/cli/templates/core.d.ts.map +1 -0
  56. package/dist/cli/templates/core.js +186 -0
  57. package/dist/cli/templates/core.js.map +1 -0
  58. package/dist/cli/templates/cursor.d.ts +8 -0
  59. package/dist/cli/templates/cursor.d.ts.map +1 -0
  60. package/dist/cli/templates/cursor.js +13 -0
  61. package/dist/cli/templates/cursor.js.map +1 -0
  62. package/dist/cli/templates/index.d.ts +17 -0
  63. package/dist/cli/templates/index.d.ts.map +1 -0
  64. package/dist/cli/templates/index.js +27 -0
  65. package/dist/cli/templates/index.js.map +1 -0
  66. package/dist/cli/templates/middleware.d.ts +7 -0
  67. package/dist/cli/templates/middleware.d.ts.map +1 -0
  68. package/dist/cli/templates/middleware.js +34 -0
  69. package/dist/cli/templates/middleware.js.map +1 -0
  70. package/dist/cli/templates/presenter.d.ts +7 -0
  71. package/dist/cli/templates/presenter.d.ts.map +1 -0
  72. package/dist/cli/templates/presenter.js +46 -0
  73. package/dist/cli/templates/presenter.js.map +1 -0
  74. package/dist/cli/templates/prompt.d.ts +7 -0
  75. package/dist/cli/templates/prompt.d.ts.map +1 -0
  76. package/dist/cli/templates/prompt.js +42 -0
  77. package/dist/cli/templates/prompt.js.map +1 -0
  78. package/dist/cli/templates/readme.d.ts +8 -0
  79. package/dist/cli/templates/readme.d.ts.map +1 -0
  80. package/dist/cli/templates/readme.js +173 -0
  81. package/dist/cli/templates/readme.js.map +1 -0
  82. package/dist/cli/templates/testing.d.ts +11 -0
  83. package/dist/cli/templates/testing.d.ts.map +1 -0
  84. package/dist/cli/templates/testing.js +101 -0
  85. package/dist/cli/templates/testing.js.map +1 -0
  86. package/dist/cli/templates/tools.d.ts +13 -0
  87. package/dist/cli/templates/tools.d.ts.map +1 -0
  88. package/dist/cli/templates/tools.js +63 -0
  89. package/dist/cli/templates/tools.js.map +1 -0
  90. package/dist/cli/templates/vectors/database.d.ts +9 -0
  91. package/dist/cli/templates/vectors/database.d.ts.map +1 -0
  92. package/dist/cli/templates/vectors/database.js +82 -0
  93. package/dist/cli/templates/vectors/database.js.map +1 -0
  94. package/dist/cli/templates/vectors/index.d.ts +9 -0
  95. package/dist/cli/templates/vectors/index.d.ts.map +1 -0
  96. package/dist/cli/templates/vectors/index.js +9 -0
  97. package/dist/cli/templates/vectors/index.js.map +1 -0
  98. package/dist/cli/templates/vectors/oauth.d.ts +10 -0
  99. package/dist/cli/templates/vectors/oauth.d.ts.map +1 -0
  100. package/dist/cli/templates/vectors/oauth.js +76 -0
  101. package/dist/cli/templates/vectors/oauth.js.map +1 -0
  102. package/dist/cli/templates/vectors/openapi.d.ts +10 -0
  103. package/dist/cli/templates/vectors/openapi.d.ts.map +1 -0
  104. package/dist/cli/templates/vectors/openapi.js +106 -0
  105. package/dist/cli/templates/vectors/openapi.js.map +1 -0
  106. package/dist/cli/templates/vectors/workflow.d.ts +7 -0
  107. package/dist/cli/templates/vectors/workflow.d.ts.map +1 -0
  108. package/dist/cli/templates/vectors/workflow.js +49 -0
  109. package/dist/cli/templates/vectors/workflow.js.map +1 -0
  110. package/dist/cli/types.d.ts +36 -0
  111. package/dist/cli/types.d.ts.map +1 -0
  112. package/dist/cli/types.js +10 -0
  113. package/dist/cli/types.js.map +1 -0
  114. package/dist/cli/utils.d.ts +27 -0
  115. package/dist/cli/utils.d.ts.map +1 -0
  116. package/dist/cli/utils.js +73 -0
  117. package/dist/cli/utils.js.map +1 -0
  118. package/dist/cli/vurb.d.ts +15 -0
  119. package/dist/cli/vurb.d.ts.map +1 -0
  120. package/dist/cli/vurb.js +87 -0
  121. package/dist/cli/vurb.js.map +1 -0
  122. package/dist/client/InferRouter.d.ts +92 -0
  123. package/dist/client/InferRouter.d.ts.map +1 -0
  124. package/dist/client/InferRouter.js +31 -0
  125. package/dist/client/InferRouter.js.map +1 -0
  126. package/dist/client/VurbClient.d.ts +282 -0
  127. package/dist/client/VurbClient.d.ts.map +1 -0
  128. package/dist/client/VurbClient.js +287 -0
  129. package/dist/client/VurbClient.js.map +1 -0
  130. package/dist/client/createTypedRegistry.d.ts +25 -0
  131. package/dist/client/createTypedRegistry.d.ts.map +1 -0
  132. package/dist/client/createTypedRegistry.js +74 -0
  133. package/dist/client/createTypedRegistry.js.map +1 -0
  134. package/dist/client/index.d.ts +6 -0
  135. package/dist/client/index.d.ts.map +1 -0
  136. package/dist/client/index.js +4 -0
  137. package/dist/client/index.js.map +1 -0
  138. package/dist/converters/ConverterBase.d.ts +68 -0
  139. package/dist/converters/ConverterBase.d.ts.map +1 -0
  140. package/dist/converters/ConverterBase.js +62 -0
  141. package/dist/converters/ConverterBase.js.map +1 -0
  142. package/dist/converters/GroupConverter.d.ts +33 -0
  143. package/dist/converters/GroupConverter.d.ts.map +1 -0
  144. package/dist/converters/GroupConverter.js +26 -0
  145. package/dist/converters/GroupConverter.js.map +1 -0
  146. package/dist/converters/PromptConverter.d.ts +33 -0
  147. package/dist/converters/PromptConverter.d.ts.map +1 -0
  148. package/dist/converters/PromptConverter.js +26 -0
  149. package/dist/converters/PromptConverter.js.map +1 -0
  150. package/dist/converters/ResourceConverter.d.ts +35 -0
  151. package/dist/converters/ResourceConverter.d.ts.map +1 -0
  152. package/dist/converters/ResourceConverter.js +28 -0
  153. package/dist/converters/ResourceConverter.js.map +1 -0
  154. package/dist/converters/ToolAnnotationsConverter.d.ts +33 -0
  155. package/dist/converters/ToolAnnotationsConverter.d.ts.map +1 -0
  156. package/dist/converters/ToolAnnotationsConverter.js +26 -0
  157. package/dist/converters/ToolAnnotationsConverter.js.map +1 -0
  158. package/dist/converters/ToolConverter.d.ts +35 -0
  159. package/dist/converters/ToolConverter.d.ts.map +1 -0
  160. package/dist/converters/ToolConverter.js +28 -0
  161. package/dist/converters/ToolConverter.js.map +1 -0
  162. package/dist/converters/index.d.ts +7 -0
  163. package/dist/converters/index.d.ts.map +1 -0
  164. package/dist/converters/index.js +7 -0
  165. package/dist/converters/index.js.map +1 -0
  166. package/dist/core/StandardSchema.d.ts +178 -0
  167. package/dist/core/StandardSchema.d.ts.map +1 -0
  168. package/dist/core/StandardSchema.js +174 -0
  169. package/dist/core/StandardSchema.js.map +1 -0
  170. package/dist/core/builder/ActionGroupBuilder.d.ts +208 -0
  171. package/dist/core/builder/ActionGroupBuilder.d.ts.map +1 -0
  172. package/dist/core/builder/ActionGroupBuilder.js +193 -0
  173. package/dist/core/builder/ActionGroupBuilder.js.map +1 -0
  174. package/dist/core/builder/ErrorBuilder.d.ts +59 -0
  175. package/dist/core/builder/ErrorBuilder.d.ts.map +1 -0
  176. package/dist/core/builder/ErrorBuilder.js +99 -0
  177. package/dist/core/builder/ErrorBuilder.js.map +1 -0
  178. package/dist/core/builder/FluentRouter.d.ts +96 -0
  179. package/dist/core/builder/FluentRouter.d.ts.map +1 -0
  180. package/dist/core/builder/FluentRouter.js +116 -0
  181. package/dist/core/builder/FluentRouter.js.map +1 -0
  182. package/dist/core/builder/FluentSchemaHelpers.d.ts +237 -0
  183. package/dist/core/builder/FluentSchemaHelpers.d.ts.map +1 -0
  184. package/dist/core/builder/FluentSchemaHelpers.js +227 -0
  185. package/dist/core/builder/FluentSchemaHelpers.js.map +1 -0
  186. package/dist/core/builder/FluentToolBuilder.d.ts +419 -0
  187. package/dist/core/builder/FluentToolBuilder.d.ts.map +1 -0
  188. package/dist/core/builder/FluentToolBuilder.js +643 -0
  189. package/dist/core/builder/FluentToolBuilder.js.map +1 -0
  190. package/dist/core/builder/GroupedToolBuilder.d.ts +832 -0
  191. package/dist/core/builder/GroupedToolBuilder.d.ts.map +1 -0
  192. package/dist/core/builder/GroupedToolBuilder.js +1306 -0
  193. package/dist/core/builder/GroupedToolBuilder.js.map +1 -0
  194. package/dist/core/builder/ParamDescriptors.d.ts +142 -0
  195. package/dist/core/builder/ParamDescriptors.d.ts.map +1 -0
  196. package/dist/core/builder/ParamDescriptors.js +164 -0
  197. package/dist/core/builder/ParamDescriptors.js.map +1 -0
  198. package/dist/core/builder/ToolDefinitionCompiler.d.ts +37 -0
  199. package/dist/core/builder/ToolDefinitionCompiler.d.ts.map +1 -0
  200. package/dist/core/builder/ToolDefinitionCompiler.js +72 -0
  201. package/dist/core/builder/ToolDefinitionCompiler.js.map +1 -0
  202. package/dist/core/builder/defineTool.d.ts +180 -0
  203. package/dist/core/builder/defineTool.d.ts.map +1 -0
  204. package/dist/core/builder/defineTool.js +164 -0
  205. package/dist/core/builder/defineTool.js.map +1 -0
  206. package/dist/core/builder/index.d.ts +13 -0
  207. package/dist/core/builder/index.d.ts.map +1 -0
  208. package/dist/core/builder/index.js +13 -0
  209. package/dist/core/builder/index.js.map +1 -0
  210. package/dist/core/createGroup.d.ts +140 -0
  211. package/dist/core/createGroup.d.ts.map +1 -0
  212. package/dist/core/createGroup.js +144 -0
  213. package/dist/core/createGroup.js.map +1 -0
  214. package/dist/core/execution/ConcurrencyGuard.d.ts +103 -0
  215. package/dist/core/execution/ConcurrencyGuard.d.ts.map +1 -0
  216. package/dist/core/execution/ConcurrencyGuard.js +147 -0
  217. package/dist/core/execution/ConcurrencyGuard.js.map +1 -0
  218. package/dist/core/execution/EgressGuard.d.ts +72 -0
  219. package/dist/core/execution/EgressGuard.d.ts.map +1 -0
  220. package/dist/core/execution/EgressGuard.js +163 -0
  221. package/dist/core/execution/EgressGuard.js.map +1 -0
  222. package/dist/core/execution/ExecutionPipeline.d.ts +67 -0
  223. package/dist/core/execution/ExecutionPipeline.d.ts.map +1 -0
  224. package/dist/core/execution/ExecutionPipeline.js +176 -0
  225. package/dist/core/execution/ExecutionPipeline.js.map +1 -0
  226. package/dist/core/execution/MiddlewareCompiler.d.ts +35 -0
  227. package/dist/core/execution/MiddlewareCompiler.d.ts.map +1 -0
  228. package/dist/core/execution/MiddlewareCompiler.js +111 -0
  229. package/dist/core/execution/MiddlewareCompiler.js.map +1 -0
  230. package/dist/core/execution/MutationSerializer.d.ts +78 -0
  231. package/dist/core/execution/MutationSerializer.d.ts.map +1 -0
  232. package/dist/core/execution/MutationSerializer.js +106 -0
  233. package/dist/core/execution/MutationSerializer.js.map +1 -0
  234. package/dist/core/execution/PipelineHooks.d.ts +46 -0
  235. package/dist/core/execution/PipelineHooks.d.ts.map +1 -0
  236. package/dist/core/execution/PipelineHooks.js +66 -0
  237. package/dist/core/execution/PipelineHooks.js.map +1 -0
  238. package/dist/core/execution/ProgressHelper.d.ts +67 -0
  239. package/dist/core/execution/ProgressHelper.d.ts.map +1 -0
  240. package/dist/core/execution/ProgressHelper.js +59 -0
  241. package/dist/core/execution/ProgressHelper.js.map +1 -0
  242. package/dist/core/execution/ValidationErrorFormatter.d.ts +34 -0
  243. package/dist/core/execution/ValidationErrorFormatter.d.ts.map +1 -0
  244. package/dist/core/execution/ValidationErrorFormatter.js +193 -0
  245. package/dist/core/execution/ValidationErrorFormatter.js.map +1 -0
  246. package/dist/core/execution/index.d.ts +9 -0
  247. package/dist/core/execution/index.d.ts.map +1 -0
  248. package/dist/core/execution/index.js +9 -0
  249. package/dist/core/execution/index.js.map +1 -0
  250. package/dist/core/index.d.ts +34 -0
  251. package/dist/core/index.d.ts.map +1 -0
  252. package/dist/core/index.js +29 -0
  253. package/dist/core/index.js.map +1 -0
  254. package/dist/core/initVurb.d.ts +295 -0
  255. package/dist/core/initVurb.d.ts.map +1 -0
  256. package/dist/core/initVurb.js +171 -0
  257. package/dist/core/initVurb.js.map +1 -0
  258. package/dist/core/middleware/ContextDerivation.d.ts +124 -0
  259. package/dist/core/middleware/ContextDerivation.d.ts.map +1 -0
  260. package/dist/core/middleware/ContextDerivation.js +117 -0
  261. package/dist/core/middleware/ContextDerivation.js.map +1 -0
  262. package/dist/core/middleware/index.d.ts +4 -0
  263. package/dist/core/middleware/index.d.ts.map +1 -0
  264. package/dist/core/middleware/index.js +3 -0
  265. package/dist/core/middleware/index.js.map +1 -0
  266. package/dist/core/registry/ToolFilterEngine.d.ts +27 -0
  267. package/dist/core/registry/ToolFilterEngine.d.ts.map +1 -0
  268. package/dist/core/registry/ToolFilterEngine.js +45 -0
  269. package/dist/core/registry/ToolFilterEngine.js.map +1 -0
  270. package/dist/core/registry/ToolRegistry.d.ts +259 -0
  271. package/dist/core/registry/ToolRegistry.d.ts.map +1 -0
  272. package/dist/core/registry/ToolRegistry.js +343 -0
  273. package/dist/core/registry/ToolRegistry.js.map +1 -0
  274. package/dist/core/registry/index.d.ts +4 -0
  275. package/dist/core/registry/index.d.ts.map +1 -0
  276. package/dist/core/registry/index.js +3 -0
  277. package/dist/core/registry/index.js.map +1 -0
  278. package/dist/core/response.d.ts +289 -0
  279. package/dist/core/response.d.ts.map +1 -0
  280. package/dist/core/response.js +286 -0
  281. package/dist/core/response.js.map +1 -0
  282. package/dist/core/result.d.ts +93 -0
  283. package/dist/core/result.d.ts.map +1 -0
  284. package/dist/core/result.js +66 -0
  285. package/dist/core/result.js.map +1 -0
  286. package/dist/core/schema/AnnotationAggregator.d.ts +11 -0
  287. package/dist/core/schema/AnnotationAggregator.d.ts.map +1 -0
  288. package/dist/core/schema/AnnotationAggregator.js +40 -0
  289. package/dist/core/schema/AnnotationAggregator.js.map +1 -0
  290. package/dist/core/schema/DescriptionGenerator.d.ts +12 -0
  291. package/dist/core/schema/DescriptionGenerator.d.ts.map +1 -0
  292. package/dist/core/schema/DescriptionGenerator.js +81 -0
  293. package/dist/core/schema/DescriptionGenerator.js.map +1 -0
  294. package/dist/core/schema/SchemaGenerator.d.ts +15 -0
  295. package/dist/core/schema/SchemaGenerator.d.ts.map +1 -0
  296. package/dist/core/schema/SchemaGenerator.js +192 -0
  297. package/dist/core/schema/SchemaGenerator.js.map +1 -0
  298. package/dist/core/schema/SchemaUtils.d.ts +26 -0
  299. package/dist/core/schema/SchemaUtils.d.ts.map +1 -0
  300. package/dist/core/schema/SchemaUtils.js +85 -0
  301. package/dist/core/schema/SchemaUtils.js.map +1 -0
  302. package/dist/core/schema/ToonDescriptionGenerator.d.ts +3 -0
  303. package/dist/core/schema/ToonDescriptionGenerator.d.ts.map +1 -0
  304. package/dist/core/schema/ToonDescriptionGenerator.js +65 -0
  305. package/dist/core/schema/ToonDescriptionGenerator.js.map +1 -0
  306. package/dist/core/schema/index.d.ts +7 -0
  307. package/dist/core/schema/index.d.ts.map +1 -0
  308. package/dist/core/schema/index.js +7 -0
  309. package/dist/core/schema/index.js.map +1 -0
  310. package/dist/core/serialization/JsonSerializer.d.ts +71 -0
  311. package/dist/core/serialization/JsonSerializer.d.ts.map +1 -0
  312. package/dist/core/serialization/JsonSerializer.js +192 -0
  313. package/dist/core/serialization/JsonSerializer.js.map +1 -0
  314. package/dist/core/serialization/index.d.ts +7 -0
  315. package/dist/core/serialization/index.d.ts.map +1 -0
  316. package/dist/core/serialization/index.js +7 -0
  317. package/dist/core/serialization/index.js.map +1 -0
  318. package/dist/core/types.d.ts +303 -0
  319. package/dist/core/types.d.ts.map +1 -0
  320. package/dist/core/types.js +17 -0
  321. package/dist/core/types.js.map +1 -0
  322. package/dist/domain/Annotations.d.ts +42 -0
  323. package/dist/domain/Annotations.d.ts.map +1 -0
  324. package/dist/domain/Annotations.js +16 -0
  325. package/dist/domain/Annotations.js.map +1 -0
  326. package/dist/domain/BaseModel.d.ts +50 -0
  327. package/dist/domain/BaseModel.d.ts.map +1 -0
  328. package/dist/domain/BaseModel.js +41 -0
  329. package/dist/domain/BaseModel.js.map +1 -0
  330. package/dist/domain/Group.d.ts +99 -0
  331. package/dist/domain/Group.d.ts.map +1 -0
  332. package/dist/domain/Group.js +172 -0
  333. package/dist/domain/Group.js.map +1 -0
  334. package/dist/domain/GroupItem.d.ts +46 -0
  335. package/dist/domain/GroupItem.d.ts.map +1 -0
  336. package/dist/domain/GroupItem.js +58 -0
  337. package/dist/domain/GroupItem.js.map +1 -0
  338. package/dist/domain/Icon.d.ts +41 -0
  339. package/dist/domain/Icon.d.ts.map +1 -0
  340. package/dist/domain/Icon.js +15 -0
  341. package/dist/domain/Icon.js.map +1 -0
  342. package/dist/domain/Prompt.d.ts +49 -0
  343. package/dist/domain/Prompt.d.ts.map +1 -0
  344. package/dist/domain/Prompt.js +59 -0
  345. package/dist/domain/Prompt.js.map +1 -0
  346. package/dist/domain/PromptArgument.d.ts +23 -0
  347. package/dist/domain/PromptArgument.d.ts.map +1 -0
  348. package/dist/domain/PromptArgument.js +27 -0
  349. package/dist/domain/PromptArgument.js.map +1 -0
  350. package/dist/domain/Resource.d.ts +37 -0
  351. package/dist/domain/Resource.d.ts.map +1 -0
  352. package/dist/domain/Resource.js +39 -0
  353. package/dist/domain/Resource.js.map +1 -0
  354. package/dist/domain/Role.d.ts +23 -0
  355. package/dist/domain/Role.d.ts.map +1 -0
  356. package/dist/domain/Role.js +24 -0
  357. package/dist/domain/Role.js.map +1 -0
  358. package/dist/domain/Tool.d.ts +39 -0
  359. package/dist/domain/Tool.d.ts.map +1 -0
  360. package/dist/domain/Tool.js +41 -0
  361. package/dist/domain/Tool.js.map +1 -0
  362. package/dist/domain/ToolAnnotations.d.ts +48 -0
  363. package/dist/domain/ToolAnnotations.d.ts.map +1 -0
  364. package/dist/domain/ToolAnnotations.js +15 -0
  365. package/dist/domain/ToolAnnotations.js.map +1 -0
  366. package/dist/domain/index.d.ts +16 -0
  367. package/dist/domain/index.d.ts.map +1 -0
  368. package/dist/domain/index.js +13 -0
  369. package/dist/domain/index.js.map +1 -0
  370. package/dist/domain/utils.d.ts +6 -0
  371. package/dist/domain/utils.d.ts.map +1 -0
  372. package/dist/domain/utils.js +12 -0
  373. package/dist/domain/utils.js.map +1 -0
  374. package/dist/edge-stub.d.ts +73 -0
  375. package/dist/edge-stub.d.ts.map +1 -0
  376. package/dist/edge-stub.js +83 -0
  377. package/dist/edge-stub.js.map +1 -0
  378. package/dist/exposition/ExpositionCompiler.d.ts +66 -0
  379. package/dist/exposition/ExpositionCompiler.d.ts.map +1 -0
  380. package/dist/exposition/ExpositionCompiler.js +279 -0
  381. package/dist/exposition/ExpositionCompiler.js.map +1 -0
  382. package/dist/exposition/index.d.ts +4 -0
  383. package/dist/exposition/index.d.ts.map +1 -0
  384. package/dist/exposition/index.js +2 -0
  385. package/dist/exposition/index.js.map +1 -0
  386. package/dist/exposition/types.d.ts +58 -0
  387. package/dist/exposition/types.d.ts.map +1 -0
  388. package/dist/exposition/types.js +11 -0
  389. package/dist/exposition/types.js.map +1 -0
  390. package/dist/fsm/StateMachineGate.d.ts +294 -0
  391. package/dist/fsm/StateMachineGate.d.ts.map +1 -0
  392. package/dist/fsm/StateMachineGate.js +400 -0
  393. package/dist/fsm/StateMachineGate.js.map +1 -0
  394. package/dist/index.d.ts +148 -0
  395. package/dist/index.d.ts.map +1 -0
  396. package/dist/index.js +112 -0
  397. package/dist/index.js.map +1 -0
  398. package/dist/introspection/BehaviorDigest.d.ts +112 -0
  399. package/dist/introspection/BehaviorDigest.d.ts.map +1 -0
  400. package/dist/introspection/BehaviorDigest.js +149 -0
  401. package/dist/introspection/BehaviorDigest.js.map +1 -0
  402. package/dist/introspection/CapabilityLockfile.d.ts +261 -0
  403. package/dist/introspection/CapabilityLockfile.d.ts.map +1 -0
  404. package/dist/introspection/CapabilityLockfile.js +395 -0
  405. package/dist/introspection/CapabilityLockfile.js.map +1 -0
  406. package/dist/introspection/ContractAwareSelfHealing.d.ts +90 -0
  407. package/dist/introspection/ContractAwareSelfHealing.d.ts.map +1 -0
  408. package/dist/introspection/ContractAwareSelfHealing.js +132 -0
  409. package/dist/introspection/ContractAwareSelfHealing.js.map +1 -0
  410. package/dist/introspection/ContractDiff.d.ts +91 -0
  411. package/dist/introspection/ContractDiff.d.ts.map +1 -0
  412. package/dist/introspection/ContractDiff.js +466 -0
  413. package/dist/introspection/ContractDiff.js.map +1 -0
  414. package/dist/introspection/CryptoAttestation.d.ts +143 -0
  415. package/dist/introspection/CryptoAttestation.d.ts.map +1 -0
  416. package/dist/introspection/CryptoAttestation.js +192 -0
  417. package/dist/introspection/CryptoAttestation.js.map +1 -0
  418. package/dist/introspection/EntitlementScanner.d.ts +177 -0
  419. package/dist/introspection/EntitlementScanner.d.ts.map +1 -0
  420. package/dist/introspection/EntitlementScanner.js +459 -0
  421. package/dist/introspection/EntitlementScanner.js.map +1 -0
  422. package/dist/introspection/GovernanceObserver.d.ts +88 -0
  423. package/dist/introspection/GovernanceObserver.d.ts.map +1 -0
  424. package/dist/introspection/GovernanceObserver.js +136 -0
  425. package/dist/introspection/GovernanceObserver.js.map +1 -0
  426. package/dist/introspection/IntrospectionResource.d.ts +20 -0
  427. package/dist/introspection/IntrospectionResource.d.ts.map +1 -0
  428. package/dist/introspection/IntrospectionResource.js +112 -0
  429. package/dist/introspection/IntrospectionResource.js.map +1 -0
  430. package/dist/introspection/ManifestCompiler.d.ts +33 -0
  431. package/dist/introspection/ManifestCompiler.d.ts.map +1 -0
  432. package/dist/introspection/ManifestCompiler.js +88 -0
  433. package/dist/introspection/ManifestCompiler.js.map +1 -0
  434. package/dist/introspection/SemanticProbe.d.ts +207 -0
  435. package/dist/introspection/SemanticProbe.d.ts.map +1 -0
  436. package/dist/introspection/SemanticProbe.js +274 -0
  437. package/dist/introspection/SemanticProbe.js.map +1 -0
  438. package/dist/introspection/TokenEconomics.d.ts +210 -0
  439. package/dist/introspection/TokenEconomics.d.ts.map +1 -0
  440. package/dist/introspection/TokenEconomics.js +292 -0
  441. package/dist/introspection/TokenEconomics.js.map +1 -0
  442. package/dist/introspection/ToolContract.d.ts +161 -0
  443. package/dist/introspection/ToolContract.d.ts.map +1 -0
  444. package/dist/introspection/ToolContract.js +218 -0
  445. package/dist/introspection/ToolContract.js.map +1 -0
  446. package/dist/introspection/canonicalize.d.ts +35 -0
  447. package/dist/introspection/canonicalize.d.ts.map +1 -0
  448. package/dist/introspection/canonicalize.js +72 -0
  449. package/dist/introspection/canonicalize.js.map +1 -0
  450. package/dist/introspection/index.d.ts +26 -0
  451. package/dist/introspection/index.d.ts.map +1 -0
  452. package/dist/introspection/index.js +24 -0
  453. package/dist/introspection/index.js.map +1 -0
  454. package/dist/introspection/types.d.ts +120 -0
  455. package/dist/introspection/types.d.ts.map +1 -0
  456. package/dist/introspection/types.js +13 -0
  457. package/dist/introspection/types.js.map +1 -0
  458. package/dist/observability/DebugObserver.d.ts +185 -0
  459. package/dist/observability/DebugObserver.d.ts.map +1 -0
  460. package/dist/observability/DebugObserver.js +102 -0
  461. package/dist/observability/DebugObserver.js.map +1 -0
  462. package/dist/observability/TelemetryBus.d.ts +88 -0
  463. package/dist/observability/TelemetryBus.d.ts.map +1 -0
  464. package/dist/observability/TelemetryBus.js +463 -0
  465. package/dist/observability/TelemetryBus.js.map +1 -0
  466. package/dist/observability/TelemetryEvent.d.ts +177 -0
  467. package/dist/observability/TelemetryEvent.d.ts.map +1 -0
  468. package/dist/observability/TelemetryEvent.js +2 -0
  469. package/dist/observability/TelemetryEvent.js.map +1 -0
  470. package/dist/observability/Tracing.d.ts +155 -0
  471. package/dist/observability/Tracing.d.ts.map +1 -0
  472. package/dist/observability/Tracing.js +67 -0
  473. package/dist/observability/Tracing.js.map +1 -0
  474. package/dist/observability/index.d.ts +13 -0
  475. package/dist/observability/index.d.ts.map +1 -0
  476. package/dist/observability/index.js +12 -0
  477. package/dist/observability/index.js.map +1 -0
  478. package/dist/presenter/PostProcessor.d.ts +52 -0
  479. package/dist/presenter/PostProcessor.d.ts.map +1 -0
  480. package/dist/presenter/PostProcessor.js +148 -0
  481. package/dist/presenter/PostProcessor.js.map +1 -0
  482. package/dist/presenter/Presenter.d.ts +575 -0
  483. package/dist/presenter/Presenter.d.ts.map +1 -0
  484. package/dist/presenter/Presenter.js +768 -0
  485. package/dist/presenter/Presenter.js.map +1 -0
  486. package/dist/presenter/PresenterValidationError.d.ts +42 -0
  487. package/dist/presenter/PresenterValidationError.d.ts.map +1 -0
  488. package/dist/presenter/PresenterValidationError.js +55 -0
  489. package/dist/presenter/PresenterValidationError.js.map +1 -0
  490. package/dist/presenter/RedactEngine.d.ts +110 -0
  491. package/dist/presenter/RedactEngine.d.ts.map +1 -0
  492. package/dist/presenter/RedactEngine.js +128 -0
  493. package/dist/presenter/RedactEngine.js.map +1 -0
  494. package/dist/presenter/ResponseBuilder.d.ts +262 -0
  495. package/dist/presenter/ResponseBuilder.d.ts.map +1 -0
  496. package/dist/presenter/ResponseBuilder.js +374 -0
  497. package/dist/presenter/ResponseBuilder.js.map +1 -0
  498. package/dist/presenter/SelectUtils.d.ts +78 -0
  499. package/dist/presenter/SelectUtils.d.ts.map +1 -0
  500. package/dist/presenter/SelectUtils.js +141 -0
  501. package/dist/presenter/SelectUtils.js.map +1 -0
  502. package/dist/presenter/ZodDescriptionExtractor.d.ts +54 -0
  503. package/dist/presenter/ZodDescriptionExtractor.d.ts.map +1 -0
  504. package/dist/presenter/ZodDescriptionExtractor.js +131 -0
  505. package/dist/presenter/ZodDescriptionExtractor.js.map +1 -0
  506. package/dist/presenter/definePresenter.d.ts +193 -0
  507. package/dist/presenter/definePresenter.d.ts.map +1 -0
  508. package/dist/presenter/definePresenter.js +99 -0
  509. package/dist/presenter/definePresenter.js.map +1 -0
  510. package/dist/presenter/index.d.ts +21 -0
  511. package/dist/presenter/index.d.ts.map +1 -0
  512. package/dist/presenter/index.js +28 -0
  513. package/dist/presenter/index.js.map +1 -0
  514. package/dist/presenter/suggest.d.ts +39 -0
  515. package/dist/presenter/suggest.d.ts.map +1 -0
  516. package/dist/presenter/suggest.js +41 -0
  517. package/dist/presenter/suggest.js.map +1 -0
  518. package/dist/presenter/typeHelpers.d.ts +147 -0
  519. package/dist/presenter/typeHelpers.d.ts.map +1 -0
  520. package/dist/presenter/typeHelpers.js +152 -0
  521. package/dist/presenter/typeHelpers.js.map +1 -0
  522. package/dist/presenter/ui.d.ts +205 -0
  523. package/dist/presenter/ui.d.ts.map +1 -0
  524. package/dist/presenter/ui.js +222 -0
  525. package/dist/presenter/ui.js.map +1 -0
  526. package/dist/prompt/CursorCodec.d.ts +43 -0
  527. package/dist/prompt/CursorCodec.d.ts.map +1 -0
  528. package/dist/prompt/CursorCodec.js +171 -0
  529. package/dist/prompt/CursorCodec.js.map +1 -0
  530. package/dist/prompt/FluentPromptBuilder.d.ts +155 -0
  531. package/dist/prompt/FluentPromptBuilder.d.ts.map +1 -0
  532. package/dist/prompt/FluentPromptBuilder.js +195 -0
  533. package/dist/prompt/FluentPromptBuilder.js.map +1 -0
  534. package/dist/prompt/HydrationSandbox.d.ts +55 -0
  535. package/dist/prompt/HydrationSandbox.d.ts.map +1 -0
  536. package/dist/prompt/HydrationSandbox.js +122 -0
  537. package/dist/prompt/HydrationSandbox.js.map +1 -0
  538. package/dist/prompt/PromptExecutionPipeline.d.ts +61 -0
  539. package/dist/prompt/PromptExecutionPipeline.d.ts.map +1 -0
  540. package/dist/prompt/PromptExecutionPipeline.js +177 -0
  541. package/dist/prompt/PromptExecutionPipeline.js.map +1 -0
  542. package/dist/prompt/PromptMessage.d.ts +133 -0
  543. package/dist/prompt/PromptMessage.d.ts.map +1 -0
  544. package/dist/prompt/PromptMessage.js +182 -0
  545. package/dist/prompt/PromptMessage.js.map +1 -0
  546. package/dist/prompt/PromptRegistry.d.ts +236 -0
  547. package/dist/prompt/PromptRegistry.d.ts.map +1 -0
  548. package/dist/prompt/PromptRegistry.js +399 -0
  549. package/dist/prompt/PromptRegistry.js.map +1 -0
  550. package/dist/prompt/definePrompt.d.ts +111 -0
  551. package/dist/prompt/definePrompt.d.ts.map +1 -0
  552. package/dist/prompt/definePrompt.js +130 -0
  553. package/dist/prompt/definePrompt.js.map +1 -0
  554. package/dist/prompt/index.d.ts +12 -0
  555. package/dist/prompt/index.d.ts.map +1 -0
  556. package/dist/prompt/index.js +13 -0
  557. package/dist/prompt/index.js.map +1 -0
  558. package/dist/prompt/types.d.ts +425 -0
  559. package/dist/prompt/types.d.ts.map +1 -0
  560. package/dist/prompt/types.js +19 -0
  561. package/dist/prompt/types.js.map +1 -0
  562. package/dist/sandbox/SandboxEngine.d.ts +225 -0
  563. package/dist/sandbox/SandboxEngine.d.ts.map +1 -0
  564. package/dist/sandbox/SandboxEngine.js +437 -0
  565. package/dist/sandbox/SandboxEngine.js.map +1 -0
  566. package/dist/sandbox/SandboxGuard.d.ts +47 -0
  567. package/dist/sandbox/SandboxGuard.d.ts.map +1 -0
  568. package/dist/sandbox/SandboxGuard.js +127 -0
  569. package/dist/sandbox/SandboxGuard.js.map +1 -0
  570. package/dist/sandbox/index.d.ts +23 -0
  571. package/dist/sandbox/index.d.ts.map +1 -0
  572. package/dist/sandbox/index.js +26 -0
  573. package/dist/sandbox/index.js.map +1 -0
  574. package/dist/server/DevServer.d.ts +120 -0
  575. package/dist/server/DevServer.d.ts.map +1 -0
  576. package/dist/server/DevServer.js +252 -0
  577. package/dist/server/DevServer.js.map +1 -0
  578. package/dist/server/ServerAttachment.d.ts +354 -0
  579. package/dist/server/ServerAttachment.d.ts.map +1 -0
  580. package/dist/server/ServerAttachment.js +709 -0
  581. package/dist/server/ServerAttachment.js.map +1 -0
  582. package/dist/server/ServerResolver.d.ts +24 -0
  583. package/dist/server/ServerResolver.d.ts.map +1 -0
  584. package/dist/server/ServerResolver.js +50 -0
  585. package/dist/server/ServerResolver.js.map +1 -0
  586. package/dist/server/autoDiscover.d.ts +75 -0
  587. package/dist/server/autoDiscover.d.ts.map +1 -0
  588. package/dist/server/autoDiscover.js +164 -0
  589. package/dist/server/autoDiscover.js.map +1 -0
  590. package/dist/server/index.d.ts +12 -0
  591. package/dist/server/index.d.ts.map +1 -0
  592. package/dist/server/index.js +11 -0
  593. package/dist/server/index.js.map +1 -0
  594. package/dist/server/startServer.d.ts +81 -0
  595. package/dist/server/startServer.d.ts.map +1 -0
  596. package/dist/server/startServer.js +143 -0
  597. package/dist/server/startServer.js.map +1 -0
  598. package/dist/state-sync/CausalEngine.d.ts +28 -0
  599. package/dist/state-sync/CausalEngine.d.ts.map +1 -0
  600. package/dist/state-sync/CausalEngine.js +17 -0
  601. package/dist/state-sync/CausalEngine.js.map +1 -0
  602. package/dist/state-sync/DescriptionDecorator.d.ts +31 -0
  603. package/dist/state-sync/DescriptionDecorator.d.ts.map +1 -0
  604. package/dist/state-sync/DescriptionDecorator.js +38 -0
  605. package/dist/state-sync/DescriptionDecorator.js.map +1 -0
  606. package/dist/state-sync/GlobMatcher.d.ts +29 -0
  607. package/dist/state-sync/GlobMatcher.d.ts.map +1 -0
  608. package/dist/state-sync/GlobMatcher.js +79 -0
  609. package/dist/state-sync/GlobMatcher.js.map +1 -0
  610. package/dist/state-sync/PolicyEngine.d.ts +75 -0
  611. package/dist/state-sync/PolicyEngine.d.ts.map +1 -0
  612. package/dist/state-sync/PolicyEngine.js +107 -0
  613. package/dist/state-sync/PolicyEngine.js.map +1 -0
  614. package/dist/state-sync/PolicyValidator.d.ts +67 -0
  615. package/dist/state-sync/PolicyValidator.d.ts.map +1 -0
  616. package/dist/state-sync/PolicyValidator.js +122 -0
  617. package/dist/state-sync/PolicyValidator.js.map +1 -0
  618. package/dist/state-sync/ResponseDecorator.d.ts +33 -0
  619. package/dist/state-sync/ResponseDecorator.d.ts.map +1 -0
  620. package/dist/state-sync/ResponseDecorator.js +20 -0
  621. package/dist/state-sync/ResponseDecorator.js.map +1 -0
  622. package/dist/state-sync/StateSyncBuilder.d.ts +77 -0
  623. package/dist/state-sync/StateSyncBuilder.d.ts.map +1 -0
  624. package/dist/state-sync/StateSyncBuilder.js +129 -0
  625. package/dist/state-sync/StateSyncBuilder.js.map +1 -0
  626. package/dist/state-sync/StateSyncLayer.d.ts +107 -0
  627. package/dist/state-sync/StateSyncLayer.d.ts.map +1 -0
  628. package/dist/state-sync/StateSyncLayer.js +158 -0
  629. package/dist/state-sync/StateSyncLayer.js.map +1 -0
  630. package/dist/state-sync/index.d.ts +27 -0
  631. package/dist/state-sync/index.d.ts.map +1 -0
  632. package/dist/state-sync/index.js +27 -0
  633. package/dist/state-sync/index.js.map +1 -0
  634. package/dist/state-sync/types.d.ts +174 -0
  635. package/dist/state-sync/types.d.ts.map +1 -0
  636. package/dist/state-sync/types.js +17 -0
  637. package/dist/state-sync/types.js.map +1 -0
  638. package/dist/testing/MvaMetaSymbol.d.ts +45 -0
  639. package/dist/testing/MvaMetaSymbol.d.ts.map +1 -0
  640. package/dist/testing/MvaMetaSymbol.js +34 -0
  641. package/dist/testing/MvaMetaSymbol.js.map +1 -0
  642. package/package.json +153 -0
@@ -0,0 +1,343 @@
1
+ /**
2
+ * ToolRegistry — Centralized Tool Registration & Routing
3
+ *
4
+ * The single place where all tool builders are registered and where
5
+ * incoming MCP calls are routed to the correct handler.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { ToolRegistry, createTool, success } from 'vurb';
10
+ *
11
+ * const registry = new ToolRegistry<AppContext>();
12
+ *
13
+ * registry.register(
14
+ * createTool<AppContext>('projects').action({ name: 'list', handler: listProjects }),
15
+ * );
16
+ *
17
+ * // Attach to any MCP server (duck-typed):
18
+ * const detach = registry.attachToServer(server, {
19
+ * contextFactory: (extra) => createAppContext(extra),
20
+ * });
21
+ *
22
+ * // Clean teardown (e.g. in tests):
23
+ * detach();
24
+ * ```
25
+ *
26
+ * @see {@link createTool} for building tools
27
+ * @see {@link GroupedToolBuilder} for the builder API
28
+ *
29
+ * @module
30
+ */
31
+ import {} from '@modelcontextprotocol/sdk/types.js';
32
+ import { toolError } from '../response.js';
33
+ import {} from '../types.js';
34
+ import {} from '../../observability/DebugObserver.js';
35
+ import {} from '../../observability/TelemetryEvent.js';
36
+ import { SpanStatusCode } from '../../observability/Tracing.js';
37
+ import { filterTools } from './ToolFilterEngine.js';
38
+ import { attachToServer as attachToServerStrategy, } from '../../server/ServerAttachment.js';
39
+ import {} from '../execution/ProgressHelper.js';
40
+ // ============================================================================
41
+ // ToolRegistry
42
+ // ============================================================================
43
+ /**
44
+ * Centralized registry for MCP tool builders.
45
+ *
46
+ * Manages tool registration, filtered retrieval, call routing,
47
+ * and MCP server attachment.
48
+ *
49
+ * @typeParam TContext - Application context type shared across all tools
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const registry = new ToolRegistry<AppContext>();
54
+ *
55
+ * // Register individually
56
+ * registry.register(projectsTool);
57
+ *
58
+ * // Register multiple at once
59
+ * registry.registerAll(usersTool, billingTool, adminTool);
60
+ *
61
+ * // Query registered tools
62
+ * registry.has('projects'); // true
63
+ * registry.size; // 4
64
+ * ```
65
+ */
66
+ export class ToolRegistry {
67
+ _builders = new Map();
68
+ _debug;
69
+ _tracer;
70
+ _telemetrySink;
71
+ /**
72
+ * Register a single tool builder.
73
+ *
74
+ * Validates that the tool name is unique and triggers
75
+ * {@link GroupedToolBuilder.buildToolDefinition} to compile
76
+ * the tool definition at registration time.
77
+ *
78
+ * @param builder - A built or unbuilt tool builder
79
+ * @throws If a tool with the same name is already registered
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * registry.register(
84
+ * createTool<AppContext>('projects')
85
+ * .action({ name: 'list', handler: listProjects })
86
+ * );
87
+ * ```
88
+ */
89
+ register(builder) {
90
+ const name = builder.getName();
91
+ if (this._builders.has(name)) {
92
+ throw new Error(`Tool "${name}" is already registered.`);
93
+ }
94
+ builder.buildToolDefinition();
95
+ this._builders.set(name, builder);
96
+ // Propagate active observability features to the new builder (Bug #12)
97
+ this._propagateObservability(builder);
98
+ }
99
+ /**
100
+ * Register multiple tool builders at once.
101
+ *
102
+ * @param builders - One or more tool builders
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * registry.registerAll(usersTool, projectsTool, billingTool);
107
+ * ```
108
+ */
109
+ registerAll(...builders) {
110
+ for (const builder of builders) {
111
+ this.register(builder);
112
+ }
113
+ }
114
+ /**
115
+ * Get all registered MCP tool definitions.
116
+ *
117
+ * Returns the compiled `McpTool` objects for all registered builders.
118
+ *
119
+ * @returns Array of MCP Tool objects
120
+ */
121
+ getAllTools() {
122
+ const tools = [];
123
+ for (const builder of this._builders.values()) {
124
+ tools.push(builder.buildToolDefinition());
125
+ }
126
+ return tools;
127
+ }
128
+ /**
129
+ * Get an iterable of all registered tool builders.
130
+ *
131
+ * Used by the introspection module to extract action
132
+ * metadata and presenter information from each builder.
133
+ *
134
+ * @returns Iterable of registered ToolBuilder instances
135
+ */
136
+ getBuilders() {
137
+ return this._builders.values();
138
+ }
139
+ /**
140
+ * Get tool definitions filtered by tags.
141
+ *
142
+ * Uses the {@link ToolFilter} to include/exclude tools
143
+ * based on their capability tags.
144
+ *
145
+ * @param filter - Tag-based filter configuration
146
+ * @returns Filtered array of MCP Tool objects
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * // Only core tools
151
+ * const coreTools = registry.getTools({ tags: ['core'] });
152
+ *
153
+ * // Everything except internal tools
154
+ * const publicTools = registry.getTools({ exclude: ['internal'] });
155
+ * ```
156
+ *
157
+ * @see {@link ToolFilter} for filter options
158
+ */
159
+ getTools(filter) {
160
+ return filterTools(this._builders.values(), filter);
161
+ }
162
+ /**
163
+ * Route an incoming tool call to the correct builder.
164
+ *
165
+ * Looks up the builder by name and delegates to its `execute()` method.
166
+ * Returns an error response if the tool is not found.
167
+ *
168
+ * @param ctx - Application context
169
+ * @param name - Tool name from the incoming MCP call
170
+ * @param args - Raw arguments from the LLM
171
+ * @param progressSink - Optional callback for streaming progress notifications.
172
+ * When called from `attachToServer()`, this is automatically wired to
173
+ * MCP `notifications/progress`. When omitted, progress events are silently consumed.
174
+ * @returns The handler's response
175
+ *
176
+ * @example
177
+ * ```typescript
178
+ * const response = await registry.routeCall(ctx, 'projects', {
179
+ * action: 'list',
180
+ * workspace_id: 'ws_123',
181
+ * });
182
+ * ```
183
+ */
184
+ async routeCall(ctx, name, args, progressSink, signal) {
185
+ const builder = this._builders.get(name);
186
+ if (!builder) {
187
+ if (this._tracer) {
188
+ const span = this._tracer.startSpan(`mcp.tool.${name}`, {
189
+ attributes: { 'mcp.system': 'vurb', 'mcp.tool': name, 'mcp.error_type': 'unknown_tool' },
190
+ });
191
+ span.setStatus({ code: SpanStatusCode.UNSET, message: `Unknown tool: "${name}"` });
192
+ span.end();
193
+ }
194
+ if (this._debug) {
195
+ this._debug({ type: 'error', tool: name, action: '?', error: `Unknown tool: "${name}"`, step: 'route', timestamp: Date.now() });
196
+ }
197
+ return toolError('UNKNOWN_TOOL', {
198
+ message: `Tool "${name}" does not exist.`,
199
+ suggestion: 'Check the available tools via tools/list and call a valid one.',
200
+ });
201
+ }
202
+ return builder.execute(ctx, args, progressSink, signal);
203
+ }
204
+ /**
205
+ * Attach this registry to an MCP server.
206
+ *
207
+ * Registers `tools/list` and `tools/call` handlers on the server.
208
+ * Supports both `McpServer` (high-level SDK) and `Server` (low-level SDK)
209
+ * via duck-type detection.
210
+ *
211
+ * @param server - Any MCP server instance (duck-typed)
212
+ * @param options - Attachment options (context factory, tag filter)
213
+ * @returns A detach function for clean teardown
214
+ *
215
+ * @example
216
+ * ```typescript
217
+ * // Basic attachment
218
+ * const detach = registry.attachToServer(server, {
219
+ * contextFactory: (extra) => createAppContext(extra),
220
+ * });
221
+ *
222
+ * // With tag filtering
223
+ * registry.attachToServer(server, {
224
+ * contextFactory: (extra) => createAppContext(extra),
225
+ * filter: { tags: ['core'] },
226
+ * });
227
+ *
228
+ * // Clean teardown (e.g. in tests)
229
+ * detach();
230
+ * ```
231
+ *
232
+ * @see {@link DetachFn} for the teardown function type
233
+ * @see {@link AttachOptions} for all options
234
+ */
235
+ async attachToServer(server, options = {}) {
236
+ return attachToServerStrategy(server, this, options);
237
+ }
238
+ /** Check if a tool with the given name is registered. */
239
+ has(name) { return this._builders.has(name); }
240
+ /** Remove all registered tools. */
241
+ clear() { this._builders.clear(); }
242
+ /** Number of registered tools. */
243
+ get size() { return this._builders.size; }
244
+ /**
245
+ * Enable debug observability for ALL registered tools.
246
+ *
247
+ * Propagates the debug observer to every registered builder that
248
+ * supports it (duck-typed via `.debug()` method).
249
+ *
250
+ * Also enables registry-level debug events (unknown tool errors).
251
+ *
252
+ * @param observer - A {@link DebugObserverFn} created by `createDebugObserver()`
253
+ *
254
+ * @example
255
+ * ```typescript
256
+ * const debug = createDebugObserver();
257
+ * registry.enableDebug(debug);
258
+ * // Now ALL tools + registry routing emit debug events
259
+ * ```
260
+ */
261
+ enableDebug(observer) {
262
+ if (this._tracer) {
263
+ console.warn('[vurb] Both tracing and debug are enabled. Tracing takes precedence; debug events will not be emitted.');
264
+ }
265
+ this._debug = observer;
266
+ for (const builder of this._builders.values()) {
267
+ // Duck-type: call .debug() if it exists on the builder
268
+ if ('debug' in builder && typeof builder.debug === 'function') {
269
+ builder.debug(observer);
270
+ }
271
+ }
272
+ }
273
+ /**
274
+ * Enable OpenTelemetry-compatible tracing for ALL registered tools.
275
+ *
276
+ * Propagates the tracer to every registered builder that supports
277
+ * it (duck-typed via `.tracing()` method).
278
+ *
279
+ * Also enables registry-level tracing for unknown tool routing errors.
280
+ *
281
+ * **Important**: When both `enableDebug()` and `enableTracing()` are active,
282
+ * tracing takes precedence and debug events are NOT emitted from tool builders.
283
+ *
284
+ * @param tracer - A {@link VurbTracer} (or OTel `Tracer`) instance
285
+ *
286
+ * @example
287
+ * ```typescript
288
+ * import { trace } from '@opentelemetry/api';
289
+ *
290
+ * const tracer = trace.getTracer('vurb');
291
+ * registry.enableTracing(tracer);
292
+ * // Now ALL tools + registry routing emit OTel spans
293
+ * ```
294
+ *
295
+ * @see {@link VurbTracer} for the tracer interface contract
296
+ * @see {@link SpanStatusCode} for status code semantics
297
+ */
298
+ enableTracing(tracer) {
299
+ if (this._debug) {
300
+ console.warn('[vurb] Both tracing and debug are enabled. Tracing takes precedence; debug events will not be emitted.');
301
+ }
302
+ this._tracer = tracer;
303
+ for (const builder of this._builders.values()) {
304
+ // Duck-type: call .tracing() if it exists on the builder
305
+ if ('tracing' in builder && typeof builder.tracing === 'function') {
306
+ builder.tracing(tracer);
307
+ }
308
+ }
309
+ }
310
+ /**
311
+ * Enable telemetry emission for ALL registered tools.
312
+ *
313
+ * Propagates the TelemetrySink to every registered builder that supports
314
+ * it (duck-typed via `.telemetry()` method). This enables real-time
315
+ * event emission to the Inspector TUI via Shadow Socket IPC.
316
+ *
317
+ * @param sink - A {@link TelemetrySink} from `startServer()` or `TelemetryBus`
318
+ */
319
+ enableTelemetry(sink) {
320
+ this._telemetrySink = sink;
321
+ for (const builder of this._builders.values()) {
322
+ if ('telemetry' in builder && typeof builder.telemetry === 'function') {
323
+ builder.telemetry(sink);
324
+ }
325
+ }
326
+ }
327
+ /**
328
+ * Propagate active debug/tracing/telemetry to a newly registered builder.
329
+ * @internal
330
+ */
331
+ _propagateObservability(builder) {
332
+ if (this._debug && 'debug' in builder && typeof builder.debug === 'function') {
333
+ builder.debug(this._debug);
334
+ }
335
+ if (this._tracer && 'tracing' in builder && typeof builder.tracing === 'function') {
336
+ builder.tracing(this._tracer);
337
+ }
338
+ if (this._telemetrySink && 'telemetry' in builder && typeof builder.telemetry === 'function') {
339
+ builder.telemetry(this._telemetrySink);
340
+ }
341
+ }
342
+ }
343
+ //# sourceMappingURL=ToolRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolRegistry.js","sourceRoot":"","sources":["../../../src/core/registry/ToolRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** Registry Bounded Context — Barrel Export */
2
+ export { ToolRegistry } from './ToolRegistry.js';
3
+ export type { ToolFilter } from './ToolFilterEngine.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/registry/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Registry Bounded Context — Barrel Export */
2
+ export { ToolRegistry } from './ToolRegistry.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/registry/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,289 @@
1
+ /**
2
+ * Response Helpers
3
+ *
4
+ * Universal MCP response builders. No API coupling.
5
+ * These produce the standard MCP ToolResponse format.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { success, error, toonSuccess } from 'vurb';
10
+ *
11
+ * // String response
12
+ * return success('Project created');
13
+ *
14
+ * // Object response (auto JSON.stringify)
15
+ * return success({ id: '123', name: 'My Project' });
16
+ *
17
+ * // Error response
18
+ * return error('Project not found');
19
+ *
20
+ * // TOON-encoded response (~40% fewer tokens)
21
+ * return toonSuccess(users);
22
+ * ```
23
+ *
24
+ * @see {@link ToolResponse} for the response shape
25
+ * @see {@link toonSuccess} for token-optimized responses
26
+ *
27
+ * @module
28
+ */
29
+ import { type EncodeOptions } from '@toon-format/toon';
30
+ import { type StringifyFn } from './serialization/JsonSerializer.js';
31
+ /**
32
+ * Non-enumerable brand symbol stamped on all helper-created ToolResponse objects.
33
+ * Used by FluentToolBuilder to reliably distinguish framework responses from
34
+ * domain data that coincidentally matches the ToolResponse shape (Bug #127).
35
+ *
36
+ * @internal
37
+ */
38
+ export declare const TOOL_RESPONSE_BRAND: unique symbol;
39
+ /**
40
+ * Escape XML structural characters for element content.
41
+ *
42
+ * Only `&` and `<` are mandatory escapes in XML element content.
43
+ * `>` is preserved for LLM readability (e.g. `>= 1`, `Must be > 0`).
44
+ * Single and double quotes are also preserved since they have no
45
+ * special meaning outside attribute values.
46
+ *
47
+ * @internal
48
+ */
49
+ export declare function escapeXml(str: string): string;
50
+ /**
51
+ * Escape XML special characters for use inside attribute values.
52
+ *
53
+ * Attribute values are delimited by `"` or `'` and must also
54
+ * escape `<`, `>`, and `&`. All 5 XML special characters are handled.
55
+ *
56
+ * @internal
57
+ */
58
+ export declare function escapeXmlAttr(str: string): string;
59
+ /**
60
+ * Standard MCP tool response.
61
+ *
62
+ * Every handler in vurb must return this shape.
63
+ * Use the helper functions ({@link success}, {@link error}, {@link toonSuccess})
64
+ * instead of constructing this manually.
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * // ✅ Preferred — use helpers
69
+ * return success({ id: '123', name: 'Acme' });
70
+ *
71
+ * // ⚠️ Manual construction (avoid unless custom content types needed)
72
+ * const response: ToolResponse = {
73
+ * content: [{ type: 'text', text: 'Hello' }],
74
+ * };
75
+ * ```
76
+ */
77
+ export interface ToolResponse {
78
+ readonly content: ReadonlyArray<{
79
+ readonly type: "text";
80
+ readonly text: string;
81
+ }>;
82
+ readonly isError?: boolean;
83
+ }
84
+ /**
85
+ * Create a success response from text or a JSON-serializable object.
86
+ *
87
+ * - Strings are returned verbatim (empty strings become `"OK"`)
88
+ * - Objects are serialized with `JSON.stringify(data, null, 2)`
89
+ *
90
+ * @param data - A string message or any JSON-serializable object
91
+ * @returns A {@link ToolResponse} with `isError` unset
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * // String response
96
+ * return success('Task completed');
97
+ *
98
+ * // Object response (pretty-printed JSON)
99
+ * const project = await db.projects.create({ name: 'Acme' });
100
+ * return success(project);
101
+ *
102
+ * // Array response
103
+ * const users = await db.users.findMany();
104
+ * return success(users);
105
+ * ```
106
+ *
107
+ * @see {@link error} for error responses
108
+ * @see {@link toonSuccess} for token-optimized array responses
109
+ */
110
+ export declare function success(data: string | object, compiledStringify?: StringifyFn): ToolResponse;
111
+ /**
112
+ * Create an error response.
113
+ *
114
+ * Sets `isError: true` so the MCP client and LLM recognize the failure.
115
+ * The LLM will typically retry or ask the user for clarification.
116
+ *
117
+ * @param message - Human-readable error description
118
+ * @returns A {@link ToolResponse} with `isError: true`
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * // Simple error
123
+ * return error('Project not found');
124
+ *
125
+ * // Contextual error
126
+ * return error(`User "${userId}" does not have access to workspace "${wsId}"`);
127
+ *
128
+ * // In a handler with early return
129
+ * handler: async (ctx, args) => {
130
+ * const project = await ctx.db.projects.findUnique(args.id);
131
+ * if (!project) return error(`Project "${args.id}" not found`);
132
+ * return success(project);
133
+ * }
134
+ * ```
135
+ *
136
+ * @see {@link required} for missing field errors
137
+ * @see {@link success} for success responses
138
+ */
139
+ export declare function error(message: string, code?: ErrorCode): ToolResponse;
140
+ /**
141
+ * Create a validation error for a missing required field.
142
+ *
143
+ * Convenience shortcut for `error(\`Error: ${field} required\`)`.
144
+ * Typically used in handlers that accept dynamic or optional schemas.
145
+ *
146
+ * @param field - Name of the missing required field
147
+ * @returns A {@link ToolResponse} with `isError: true`
148
+ *
149
+ * @example
150
+ * ```typescript
151
+ * handler: async (ctx, args) => {
152
+ * if (!args.workspace_id) return required('workspace_id');
153
+ * // ...
154
+ * }
155
+ * ```
156
+ *
157
+ * @see {@link error} for general error responses
158
+ */
159
+ export declare function required(field: string): ToolResponse;
160
+ /**
161
+ * Create a success response with TOON-encoded payload.
162
+ *
163
+ * Encodes structured data using TOON (Token-Oriented Object Notation)
164
+ * for ~40-50% token reduction compared to `JSON.stringify()`.
165
+ * Ideal for list/tabular responses (arrays of uniform objects).
166
+ *
167
+ * @param data - Any JSON-serializable value (objects, arrays, primitives)
168
+ * @param options - Optional TOON encode options (default: pipe delimiter)
169
+ * @returns A {@link ToolResponse} with TOON-encoded text
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * // Array response — saves ~40% tokens vs JSON
174
+ * const users = await db.users.findMany();
175
+ * return toonSuccess(users);
176
+ * // Output: "id|name|email\n1|Alice|alice@co.io\n2|Bob|bob@co.io"
177
+ *
178
+ * // With custom delimiter
179
+ * return toonSuccess(data, { delimiter: ',' });
180
+ *
181
+ * // Single object (still valid, but savings are smaller)
182
+ * return toonSuccess({ id: 1, name: 'Alice' });
183
+ * ```
184
+ *
185
+ * @see {@link success} for standard JSON responses
186
+ */
187
+ export declare function toonSuccess(data: unknown, options?: EncodeOptions): ToolResponse;
188
+ /**
189
+ * Canonical error codes for deterministic agent self-correction.
190
+ *
191
+ * Provides compile-time autocomplete while allowing custom codes
192
+ * via the `string` fallback. Constants cover the most common
193
+ * failure modes in agentic pipelines.
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * return toolError('VALIDATION_ERROR', { message: '...' });
198
+ * return toolError('RateLimited', { message: '...' }); // custom code — also valid
199
+ * ```
200
+ */
201
+ export type ErrorCode = 'MISSING_DISCRIMINATOR' | 'UNKNOWN_ACTION' | 'VALIDATION_ERROR' | 'MISSING_REQUIRED_FIELD' | 'INTERNAL_ERROR' | 'RATE_LIMITED' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'CONFLICT' | 'TIMEOUT' | 'SERVER_BUSY' | 'DEPRECATED' | 'AUTH_REQUIRED' | (string & {});
202
+ /**
203
+ * Error severity level.
204
+ *
205
+ * - `'warning'` — Non-fatal. The operation succeeded but with caveats
206
+ * (e.g. deprecated tool, partial results, soft quota approaching).
207
+ * - `'error'` — The operation failed. Agent should attempt recovery.
208
+ * - `'critical'` — Unrecoverable. Agent should escalate to the user.
209
+ */
210
+ export type ErrorSeverity = 'warning' | 'error' | 'critical';
211
+ /**
212
+ * Options for a self-healing error response.
213
+ *
214
+ * @see {@link toolError} for usage
215
+ */
216
+ export interface ToolErrorOptions {
217
+ /** Human-readable error description */
218
+ message: string;
219
+ /** Recovery suggestion for the LLM agent */
220
+ suggestion?: string;
221
+ /** Action names the agent should try instead */
222
+ availableActions?: string[];
223
+ /**
224
+ * Error severity.
225
+ *
226
+ * Defaults to `'error'` when omitted.
227
+ *
228
+ * @example `'warning'` for deprecation notices
229
+ */
230
+ severity?: ErrorSeverity;
231
+ /**
232
+ * Structured metadata about the error (e.g. the invalid value,
233
+ * the entity ID that wasn't found, or constraint violations).
234
+ *
235
+ * Rendered as `<details>` child elements in the XML envelope.
236
+ *
237
+ * @example `{ entity_id: 'inv_123', expected_type: 'string' }`
238
+ */
239
+ details?: Record<string, string>;
240
+ /**
241
+ * Suggested retry delay in seconds for transient errors.
242
+ *
243
+ * Rendered as `<retry_after>{n} seconds</retry_after>` in the
244
+ * XML envelope. Useful for rate-limit and concurrency errors.
245
+ */
246
+ retryAfter?: number;
247
+ }
248
+ /**
249
+ * Create a self-healing error response with recovery instructions.
250
+ *
251
+ * Unlike {@link error}, this provides structured guidance so the LLM
252
+ * agent can self-correct instead of hallucinating or giving up.
253
+ * The response includes an error code, message, suggestion, and
254
+ * available actions — all formatted for optimal LLM comprehension.
255
+ *
256
+ * @param code - Short error code (e.g. `'ProjectNotFound'`, `'Unauthorized'`)
257
+ * @param options - Error details and recovery instructions
258
+ * @returns A {@link ToolResponse} with `isError: true` and recovery guidance
259
+ *
260
+ * @example
261
+ * ```typescript
262
+ * handler: async (ctx, args) => {
263
+ * const project = await ctx.db.get(args.project_id);
264
+ *
265
+ * if (!project) {
266
+ * return toolError('ProjectNotFound', {
267
+ * message: `Project '${args.project_id}' does not exist.`,
268
+ * suggestion: 'Call projects.list first to get valid IDs, then retry.',
269
+ * availableActions: ['projects.list'],
270
+ * });
271
+ * }
272
+ *
273
+ * return success(project);
274
+ * }
275
+ * ```
276
+ *
277
+ * @example
278
+ * ```typescript
279
+ * // Minimal usage (no suggestion)
280
+ * return toolError('RateLimited', {
281
+ * message: 'Too many requests. Wait 30 seconds.',
282
+ * });
283
+ * ```
284
+ *
285
+ * @see {@link error} for simple error responses
286
+ * @see {@link required} for missing field errors
287
+ */
288
+ export declare function toolError(code: ErrorCode, options: ToolErrorOptions): ToolResponse;
289
+ //# sourceMappingURL=response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/core/response.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,MAAwC,CAAC;AAMlF;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOjD;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC9B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,iBAAiB,CAAC,EAAE,WAAW,GAAG,YAAY,CAO5F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,YAAY,CAQrE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAWpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,CAMhF;AAMD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,GACf,uBAAuB,GACvB,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,GACxB,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,WAAW,GACX,WAAW,GACX,UAAU,GACV,SAAS,GACT,aAAa,GACb,YAAY,GACZ,eAAe,GACf,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEpB;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,YAAY,CAuClF"}