@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,195 @@
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 {} from 'zod';
20
+ import {} from './types.js';
21
+ import {} from '../core/types.js';
22
+ import { definePrompt } from './definePrompt.js';
23
+ // ============================================================================
24
+ // FluentPromptBuilder
25
+ // ============================================================================
26
+ /**
27
+ * Chainable builder for MCP Prompts.
28
+ *
29
+ * Each setter returns `this` for chaining. Finalisation happens lazily
30
+ * when the `PromptBuilder` interface methods are accessed — this means
31
+ * you can pass a `FluentPromptBuilder` directly to `PromptRegistry.register()`.
32
+ *
33
+ * @typeParam TContext - Application context type (inherited from `initVurb`)
34
+ * @typeParam TArgs - Inferred argument type from the schema
35
+ */
36
+ export class FluentPromptBuilder {
37
+ _name;
38
+ _title;
39
+ _description;
40
+ _icons;
41
+ _tags = [];
42
+ _middlewares = [];
43
+ _args;
44
+ _hydrationTimeout;
45
+ _handler;
46
+ /** @internal Cached delegate built on first access to PromptBuilder methods */
47
+ _delegate;
48
+ constructor(name) {
49
+ this._name = name;
50
+ }
51
+ // ── Chainable Setters ────────────────────────────────
52
+ /**
53
+ * Set a human-readable title for UI display.
54
+ *
55
+ * @param title - The prompt title
56
+ * @returns `this` for chaining
57
+ */
58
+ title(title) {
59
+ this._title = title;
60
+ this._delegate = undefined;
61
+ return this;
62
+ }
63
+ /**
64
+ * Set the prompt description shown in the slash command palette.
65
+ *
66
+ * @param description - Human-readable description
67
+ * @returns `this` for chaining
68
+ */
69
+ describe(description) {
70
+ this._description = description;
71
+ this._delegate = undefined;
72
+ return this;
73
+ }
74
+ /**
75
+ * Set icons for light/dark themes.
76
+ *
77
+ * @param icons - Icon paths for light and/or dark themes
78
+ * @returns `this` for chaining
79
+ */
80
+ icons(icons) {
81
+ this._icons = icons;
82
+ this._delegate = undefined;
83
+ return this;
84
+ }
85
+ /**
86
+ * Set capability tags for selective exposure.
87
+ *
88
+ * @param tags - Tag strings for filtering
89
+ * @returns `this` for chaining
90
+ */
91
+ tags(...tags) {
92
+ // Bug #113 fix: append instead of replace, matching FluentToolBuilder’s
93
+ // accumulative .tags() semantics.
94
+ this._tags.push(...tags);
95
+ this._delegate = undefined;
96
+ return this;
97
+ }
98
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
99
+ input(schemaOrParams) {
100
+ this._args = schemaOrParams;
101
+ this._delegate = undefined;
102
+ return this;
103
+ }
104
+ /**
105
+ * Add middleware to the prompt's execution pipeline.
106
+ *
107
+ * Middleware runs in registration order around the handler
108
+ * (same onion model as tool middleware).
109
+ *
110
+ * @param fns - Middleware functions
111
+ * @returns `this` for chaining
112
+ */
113
+ use(...fns) {
114
+ this._middlewares.push(...fns);
115
+ this._delegate = undefined;
116
+ return this;
117
+ }
118
+ /**
119
+ * Set the maximum hydration time in milliseconds.
120
+ *
121
+ * If the handler doesn't complete within this time,
122
+ * the framework returns a graceful SYSTEM ALERT.
123
+ *
124
+ * @param ms - Timeout in milliseconds
125
+ * @returns `this` for chaining
126
+ */
127
+ timeout(ms) {
128
+ this._hydrationTimeout = ms;
129
+ this._delegate = undefined;
130
+ return this;
131
+ }
132
+ /**
133
+ * Set the hydration handler.
134
+ *
135
+ * This is the terminal method — after calling `.handler()`,
136
+ * the builder is ready to be registered.
137
+ *
138
+ * @param fn - Handler function receiving `(ctx, args)` → `PromptResult`
139
+ * @returns `this` for chaining
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * .handler(async (ctx, { name }) => ({
144
+ * messages: [PromptMessage.user(`Hello ${name}!`)],
145
+ * }))
146
+ * ```
147
+ */
148
+ handler(fn) {
149
+ this._handler = fn;
150
+ this._delegate = undefined;
151
+ return this;
152
+ }
153
+ // ── PromptBuilder Interface (delegation) ─────────────
154
+ /** @internal Build the underlying PromptBuilder delegate lazily */
155
+ _build() {
156
+ if (this._delegate)
157
+ return this._delegate;
158
+ if (!this._handler) {
159
+ throw new Error(`FluentPromptBuilder('${this._name}'): .handler() must be called before the prompt can be used.`);
160
+ }
161
+ this._delegate = definePrompt(this._name, {
162
+ title: this._title,
163
+ description: this._description,
164
+ icons: this._icons,
165
+ tags: this._tags.length > 0 ? this._tags : undefined,
166
+ middleware: this._middlewares.length > 0 ? this._middlewares : undefined,
167
+ args: this._args,
168
+ hydrationTimeout: this._hydrationTimeout,
169
+ handler: this._handler,
170
+ });
171
+ return this._delegate;
172
+ }
173
+ getName() {
174
+ return this._name;
175
+ }
176
+ getDescription() {
177
+ return this._description;
178
+ }
179
+ getTags() {
180
+ return this._tags;
181
+ }
182
+ hasMiddleware() {
183
+ return this._middlewares.length > 0;
184
+ }
185
+ getHydrationTimeout() {
186
+ return this._hydrationTimeout;
187
+ }
188
+ buildPromptDefinition() {
189
+ return this._build().buildPromptDefinition();
190
+ }
191
+ execute(ctx, args) {
192
+ return this._build().execute(ctx, args);
193
+ }
194
+ }
195
+ //# sourceMappingURL=FluentPromptBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluentPromptBuilder.js","sourceRoot":"","sources":["../../src/prompt/FluentPromptBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * HydrationSandbox — Structured Deadline for Prompt Server-Side Hydration
3
+ *
4
+ * When a user invokes `/morning_briefing`, the prompt handler performs
5
+ * server-side hydration: fetching Jira tickets, Stripe invoices, database
6
+ * queries. If any external source hangs (15s Jira timeout, API 500),
7
+ * the user stares at a frozen UI.
8
+ *
9
+ * This sandbox wraps the handler in a strict `Promise.race` deadline:
10
+ *
11
+ * ┌─────────────────────────────────────────────────┐
12
+ * │ Promise.race([ │
13
+ * │ handler(ctx, args), ← the real work │
14
+ * │ deadlinePromise(3s), ← the safety net │
15
+ * │ ]) │
16
+ * │ │
17
+ * │ Winner: │
18
+ * │ handler → return result (happy path) │
19
+ * │ deadline → return SYSTEM ALERT (graceful) │
20
+ * │ handler throws → return ERROR ALERT (catch) │
21
+ * └─────────────────────────────────────────────────┘
22
+ *
23
+ * Three guarantees:
24
+ * 1. The UI unblocks within `deadlineMs` — always.
25
+ * 2. Handler errors become graceful alerts, not -32603 crashes.
26
+ * 3. Timers are cleaned via `finally` — no resource leaks.
27
+ *
28
+ * Design influenced by:
29
+ * - Go's `context.WithDeadline` (structured cancellation)
30
+ * - gRPC deadline propagation (strict, per-call)
31
+ * - Resilience4j's TimeLimiter (JVM circuit breaker pattern)
32
+ *
33
+ * @module
34
+ * @internal
35
+ */
36
+ import { type PromptResult } from './types.js';
37
+ /**
38
+ * Execute a prompt hydration function within a strict deadline.
39
+ *
40
+ * Uses `Promise.race` between the handler and a timeout promise.
41
+ * Three scenarios:
42
+ *
43
+ * 1. **Handler wins** (completes before deadline) → returns result
44
+ * 2. **Deadline wins** (handler too slow) → returns TIMEOUT alert
45
+ * 3. **Handler throws** (API error, crash) → returns ERROR alert
46
+ *
47
+ * In ALL cases, the caller receives a valid `PromptResult`.
48
+ * The UI never freezes. The user never sees `-32603`.
49
+ *
50
+ * @param fn - The prompt hydration function to execute
51
+ * @param deadlineMs - Maximum time in milliseconds (must be > 0)
52
+ * @returns Always returns a valid PromptResult
53
+ */
54
+ export declare function runWithHydrationDeadline(fn: () => Promise<PromptResult>, deadlineMs: number): Promise<PromptResult>;
55
+ //# sourceMappingURL=HydrationSandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HydrationSandbox.d.ts","sourceRoot":"","sources":["../../src/prompt/HydrationSandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAmE/C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,wBAAwB,CAC1C,EAAE,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,EAC/B,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAwBvB"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * HydrationSandbox — Structured Deadline for Prompt Server-Side Hydration
3
+ *
4
+ * When a user invokes `/morning_briefing`, the prompt handler performs
5
+ * server-side hydration: fetching Jira tickets, Stripe invoices, database
6
+ * queries. If any external source hangs (15s Jira timeout, API 500),
7
+ * the user stares at a frozen UI.
8
+ *
9
+ * This sandbox wraps the handler in a strict `Promise.race` deadline:
10
+ *
11
+ * ┌─────────────────────────────────────────────────┐
12
+ * │ Promise.race([ │
13
+ * │ handler(ctx, args), ← the real work │
14
+ * │ deadlinePromise(3s), ← the safety net │
15
+ * │ ]) │
16
+ * │ │
17
+ * │ Winner: │
18
+ * │ handler → return result (happy path) │
19
+ * │ deadline → return SYSTEM ALERT (graceful) │
20
+ * │ handler throws → return ERROR ALERT (catch) │
21
+ * └─────────────────────────────────────────────────┘
22
+ *
23
+ * Three guarantees:
24
+ * 1. The UI unblocks within `deadlineMs` — always.
25
+ * 2. Handler errors become graceful alerts, not -32603 crashes.
26
+ * 3. Timers are cleaned via `finally` — no resource leaks.
27
+ *
28
+ * Design influenced by:
29
+ * - Go's `context.WithDeadline` (structured cancellation)
30
+ * - gRPC deadline propagation (strict, per-call)
31
+ * - Resilience4j's TimeLimiter (JVM circuit breaker pattern)
32
+ *
33
+ * @module
34
+ * @internal
35
+ */
36
+ import {} from './types.js';
37
+ // ── Alert Formatters ─────────────────────────────────────
38
+ /**
39
+ * Build an XML-structured SYSTEM ALERT for the LLM.
40
+ *
41
+ * Uses XML semantic boundaries so the LLM can parse the
42
+ * alert deterministically — same pattern as our self-healing
43
+ * tool errors (`<tool_error>`, `<validation_error>`).
44
+ */
45
+ function formatHydrationAlert(status, deadlineMs, errorMessage) {
46
+ const parts = ['<hydration_alert>'];
47
+ parts.push(` <status>${status}</status>`);
48
+ parts.push(` <deadline_ms>${deadlineMs}</deadline_ms>`);
49
+ if (status === 'TIMEOUT') {
50
+ parts.push(` <message>Prompt hydration did not complete within ${(deadlineMs / 1000).toFixed(1)}s. ` +
51
+ `External data sources (APIs, databases) did not respond within the deadline.</message>`);
52
+ }
53
+ else {
54
+ parts.push(` <message>Prompt hydration failed: ${errorMessage ?? 'Unknown error'}.</message>`);
55
+ }
56
+ parts.push(' <guidance>Proceed with the conversation using available context. ' +
57
+ 'The user\'s request is still valid — answer with your general knowledge ' +
58
+ 'and inform the user that live data could not be fetched at this time. ' +
59
+ 'Do NOT retry the same prompt automatically.</guidance>');
60
+ parts.push('</hydration_alert>');
61
+ return parts.join('\n');
62
+ }
63
+ /**
64
+ * Wrap a hydration alert as a valid `PromptResult`.
65
+ *
66
+ * Returns a single `user` message with the XML alert.
67
+ * MCP `PromptMessage` only supports `user`|`assistant` roles.
68
+ */
69
+ function alertAsPromptResult(status, deadlineMs, errorMessage) {
70
+ return {
71
+ messages: [{
72
+ role: 'user',
73
+ content: {
74
+ type: 'text',
75
+ text: formatHydrationAlert(status, deadlineMs, errorMessage),
76
+ },
77
+ }],
78
+ };
79
+ }
80
+ // ── Sandbox Execution ────────────────────────────────────
81
+ /**
82
+ * Execute a prompt hydration function within a strict deadline.
83
+ *
84
+ * Uses `Promise.race` between the handler and a timeout promise.
85
+ * Three scenarios:
86
+ *
87
+ * 1. **Handler wins** (completes before deadline) → returns result
88
+ * 2. **Deadline wins** (handler too slow) → returns TIMEOUT alert
89
+ * 3. **Handler throws** (API error, crash) → returns ERROR alert
90
+ *
91
+ * In ALL cases, the caller receives a valid `PromptResult`.
92
+ * The UI never freezes. The user never sees `-32603`.
93
+ *
94
+ * @param fn - The prompt hydration function to execute
95
+ * @param deadlineMs - Maximum time in milliseconds (must be > 0)
96
+ * @returns Always returns a valid PromptResult
97
+ */
98
+ export async function runWithHydrationDeadline(fn, deadlineMs) {
99
+ let timer;
100
+ // Deadline promise: resolves with TIMEOUT alert after deadline
101
+ const deadlinePromise = new Promise((resolve) => {
102
+ timer = setTimeout(() => {
103
+ resolve(alertAsPromptResult('TIMEOUT', deadlineMs));
104
+ }, deadlineMs);
105
+ });
106
+ // Handler promise: wraps fn() to catch errors → ERROR alert
107
+ const handlerPromise = fn().catch((err) => {
108
+ const message = err instanceof Error ? err.message : String(err);
109
+ return alertAsPromptResult('ERROR', deadlineMs, message);
110
+ });
111
+ try {
112
+ // First to finish wins. UI unblocks immediately.
113
+ return await Promise.race([handlerPromise, deadlinePromise]);
114
+ }
115
+ finally {
116
+ // Always clean up the timer — prevents resource leaks
117
+ // and keeps Node.js from staying alive unnecessarily.
118
+ if (timer !== undefined)
119
+ clearTimeout(timer);
120
+ }
121
+ }
122
+ //# sourceMappingURL=HydrationSandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HydrationSandbox.js","sourceRoot":"","sources":["../../src/prompt/HydrationSandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAqB,MAAM,YAAY,CAAC;AAE/C,4DAA4D;AAE5D;;;;;;GAMG;AACH,SAAS,oBAAoB,CACzB,MAA2B,EAC3B,UAAkB,EAClB,YAAqB;IAErB,MAAM,KAAK,GAAa,CAAC,mBAAmB,CAAC,CAAC;IAE9C,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,WAAW,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,kBAAkB,UAAU,gBAAgB,CAAC,CAAC;IAEzD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACN,uDAAuD,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YAC1F,wFAAwF,CAC3F,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,IAAI,CACN,uCAAuC,YAAY,IAAI,eAAe,aAAa,CACtF,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI,CACN,qEAAqE;QACrE,0EAA0E;QAC1E,wEAAwE;QACxE,wDAAwD,CAC3D,CAAC;IAEF,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CACxB,MAA2B,EAC3B,UAAkB,EAClB,YAAqB;IAErB,OAAO;QACH,QAAQ,EAAE,CAAC;gBACP,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACL,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC;iBAC/D;aACJ,CAAC;KACL,CAAC;AACN,CAAC;AAED,4DAA4D;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC1C,EAA+B,EAC/B,UAAkB;IAElB,IAAI,KAAgD,CAAC;IAErD,+DAA+D;IAC/D,MAAM,eAAe,GAAG,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,EAAE;QAC1D,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACpB,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QACxD,CAAC,EAAE,UAAU,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,MAAM,cAAc,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAgB,EAAE;QACpD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACD,iDAAiD;QACjD,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;IACjE,CAAC;YAAS,CAAC;QACP,sDAAsD;QACtD,sDAAsD;QACtD,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;AACL,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * PromptExecutionPipeline — Prompt Hydration Pipeline
3
+ *
4
+ * Handles the complete lifecycle of a `prompts/get` request:
5
+ *
6
+ * 1. Schema-Informed Coercion (string → typed values)
7
+ * 2. Zod Validation (.strict() + coaching errors)
8
+ * 3. Middleware Chain execution
9
+ * 4. Handler invocation
10
+ *
11
+ * Key feature: **Schema-Informed Boundary Coercion**
12
+ * MCP transmits ALL prompt arguments as `Record<string, string>`.
13
+ * This module reads the Zod schema AST to determine expected types
14
+ * and coerces string values deterministically — no guessing.
15
+ *
16
+ * @module
17
+ */
18
+ import { type ZodObject, type ZodRawShape } from 'zod';
19
+ import { type PromptResult } from './types.js';
20
+ import { type MiddlewareFn } from '../core/types.js';
21
+ /**
22
+ * Assert that a Zod schema only contains flat primitive fields.
23
+ *
24
+ * Throws a descriptive error if any field uses arrays, objects,
25
+ * tuples, records, maps, or sets — types that MCP clients cannot
26
+ * render as visual form fields.
27
+ *
28
+ * Called at **definition time** (in `definePrompt()`) to fail fast
29
+ * and prevent runtime surprises.
30
+ *
31
+ * @param schema - The Zod schema to validate
32
+ * @throws Error with coaching message if nested types are found
33
+ */
34
+ export declare function assertFlatSchema(schema: ZodObject<ZodRawShape>): void;
35
+ /**
36
+ * Schema-Informed Boundary Coercion.
37
+ *
38
+ * Reads the Zod schema AST to determine expected types,
39
+ * then coerces string values from the MCP wire format.
40
+ *
41
+ * This is NOT guessing. The coercion is derived from the
42
+ * developer's declared schema — it's deterministic.
43
+ *
44
+ * @param rawArgs - Raw string arguments from the MCP client
45
+ * @param zodSchema - The validated Zod schema for this prompt
46
+ * @returns Coerced argument values ready for Zod validation
47
+ */
48
+ export declare function coercePromptArgs(rawArgs: Record<string, string>, zodSchema: ZodObject<ZodRawShape>): Record<string, unknown>;
49
+ /**
50
+ * Execute the full prompt hydration pipeline.
51
+ *
52
+ * Steps:
53
+ * 1. Coerce string args to typed values using schema AST
54
+ * 2. Validate with Zod (.strict() enforced)
55
+ * 3. Run middleware chain
56
+ * 4. Execute handler
57
+ *
58
+ * @returns Either a `PromptResult` or an error `PromptResult` with coaching
59
+ */
60
+ export declare function executePromptPipeline<TContext>(ctx: TContext, rawArgs: Record<string, string>, schema: ZodObject<ZodRawShape> | undefined, middlewares: readonly MiddlewareFn<TContext>[], handler: (ctx: TContext, args: Record<string, unknown>) => Promise<PromptResult>): Promise<PromptResult>;
61
+ //# sourceMappingURL=PromptExecutionPipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptExecutionPipeline.d.ts","sourceRoot":"","sources":["../../src/prompt/PromptExecutionPipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAmB,MAAM,KAAK,CAAC;AACxE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsCrD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAYrE;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCzB;AA0BD;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAChD,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,EAC1C,WAAW,EAAE,SAAS,YAAY,CAAC,QAAQ,CAAC,EAAE,EAC9C,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,GACjF,OAAO,CAAC,YAAY,CAAC,CAgCvB"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * PromptExecutionPipeline — Prompt Hydration Pipeline
3
+ *
4
+ * Handles the complete lifecycle of a `prompts/get` request:
5
+ *
6
+ * 1. Schema-Informed Coercion (string → typed values)
7
+ * 2. Zod Validation (.strict() + coaching errors)
8
+ * 3. Middleware Chain execution
9
+ * 4. Handler invocation
10
+ *
11
+ * Key feature: **Schema-Informed Boundary Coercion**
12
+ * MCP transmits ALL prompt arguments as `Record<string, string>`.
13
+ * This module reads the Zod schema AST to determine expected types
14
+ * and coerces string values deterministically — no guessing.
15
+ *
16
+ * @module
17
+ */
18
+ import {} from 'zod';
19
+ import {} from './types.js';
20
+ import {} from '../core/types.js';
21
+ import { escapeXml, escapeXmlAttr } from '../core/response.js';
22
+ import { wrapChain } from '../core/execution/MiddlewareCompiler.js';
23
+ // ── Flat Schema Guard ────────────────────────────────────
24
+ /** Zod type names that are NOT allowed in prompt argument schemas */
25
+ const FORBIDDEN_ZOD_TYPES = new Set([
26
+ 'ZodArray', 'ZodObject', 'ZodTuple', 'ZodRecord', 'ZodMap', 'ZodSet',
27
+ ]);
28
+ /**
29
+ * Get the base Zod type name, unwrapping Optional/Default/Nullable wrappers.
30
+ * @internal
31
+ */
32
+ function getZodBaseTypeName(schema) {
33
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
+ const def = schema._def;
35
+ if (def === undefined || def === null)
36
+ return 'Unknown';
37
+ const typeName = def.typeName ?? '';
38
+ // Unwrap Optional, Default, Nullable, Effects to find the inner type
39
+ if (typeName === 'ZodOptional' ||
40
+ typeName === 'ZodDefault' ||
41
+ typeName === 'ZodNullable') {
42
+ return getZodBaseTypeName(def.innerType);
43
+ }
44
+ if (typeName === 'ZodEffects') {
45
+ return getZodBaseTypeName(def.schema);
46
+ }
47
+ return typeName;
48
+ }
49
+ /**
50
+ * Assert that a Zod schema only contains flat primitive fields.
51
+ *
52
+ * Throws a descriptive error if any field uses arrays, objects,
53
+ * tuples, records, maps, or sets — types that MCP clients cannot
54
+ * render as visual form fields.
55
+ *
56
+ * Called at **definition time** (in `definePrompt()`) to fail fast
57
+ * and prevent runtime surprises.
58
+ *
59
+ * @param schema - The Zod schema to validate
60
+ * @throws Error with coaching message if nested types are found
61
+ */
62
+ export function assertFlatSchema(schema) {
63
+ for (const [key, field] of Object.entries(schema.shape)) {
64
+ const typeName = getZodBaseTypeName(field);
65
+ if (FORBIDDEN_ZOD_TYPES.has(typeName)) {
66
+ throw new Error(`[definePrompt] Argument '${key}' uses type '${typeName}', which is not supported ` +
67
+ `in MCP prompt arguments. MCP clients render prompt args as visual forms — only ` +
68
+ `flat primitives (string, number, boolean, enum) are supported.\n` +
69
+ `💡 If you need complex data, fetch it server-side inside the handler instead.`);
70
+ }
71
+ }
72
+ }
73
+ // ── Schema-Informed Coercion ─────────────────────────────
74
+ /**
75
+ * Schema-Informed Boundary Coercion.
76
+ *
77
+ * Reads the Zod schema AST to determine expected types,
78
+ * then coerces string values from the MCP wire format.
79
+ *
80
+ * This is NOT guessing. The coercion is derived from the
81
+ * developer's declared schema — it's deterministic.
82
+ *
83
+ * @param rawArgs - Raw string arguments from the MCP client
84
+ * @param zodSchema - The validated Zod schema for this prompt
85
+ * @returns Coerced argument values ready for Zod validation
86
+ */
87
+ export function coercePromptArgs(rawArgs, zodSchema) {
88
+ const coerced = {};
89
+ const shape = zodSchema.shape;
90
+ for (const [key, value] of Object.entries(rawArgs)) {
91
+ const fieldSchema = shape[key];
92
+ if (!fieldSchema) {
93
+ // Unknown field — pass through, let Zod .strict() reject it
94
+ coerced[key] = value;
95
+ continue;
96
+ }
97
+ const typeName = getZodBaseTypeName(fieldSchema);
98
+ switch (typeName) {
99
+ case 'ZodBoolean':
100
+ coerced[key] = typeof value === 'string'
101
+ ? value.toLowerCase() === 'true' || value === '1'
102
+ : Boolean(value);
103
+ break;
104
+ case 'ZodNumber':
105
+ if (value === '')
106
+ break; // leave missing — let Zod reject
107
+ coerced[key] = Number(value);
108
+ break;
109
+ case 'ZodEnum':
110
+ case 'ZodString':
111
+ default:
112
+ coerced[key] = value;
113
+ break;
114
+ }
115
+ }
116
+ return coerced;
117
+ }
118
+ // ── Validation ───────────────────────────────────────────
119
+ /**
120
+ * Format a Zod validation error into a coaching prompt.
121
+ *
122
+ * Returns a human+LLM readable error that guides the agent
123
+ * (or the user via the MCP client) to correct the input.
124
+ */
125
+ function formatPromptValidationError(issues) {
126
+ const parts = ['<validation_error>'];
127
+ for (const issue of issues) {
128
+ const field = issue.path.join('.') || '(root)';
129
+ parts.push(`<field name="${escapeXmlAttr(field)}">${escapeXml(issue.message)}</field>`);
130
+ }
131
+ parts.push('<recovery>Check the prompt definition for valid argument types and values.</recovery>');
132
+ parts.push('</validation_error>');
133
+ return parts.join('\n');
134
+ }
135
+ // ── Middleware ──────────────────────────────────────────
136
+ // Uses the canonical wrapChain from MiddlewareCompiler (DRY).
137
+ // ── Pipeline ─────────────────────────────────────────────
138
+ /**
139
+ * Execute the full prompt hydration pipeline.
140
+ *
141
+ * Steps:
142
+ * 1. Coerce string args to typed values using schema AST
143
+ * 2. Validate with Zod (.strict() enforced)
144
+ * 3. Run middleware chain
145
+ * 4. Execute handler
146
+ *
147
+ * @returns Either a `PromptResult` or an error `PromptResult` with coaching
148
+ */
149
+ export async function executePromptPipeline(ctx, rawArgs, schema, middlewares, handler) {
150
+ // Step 1 + 2: Coerce and validate
151
+ let validatedArgs = rawArgs;
152
+ if (schema) {
153
+ const coerced = coercePromptArgs(rawArgs, schema);
154
+ const result = schema.strict().safeParse(coerced);
155
+ if (!result.success) {
156
+ // Return a validation error as a user message
157
+ return {
158
+ messages: [{
159
+ role: 'user',
160
+ content: {
161
+ type: 'text',
162
+ text: formatPromptValidationError(result.error.issues),
163
+ },
164
+ }],
165
+ };
166
+ }
167
+ validatedArgs = result.data;
168
+ }
169
+ // Step 3 + 4: Middleware chain → handler
170
+ if (middlewares.length > 0) {
171
+ const chain = wrapChain(handler, middlewares);
172
+ const result = await chain(ctx, validatedArgs);
173
+ return result;
174
+ }
175
+ return handler(ctx, validatedArgs);
176
+ }
177
+ //# sourceMappingURL=PromptExecutionPipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptExecutionPipeline.js","sourceRoot":"","sources":["../../src/prompt/PromptExecutionPipeline.ts"],"names":[],"mappings":"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"}