@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,399 @@
1
+ /**
2
+ * PromptRegistry — Centralized Prompt Registration & Routing
3
+ *
4
+ * The single place where all prompt builders are registered and where
5
+ * incoming `prompts/list` and `prompts/get` requests are routed.
6
+ *
7
+ * Mirrors the design of {@link ToolRegistry} with prompt-specific features:
8
+ * - O(1) routing via Map lookup
9
+ * - Tag-based filtering for RBAC exposure
10
+ * - Lifecycle sync via `notifyChanged()` (→ `notifications/prompts/list_changed`)
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { PromptRegistry, definePrompt } from 'vurb';
15
+ *
16
+ * const promptRegistry = new PromptRegistry<AppContext>();
17
+ * promptRegistry.register(AuditPrompt);
18
+ * promptRegistry.register(OnboardingPrompt);
19
+ *
20
+ * // Attach alongside tools:
21
+ * attachToServer(server, {
22
+ * tools: toolRegistry,
23
+ * prompts: promptRegistry,
24
+ * contextFactory: createContext,
25
+ * });
26
+ *
27
+ * // Lifecycle sync (e.g., after RBAC change):
28
+ * promptRegistry.notifyChanged();
29
+ * ```
30
+ *
31
+ * @see {@link definePrompt} for creating prompt builders
32
+ * @see {@link PromptBuilder} for the builder contract
33
+ *
34
+ * @module
35
+ */
36
+ import {} from './types.js';
37
+ import { runWithHydrationDeadline } from './HydrationSandbox.js';
38
+ import { CursorCodec } from './CursorCodec.js';
39
+ // ── MX Helpers ───────────────────────────────────────────
40
+ /**
41
+ * Format key-value data into an XML semantic block.
42
+ *
43
+ * @internal Used by the interceptor builder's `prependContext`/`appendContext`.
44
+ */
45
+ function formatContext(tag, data) {
46
+ const entries = Object.entries(data)
47
+ .map(([key, value]) => ` ${key}: ${value}`)
48
+ .join('\n');
49
+ return `<${tag}_context>\n${entries}\n</${tag}_context>`;
50
+ }
51
+ // ── Registry ─────────────────────────────────────────────
52
+ export class PromptRegistry {
53
+ _builders = new Map();
54
+ _interceptors = [];
55
+ _notificationSink;
56
+ _notifyDebounceTimer;
57
+ _defaultHydrationTimeout;
58
+ // Pagination
59
+ _cursorCodec = new CursorCodec();
60
+ _pageSize = 50;
61
+ /**
62
+ * Configure stateless cursor-based pagination for `prompts/list`.
63
+ * Overrides the default page size of 50.
64
+ *
65
+ * @param options Pagination configuration (pageSize, modes, secrets)
66
+ */
67
+ configurePagination(options) {
68
+ if (options.pageSize)
69
+ this._pageSize = options.pageSize;
70
+ if (options.cursorMode || options.cursorSecret) {
71
+ this._cursorCodec = new CursorCodec({
72
+ mode: options.cursorMode ?? 'signed',
73
+ ...(options.cursorSecret ? { secret: options.cursorSecret } : {})
74
+ });
75
+ }
76
+ }
77
+ /**
78
+ * Set a global hydration timeout for ALL prompts in this registry.
79
+ *
80
+ * Individual prompts can override with their own `hydrationTimeout`.
81
+ * If neither is set, no timeout is applied (backward compatible).
82
+ *
83
+ * **Enterprise use case**: The platform team sets a 5s global deadline.
84
+ * Critical prompts like `morning_briefing` set their own 3s deadline.
85
+ * Simple prompts (no external I/O) inherit the 5s safety net.
86
+ *
87
+ * @param ms - Maximum hydration time in milliseconds (must be > 0)
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * const promptRegistry = new PromptRegistry<AppContext>();
92
+ * promptRegistry.setDefaultHydrationTimeout(5000); // 5s global safety net
93
+ * ```
94
+ */
95
+ setDefaultHydrationTimeout(ms) {
96
+ this._defaultHydrationTimeout = ms;
97
+ }
98
+ /**
99
+ * Register a single prompt builder.
100
+ *
101
+ * Validates that the prompt name is unique and triggers
102
+ * `buildPromptDefinition()` to compile at registration time.
103
+ *
104
+ * @param builder - A prompt builder (from `definePrompt()`)
105
+ * @throws If a prompt with the same name is already registered
106
+ */
107
+ register(builder) {
108
+ const name = builder.getName();
109
+ if (this._builders.has(name)) {
110
+ throw new Error(`Prompt "${name}" is already registered.`);
111
+ }
112
+ builder.buildPromptDefinition();
113
+ this._builders.set(name, builder);
114
+ }
115
+ /**
116
+ * Register multiple prompt builders at once.
117
+ */
118
+ registerAll(...builders) {
119
+ for (const builder of builders) {
120
+ this.register(builder);
121
+ }
122
+ }
123
+ /**
124
+ * Register a global Prompt Interceptor.
125
+ *
126
+ * Interceptors run AFTER the handler produces its `PromptResult` and BEFORE
127
+ * the result is returned to the MCP client. They can prepend/append messages
128
+ * to inject compliance headers, tenant context, RBAC constraints, or any
129
+ * global state that should wrap every prompt.
130
+ *
131
+ * **Enterprise use case**: The CISO requires every LLM interaction to include
132
+ * tenant isolation rules. Register one interceptor — it applies to all 50 prompts.
133
+ *
134
+ * Multiple interceptors are supported. They execute in registration order.
135
+ *
136
+ * @param interceptor - Callback receiving (ctx, builder, promptMeta)
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * promptRegistry.useInterceptor(async (ctx, builder, meta) => {
141
+ * builder.prependSystem(
142
+ * `[ENTERPRISE COMPLIANCE LAYER]\n` +
143
+ * `User Role: ${ctx.user.role} (Tenant ID: ${ctx.tenant.id})\n` +
144
+ * `Server Time: ${new Date().toISOString()}`
145
+ * );
146
+ * });
147
+ * ```
148
+ */
149
+ useInterceptor(interceptor) {
150
+ this._interceptors.push(interceptor);
151
+ }
152
+ /**
153
+ * Get all registered MCP Prompt definitions.
154
+ *
155
+ * Returns the compiled prompt metadata for `prompts/list`.
156
+ * @deprecated Use `listPrompts({ filter })` instead for pagination support.
157
+ */
158
+ getAllPrompts() {
159
+ const prompts = [];
160
+ for (const builder of this._builders.values()) {
161
+ prompts.push(builder.buildPromptDefinition());
162
+ }
163
+ return prompts;
164
+ }
165
+ /**
166
+ * Get prompt definitions filtered by tags.
167
+ *
168
+ * Uses Set-based lookups for O(1) tag matching.
169
+ * @deprecated Use `listPrompts({ filter })` instead for pagination support.
170
+ */
171
+ getPrompts(filter) {
172
+ const requiredTags = filter.tags && filter.tags.length > 0
173
+ ? new Set(filter.tags) : undefined;
174
+ const anyTags = filter.anyTag && filter.anyTag.length > 0
175
+ ? new Set(filter.anyTag) : undefined;
176
+ const excludeTags = filter.exclude && filter.exclude.length > 0
177
+ ? new Set(filter.exclude) : undefined;
178
+ const prompts = [];
179
+ for (const builder of this._builders.values()) {
180
+ const builderTags = builder.getTags();
181
+ // AND logic
182
+ if (requiredTags && !Array.from(requiredTags).every(t => builderTags.includes(t))) {
183
+ continue;
184
+ }
185
+ // OR logic
186
+ if (anyTags && !builderTags.some(t => anyTags.has(t))) {
187
+ continue;
188
+ }
189
+ // Exclude
190
+ if (excludeTags && builderTags.some(t => excludeTags.has(t))) {
191
+ continue;
192
+ }
193
+ prompts.push(builder.buildPromptDefinition());
194
+ }
195
+ return prompts;
196
+ }
197
+ /**
198
+ * Get paginated prompt definitions for `prompts/list`.
199
+ *
200
+ * Applies tag filters and decodes stateless cursors to return
201
+ * the requested slice of prompts, along with a `nextCursor` if more exist.
202
+ * Memory consumption is strictly O(1) across connections.
203
+ *
204
+ * @param request - Configuration containing optional `filter` and `cursor`.
205
+ * @returns Object with the array of prompts and an optional `nextCursor`.
206
+ */
207
+ async listPrompts(request) {
208
+ const filter = request?.filter;
209
+ const requiredTags = filter?.tags && filter.tags.length > 0 ? new Set(filter.tags) : undefined;
210
+ const anyTags = filter?.anyTag && filter.anyTag.length > 0 ? new Set(filter.anyTag) : undefined;
211
+ const excludeTags = filter?.exclude && filter.exclude.length > 0 ? new Set(filter.exclude) : undefined;
212
+ // Iterate maps in insertion order
213
+ const allNames = [];
214
+ for (const [name, builder] of this._builders.entries()) {
215
+ if (filter) {
216
+ const builderTags = builder.getTags();
217
+ // AND logic
218
+ if (requiredTags && !Array.from(requiredTags).every(t => builderTags.includes(t)))
219
+ continue;
220
+ // OR logic
221
+ if (anyTags && !builderTags.some(t => anyTags.has(t)))
222
+ continue;
223
+ // Exclude
224
+ if (excludeTags && builderTags.some(t => excludeTags.has(t)))
225
+ continue;
226
+ }
227
+ allNames.push(name);
228
+ }
229
+ let startIndex = 0;
230
+ if (request?.cursor) {
231
+ const decoded = await this._cursorCodec.decode(request.cursor);
232
+ if (decoded && decoded.after) {
233
+ const lastIndex = allNames.indexOf(decoded.after);
234
+ if (lastIndex !== -1) {
235
+ startIndex = lastIndex + 1; // start from the next item
236
+ }
237
+ else {
238
+ // Cursor target was removed between pages — skip to end
239
+ // (insertion-order keys are not sorted, so lexicographic successor is meaningless)
240
+ startIndex = allNames.length;
241
+ }
242
+ }
243
+ }
244
+ const pageNames = allNames.slice(startIndex, startIndex + this._pageSize);
245
+ const prompts = pageNames.map(name => this._builders.get(name).buildPromptDefinition());
246
+ let nextCursor;
247
+ if (startIndex + this._pageSize < allNames.length) {
248
+ const lastInPage = pageNames[pageNames.length - 1];
249
+ if (lastInPage) {
250
+ nextCursor = await this._cursorCodec.encode({ after: lastInPage });
251
+ }
252
+ }
253
+ return nextCursor ? { prompts, nextCursor } : { prompts };
254
+ }
255
+ /**
256
+ * Route an incoming `prompts/get` request to the correct builder.
257
+ *
258
+ * Looks up the builder by name and delegates to its `execute()` method.
259
+ * Returns an error prompt result if the prompt is not found.
260
+ *
261
+ * @param ctx - Application context (from contextFactory)
262
+ * @param name - Prompt name from the incoming MCP request
263
+ * @param args - Raw string arguments from the MCP client
264
+ * @returns The hydrated prompt result
265
+ */
266
+ async routeGet(ctx, name, args) {
267
+ const builder = this._builders.get(name);
268
+ if (!builder) {
269
+ const available = Array.from(this._builders.keys()).join(', ');
270
+ return {
271
+ messages: [{
272
+ role: 'user',
273
+ content: {
274
+ type: 'text',
275
+ text: `Unknown prompt: "${name}". Available prompts: ${available}`,
276
+ },
277
+ }],
278
+ };
279
+ }
280
+ // ── Hydration Deadline ───────────────────────────
281
+ // Per-prompt timeout overrides registry default.
282
+ // Zero overhead when no timeout configured.
283
+ const effectiveTimeout = builder.getHydrationTimeout() ?? this._defaultHydrationTimeout;
284
+ const result = effectiveTimeout && effectiveTimeout > 0
285
+ ? await runWithHydrationDeadline(() => builder.execute(ctx, args), effectiveTimeout)
286
+ : await builder.execute(ctx, args);
287
+ // ── Prompt Interceptors ──────────────────────────
288
+ // Zero overhead when no interceptors registered.
289
+ if (this._interceptors.length === 0)
290
+ return result;
291
+ // Build PromptMeta from the builder's compiled definition
292
+ const def = builder.buildPromptDefinition();
293
+ const meta = {
294
+ name: def.name,
295
+ ...(def.description ? { description: def.description } : {}),
296
+ tags: builder.getTags(),
297
+ };
298
+ // Create mutable builder facade
299
+ const prepended = [];
300
+ const appended = [];
301
+ const interceptorBuilder = {
302
+ prependSystem(text) {
303
+ prepended.push({ role: 'user', content: { type: 'text', text } });
304
+ },
305
+ prependUser(text) {
306
+ prepended.push({ role: 'user', content: { type: 'text', text } });
307
+ },
308
+ appendSystem(text) {
309
+ appended.push({ role: 'user', content: { type: 'text', text } });
310
+ },
311
+ appendUser(text) {
312
+ appended.push({ role: 'user', content: { type: 'text', text } });
313
+ },
314
+ appendAssistant(text) {
315
+ appended.push({ role: 'assistant', content: { type: 'text', text } });
316
+ },
317
+ prependContext(tag, data) {
318
+ prepended.push({ role: 'user', content: { type: 'text', text: formatContext(tag, data) } });
319
+ },
320
+ appendContext(tag, data) {
321
+ appended.push({ role: 'user', content: { type: 'text', text: formatContext(tag, data) } });
322
+ },
323
+ };
324
+ // Execute interceptors in registration order
325
+ for (const interceptor of this._interceptors) {
326
+ await interceptor(ctx, interceptorBuilder, meta);
327
+ }
328
+ // Short-circuit: no messages added → return original
329
+ if (prepended.length === 0 && appended.length === 0)
330
+ return result;
331
+ // Merge: prepend + original + append
332
+ return {
333
+ ...result,
334
+ messages: [...prepended, ...result.messages, ...appended],
335
+ };
336
+ }
337
+ // ── Lifecycle Sync ───────────────────────────────────
338
+ /**
339
+ * Set the notification sink for `notifications/prompts/list_changed`.
340
+ *
341
+ * Called by `ServerAttachment` when attaching the registry to a server.
342
+ * The sink invokes the MCP SDK's `sendPromptListChanged()` method.
343
+ *
344
+ * @internal — not part of the public API
345
+ */
346
+ setNotificationSink(sink) {
347
+ this._notificationSink = sink;
348
+ }
349
+ /**
350
+ * Notify all connected clients that the prompt catalog has changed.
351
+ *
352
+ * Sends `notifications/prompts/list_changed` to all connected clients,
353
+ * causing them to re-fetch `prompts/list` and update their UI.
354
+ *
355
+ * **Debounced:** Multiple calls within 100ms are coalesced into a single
356
+ * notification to prevent storms during bulk registration or RBAC updates.
357
+ *
358
+ * Use cases:
359
+ * - RBAC change: user promoted/demoted → visible prompts change
360
+ * - SOP update: compliance rules changed → prompt logic updated
361
+ * - Feature flag: new prompt enabled for beta users
362
+ *
363
+ * @example
364
+ * ```typescript
365
+ * // In your RBAC webhook handler:
366
+ * app.post('/webhooks/role-changed', async (req) => {
367
+ * await db.users.updateRole(req.userId, req.newRole);
368
+ * promptRegistry.notifyChanged(); // All clients refresh instantly
369
+ * });
370
+ * ```
371
+ */
372
+ notifyChanged() {
373
+ if (!this._notificationSink)
374
+ return;
375
+ // Debounce: coalesce rapid calls into a single notification
376
+ if (this._notifyDebounceTimer !== undefined) {
377
+ clearTimeout(this._notifyDebounceTimer);
378
+ }
379
+ const sink = this._notificationSink;
380
+ this._notifyDebounceTimer = setTimeout(() => {
381
+ sink();
382
+ this._notifyDebounceTimer = undefined;
383
+ }, 100);
384
+ }
385
+ /** Check if a prompt with the given name is registered. */
386
+ has(name) { return this._builders.has(name); }
387
+ /** Remove all registered prompts, interceptors, and cancel pending timers. */
388
+ clear() {
389
+ this._builders.clear();
390
+ this._interceptors.length = 0;
391
+ if (this._notifyDebounceTimer !== undefined) {
392
+ clearTimeout(this._notifyDebounceTimer);
393
+ this._notifyDebounceTimer = undefined;
394
+ }
395
+ }
396
+ /** Number of registered prompts. */
397
+ get size() { return this._builders.size; }
398
+ }
399
+ //# sourceMappingURL=PromptRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptRegistry.js","sourceRoot":"","sources":["../../src/prompt/PromptRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * PromptBuilderImpl — Internal Prompt Builder Implementation
3
+ *
4
+ * Implements the {@link PromptBuilder} interface for use by
5
+ * `definePrompt()` and `PromptRegistry`.
6
+ *
7
+ * Responsibilities:
8
+ * - Stores prompt metadata (name, description, tags, middleware)
9
+ * - Compiles Zod schema from ParamsMap (or uses raw Zod)
10
+ * - Validates flat schema constraint at construction time
11
+ * - Builds MCP Prompt definition for `prompts/list`
12
+ * - Delegates hydration to `PromptExecutionPipeline`
13
+ *
14
+ * @internal
15
+ * @module
16
+ */
17
+ import { type ZodObject, type ZodRawShape } from 'zod';
18
+ import { type PromptBuilder, type PromptResult, type PromptParamDef, type InferPromptArgs, type LoopbackContext } from './types.js';
19
+ import { type MiddlewareFn } from '../core/types.js';
20
+ export declare class PromptBuilderImpl<TContext = void> implements PromptBuilder<TContext> {
21
+ private readonly _name;
22
+ private readonly _title;
23
+ private readonly _description;
24
+ private readonly _icons;
25
+ private readonly _tags;
26
+ private readonly _middlewares;
27
+ private readonly _schema;
28
+ private readonly _handler;
29
+ private readonly _hydrationTimeout;
30
+ constructor(name: string, config: {
31
+ title?: string;
32
+ description?: string;
33
+ icons?: {
34
+ light?: string;
35
+ dark?: string;
36
+ };
37
+ tags?: string[];
38
+ middleware?: MiddlewareFn<TContext>[];
39
+ schema?: ZodObject<ZodRawShape>;
40
+ handler: (ctx: TContext & LoopbackContext, args: Record<string, unknown>) => Promise<PromptResult>;
41
+ hydrationTimeout?: number;
42
+ });
43
+ getName(): string;
44
+ getDescription(): string | undefined;
45
+ getTags(): string[];
46
+ hasMiddleware(): boolean;
47
+ getHydrationTimeout(): number | undefined;
48
+ buildPromptDefinition(): {
49
+ name: string;
50
+ title?: string;
51
+ description?: string;
52
+ icons?: {
53
+ light?: string;
54
+ dark?: string;
55
+ };
56
+ arguments?: Array<{
57
+ name: string;
58
+ description?: string;
59
+ required?: boolean;
60
+ }>;
61
+ };
62
+ execute(ctx: TContext, args: Record<string, string>): Promise<PromptResult>;
63
+ }
64
+ interface PromptConfigBase<TContext> {
65
+ title?: string;
66
+ description?: string;
67
+ icons?: {
68
+ light?: string;
69
+ dark?: string;
70
+ };
71
+ tags?: string[];
72
+ middleware?: MiddlewareFn<TContext>[];
73
+ hydrationTimeout?: number;
74
+ }
75
+ /**
76
+ * Overload 1: Zod schema — full type inference via `z.infer<>`
77
+ *
78
+ * ```typescript
79
+ * definePrompt<AppContext>('audit', {
80
+ * args: z.object({ month: z.string(), strict: z.boolean() }),
81
+ * handler: async (ctx, { month, strict }) => { ... }
82
+ * // ^^^^^ ^^^^^^ ← fully typed!
83
+ * });
84
+ * ```
85
+ */
86
+ export declare function definePrompt<TContext = void, S extends ZodRawShape = ZodRawShape>(name: string, config: PromptConfigBase<TContext> & {
87
+ args: ZodObject<S>;
88
+ handler: (ctx: TContext, args: ZodObject<S>["_output"]) => Promise<PromptResult>;
89
+ }): PromptBuilder<TContext>;
90
+ /**
91
+ * Overload 2: JSON-first descriptors — type inference via `InferPromptArgs<>`
92
+ *
93
+ * ```typescript
94
+ * definePrompt('greet', {
95
+ * args: {
96
+ * name: { type: 'string', required: true },
97
+ * age: 'number',
98
+ * } as const,
99
+ * handler: async (ctx, { name, age }) => { ... }
100
+ * // ^^^^ ^^^ ← name: string, age: number!
101
+ * });
102
+ * ```
103
+ *
104
+ * > 💡 Use `as const` on the args object for full literal type inference.
105
+ */
106
+ export declare function definePrompt<TContext = void, T extends Record<string, PromptParamDef> = Record<string, PromptParamDef>>(name: string, config: PromptConfigBase<TContext> & {
107
+ args: T;
108
+ handler: (ctx: TContext, args: InferPromptArgs<T>) => Promise<PromptResult>;
109
+ }): PromptBuilder<TContext>;
110
+ export {};
111
+ //# sourceMappingURL=definePrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definePrompt.d.ts","sourceRoot":"","sources":["../../src/prompt/definePrompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * PromptBuilderImpl — Internal Prompt Builder Implementation
3
+ *
4
+ * Implements the {@link PromptBuilder} interface for use by
5
+ * `definePrompt()` and `PromptRegistry`.
6
+ *
7
+ * Responsibilities:
8
+ * - Stores prompt metadata (name, description, tags, middleware)
9
+ * - Compiles Zod schema from ParamsMap (or uses raw Zod)
10
+ * - Validates flat schema constraint at construction time
11
+ * - Builds MCP Prompt definition for `prompts/list`
12
+ * - Delegates hydration to `PromptExecutionPipeline`
13
+ *
14
+ * @internal
15
+ * @module
16
+ */
17
+ import {} from 'zod';
18
+ import {} from './types.js';
19
+ import {} from '../core/types.js';
20
+ import { convertParamsToZod } from '../core/builder/ParamDescriptors.js';
21
+ import { assertFlatSchema, executePromptPipeline } from './PromptExecutionPipeline.js';
22
+ import { isZodSchema } from '../core/schema/SchemaUtils.js';
23
+ /**
24
+ * Extract argument metadata from a Zod schema for `prompts/list`.
25
+ *
26
+ * Reads field names, descriptions, and optionality from the schema shape
27
+ * to build the MCP `PromptArgument[]` array.
28
+ */
29
+ function extractArgumentMeta(schema) {
30
+ const args = [];
31
+ for (const [key, field] of Object.entries(schema.shape)) {
32
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
+ const def = field._def;
34
+ const isOptional = def?.typeName === 'ZodOptional' || def?.typeName === 'ZodDefault';
35
+ const description = field.description ?? def?.description;
36
+ const argMeta = {
37
+ name: key,
38
+ required: !isOptional,
39
+ };
40
+ if (typeof description === 'string') {
41
+ argMeta.description = description;
42
+ }
43
+ args.push(argMeta);
44
+ }
45
+ return args;
46
+ }
47
+ // ── PromptBuilderImpl ────────────────────────────────────
48
+ export class PromptBuilderImpl {
49
+ _name;
50
+ _title;
51
+ _description;
52
+ _icons;
53
+ _tags;
54
+ _middlewares;
55
+ _schema;
56
+ _handler;
57
+ _hydrationTimeout;
58
+ constructor(name, config) {
59
+ this._name = name;
60
+ this._title = config.title;
61
+ this._description = config.description;
62
+ this._icons = config.icons;
63
+ this._tags = config.tags ?? [];
64
+ this._middlewares = config.middleware ?? [];
65
+ this._schema = config.schema;
66
+ this._handler = config.handler;
67
+ this._hydrationTimeout = config.hydrationTimeout;
68
+ }
69
+ getName() {
70
+ return this._name;
71
+ }
72
+ getDescription() {
73
+ return this._description;
74
+ }
75
+ getTags() {
76
+ return this._tags;
77
+ }
78
+ hasMiddleware() {
79
+ return this._middlewares.length > 0;
80
+ }
81
+ getHydrationTimeout() {
82
+ return this._hydrationTimeout;
83
+ }
84
+ buildPromptDefinition() {
85
+ const def = { name: this._name };
86
+ if (this._title) {
87
+ def.title = this._title;
88
+ }
89
+ if (this._description) {
90
+ def.description = this._description;
91
+ }
92
+ if (this._icons) {
93
+ def.icons = this._icons;
94
+ }
95
+ if (this._schema) {
96
+ def.arguments = extractArgumentMeta(this._schema);
97
+ }
98
+ return def;
99
+ }
100
+ async execute(ctx, args) {
101
+ return executePromptPipeline(ctx, args, this._schema, this._middlewares, this._handler);
102
+ }
103
+ }
104
+ // ── Implementation ───────────────────────────────────────
105
+ export function definePrompt(name, config) {
106
+ // Compile args to Zod schema
107
+ let schema;
108
+ if (config.args) {
109
+ if (isZodSchema(config.args)) {
110
+ schema = config.args;
111
+ }
112
+ else {
113
+ schema = convertParamsToZod(config.args);
114
+ }
115
+ // Enforce flat schema constraint at definition time
116
+ assertFlatSchema(schema);
117
+ }
118
+ return new PromptBuilderImpl(name, {
119
+ title: config.title,
120
+ description: config.description,
121
+ icons: config.icons,
122
+ tags: config.tags,
123
+ middleware: config.middleware,
124
+ schema,
125
+ handler: config.handler,
126
+ hydrationTimeout: config.hydrationTimeout,
127
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
128
+ });
129
+ }
130
+ //# sourceMappingURL=definePrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definePrompt.js","sourceRoot":"","sources":["../../src/prompt/definePrompt.ts"],"names":[],"mappings":"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"}