@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,222 @@
1
+ /**
2
+ * UI Block Helpers — Server-Side Rendering for AI Agents
3
+ *
4
+ * Deterministic helpers that wrap structured content into fenced
5
+ * code blocks (or raw markup) for LLM pass-through rendering.
6
+ *
7
+ * Today these produce `text` blocks with fenced syntax.
8
+ * If MCP adds native UI content types in the future, only
9
+ * the internal `fence()` wrapper needs to change — all Presenters
10
+ * and consumers stay intact.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { ui } from 'vurb';
15
+ *
16
+ * ui.echarts({ title: { text: 'Burndown' }, series: [...] });
17
+ * ui.mermaid('graph TD; A-->B');
18
+ * ui.markdown('| Col | Val |');
19
+ * ui.table(['ID', 'Status'], [['INV-1', '✅ Paid']]);
20
+ * ui.list(['Deploy', 'Migrate', 'Verify']);
21
+ * ui.json({ key: 'value' });
22
+ * ui.summary('3 items found. 2 active, 1 archived.');
23
+ * ```
24
+ *
25
+ * @module
26
+ */
27
+ // ── Internal Helpers ─────────────────────────────────────
28
+ /**
29
+ * Wrap content in a fenced code block.
30
+ *
31
+ * Single point of change for the fencing format. If MCP adds
32
+ * native block types in the future, only this function needs updating.
33
+ *
34
+ * @internal
35
+ */
36
+ function fence(lang, body) {
37
+ return `\`\`\`${lang}\n${body}\n\`\`\``;
38
+ }
39
+ // ── Core 4 Helpers ───────────────────────────────────────
40
+ /**
41
+ * Generate an ECharts UI block from a configuration object.
42
+ *
43
+ * The config is serialized with `JSON.stringify(config, null, 2)` for
44
+ * deterministic, hallucination-free chart rendering.
45
+ *
46
+ * @param config - A valid ECharts option object
47
+ * @returns A {@link UiBlock} with fenced `echarts` code block
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * ui.echarts({
52
+ * title: { text: 'Sprint Burndown' },
53
+ * xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed'] },
54
+ * series: [{ type: 'line', data: [5, 3, 1] }]
55
+ * });
56
+ * ```
57
+ */
58
+ function echarts(config) {
59
+ return { type: 'echarts', content: fence('echarts', JSON.stringify(config, null, 2)) };
60
+ }
61
+ /**
62
+ * Generate a Mermaid diagram UI block.
63
+ *
64
+ * @param diagram - Raw Mermaid diagram syntax
65
+ * @returns A {@link UiBlock} with fenced `mermaid` code block
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * ui.mermaid('graph TD; A["Start"] --> B["Process"] --> C["End"]');
70
+ * ```
71
+ */
72
+ function mermaid(diagram) {
73
+ return { type: 'mermaid', content: fence('mermaid', diagram) };
74
+ }
75
+ /**
76
+ * Generate a raw Markdown UI block.
77
+ *
78
+ * Unlike other helpers, markdown content is **not** fenced —
79
+ * it's returned as-is for direct rendering.
80
+ *
81
+ * @param md - Raw Markdown string
82
+ * @returns A {@link UiBlock} with raw markdown content
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * ui.markdown('| Task | Status |\n|---|---|\n| Deploy | ✅ Done |');
87
+ * ```
88
+ */
89
+ function markdown(md) {
90
+ return { type: 'markdown', content: md };
91
+ }
92
+ /**
93
+ * Generate a generic fenced code block UI block.
94
+ *
95
+ * Fallback helper for structured content (logs, XML, raw JSON)
96
+ * that needs explicit language tagging.
97
+ *
98
+ * @param lang - Language identifier for syntax highlighting
99
+ * @param code - Code content
100
+ * @returns A {@link UiBlock} with fenced code block
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * ui.codeBlock('json', JSON.stringify(config, null, 2));
105
+ * ui.codeBlock('xml', '<root><item>value</item></root>');
106
+ * ```
107
+ */
108
+ function codeBlock(lang, code) {
109
+ return { type: lang, content: fence(lang, code) };
110
+ }
111
+ // ── DX Helpers ───────────────────────────────────────────
112
+ /**
113
+ * Generate a Markdown table UI block from headers and row data.
114
+ *
115
+ * The **#1 most common pattern** in data tools. Automatically
116
+ * generates a fully formatted markdown table with alignment
117
+ * separators — zero manual string concatenation needed.
118
+ *
119
+ * @param headers - Column header labels
120
+ * @param rows - Array of row arrays (each inner array = one row)
121
+ * @returns A {@link UiBlock} with formatted markdown table
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * ui.table(
126
+ * ['Invoice', 'Amount', 'Status'],
127
+ * [
128
+ * ['INV-001', '$4,500.00', '✅ Paid'],
129
+ * ['INV-002', '$1,200.00', '⚠️ Pending'],
130
+ * ],
131
+ * );
132
+ * ```
133
+ */
134
+ function table(headers, rows) {
135
+ const headerRow = `| ${headers.join(' | ')} |`;
136
+ const separator = `| ${headers.map(() => '---').join(' | ')} |`;
137
+ const bodyRows = rows.map(row => `| ${row.join(' | ')} |`).join('\n');
138
+ return { type: 'markdown', content: `${headerRow}\n${separator}\n${bodyRows}` };
139
+ }
140
+ /**
141
+ * Generate a Markdown bullet list UI block.
142
+ *
143
+ * Perfect for action items, checklists, or enumerated results.
144
+ *
145
+ * @param items - Array of list items (strings)
146
+ * @returns A {@link UiBlock} with markdown list content
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * ui.list(['Deploy API server', 'Run database migrations', 'Verify health checks']);
151
+ * // → "- Deploy API server\n- Run database migrations\n- Verify health checks"
152
+ * ```
153
+ */
154
+ function list(items) {
155
+ return { type: 'markdown', content: items.map(item => `- ${item}`).join('\n') };
156
+ }
157
+ /**
158
+ * Generate a fenced JSON code block UI block.
159
+ *
160
+ * Shorthand for `ui.codeBlock('json', JSON.stringify(data, null, 2))`.
161
+ * Most developers reach for this pattern constantly.
162
+ *
163
+ * @param data - Any JSON-serializable value
164
+ * @returns A {@link UiBlock} with fenced `json` code block
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * ui.json({ host: 'api.example.com', port: 3000, ssl: true });
169
+ * ```
170
+ */
171
+ function json(data) {
172
+ return { type: 'json', content: fence('json', JSON.stringify(data, null, 2)) };
173
+ }
174
+ /**
175
+ * Generate a summary UI block for collection overviews.
176
+ *
177
+ * Placed at the top of collection responses to give the LLM
178
+ * quick context about the dataset without parsing the full array.
179
+ *
180
+ * @param text - Human-readable summary of the collection
181
+ * @returns A {@link UiBlock} with summary content
182
+ *
183
+ * @example
184
+ * ```typescript
185
+ * ui.summary('3 invoices totaling $5,700.00. 2 paid, 1 pending.');
186
+ * ```
187
+ */
188
+ function summary(text) {
189
+ return { type: 'summary', content: `📊 **Summary**: ${text}` };
190
+ }
191
+ // ── Public Namespace ─────────────────────────────────────
192
+ /**
193
+ * UI block helpers for Server-Side Rendering (SSR) in Presenters.
194
+ *
195
+ * **Core helpers**: `echarts`, `mermaid`, `markdown`, `codeBlock`
196
+ * **DX helpers**: `table`, `list`, `json`, `summary`
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * import { ui } from 'vurb';
201
+ *
202
+ * // Quick table from arrays
203
+ * ui.table(['Name', 'Status'], [['Alice', 'Active'], ['Bob', 'Inactive']]);
204
+ *
205
+ * // Quick list
206
+ * ui.list(['Step 1: Deploy', 'Step 2: Verify']);
207
+ *
208
+ * // Quick JSON viewer
209
+ * ui.json({ config: { debug: true } });
210
+ *
211
+ * // Charts and diagrams
212
+ * ui.echarts(chartConfig);
213
+ * ui.mermaid('graph TD; A-->B');
214
+ * ```
215
+ */
216
+ export const ui = {
217
+ // Core 4
218
+ echarts, mermaid, markdown, codeBlock,
219
+ // DX helpers
220
+ table, list, json, summary,
221
+ };
222
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/presenter/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAiBH,4DAA4D;AAE5D;;;;;;;GAOG;AACH,SAAS,KAAK,CAAC,IAAY,EAAE,IAAY;IACrC,OAAO,SAAS,IAAI,KAAK,IAAI,UAAU,CAAC;AAC5C,CAAC;AAED,4DAA4D;AAE5D;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,OAAO,CAAC,MAA+B;IAC5C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,OAAO,CAAC,OAAe;IAC5B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,QAAQ,CAAC,EAAU;IACxB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,IAAY;IACzC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,4DAA4D;AAE5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,KAAK,CAAC,OAA0B,EAAE,IAAoC;IAC3E,MAAM,SAAS,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC/C,MAAM,SAAS,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,SAAS,KAAK,SAAS,KAAK,QAAQ,EAAE,EAAE,CAAC;AACpF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,IAAI,CAAC,KAAwB;IAClC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACpF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,IAAI,CAAC,IAAa;IACvB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACnF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,OAAO,CAAC,IAAY;IACzB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,IAAI,EAAE,EAAE,CAAC;AACnE,CAAC;AAED,4DAA4D;AAE5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG;IACd,SAAS;IACT,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS;IACrC,aAAa;IACb,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO;CACpB,CAAC"}
@@ -0,0 +1,43 @@
1
+ export interface CursorPayload {
2
+ after: string;
3
+ }
4
+ export type CursorMode = 'signed' | 'encrypted';
5
+ export interface CursorCodecOptions {
6
+ /**
7
+ * 'signed' (default): HMAC signature appended to base64 payload. Payload is visible but tamper-proof.
8
+ * 'encrypted': AES-GCM encryption. Payload is completely hidden and tamper-proof.
9
+ */
10
+ mode?: CursorMode;
11
+ /**
12
+ * Optional 32-byte secret key.
13
+ * If not provided, a random ephemeral key is generated per process.
14
+ */
15
+ secret?: string;
16
+ }
17
+ /**
18
+ * Stateless Cryptographic Cursor for pagination using Web Crypto API.
19
+ *
20
+ * Works in Node >= 16, Deno, Bun, and Cloudflare Workers.
21
+ */
22
+ export declare class CursorCodec {
23
+ private readonly _mode;
24
+ private _secretBytes;
25
+ private _secretPromise;
26
+ private readonly _providedSecret;
27
+ private _hmacKey?;
28
+ private _aesKey?;
29
+ constructor(options?: CursorCodecOptions);
30
+ private ensureSecret;
31
+ private getHmacKey;
32
+ private getAesKey;
33
+ /**
34
+ * Asynchronously encodes a payload into a URL-safe cursor string.
35
+ */
36
+ encode(payload: CursorPayload): Promise<string>;
37
+ /**
38
+ * Asynchronously decodes and verifies a cursor string back into its payload.
39
+ * Returns undefined if the cursor is invalid, tampered with, or from a different process/key.
40
+ */
41
+ decode(cursor: string): Promise<CursorPayload | undefined>;
42
+ }
43
+ //# sourceMappingURL=CursorCodec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CursorCodec.d.ts","sourceRoot":"","sources":["../../src/prompt/CursorCodec.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAyDD;;;;GAIG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,CAAY;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAY;gBAEhB,OAAO,CAAC,EAAE,kBAAkB;YAe1B,YAAY;YAYZ,UAAU;YAeV,SAAS;IAevB;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BrD;;;OAGG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CAsDnE"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Lazily resolves the Web Crypto API.
3
+ * Works in Node >= 16 (via node:crypto.webcrypto), Node >= 19 (globalThis.crypto),
4
+ * Deno, Bun, and Cloudflare Workers.
5
+ */
6
+ let _resolvedCrypto;
7
+ async function getCrypto() {
8
+ if (_resolvedCrypto)
9
+ return _resolvedCrypto;
10
+ // globalThis.crypto.subtle is available in Node >= 19, Deno, Bun, CF Workers
11
+ if (typeof globalThis.crypto !== 'undefined' && globalThis.crypto.subtle) {
12
+ _resolvedCrypto = globalThis.crypto;
13
+ return _resolvedCrypto;
14
+ }
15
+ // Node.js 16-18 fallback — webcrypto available via node:crypto module
16
+ // Variable indirection prevents TypeScript from resolving the module statically (no @types/node)
17
+ try {
18
+ const mod = 'node:' + 'crypto';
19
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
20
+ const nodeCrypto = (await import(mod)).webcrypto;
21
+ if (nodeCrypto?.subtle) {
22
+ _resolvedCrypto = nodeCrypto;
23
+ return _resolvedCrypto;
24
+ }
25
+ }
26
+ catch { /* not in Node */ }
27
+ throw new Error('CursorCodec requires the Web Crypto API. ' +
28
+ 'Ensure globalThis.crypto.subtle is available or use Node >= 16.');
29
+ }
30
+ function base64UrlEncode(buffer) {
31
+ const bytes = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
32
+ let binary = '';
33
+ for (let i = 0; i < bytes.byteLength; i++) {
34
+ binary += String.fromCharCode(bytes[i]);
35
+ }
36
+ return btoa(binary)
37
+ .replace(/\+/g, '-')
38
+ .replace(/\//g, '_')
39
+ .replace(/=/g, '');
40
+ }
41
+ function base64UrlDecode(base64) {
42
+ const s = base64.replace(/-/g, '+').replace(/_/g, '/');
43
+ const b = atob(s);
44
+ const bytes = new Uint8Array(b.length);
45
+ for (let i = 0; i < b.length; i++) {
46
+ bytes[i] = b.charCodeAt(i);
47
+ }
48
+ return bytes;
49
+ }
50
+ /**
51
+ * Stateless Cryptographic Cursor for pagination using Web Crypto API.
52
+ *
53
+ * Works in Node >= 16, Deno, Bun, and Cloudflare Workers.
54
+ */
55
+ export class CursorCodec {
56
+ _mode;
57
+ _secretBytes;
58
+ _secretPromise;
59
+ _providedSecret;
60
+ _hmacKey;
61
+ _aesKey;
62
+ constructor(options) {
63
+ this._mode = options?.mode ?? 'signed';
64
+ this._providedSecret = options?.secret;
65
+ if (options?.secret) {
66
+ const encoder = new TextEncoder();
67
+ const buf = encoder.encode(options.secret);
68
+ if (buf.length !== 32) {
69
+ throw new Error('CursorCodec secret must be exactly 32 bytes (256 bits)');
70
+ }
71
+ this._secretBytes = buf;
72
+ }
73
+ // When no secret provided, _secretBytes is deferred to first use (async)
74
+ }
75
+ async ensureSecret() {
76
+ if (this._secretBytes)
77
+ return this._secretBytes;
78
+ if (!this._secretPromise) {
79
+ this._secretPromise = (async () => {
80
+ const crypto = await getCrypto();
81
+ this._secretBytes = crypto.getRandomValues(new Uint8Array(32));
82
+ return this._secretBytes;
83
+ })();
84
+ }
85
+ return this._secretPromise;
86
+ }
87
+ async getHmacKey() {
88
+ if (!this._hmacKey) {
89
+ const secret = await this.ensureSecret();
90
+ const crypto = await getCrypto();
91
+ this._hmacKey = await crypto.subtle.importKey('raw', secret, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign', 'verify']);
92
+ }
93
+ return this._hmacKey;
94
+ }
95
+ async getAesKey() {
96
+ if (!this._aesKey) {
97
+ const secret = await this.ensureSecret();
98
+ const crypto = await getCrypto();
99
+ this._aesKey = await crypto.subtle.importKey('raw', secret, 'AES-GCM', false, ['encrypt', 'decrypt']);
100
+ }
101
+ return this._aesKey;
102
+ }
103
+ /**
104
+ * Asynchronously encodes a payload into a URL-safe cursor string.
105
+ */
106
+ async encode(payload) {
107
+ const data = JSON.stringify(payload);
108
+ const dataBuffer = new TextEncoder().encode(data);
109
+ if (this._mode === 'encrypted') {
110
+ const aesKey = await this.getAesKey();
111
+ const crypto = await getCrypto();
112
+ const iv = crypto.getRandomValues(new Uint8Array(12));
113
+ const encryptedBuf = await crypto.subtle.encrypt({ name: 'AES-GCM', iv: iv }, aesKey, dataBuffer);
114
+ // Web Crypto AES-GCM appends the 16-byte auth tag at the end of the ciphertext
115
+ return `${base64UrlEncode(iv)}.${base64UrlEncode(encryptedBuf)}`;
116
+ }
117
+ else {
118
+ // Signed HMAC
119
+ const hmacKey = await this.getHmacKey();
120
+ const cryptoApi = await getCrypto();
121
+ const signatureBuf = await cryptoApi.subtle.sign('HMAC', hmacKey, dataBuffer);
122
+ return `${base64UrlEncode(dataBuffer)}.${base64UrlEncode(signatureBuf)}`;
123
+ }
124
+ }
125
+ /**
126
+ * Asynchronously decodes and verifies a cursor string back into its payload.
127
+ * Returns undefined if the cursor is invalid, tampered with, or from a different process/key.
128
+ */
129
+ async decode(cursor) {
130
+ try {
131
+ if (this._mode === 'encrypted') {
132
+ const parts = cursor.split('.');
133
+ if (parts.length !== 2)
134
+ return undefined;
135
+ const [ivStr, encryptedStr] = parts;
136
+ if (!ivStr || !encryptedStr)
137
+ return undefined;
138
+ const iv = base64UrlDecode(ivStr);
139
+ const encrypted = base64UrlDecode(encryptedStr);
140
+ const aesKey = await this.getAesKey();
141
+ const cryptoApi = await getCrypto();
142
+ const decryptedBuf = await cryptoApi.subtle.decrypt({ name: 'AES-GCM', iv: iv }, aesKey, encrypted);
143
+ const decrypted = new TextDecoder().decode(decryptedBuf);
144
+ return JSON.parse(decrypted);
145
+ }
146
+ else {
147
+ // Signed HMAC
148
+ const parts = cursor.split('.');
149
+ if (parts.length !== 2)
150
+ return undefined;
151
+ const [dataB64, signatureB64] = parts;
152
+ if (!dataB64 || !signatureB64)
153
+ return undefined;
154
+ const dataBuffer = base64UrlDecode(dataB64);
155
+ const signatureBuf = base64UrlDecode(signatureB64);
156
+ const hmacKey = await this.getHmacKey();
157
+ const cryptoApi2 = await getCrypto();
158
+ const isValid = await cryptoApi2.subtle.verify('HMAC', hmacKey, signatureBuf, dataBuffer);
159
+ if (!isValid)
160
+ return undefined;
161
+ const decrypted = new TextDecoder().decode(dataBuffer);
162
+ return JSON.parse(decrypted);
163
+ }
164
+ }
165
+ catch {
166
+ // Catches Crypto errors (tampering), JSON parsing errors, Base64 errors
167
+ return undefined;
168
+ }
169
+ }
170
+ }
171
+ //# sourceMappingURL=CursorCodec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CursorCodec.js","sourceRoot":"","sources":["../../src/prompt/CursorCodec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * FluentPromptBuilder — Chainable Prompt Definition API
3
+ *
4
+ * Provides a builder-pattern alternative to the config-bag `definePrompt()`.
5
+ * Follows the same architectural pattern as `FluentToolBuilder`.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const greet = f.prompt('greet')
10
+ * .describe('Greet a user by name')
11
+ * .input({ name: f.string() })
12
+ * .handler(async (ctx, { name }) => ({
13
+ * messages: [PromptMessage.user(`Hello ${name}!`)],
14
+ * }));
15
+ * ```
16
+ *
17
+ * @module
18
+ */
19
+ import { type ZodObject, type ZodRawShape } from 'zod';
20
+ import { type PromptBuilder, type PromptResult, type PromptParamsMap, type LoopbackContext } from './types.js';
21
+ import { type MiddlewareFn } from '../core/types.js';
22
+ /**
23
+ * Chainable builder for MCP Prompts.
24
+ *
25
+ * Each setter returns `this` for chaining. Finalisation happens lazily
26
+ * when the `PromptBuilder` interface methods are accessed — this means
27
+ * you can pass a `FluentPromptBuilder` directly to `PromptRegistry.register()`.
28
+ *
29
+ * @typeParam TContext - Application context type (inherited from `initVurb`)
30
+ * @typeParam TArgs - Inferred argument type from the schema
31
+ */
32
+ export declare class FluentPromptBuilder<TContext = void, TArgs extends Record<string, unknown> = Record<string, unknown>> implements PromptBuilder<TContext> {
33
+ private readonly _name;
34
+ private _title?;
35
+ private _description?;
36
+ private _icons?;
37
+ private _tags;
38
+ private _middlewares;
39
+ private _args?;
40
+ private _hydrationTimeout?;
41
+ private _handler?;
42
+ /** @internal Cached delegate built on first access to PromptBuilder methods */
43
+ private _delegate;
44
+ constructor(name: string);
45
+ /**
46
+ * Set a human-readable title for UI display.
47
+ *
48
+ * @param title - The prompt title
49
+ * @returns `this` for chaining
50
+ */
51
+ title(title: string): this;
52
+ /**
53
+ * Set the prompt description shown in the slash command palette.
54
+ *
55
+ * @param description - Human-readable description
56
+ * @returns `this` for chaining
57
+ */
58
+ describe(description: string): this;
59
+ /**
60
+ * Set icons for light/dark themes.
61
+ *
62
+ * @param icons - Icon paths for light and/or dark themes
63
+ * @returns `this` for chaining
64
+ */
65
+ icons(icons: {
66
+ light?: string;
67
+ dark?: string;
68
+ }): this;
69
+ /**
70
+ * Set capability tags for selective exposure.
71
+ *
72
+ * @param tags - Tag strings for filtering
73
+ * @returns `this` for chaining
74
+ */
75
+ tags(...tags: string[]): this;
76
+ /**
77
+ * Define the input schema for prompt arguments.
78
+ *
79
+ * Accepts the same formats as `FluentToolBuilder.input()`:
80
+ * - Fluent param descriptors (`f.string()`, `f.number()`, etc.) — zero imports
81
+ * - Zod schema for power users
82
+ *
83
+ * @returns `this` for chaining
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * // Fluent descriptors (recommended — zero Zod imports)
88
+ * f.prompt('greet')
89
+ * .input({ name: f.string(), age: f.number().optional() })
90
+ * .handler(async (ctx, { name, age }) => ({ ... }));
91
+ *
92
+ * // Zod schema (advanced)
93
+ * f.prompt('search')
94
+ * .input(z.object({ query: z.string().min(1) }))
95
+ * .handler(async (ctx, { query }) => ({ ... }));
96
+ * ```
97
+ */
98
+ input<S extends ZodRawShape>(schema: ZodObject<S>): FluentPromptBuilder<TContext, ZodObject<S>['_output']>;
99
+ input(params: PromptParamsMap): this;
100
+ /**
101
+ * Add middleware to the prompt's execution pipeline.
102
+ *
103
+ * Middleware runs in registration order around the handler
104
+ * (same onion model as tool middleware).
105
+ *
106
+ * @param fns - Middleware functions
107
+ * @returns `this` for chaining
108
+ */
109
+ use(...fns: MiddlewareFn<TContext>[]): this;
110
+ /**
111
+ * Set the maximum hydration time in milliseconds.
112
+ *
113
+ * If the handler doesn't complete within this time,
114
+ * the framework returns a graceful SYSTEM ALERT.
115
+ *
116
+ * @param ms - Timeout in milliseconds
117
+ * @returns `this` for chaining
118
+ */
119
+ timeout(ms: number): this;
120
+ /**
121
+ * Set the hydration handler.
122
+ *
123
+ * This is the terminal method — after calling `.handler()`,
124
+ * the builder is ready to be registered.
125
+ *
126
+ * @param fn - Handler function receiving `(ctx, args)` → `PromptResult`
127
+ * @returns `this` for chaining
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * .handler(async (ctx, { name }) => ({
132
+ * messages: [PromptMessage.user(`Hello ${name}!`)],
133
+ * }))
134
+ * ```
135
+ */
136
+ handler(fn: (ctx: TContext & LoopbackContext, args: TArgs) => Promise<PromptResult>): this;
137
+ /** @internal Build the underlying PromptBuilder delegate lazily */
138
+ private _build;
139
+ getName(): string;
140
+ getDescription(): string | undefined;
141
+ getTags(): string[];
142
+ hasMiddleware(): boolean;
143
+ getHydrationTimeout(): number | undefined;
144
+ buildPromptDefinition(): {
145
+ name: string;
146
+ description?: string;
147
+ arguments?: Array<{
148
+ name: string;
149
+ description?: string;
150
+ required?: boolean;
151
+ }>;
152
+ };
153
+ execute(ctx: TContext, args: Record<string, string>): Promise<PromptResult>;
154
+ }
155
+ //# sourceMappingURL=FluentPromptBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluentPromptBuilder.d.ts","sourceRoot":"","sources":["../../src/prompt/FluentPromptBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AACvD,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD;;;;;;;;;GASG;AACH,qBAAa,mBAAmB,CAAC,QAAQ,GAAG,IAAI,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC7G,YAAW,aAAa,CAAC,QAAQ,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAoC;IACnD,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,KAAK,CAAC,CAA2C;IACzD,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,CAA0E;IAE3F,+EAA+E;IAC/E,OAAO,CAAC,SAAS,CAAsC;gBAE3C,IAAI,EAAE,MAAM;IAMxB;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM1B;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMnC;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAMrD;;;;;OAKG;IACH,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAQ7B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1G,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAQpC;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI;IAM3C;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMzB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,QAAQ,GAAG,eAAe,EAAE,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAQ1F,mEAAmE;IACnE,OAAO,CAAC,MAAM;IAuBd,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC,OAAO,IAAI,MAAM,EAAE;IAInB,aAAa,IAAI,OAAO;IAIxB,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC,qBAAqB;;;;;uBAQihK,CAAC;oBAA+B,CAAC;;;IAJvkK,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;CAG9E"}