@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,287 @@
1
+ /**
2
+ * VurbClient — Type-Safe MCP Client (tRPC-style)
3
+ *
4
+ * Provides end-to-end type safety from server to client.
5
+ * The server exports its router type, and the client consumes it
6
+ * with full autocomplete and compile-time validation.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // ── SERVER (mcp-server.ts) ──
11
+ * export const registry = new ToolRegistry<AppContext>();
12
+ * registry.register(projects);
13
+ * registry.register(billing);
14
+ * export type AppRouter = InferRouter<typeof registry>;
15
+ *
16
+ * // ── CLIENT (agent.ts) ──
17
+ * import { createVurbClient } from 'vurb/client';
18
+ * import type { AppRouter } from './mcp-server';
19
+ *
20
+ * const client = createVurbClient<AppRouter>(transport);
21
+ * const result = await client.execute('projects.create', { name: 'Vinkius V2' });
22
+ * // ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
23
+ * // autocomplete! typed args!
24
+ * ```
25
+ *
26
+ * @module
27
+ */
28
+ import {} from '../core/response.js';
29
+ // ============================================================================
30
+ // Structured Client Error
31
+ // ============================================================================
32
+ /**
33
+ * Structured error parsed from a `<tool_error>` XML envelope.
34
+ *
35
+ * Provides typed access to self-healing fields so client code
36
+ * can programmatically react to server errors without regex parsing.
37
+ */
38
+ export class VurbClientError extends Error {
39
+ /** Error code from the `code` attribute (e.g. `'NOT_FOUND'`). */
40
+ code;
41
+ /** Recovery suggestion from `<recovery>` element. */
42
+ recovery;
43
+ /** Available actions from `<available_actions>` children. */
44
+ availableActions;
45
+ /** Error severity from the `severity` attribute. */
46
+ severity;
47
+ /** Raw ToolResponse that caused the error. */
48
+ raw;
49
+ constructor(message, code, raw, options) {
50
+ super(message);
51
+ this.name = 'VurbClientError';
52
+ this.code = code;
53
+ this.raw = raw;
54
+ this.recovery = options?.recovery;
55
+ this.availableActions = Object.freeze(options?.availableActions ?? []);
56
+ this.severity = options?.severity ?? 'error';
57
+ }
58
+ }
59
+ // ============================================================================
60
+ // XML Error Parser (Internal)
61
+ // ============================================================================
62
+ /**
63
+ * Decode XML entities back to their original characters.
64
+ *
65
+ * Reverses the escaping applied by `escapeXml()` and `escapeXmlAttr()`
66
+ * so that parsed error messages are human-readable.
67
+ *
68
+ * @internal
69
+ */
70
+ function unescapeXml(str) {
71
+ return str
72
+ .replace(/&lt;/g, '<')
73
+ .replace(/&gt;/g, '>')
74
+ .replace(/&quot;/g, '"')
75
+ .replace(/&apos;/g, "'")
76
+ .replace(/&amp;/g, '&'); // &amp; must be last to avoid double-decode
77
+ }
78
+ /**
79
+ * Parse a `<tool_error>` XML envelope into structured fields.
80
+ *
81
+ * Coupled to the output format of `toolError()` from `response.ts`.
82
+ * Uses regex for lightweight parsing — acceptable since the XML is
83
+ * self-produced by the framework, not user-authored.
84
+ *
85
+ * @internal
86
+ */
87
+ function parseToolErrorXml(text) {
88
+ const codeMatch = text.match(/<tool_error\s[^>]*code="([^"]+)"/);
89
+ const severityMatch = text.match(/<tool_error\s[^>]*severity="([^"]+)"/);
90
+ const messageMatch = text.match(/<message>([\s\S]*?)<\/message>/);
91
+ const recoveryMatch = text.match(/<recovery>([\s\S]*?)<\/recovery>/);
92
+ if (!messageMatch)
93
+ return null;
94
+ const actions = [];
95
+ const actionMatches = text.matchAll(/<action>([\s\S]*?)<\/action>/g);
96
+ for (const m of actionMatches) {
97
+ if (m[1])
98
+ actions.push(unescapeXml(m[1].trim()));
99
+ }
100
+ // Fallback: legacy comma-separated format
101
+ if (actions.length === 0) {
102
+ const legacyMatch = text.match(/<available_actions>([\s\S]*?)<\/available_actions>/);
103
+ if (legacyMatch?.[1]) {
104
+ actions.push(...legacyMatch[1].split(',').map(a => unescapeXml(a.trim())).filter(Boolean));
105
+ }
106
+ }
107
+ const recovery = recoveryMatch?.[1] != null ? unescapeXml(recoveryMatch[1].trim()) : undefined;
108
+ const result = {
109
+ code: codeMatch?.[1] != null ? unescapeXml(codeMatch[1]) : 'UNKNOWN',
110
+ message: unescapeXml(messageMatch[1].trim()),
111
+ availableActions: actions,
112
+ severity: severityMatch?.[1] ?? 'error',
113
+ };
114
+ if (recovery !== undefined) {
115
+ result.recovery = recovery;
116
+ }
117
+ return result;
118
+ }
119
+ // ============================================================================
120
+ // Middleware Chain Compiler (Internal)
121
+ // ============================================================================
122
+ /** @internal */
123
+ function compileClientMiddleware(middleware, terminal) {
124
+ let chain = terminal;
125
+ // Wrap from right to left: first middleware in array = outermost
126
+ for (let i = middleware.length - 1; i >= 0; i--) {
127
+ const mw = middleware[i];
128
+ const next = chain;
129
+ chain = (action, args) => mw(action, args, next);
130
+ }
131
+ return chain;
132
+ }
133
+ // ============================================================================
134
+ // Factory
135
+ // ============================================================================
136
+ /**
137
+ * Create a type-safe MCP client.
138
+ *
139
+ * The client provides full autocomplete for action names and
140
+ * compile-time validation for arguments based on the server's
141
+ * router type.
142
+ *
143
+ * @typeParam TRouter - The router map (use `InferRouter<typeof registry>`)
144
+ * @param transport - The MCP transport layer
145
+ * @param options - Client options (middleware, error handling)
146
+ * @returns A typed {@link VurbClient}
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * import type { AppRouter } from './mcp-server';
151
+ *
152
+ * const client = createVurbClient<AppRouter>(transport);
153
+ *
154
+ * // Full autocomplete + type validation:
155
+ * await client.execute('projects.create', { name: 'Vinkius V2' });
156
+ *
157
+ * // TS error: 'projects.nonexistent' is not a valid action
158
+ * await client.execute('projects.nonexistent', {});
159
+ *
160
+ * // TS error: missing required arg 'name'
161
+ * await client.execute('projects.create', {});
162
+ * ```
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * // With client middleware and throwOnError
167
+ * const client = createVurbClient<AppRouter>(transport, {
168
+ * throwOnError: true,
169
+ * middleware: [
170
+ * async (action, args, next) => {
171
+ * console.log(`[Client] calling ${action}`);
172
+ * const result = await next(action, args);
173
+ * console.log(`[Client] ${action} done`);
174
+ * return result;
175
+ * },
176
+ * ],
177
+ * });
178
+ * ```
179
+ */
180
+ export function createVurbClient(transport, options) {
181
+ const throwOnError = options?.throwOnError ?? false;
182
+ const discriminatorKey = options?.discriminatorKey ?? 'action';
183
+ /** Terminal function: builds the MCP call from the dotted action path */
184
+ function terminalCall(action, args) {
185
+ const dotIndex = action.indexOf('.');
186
+ if (dotIndex === -1) {
187
+ return transport.callTool(action, args);
188
+ }
189
+ const toolName = action.substring(0, dotIndex);
190
+ const actionName = action.substring(dotIndex + 1);
191
+ return transport.callTool(toolName, {
192
+ ...args,
193
+ [discriminatorKey]: actionName,
194
+ });
195
+ }
196
+ // Compile middleware chain once at creation time
197
+ const dispatch = (options?.middleware != null && options.middleware.length > 0)
198
+ ? compileClientMiddleware(options.middleware, terminalCall)
199
+ : terminalCall;
200
+ /** Post-process: handle throwOnError */
201
+ async function executeInternal(action, args) {
202
+ const result = await dispatch(action, args);
203
+ if (throwOnError && result.isError) {
204
+ const text = result.content
205
+ .filter(c => c.type === 'text')
206
+ .map(c => c.text)
207
+ .join('\n');
208
+ const parsed = parseToolErrorXml(text);
209
+ if (parsed) {
210
+ const opts = {
211
+ availableActions: parsed.availableActions,
212
+ severity: parsed.severity,
213
+ };
214
+ if (parsed.recovery !== undefined) {
215
+ opts.recovery = parsed.recovery;
216
+ }
217
+ throw new VurbClientError(parsed.message, parsed.code, result, opts);
218
+ }
219
+ throw new VurbClientError(text || 'Unknown error', 'UNKNOWN', result);
220
+ }
221
+ return result;
222
+ }
223
+ return {
224
+ async execute(action, args) {
225
+ return executeInternal(action, args);
226
+ },
227
+ async executeBatch(calls, batchOptions) {
228
+ const items = calls;
229
+ if (batchOptions?.sequential) {
230
+ const results = [];
231
+ for (const call of items) {
232
+ results.push(await executeInternal(call.action, call.args));
233
+ }
234
+ return results;
235
+ }
236
+ return Promise.all(items.map(call => executeInternal(call.action, call.args)));
237
+ },
238
+ proxy: buildFluentProxy(executeInternal),
239
+ };
240
+ }
241
+ // ============================================================================
242
+ // Fluent Proxy Builder (Internal)
243
+ // ============================================================================
244
+ /**
245
+ * Creates a recursive Proxy that accumulates path segments
246
+ * and executes when invoked as a function.
247
+ *
248
+ * ```
249
+ * proxy.projects.create({ name: 'V2' })
250
+ * // ^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^
251
+ * // seg[0] seg[1] args → execute('projects.create', args)
252
+ * ```
253
+ *
254
+ * @internal
255
+ */
256
+ // Bug #130: Symbols that debugging / inspection tools access on every object.
257
+ // Returning undefined for these prevents the proxy from recursing into itself
258
+ // when inspected in DevTools, Node REPL, or util.inspect().
259
+ const INSPECTION_SYMBOLS = new Set([
260
+ Symbol.toPrimitive,
261
+ Symbol.toStringTag,
262
+ Symbol.iterator,
263
+ Symbol.asyncIterator,
264
+ Symbol.hasInstance,
265
+ ...(typeof Symbol.for === 'function' ? [Symbol.for('nodejs.util.inspect.custom')] : []),
266
+ ]);
267
+ function buildFluentProxy(execute, segments = []) {
268
+ return new Proxy(function () { }, {
269
+ get(_target, prop) {
270
+ if (typeof prop === 'symbol') {
271
+ // Bug #130: guard inspection symbols
272
+ if (INSPECTION_SYMBOLS.has(prop))
273
+ return undefined;
274
+ return undefined; // all other symbols → safe no-op
275
+ }
276
+ if (prop === 'then')
277
+ return undefined;
278
+ return buildFluentProxy(execute, [...segments, prop]);
279
+ },
280
+ apply(_target, _thisArg, argsList) {
281
+ const action = segments.join('.');
282
+ const args = (argsList[0] ?? {});
283
+ return execute(action, args);
284
+ },
285
+ });
286
+ }
287
+ //# sourceMappingURL=VurbClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VurbClient.js","sourceRoot":"","sources":["../../src/client/VurbClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type ToolBuilder } from '../core/types.js';
2
+ import { type TypedToolRegistry } from './InferRouter.js';
3
+ /**
4
+ * Create a type-preserving tool registry.
5
+ *
6
+ * Uses currying to separate the `TContext` generic (explicitly provided)
7
+ * from the builder tuple types (automatically inferred).
8
+ *
9
+ * @typeParam TContext - Application context type (must be specified explicitly)
10
+ * @returns A function that accepts builders and creates the typed registry
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * // Step 1: Set the context type
15
+ * const createRegistry = createTypedRegistry<AppContext>();
16
+ *
17
+ * // Step 2: Register builders (types are inferred)
18
+ * const registry = createRegistry(projectsTool, billingTool);
19
+ *
20
+ * // Or as a one-liner:
21
+ * const registry = createTypedRegistry<AppContext>()(projectsTool, billingTool);
22
+ * ```
23
+ */
24
+ export declare function createTypedRegistry<TContext>(): <TBuilders extends ToolBuilder<TContext>[]>(...builders: TBuilders) => TypedToolRegistry<TContext, TBuilders>;
25
+ //# sourceMappingURL=createTypedRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTypedRegistry.d.ts","sourceRoot":"","sources":["../../src/client/createTypedRegistry.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,MACvB,SAAS,SAAS,WAAW,CAAC,QAAQ,CAAC,EAAE,EACtD,GAAG,UAAU,SAAS,KACvB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAS5C"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * createTypedRegistry — Type-Preserving Registry Factory
3
+ *
4
+ * Creates a `ToolRegistry` that preserves the builder types at compile time,
5
+ * enabling `InferRouter<typeof registry>` to extract a fully typed router map.
6
+ *
7
+ * Uses the **curried factory pattern** (like tRPC's `initTRPC.create()`)
8
+ * to separate the context type parameter from the builder tuple inference.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { createTypedRegistry, createTool, success } from 'vurb';
13
+ *
14
+ * interface AppContext { db: Database; user: User }
15
+ *
16
+ * const projects = createTool<AppContext>('projects')
17
+ * .action({ name: 'list', handler: async (ctx) => success([]) })
18
+ * .action({ name: 'create', schema: z.object({ name: z.string() }),
19
+ * handler: async (ctx, args) => success(args.name) });
20
+ *
21
+ * const billing = createTool<AppContext>('billing')
22
+ * .action({ name: 'refund', handler: async (ctx) => success('ok') });
23
+ *
24
+ * // Curried: first call sets context, second registers builders
25
+ * const registry = createTypedRegistry<AppContext>()(projects, billing);
26
+ *
27
+ * // Runtime: use registry.registry for server attachment
28
+ * registry.registry.attachToServer(server, { contextFactory });
29
+ *
30
+ * // Types: export for client-side inference
31
+ * export type AppRouter = InferRouter<typeof registry>;
32
+ * ```
33
+ *
34
+ * @typeParam TContext - Application context type
35
+ * @returns A curried function that accepts builders and returns a typed registry
36
+ *
37
+ * @module
38
+ */
39
+ import { ToolRegistry } from '../core/registry/ToolRegistry.js';
40
+ import {} from '../core/types.js';
41
+ import {} from './InferRouter.js';
42
+ /**
43
+ * Create a type-preserving tool registry.
44
+ *
45
+ * Uses currying to separate the `TContext` generic (explicitly provided)
46
+ * from the builder tuple types (automatically inferred).
47
+ *
48
+ * @typeParam TContext - Application context type (must be specified explicitly)
49
+ * @returns A function that accepts builders and creates the typed registry
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * // Step 1: Set the context type
54
+ * const createRegistry = createTypedRegistry<AppContext>();
55
+ *
56
+ * // Step 2: Register builders (types are inferred)
57
+ * const registry = createRegistry(projectsTool, billingTool);
58
+ *
59
+ * // Or as a one-liner:
60
+ * const registry = createTypedRegistry<AppContext>()(projectsTool, billingTool);
61
+ * ```
62
+ */
63
+ export function createTypedRegistry() {
64
+ return function (...builders) {
65
+ const registry = new ToolRegistry();
66
+ registry.registerAll(...builders);
67
+ return {
68
+ registry,
69
+ _builders: builders,
70
+ _context: undefined,
71
+ };
72
+ };
73
+ }
74
+ //# sourceMappingURL=createTypedRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTypedRegistry.js","sourceRoot":"","sources":["../../src/client/createTypedRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAA0B,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB;IAC/B,OAAO,UACH,GAAG,QAAmB;QAEtB,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAY,CAAC;QAC9C,QAAQ,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC;QAClC,OAAO;YACH,QAAQ;YACR,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE,SAAgC;SAC7C,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Client Bounded Context — Barrel Export */
2
+ export { createVurbClient, VurbClientError } from './VurbClient.js';
3
+ export type { VurbClient, VurbTransport, RouterMap, FluentProxy, ClientMiddleware, VurbClientOptions, } from './VurbClient.js';
4
+ export { createTypedRegistry } from './createTypedRegistry.js';
5
+ export type { InferRouter, TypedToolRegistry } from './InferRouter.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EACR,UAAU,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,iBAAiB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Client Bounded Context — Barrel Export */
2
+ export { createVurbClient, VurbClientError } from './VurbClient.js';
3
+ export { createTypedRegistry } from './createTypedRegistry.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AASpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * ConverterBase — Generic Base for Bidirectional Converters
3
+ *
4
+ * Provides batch conversion with null filtering in both directions.
5
+ * Domain-specific converters extend this class and only implement
6
+ * the single-item abstract methods: {@link convertFrom} and {@link convertTo}.
7
+ *
8
+ * @typeParam TSource - The domain model type (e.g. Group, Tool)
9
+ * @typeParam TTarget - The external/DTO type
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { ToolConverterBase, Tool } from 'vurb';
14
+ *
15
+ * interface ToolDto { id: string; label: string }
16
+ *
17
+ * class MyToolConverter extends ToolConverterBase<ToolDto> {
18
+ * convertFrom(tool: Tool): ToolDto {
19
+ * return { id: tool.name, label: tool.title ?? tool.name };
20
+ * }
21
+ * convertTo(dto: ToolDto): Tool {
22
+ * const tool = new Tool(dto.id);
23
+ * tool.title = dto.label;
24
+ * return tool;
25
+ * }
26
+ * }
27
+ *
28
+ * const converter = new MyToolConverter();
29
+ * const dtos = converter.convertFromBatch(tools); // Tool[] → ToolDto[]
30
+ * const tools = converter.convertToBatch(dtos); // ToolDto[] → Tool[]
31
+ * ```
32
+ *
33
+ * @see {@link ToolConverterBase} for tool-specific converters
34
+ * @see {@link GroupConverterBase} for group-specific converters
35
+ */
36
+ export declare abstract class ConverterBase<TSource, TTarget> {
37
+ /**
38
+ * Convert a batch of source items to target items.
39
+ * Null/undefined results from single-item conversion are filtered out.
40
+ *
41
+ * @param sources - Array of domain model instances
42
+ * @returns Array of converted DTOs (nulls removed)
43
+ */
44
+ convertFromBatch(sources: TSource[]): TTarget[];
45
+ /**
46
+ * Convert a single source item to a target item.
47
+ *
48
+ * @param source - Domain model instance
49
+ * @returns The converted DTO
50
+ */
51
+ abstract convertFrom(source: TSource): TTarget;
52
+ /**
53
+ * Convert a batch of target items back to source items.
54
+ * Null/undefined results from single-item conversion are filtered out.
55
+ *
56
+ * @param targets - Array of DTOs
57
+ * @returns Array of domain model instances (nulls removed)
58
+ */
59
+ convertToBatch(targets: TTarget[]): TSource[];
60
+ /**
61
+ * Convert a single target item back to a source item.
62
+ *
63
+ * @param target - DTO instance
64
+ * @returns The domain model instance
65
+ */
66
+ abstract convertTo(target: TTarget): TSource;
67
+ }
68
+ //# sourceMappingURL=ConverterBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConverterBase.d.ts","sourceRoot":"","sources":["../../src/converters/ConverterBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,8BAAsB,aAAa,CAAC,OAAO,EAAE,OAAO;IAChD;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAM/C;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAE9C;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAM7C;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CAC/C"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * ConverterBase — Generic Base for Bidirectional Converters
3
+ *
4
+ * Provides batch conversion with null filtering in both directions.
5
+ * Domain-specific converters extend this class and only implement
6
+ * the single-item abstract methods: {@link convertFrom} and {@link convertTo}.
7
+ *
8
+ * @typeParam TSource - The domain model type (e.g. Group, Tool)
9
+ * @typeParam TTarget - The external/DTO type
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { ToolConverterBase, Tool } from 'vurb';
14
+ *
15
+ * interface ToolDto { id: string; label: string }
16
+ *
17
+ * class MyToolConverter extends ToolConverterBase<ToolDto> {
18
+ * convertFrom(tool: Tool): ToolDto {
19
+ * return { id: tool.name, label: tool.title ?? tool.name };
20
+ * }
21
+ * convertTo(dto: ToolDto): Tool {
22
+ * const tool = new Tool(dto.id);
23
+ * tool.title = dto.label;
24
+ * return tool;
25
+ * }
26
+ * }
27
+ *
28
+ * const converter = new MyToolConverter();
29
+ * const dtos = converter.convertFromBatch(tools); // Tool[] → ToolDto[]
30
+ * const tools = converter.convertToBatch(dtos); // ToolDto[] → Tool[]
31
+ * ```
32
+ *
33
+ * @see {@link ToolConverterBase} for tool-specific converters
34
+ * @see {@link GroupConverterBase} for group-specific converters
35
+ */
36
+ export class ConverterBase {
37
+ /**
38
+ * Convert a batch of source items to target items.
39
+ * Null/undefined results from single-item conversion are filtered out.
40
+ *
41
+ * @param sources - Array of domain model instances
42
+ * @returns Array of converted DTOs (nulls removed)
43
+ */
44
+ convertFromBatch(sources) {
45
+ return sources
46
+ .map(s => this.convertFrom(s))
47
+ .filter((item) => item != null);
48
+ }
49
+ /**
50
+ * Convert a batch of target items back to source items.
51
+ * Null/undefined results from single-item conversion are filtered out.
52
+ *
53
+ * @param targets - Array of DTOs
54
+ * @returns Array of domain model instances (nulls removed)
55
+ */
56
+ convertToBatch(targets) {
57
+ return targets
58
+ .map(t => this.convertTo(t))
59
+ .filter((item) => item != null);
60
+ }
61
+ }
62
+ //# sourceMappingURL=ConverterBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConverterBase.js","sourceRoot":"","sources":["../../src/converters/ConverterBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,OAAgB,aAAa;IAC/B;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAkB;QAC/B,OAAO,OAAO;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;aAC7B,MAAM,CAAC,CAAC,IAAI,EAAgC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACtE,CAAC;IAUD;;;;;;OAMG;IACH,cAAc,CAAC,OAAkB;QAC7B,OAAO,OAAO;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC3B,MAAM,CAAC,CAAC,IAAI,EAAgC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACtE,CAAC;CASJ"}
@@ -0,0 +1,33 @@
1
+ import { type Group } from '../domain/Group.js';
2
+ import { ConverterBase } from './ConverterBase.js';
3
+ /**
4
+ * Type-safe Group converter contract.
5
+ *
6
+ * @typeParam T - The target DTO type
7
+ * @see {@link GroupConverterBase} for the base implementation class
8
+ */
9
+ export type GroupConverter<T> = ConverterBase<Group, T>;
10
+ /**
11
+ * Base class for Group converters.
12
+ *
13
+ * Extend this and implement `convertFrom(group)` and `convertTo(dto)`.
14
+ *
15
+ * @typeParam T - The target DTO type
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * class MyGroupConverter extends GroupConverterBase<GroupDto> {
20
+ * convertFrom(group: Group): GroupDto {
21
+ * return { name: group.name, children: group.childGroups.length };
22
+ * }
23
+ * convertTo(dto: GroupDto): Group {
24
+ * return new Group(dto.name);
25
+ * }
26
+ * }
27
+ * ```
28
+ *
29
+ * @see {@link ConverterBase} for batch conversion methods
30
+ */
31
+ export declare abstract class GroupConverterBase<T> extends ConverterBase<Group, T> {
32
+ }
33
+ //# sourceMappingURL=GroupConverter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupConverter.d.ts","sourceRoot":"","sources":["../../src/converters/GroupConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,8BAAsB,kBAAkB,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;CAAG"}
@@ -0,0 +1,26 @@
1
+ import {} from '../domain/Group.js';
2
+ import { ConverterBase } from './ConverterBase.js';
3
+ /**
4
+ * Base class for Group converters.
5
+ *
6
+ * Extend this and implement `convertFrom(group)` and `convertTo(dto)`.
7
+ *
8
+ * @typeParam T - The target DTO type
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * class MyGroupConverter extends GroupConverterBase<GroupDto> {
13
+ * convertFrom(group: Group): GroupDto {
14
+ * return { name: group.name, children: group.childGroups.length };
15
+ * }
16
+ * convertTo(dto: GroupDto): Group {
17
+ * return new Group(dto.name);
18
+ * }
19
+ * }
20
+ * ```
21
+ *
22
+ * @see {@link ConverterBase} for batch conversion methods
23
+ */
24
+ export class GroupConverterBase extends ConverterBase {
25
+ }
26
+ //# sourceMappingURL=GroupConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupConverter.js","sourceRoot":"","sources":["../../src/converters/GroupConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAgB,kBAAsB,SAAQ,aAAuB;CAAG"}
@@ -0,0 +1,33 @@
1
+ import { type Prompt } from '../domain/Prompt.js';
2
+ import { ConverterBase } from './ConverterBase.js';
3
+ /**
4
+ * Type-safe Prompt converter contract.
5
+ *
6
+ * @typeParam T - The target DTO type
7
+ * @see {@link PromptConverterBase} for the base implementation class
8
+ */
9
+ export type PromptConverter<T> = ConverterBase<Prompt, T>;
10
+ /**
11
+ * Base class for Prompt converters.
12
+ *
13
+ * Extend this and implement `convertFrom(prompt)` and `convertTo(dto)`.
14
+ *
15
+ * @typeParam T - The target DTO type
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * class MyPromptConverter extends PromptConverterBase<PromptDto> {
20
+ * convertFrom(prompt: Prompt): PromptDto {
21
+ * return { name: prompt.name, args: prompt.promptArguments.length };
22
+ * }
23
+ * convertTo(dto: PromptDto): Prompt {
24
+ * return new Prompt(dto.name);
25
+ * }
26
+ * }
27
+ * ```
28
+ *
29
+ * @see {@link ConverterBase} for batch conversion methods
30
+ */
31
+ export declare abstract class PromptConverterBase<T> extends ConverterBase<Prompt, T> {
32
+ }
33
+ //# sourceMappingURL=PromptConverter.d.ts.map