@frontmcp/sdk 0.4.1 → 0.5.1

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 (558) hide show
  1. package/README.md +30 -18
  2. package/package.json +20 -5
  3. package/src/app/app.registry.d.ts +3 -2
  4. package/src/app/app.registry.js +3 -1
  5. package/src/app/app.registry.js.map +1 -1
  6. package/src/app/instances/app.local.instance.js +2 -2
  7. package/src/app/instances/app.local.instance.js.map +1 -1
  8. package/src/auth/auth.registry.d.ts +34 -2
  9. package/src/auth/auth.registry.js +162 -24
  10. package/src/auth/auth.registry.js.map +1 -1
  11. package/src/auth/auth.utils.js +8 -9
  12. package/src/auth/auth.utils.js.map +1 -1
  13. package/src/auth/authorization/authorization.class.d.ts +125 -0
  14. package/src/auth/authorization/authorization.class.js +224 -0
  15. package/src/auth/authorization/authorization.class.js.map +1 -0
  16. package/src/auth/authorization/authorization.types.d.ts +300 -0
  17. package/src/auth/authorization/authorization.types.js +79 -0
  18. package/src/auth/authorization/authorization.types.js.map +1 -0
  19. package/src/auth/authorization/index.d.ts +5 -0
  20. package/src/auth/authorization/index.js +19 -0
  21. package/src/auth/authorization/index.js.map +1 -0
  22. package/src/auth/authorization/orchestrated.authorization.d.ts +242 -0
  23. package/src/auth/authorization/orchestrated.authorization.js +306 -0
  24. package/src/auth/authorization/orchestrated.authorization.js.map +1 -0
  25. package/src/auth/authorization/public.authorization.d.ts +91 -0
  26. package/src/auth/authorization/public.authorization.js +132 -0
  27. package/src/auth/authorization/public.authorization.js.map +1 -0
  28. package/src/auth/authorization/transparent.authorization.d.ts +130 -0
  29. package/src/auth/authorization/transparent.authorization.js +147 -0
  30. package/src/auth/authorization/transparent.authorization.js.map +1 -0
  31. package/src/auth/consent/consent.types.d.ts +111 -0
  32. package/src/auth/consent/consent.types.js +119 -0
  33. package/src/auth/consent/consent.types.js.map +1 -0
  34. package/src/auth/consent/index.d.ts +1 -0
  35. package/src/auth/consent/index.js +13 -0
  36. package/src/auth/consent/index.js.map +1 -0
  37. package/src/auth/detection/auth-provider-detection.d.ts +84 -0
  38. package/src/auth/detection/auth-provider-detection.js +230 -0
  39. package/src/auth/detection/auth-provider-detection.js.map +1 -0
  40. package/src/auth/detection/index.d.ts +1 -0
  41. package/src/auth/detection/index.js +15 -0
  42. package/src/auth/detection/index.js.map +1 -0
  43. package/src/auth/flows/auth.verify.flow.d.ts +110 -0
  44. package/src/auth/flows/auth.verify.flow.js +379 -0
  45. package/src/auth/flows/auth.verify.flow.js.map +1 -0
  46. package/src/auth/flows/oauth.authorize.flow.d.ts +118 -164
  47. package/src/auth/flows/oauth.authorize.flow.js +701 -33
  48. package/src/auth/flows/oauth.authorize.flow.js.map +1 -1
  49. package/src/auth/flows/oauth.callback.flow.d.ts +117 -0
  50. package/src/auth/flows/oauth.callback.flow.js +357 -0
  51. package/src/auth/flows/oauth.callback.flow.js.map +1 -0
  52. package/src/auth/flows/oauth.register.flow.d.ts +32 -125
  53. package/src/auth/flows/oauth.token.flow.d.ts +52 -154
  54. package/src/auth/flows/oauth.token.flow.js +193 -55
  55. package/src/auth/flows/oauth.token.flow.js.map +1 -1
  56. package/src/auth/flows/session.verify.flow.d.ts +66 -321
  57. package/src/auth/flows/session.verify.flow.js +107 -18
  58. package/src/auth/flows/session.verify.flow.js.map +1 -1
  59. package/src/auth/flows/well-known.jwks.flow.d.ts +34 -205
  60. package/src/auth/flows/well-known.jwks.flow.js +15 -8
  61. package/src/auth/flows/well-known.jwks.flow.js.map +1 -1
  62. package/src/auth/flows/well-known.oauth-authorization-server.flow.d.ts +48 -223
  63. package/src/auth/flows/well-known.oauth-authorization-server.flow.js +2 -3
  64. package/src/auth/flows/well-known.oauth-authorization-server.flow.js.map +1 -1
  65. package/src/auth/flows/well-known.prm.flow.d.ts +19 -120
  66. package/src/auth/flows/well-known.prm.flow.js +3 -4
  67. package/src/auth/flows/well-known.prm.flow.js.map +1 -1
  68. package/src/auth/instances/instance.local-primary-auth.d.ts +91 -4
  69. package/src/auth/instances/instance.local-primary-auth.js +236 -6
  70. package/src/auth/instances/instance.local-primary-auth.js.map +1 -1
  71. package/src/auth/instances/instance.remote-primary-auth.d.ts +4 -3
  72. package/src/auth/instances/instance.remote-primary-auth.js +2 -2
  73. package/src/auth/instances/instance.remote-primary-auth.js.map +1 -1
  74. package/src/auth/session/authorization-vault.d.ts +611 -0
  75. package/src/auth/session/authorization-vault.js +817 -0
  76. package/src/auth/session/authorization-vault.js.map +1 -0
  77. package/src/auth/session/authorization.store.d.ts +301 -0
  78. package/src/auth/session/authorization.store.js +323 -0
  79. package/src/auth/session/authorization.store.js.map +1 -0
  80. package/src/auth/session/encrypted-authorization-vault.d.ts +181 -0
  81. package/src/auth/session/encrypted-authorization-vault.js +493 -0
  82. package/src/auth/session/encrypted-authorization-vault.js.map +1 -0
  83. package/src/auth/session/index.d.ts +4 -4
  84. package/src/auth/session/index.js +11 -7
  85. package/src/auth/session/index.js.map +1 -1
  86. package/src/auth/session/session.schema.d.ts +1 -1
  87. package/src/auth/session/session.service.d.ts +1 -1
  88. package/src/auth/session/transport-session.manager.d.ts +101 -0
  89. package/src/auth/session/transport-session.manager.js +300 -0
  90. package/src/auth/session/transport-session.manager.js.map +1 -0
  91. package/src/auth/session/transport-session.types.d.ts +457 -0
  92. package/src/auth/session/transport-session.types.js +110 -0
  93. package/src/auth/session/transport-session.types.js.map +1 -0
  94. package/src/auth/session/utils/session-id.utils.d.ts +14 -2
  95. package/src/auth/session/utils/session-id.utils.js +68 -19
  96. package/src/auth/session/utils/session-id.utils.js.map +1 -1
  97. package/src/auth/session/vault-encryption.d.ts +189 -0
  98. package/src/auth/session/vault-encryption.js +263 -0
  99. package/src/auth/session/vault-encryption.js.map +1 -0
  100. package/src/auth/ui/base-layout.d.ts +188 -0
  101. package/src/auth/ui/base-layout.js +292 -0
  102. package/src/auth/ui/base-layout.js.map +1 -0
  103. package/src/auth/ui/htmx-templates.d.ts +135 -0
  104. package/src/auth/ui/htmx-templates.js +433 -0
  105. package/src/auth/ui/htmx-templates.js.map +1 -0
  106. package/src/auth/ui/index.d.ts +11 -0
  107. package/src/auth/ui/index.js +35 -0
  108. package/src/auth/ui/index.js.map +1 -0
  109. package/src/auth/utils/audience.validator.d.ts +129 -0
  110. package/src/auth/utils/audience.validator.js +196 -0
  111. package/src/auth/utils/audience.validator.js.map +1 -0
  112. package/src/auth/utils/index.d.ts +2 -0
  113. package/src/auth/utils/index.js +7 -0
  114. package/src/auth/utils/index.js.map +1 -0
  115. package/src/auth/utils/www-authenticate.utils.d.ts +97 -0
  116. package/src/auth/utils/www-authenticate.utils.js +183 -0
  117. package/src/auth/utils/www-authenticate.utils.js.map +1 -0
  118. package/src/common/common.schema.d.ts +2 -16
  119. package/src/common/constants.d.ts +3 -0
  120. package/src/common/constants.js +6 -1
  121. package/src/common/constants.js.map +1 -1
  122. package/src/common/decorators/decorator-utils.d.ts +131 -0
  123. package/src/common/decorators/decorator-utils.js +195 -0
  124. package/src/common/decorators/decorator-utils.js.map +1 -0
  125. package/src/common/decorators/front-mcp.decorator.js +3 -2
  126. package/src/common/decorators/front-mcp.decorator.js.map +1 -1
  127. package/src/common/decorators/hook.decorator.d.ts +58 -2
  128. package/src/common/decorators/hook.decorator.js +127 -17
  129. package/src/common/decorators/hook.decorator.js.map +1 -1
  130. package/src/common/decorators/plugin.decorator.d.ts +1 -1
  131. package/src/common/decorators/plugin.decorator.js +11 -10
  132. package/src/common/decorators/plugin.decorator.js.map +1 -1
  133. package/src/common/decorators/resource.decorator.d.ts +32 -3
  134. package/src/common/decorators/resource.decorator.js +46 -4
  135. package/src/common/decorators/resource.decorator.js.map +1 -1
  136. package/src/common/decorators/tool.decorator.d.ts +54 -5
  137. package/src/common/decorators/tool.decorator.js.map +1 -1
  138. package/src/common/dynamic/dynamic.plugin.d.ts +22 -11
  139. package/src/common/dynamic/dynamic.plugin.js +7 -1
  140. package/src/common/dynamic/dynamic.plugin.js.map +1 -1
  141. package/src/common/entries/prompt.entry.d.ts +46 -2
  142. package/src/common/entries/prompt.entry.js +10 -0
  143. package/src/common/entries/prompt.entry.js.map +1 -1
  144. package/src/common/entries/resource.entry.d.ts +69 -6
  145. package/src/common/entries/resource.entry.js +27 -3
  146. package/src/common/entries/resource.entry.js.map +1 -1
  147. package/src/common/entries/scope.entry.d.ts +5 -1
  148. package/src/common/entries/scope.entry.js +3 -3
  149. package/src/common/entries/scope.entry.js.map +1 -1
  150. package/src/common/flow/flow.utils.d.ts +56 -0
  151. package/src/common/flow/flow.utils.js +96 -0
  152. package/src/common/flow/flow.utils.js.map +1 -0
  153. package/src/common/index.d.ts +2 -2
  154. package/src/common/index.js +2 -2
  155. package/src/common/index.js.map +1 -1
  156. package/src/common/interfaces/execution-context.interface.d.ts +59 -0
  157. package/src/common/interfaces/execution-context.interface.js +81 -0
  158. package/src/common/interfaces/execution-context.interface.js.map +1 -0
  159. package/src/common/interfaces/flow.interface.d.ts +1 -1
  160. package/src/common/interfaces/flow.interface.js.map +1 -1
  161. package/src/common/interfaces/index.d.ts +1 -0
  162. package/src/common/interfaces/index.js +1 -0
  163. package/src/common/interfaces/index.js.map +1 -1
  164. package/src/common/interfaces/internal/primary-auth-provider.interface.d.ts +17 -2
  165. package/src/common/interfaces/internal/primary-auth-provider.interface.js +52 -4
  166. package/src/common/interfaces/internal/primary-auth-provider.interface.js.map +1 -1
  167. package/src/common/interfaces/internal/registry.interface.d.ts +16 -2
  168. package/src/common/interfaces/internal/registry.interface.js.map +1 -1
  169. package/src/common/interfaces/plugin.interface.js.map +1 -1
  170. package/src/common/interfaces/prompt.interface.d.ts +53 -4
  171. package/src/common/interfaces/prompt.interface.js +78 -0
  172. package/src/common/interfaces/prompt.interface.js.map +1 -1
  173. package/src/common/interfaces/resource.interface.d.ts +47 -17
  174. package/src/common/interfaces/resource.interface.js +53 -0
  175. package/src/common/interfaces/resource.interface.js.map +1 -1
  176. package/src/common/interfaces/tool.interface.d.ts +39 -22
  177. package/src/common/interfaces/tool.interface.js +61 -34
  178. package/src/common/interfaces/tool.interface.js.map +1 -1
  179. package/src/common/metadata/adapter.metadata.d.ts +1 -9
  180. package/src/common/metadata/app.metadata.d.ts +425 -730
  181. package/src/common/metadata/auth-provider.metadata.d.ts +2 -12
  182. package/src/common/metadata/flow.metadata.d.ts +10 -25
  183. package/src/common/metadata/front-mcp.metadata.d.ts +602 -1023
  184. package/src/common/metadata/front-mcp.metadata.js +6 -4
  185. package/src/common/metadata/front-mcp.metadata.js.map +1 -1
  186. package/src/common/metadata/hook.metadata.d.ts +1 -1
  187. package/src/common/metadata/hook.metadata.js.map +1 -1
  188. package/src/common/metadata/index.d.ts +1 -0
  189. package/src/common/metadata/index.js +1 -0
  190. package/src/common/metadata/index.js.map +1 -1
  191. package/src/common/metadata/logger.metadata.d.ts +1 -9
  192. package/src/common/metadata/plugin.metadata.d.ts +8 -30
  193. package/src/common/metadata/prompt.metadata.d.ts +4 -161
  194. package/src/common/metadata/provider.metadata.d.ts +2 -12
  195. package/src/common/metadata/resource.metadata.d.ts +6 -98
  196. package/src/common/metadata/resource.metadata.js +15 -6
  197. package/src/common/metadata/resource.metadata.js.map +1 -1
  198. package/src/common/metadata/tool-ui.metadata.d.ts +10 -0
  199. package/src/common/metadata/tool-ui.metadata.js +12 -0
  200. package/src/common/metadata/tool-ui.metadata.js.map +1 -0
  201. package/src/common/metadata/tool.metadata.d.ts +110 -199
  202. package/src/common/metadata/tool.metadata.js +11 -14
  203. package/src/common/metadata/tool.metadata.js.map +1 -1
  204. package/src/common/providers/base-config.provider.d.ts +84 -0
  205. package/src/common/providers/base-config.provider.js +128 -0
  206. package/src/common/providers/base-config.provider.js.map +1 -0
  207. package/src/common/records/plugin.record.d.ts +5 -6
  208. package/src/common/records/plugin.record.js.map +1 -1
  209. package/src/common/records/prompt.record.js.map +1 -1
  210. package/src/common/records/resource.record.d.ts +17 -1
  211. package/src/common/records/resource.record.js +12 -6
  212. package/src/common/records/resource.record.js.map +1 -1
  213. package/src/common/records/tool.record.js.map +1 -1
  214. package/src/common/schemas/annotated-class.schema.d.ts +9 -9
  215. package/src/common/schemas/annotated-class.schema.js +92 -27
  216. package/src/common/schemas/annotated-class.schema.js.map +1 -1
  217. package/src/common/schemas/http-input.schema.d.ts +6 -30
  218. package/src/common/schemas/http-output.schema.d.ts +336 -1632
  219. package/src/common/schemas/http-output.schema.js +39 -1
  220. package/src/common/schemas/http-output.schema.js.map +1 -1
  221. package/src/common/tokens/front-mcp.tokens.js +4 -1
  222. package/src/common/tokens/front-mcp.tokens.js.map +1 -1
  223. package/src/common/tokens/resource.tokens.d.ts +2 -0
  224. package/src/common/tokens/resource.tokens.js +4 -1
  225. package/src/common/tokens/resource.tokens.js.map +1 -1
  226. package/src/common/tokens/tool.tokens.d.ts +2 -0
  227. package/src/common/tokens/tool.tokens.js +2 -0
  228. package/src/common/tokens/tool.tokens.js.map +1 -1
  229. package/src/common/types/auth/jwt.types.d.ts +5 -31
  230. package/src/common/types/auth/session.types.d.ts +97 -192
  231. package/src/common/types/auth/session.types.js +24 -11
  232. package/src/common/types/auth/session.types.js.map +1 -1
  233. package/src/common/types/options/auth.options.d.ts +1013 -490
  234. package/src/common/types/options/auth.options.js +554 -36
  235. package/src/common/types/options/auth.options.js.map +1 -1
  236. package/src/common/types/options/http.options.d.ts +1 -9
  237. package/src/common/types/options/logging.options.d.ts +7 -13
  238. package/src/common/types/options/logging.options.js +4 -0
  239. package/src/common/types/options/logging.options.js.map +1 -1
  240. package/src/common/types/options/server-info.options.d.ts +3 -31
  241. package/src/common/types/options/session.options.d.ts +90 -10
  242. package/src/common/types/options/session.options.js +26 -3
  243. package/src/common/types/options/session.options.js.map +1 -1
  244. package/src/common/utils/decide-request-intent.utils.d.ts +8 -46
  245. package/src/common/utils/decide-request-intent.utils.js +88 -23
  246. package/src/common/utils/decide-request-intent.utils.js.map +1 -1
  247. package/src/completion/flows/complete.flow.d.ts +89 -0
  248. package/src/completion/flows/complete.flow.js +199 -0
  249. package/src/completion/flows/complete.flow.js.map +1 -0
  250. package/src/errors/authorization-required.error.d.ts +189 -0
  251. package/src/errors/authorization-required.error.js +274 -0
  252. package/src/errors/authorization-required.error.js.map +1 -0
  253. package/src/errors/index.d.ts +2 -1
  254. package/src/errors/index.js +17 -1
  255. package/src/errors/index.js.map +1 -1
  256. package/src/errors/mcp.error.d.ts +101 -1
  257. package/src/errors/mcp.error.js +147 -2
  258. package/src/errors/mcp.error.js.map +1 -1
  259. package/src/flows/flow.instance.js +4 -3
  260. package/src/flows/flow.instance.js.map +1 -1
  261. package/src/flows/flow.registry.js.map +1 -1
  262. package/src/flows/flow.stages.js +14 -11
  263. package/src/flows/flow.stages.js.map +1 -1
  264. package/src/front-mcp/front-mcp.providers.d.ts +464 -102
  265. package/src/front-mcp/front-mcp.providers.js +3 -5
  266. package/src/front-mcp/front-mcp.providers.js.map +1 -1
  267. package/src/hooks/hook.instance.d.ts +1 -1
  268. package/src/hooks/hook.instance.js +5 -2
  269. package/src/hooks/hook.instance.js.map +1 -1
  270. package/src/hooks/hook.registry.js +7 -5
  271. package/src/hooks/hook.registry.js.map +1 -1
  272. package/src/index.d.ts +28 -9
  273. package/src/index.js +5 -1
  274. package/src/index.js.map +1 -1
  275. package/src/logger/instances/instance.logger.js +3 -2
  276. package/src/logger/instances/instance.logger.js.map +1 -1
  277. package/src/logger/logger.registry.js +7 -2
  278. package/src/logger/logger.registry.js.map +1 -1
  279. package/src/logging/flows/set-level.flow.d.ts +77 -0
  280. package/src/logging/flows/set-level.flow.js +108 -0
  281. package/src/logging/flows/set-level.flow.js.map +1 -0
  282. package/src/mcp-apps/csp.d.ts +111 -0
  283. package/src/mcp-apps/csp.js +267 -0
  284. package/src/mcp-apps/csp.js.map +1 -0
  285. package/src/mcp-apps/index.d.ts +23 -0
  286. package/src/mcp-apps/index.js +91 -0
  287. package/src/mcp-apps/index.js.map +1 -0
  288. package/src/mcp-apps/schemas.d.ts +403 -0
  289. package/src/mcp-apps/schemas.js +345 -0
  290. package/src/mcp-apps/schemas.js.map +1 -0
  291. package/src/mcp-apps/template.d.ts +94 -0
  292. package/src/mcp-apps/template.js +419 -0
  293. package/src/mcp-apps/template.js.map +1 -0
  294. package/src/mcp-apps/types.d.ts +323 -0
  295. package/src/mcp-apps/types.js +59 -0
  296. package/src/mcp-apps/types.js.map +1 -0
  297. package/src/notification/index.d.ts +1 -0
  298. package/src/notification/index.js +13 -0
  299. package/src/notification/index.js.map +1 -0
  300. package/src/notification/notification.service.d.ts +378 -0
  301. package/src/notification/notification.service.js +727 -0
  302. package/src/notification/notification.service.js.map +1 -0
  303. package/src/plugin/plugin.registry.js +12 -9
  304. package/src/plugin/plugin.registry.js.map +1 -1
  305. package/src/prompt/flows/get-prompt.flow.d.ts +248 -0
  306. package/src/prompt/flows/get-prompt.flow.js +214 -0
  307. package/src/prompt/flows/get-prompt.flow.js.map +1 -0
  308. package/src/prompt/flows/prompts-list.flow.d.ts +78 -0
  309. package/src/prompt/flows/prompts-list.flow.js +176 -0
  310. package/src/prompt/flows/prompts-list.flow.js.map +1 -0
  311. package/src/prompt/index.d.ts +7 -0
  312. package/src/prompt/index.js +17 -0
  313. package/src/prompt/index.js.map +1 -0
  314. package/src/prompt/prompt.events.d.ts +17 -0
  315. package/src/prompt/prompt.events.js +25 -0
  316. package/src/prompt/prompt.events.js.map +1 -0
  317. package/src/prompt/prompt.instance.d.ts +30 -0
  318. package/src/prompt/prompt.instance.js +120 -0
  319. package/src/prompt/prompt.instance.js.map +1 -0
  320. package/src/prompt/prompt.registry.d.ts +79 -12
  321. package/src/prompt/prompt.registry.js +360 -15
  322. package/src/prompt/prompt.registry.js.map +1 -1
  323. package/src/prompt/prompt.types.d.ts +26 -0
  324. package/src/prompt/prompt.types.js +11 -0
  325. package/src/prompt/prompt.types.js.map +1 -0
  326. package/src/prompt/prompt.utils.d.ts +26 -0
  327. package/src/prompt/prompt.utils.js +136 -0
  328. package/src/prompt/prompt.utils.js.map +1 -0
  329. package/src/provider/provider.registry.d.ts +12 -5
  330. package/src/provider/provider.registry.js +30 -138
  331. package/src/provider/provider.registry.js.map +1 -1
  332. package/src/regsitry/registry.base.d.ts +1 -1
  333. package/src/regsitry/registry.base.js.map +1 -1
  334. package/src/resource/flows/read-resource.flow.d.ts +110 -0
  335. package/src/resource/flows/read-resource.flow.js +270 -0
  336. package/src/resource/flows/read-resource.flow.js.map +1 -0
  337. package/src/resource/flows/resource-templates-list.flow.d.ts +83 -0
  338. package/src/resource/flows/resource-templates-list.flow.js +191 -0
  339. package/src/resource/flows/resource-templates-list.flow.js.map +1 -0
  340. package/src/resource/flows/resources-list.flow.d.ts +83 -0
  341. package/src/resource/flows/resources-list.flow.js +196 -0
  342. package/src/resource/flows/resources-list.flow.js.map +1 -0
  343. package/src/resource/flows/subscribe-resource.flow.d.ts +60 -0
  344. package/src/resource/flows/subscribe-resource.flow.js +123 -0
  345. package/src/resource/flows/subscribe-resource.flow.js.map +1 -0
  346. package/src/resource/flows/unsubscribe-resource.flow.d.ts +59 -0
  347. package/src/resource/flows/unsubscribe-resource.flow.js +107 -0
  348. package/src/resource/flows/unsubscribe-resource.flow.js.map +1 -0
  349. package/src/resource/index.d.ts +8 -0
  350. package/src/resource/index.js +20 -0
  351. package/src/resource/index.js.map +1 -0
  352. package/src/resource/resource.events.d.ts +24 -0
  353. package/src/resource/resource.events.js +17 -0
  354. package/src/resource/resource.events.js.map +1 -0
  355. package/src/resource/resource.instance.d.ts +35 -0
  356. package/src/resource/resource.instance.js +163 -0
  357. package/src/resource/resource.instance.js.map +1 -0
  358. package/src/resource/resource.registry.d.ts +106 -12
  359. package/src/resource/resource.registry.js +449 -13
  360. package/src/resource/resource.registry.js.map +1 -1
  361. package/src/resource/resource.types.d.ts +35 -0
  362. package/src/resource/resource.types.js +11 -0
  363. package/src/resource/resource.types.js.map +1 -0
  364. package/src/resource/resource.utils.d.ts +30 -0
  365. package/src/resource/resource.utils.js +151 -0
  366. package/src/resource/resource.utils.js.map +1 -0
  367. package/src/scope/flows/http.request.flow.d.ts +48 -330
  368. package/src/scope/flows/http.request.flow.js +306 -78
  369. package/src/scope/flows/http.request.flow.js.map +1 -1
  370. package/src/scope/scope.instance.d.ts +12 -0
  371. package/src/scope/scope.instance.js +145 -15
  372. package/src/scope/scope.instance.js.map +1 -1
  373. package/src/tool/flows/call-tool.flow.d.ts +161 -1112
  374. package/src/tool/flows/call-tool.flow.js +303 -15
  375. package/src/tool/flows/call-tool.flow.js.map +1 -1
  376. package/src/tool/flows/tools-list.flow.d.ts +51 -474
  377. package/src/tool/flows/tools-list.flow.js +121 -40
  378. package/src/tool/flows/tools-list.flow.js.map +1 -1
  379. package/src/tool/tool.events.d.ts +8 -1
  380. package/src/tool/tool.events.js.map +1 -1
  381. package/src/tool/tool.instance.d.ts +3 -1
  382. package/src/tool/tool.instance.js +17 -3
  383. package/src/tool/tool.instance.js.map +1 -1
  384. package/src/tool/tool.registry.d.ts +7 -1
  385. package/src/tool/tool.registry.js +26 -10
  386. package/src/tool/tool.registry.js.map +1 -1
  387. package/src/tool/tool.types.d.ts +4 -4
  388. package/src/tool/tool.types.js.map +1 -1
  389. package/src/tool/tool.utils.d.ts +3 -12
  390. package/src/tool/tool.utils.js +39 -193
  391. package/src/tool/tool.utils.js.map +1 -1
  392. package/src/tool/ui/index.d.ts +22 -0
  393. package/src/tool/ui/index.js +63 -0
  394. package/src/tool/ui/index.js.map +1 -0
  395. package/src/tool/ui/platform-adapters.d.ts +10 -0
  396. package/src/tool/ui/platform-adapters.js +18 -0
  397. package/src/tool/ui/platform-adapters.js.map +1 -0
  398. package/src/tool/ui/template-helpers.d.ts +46 -0
  399. package/src/tool/ui/template-helpers.js +112 -0
  400. package/src/tool/ui/template-helpers.js.map +1 -0
  401. package/src/tool/ui/ui-resource-template.d.ts +34 -0
  402. package/src/tool/ui/ui-resource-template.js +64 -0
  403. package/src/tool/ui/ui-resource-template.js.map +1 -0
  404. package/src/tool/ui/ui-resource.handler.d.ts +74 -0
  405. package/src/tool/ui/ui-resource.handler.js +129 -0
  406. package/src/tool/ui/ui-resource.handler.js.map +1 -0
  407. package/src/transport/adapters/transport.local.adapter.d.ts +2 -2
  408. package/src/transport/adapters/transport.local.adapter.js +28 -7
  409. package/src/transport/adapters/transport.local.adapter.js.map +1 -1
  410. package/src/transport/adapters/transport.sse.adapter.d.ts +2 -2
  411. package/src/transport/adapters/transport.sse.adapter.js +4 -3
  412. package/src/transport/adapters/transport.sse.adapter.js.map +1 -1
  413. package/src/transport/adapters/transport.streamable-http.adapter.d.ts +10 -3
  414. package/src/transport/adapters/transport.streamable-http.adapter.js +54 -8
  415. package/src/transport/adapters/transport.streamable-http.adapter.js.map +1 -1
  416. package/src/transport/flows/handle.sse.flow.d.ts +29 -63
  417. package/src/transport/flows/handle.sse.flow.js +78 -10
  418. package/src/transport/flows/handle.sse.flow.js.map +1 -1
  419. package/src/transport/flows/handle.stateless-http.flow.d.ts +29 -0
  420. package/src/transport/flows/handle.stateless-http.flow.js +102 -0
  421. package/src/transport/flows/handle.stateless-http.flow.js.map +1 -0
  422. package/src/transport/flows/handle.streamable-http.flow.d.ts +32 -64
  423. package/src/transport/flows/handle.streamable-http.flow.js +158 -26
  424. package/src/transport/flows/handle.streamable-http.flow.js.map +1 -1
  425. package/src/transport/legacy/legacy.sse.tranporter.d.ts +9 -0
  426. package/src/transport/legacy/legacy.sse.tranporter.js +17 -2
  427. package/src/transport/legacy/legacy.sse.tranporter.js.map +1 -1
  428. package/src/transport/mcp-handlers/call-tool-request.handler.js +27 -1
  429. package/src/transport/mcp-handlers/call-tool-request.handler.js.map +1 -1
  430. package/src/transport/mcp-handlers/complete-request.handler.d.ts +95 -0
  431. package/src/transport/mcp-handlers/complete-request.handler.js +11 -0
  432. package/src/transport/mcp-handlers/complete-request.handler.js.map +1 -0
  433. package/src/transport/mcp-handlers/get-prompt-request.handler.d.ts +138 -0
  434. package/src/transport/mcp-handlers/get-prompt-request.handler.js +11 -0
  435. package/src/transport/mcp-handlers/get-prompt-request.handler.js.map +1 -0
  436. package/src/transport/mcp-handlers/index.d.ts +922 -207
  437. package/src/transport/mcp-handlers/index.js +39 -2
  438. package/src/transport/mcp-handlers/index.js.map +1 -1
  439. package/src/transport/mcp-handlers/initialize-request.handler.d.ts +1 -1
  440. package/src/transport/mcp-handlers/initialize-request.handler.js +73 -7
  441. package/src/transport/mcp-handlers/initialize-request.handler.js.map +1 -1
  442. package/src/transport/mcp-handlers/list-prompts-request.handler.d.ts +80 -0
  443. package/src/transport/mcp-handlers/list-prompts-request.handler.js +11 -0
  444. package/src/transport/mcp-handlers/list-prompts-request.handler.js.map +1 -0
  445. package/src/transport/mcp-handlers/list-resource-templates-request.handler.d.ts +82 -0
  446. package/src/transport/mcp-handlers/list-resource-templates-request.handler.js +12 -0
  447. package/src/transport/mcp-handlers/list-resource-templates-request.handler.js.map +1 -0
  448. package/src/transport/mcp-handlers/list-resources-request.handler.d.ts +82 -0
  449. package/src/transport/mcp-handlers/list-resources-request.handler.js +12 -0
  450. package/src/transport/mcp-handlers/list-resources-request.handler.js.map +1 -0
  451. package/src/transport/mcp-handlers/list-tools-request.handler.d.ts +47 -145
  452. package/src/transport/mcp-handlers/logging-set-level-request.handler.d.ts +66 -0
  453. package/src/transport/mcp-handlers/logging-set-level-request.handler.js +34 -0
  454. package/src/transport/mcp-handlers/logging-set-level-request.handler.js.map +1 -0
  455. package/src/transport/mcp-handlers/mcp-handlers.types.d.ts +3 -7
  456. package/src/transport/mcp-handlers/mcp-handlers.types.js.map +1 -1
  457. package/src/transport/mcp-handlers/read-resource-request.handler.d.ts +72 -0
  458. package/src/transport/mcp-handlers/read-resource-request.handler.js +12 -0
  459. package/src/transport/mcp-handlers/read-resource-request.handler.js.map +1 -0
  460. package/src/transport/mcp-handlers/roots-list-changed-notification.handler.d.ts +11 -0
  461. package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js +26 -0
  462. package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js.map +1 -0
  463. package/src/transport/mcp-handlers/subscribe-request.handler.d.ts +57 -0
  464. package/src/transport/mcp-handlers/subscribe-request.handler.js +34 -0
  465. package/src/transport/mcp-handlers/subscribe-request.handler.js.map +1 -0
  466. package/src/transport/mcp-handlers/unsubscribe-request.handler.d.ts +57 -0
  467. package/src/transport/mcp-handlers/unsubscribe-request.handler.js +34 -0
  468. package/src/transport/mcp-handlers/unsubscribe-request.handler.js.map +1 -0
  469. package/src/transport/transport.local.js +7 -2
  470. package/src/transport/transport.local.js.map +1 -1
  471. package/src/transport/transport.registry.d.ts +30 -0
  472. package/src/transport/transport.registry.js +84 -1
  473. package/src/transport/transport.registry.js.map +1 -1
  474. package/src/transport/transport.types.d.ts +3 -3
  475. package/src/transport/transport.types.js.map +1 -1
  476. package/src/utils/content.utils.d.ts +48 -0
  477. package/src/utils/content.utils.js +194 -0
  478. package/src/utils/content.utils.js.map +1 -0
  479. package/src/utils/index.d.ts +8 -0
  480. package/src/utils/index.js +55 -0
  481. package/src/utils/index.js.map +1 -0
  482. package/src/utils/lineage.utils.d.ts +40 -0
  483. package/src/utils/lineage.utils.js +82 -0
  484. package/src/utils/lineage.utils.js.map +1 -0
  485. package/src/utils/naming.utils.d.ts +46 -0
  486. package/src/utils/naming.utils.js +136 -0
  487. package/src/utils/naming.utils.js.map +1 -0
  488. package/src/utils/types.utils.d.ts +2 -2
  489. package/src/utils/types.utils.js.map +1 -1
  490. package/src/utils/uri-template.utils.d.ts +57 -0
  491. package/src/utils/uri-template.utils.js +113 -0
  492. package/src/utils/uri-template.utils.js.map +1 -0
  493. package/src/utils/uri-validation.utils.d.ts +40 -0
  494. package/src/utils/uri-validation.utils.js +76 -0
  495. package/src/utils/uri-validation.utils.js.map +1 -0
  496. package/src/__test-utils__/fixtures/hook.fixtures.d.ts +0 -46
  497. package/src/__test-utils__/fixtures/hook.fixtures.js +0 -114
  498. package/src/__test-utils__/fixtures/hook.fixtures.js.map +0 -1
  499. package/src/__test-utils__/fixtures/index.d.ts +0 -7
  500. package/src/__test-utils__/fixtures/index.js +0 -11
  501. package/src/__test-utils__/fixtures/index.js.map +0 -1
  502. package/src/__test-utils__/fixtures/plugin.fixtures.d.ts +0 -46
  503. package/src/__test-utils__/fixtures/plugin.fixtures.js +0 -127
  504. package/src/__test-utils__/fixtures/plugin.fixtures.js.map +0 -1
  505. package/src/__test-utils__/fixtures/provider.fixtures.d.ts +0 -69
  506. package/src/__test-utils__/fixtures/provider.fixtures.js +0 -131
  507. package/src/__test-utils__/fixtures/provider.fixtures.js.map +0 -1
  508. package/src/__test-utils__/fixtures/scope.fixtures.d.ts +0 -14
  509. package/src/__test-utils__/fixtures/scope.fixtures.js +0 -59
  510. package/src/__test-utils__/fixtures/scope.fixtures.js.map +0 -1
  511. package/src/__test-utils__/fixtures/tool.fixtures.d.ts +0 -36
  512. package/src/__test-utils__/fixtures/tool.fixtures.js +0 -91
  513. package/src/__test-utils__/fixtures/tool.fixtures.js.map +0 -1
  514. package/src/__test-utils__/helpers/assertion.helpers.d.ts +0 -45
  515. package/src/__test-utils__/helpers/assertion.helpers.js +0 -153
  516. package/src/__test-utils__/helpers/assertion.helpers.js.map +0 -1
  517. package/src/__test-utils__/helpers/async.helpers.d.ts +0 -48
  518. package/src/__test-utils__/helpers/async.helpers.js +0 -112
  519. package/src/__test-utils__/helpers/async.helpers.js.map +0 -1
  520. package/src/__test-utils__/helpers/index.d.ts +0 -6
  521. package/src/__test-utils__/helpers/index.js +0 -10
  522. package/src/__test-utils__/helpers/index.js.map +0 -1
  523. package/src/__test-utils__/helpers/setup.helpers.d.ts +0 -54
  524. package/src/__test-utils__/helpers/setup.helpers.js +0 -106
  525. package/src/__test-utils__/helpers/setup.helpers.js.map +0 -1
  526. package/src/__test-utils__/index.d.ts +0 -9
  527. package/src/__test-utils__/index.js +0 -14
  528. package/src/__test-utils__/index.js.map +0 -1
  529. package/src/__test-utils__/mocks/flow-instance.mock.d.ts +0 -50
  530. package/src/__test-utils__/mocks/flow-instance.mock.js +0 -72
  531. package/src/__test-utils__/mocks/flow-instance.mock.js.map +0 -1
  532. package/src/__test-utils__/mocks/hook-registry.mock.d.ts +0 -25
  533. package/src/__test-utils__/mocks/hook-registry.mock.js +0 -65
  534. package/src/__test-utils__/mocks/hook-registry.mock.js.map +0 -1
  535. package/src/__test-utils__/mocks/index.d.ts +0 -8
  536. package/src/__test-utils__/mocks/index.js +0 -12
  537. package/src/__test-utils__/mocks/index.js.map +0 -1
  538. package/src/__test-utils__/mocks/plugin-registry.mock.d.ts +0 -43
  539. package/src/__test-utils__/mocks/plugin-registry.mock.js +0 -70
  540. package/src/__test-utils__/mocks/plugin-registry.mock.js.map +0 -1
  541. package/src/__test-utils__/mocks/provider-registry.mock.d.ts +0 -39
  542. package/src/__test-utils__/mocks/provider-registry.mock.js +0 -72
  543. package/src/__test-utils__/mocks/provider-registry.mock.js.map +0 -1
  544. package/src/__test-utils__/mocks/tool-registry.mock.d.ts +0 -43
  545. package/src/__test-utils__/mocks/tool-registry.mock.js +0 -79
  546. package/src/__test-utils__/mocks/tool-registry.mock.js.map +0 -1
  547. package/src/auth/path.utils.d.ts +0 -20
  548. package/src/auth/path.utils.js +0 -71
  549. package/src/auth/path.utils.js.map +0 -1
  550. package/src/common/decorators-old/async-with.decorator.d.ts +0 -10
  551. package/src/common/decorators-old/async-with.decorator.js +0 -24
  552. package/src/common/decorators-old/async-with.decorator.js.map +0 -1
  553. package/src/common/decorators-old/auth-hook.decorator.d.ts +0 -14
  554. package/src/common/decorators-old/auth-hook.decorator.js +0 -27
  555. package/src/common/decorators-old/auth-hook.decorator.js.map +0 -1
  556. package/src/common/decorators-old/session-hook.decorator.d.ts +0 -14
  557. package/src/common/decorators-old/session-hook.decorator.js +0 -27
  558. package/src/common/decorators-old/session-hook.decorator.js.map +0 -1
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ // file: libs/sdk/src/prompt/flows/get-prompt.flow.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("../../common");
6
+ const zod_1 = require("zod");
7
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
8
+ const errors_1 = require("../../errors");
9
+ const inputSchema = zod_1.z.object({
10
+ request: types_js_1.GetPromptRequestSchema,
11
+ // z.any() used because ctx is the MCP SDK's PromptGetExtra type which varies by SDK version
12
+ ctx: zod_1.z.any(),
13
+ });
14
+ const outputSchema = types_js_1.GetPromptResultSchema;
15
+ const stateSchema = zod_1.z.object({
16
+ input: zod_1.z.object({
17
+ name: zod_1.z.string().min(1),
18
+ arguments: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
19
+ }),
20
+ // Prompt owner ID for hook filtering during execution
21
+ promptOwnerId: zod_1.z.string().optional(),
22
+ // z.any() used because AuthInfo is a complex external type from @modelcontextprotocol/sdk
23
+ authInfo: zod_1.z.any().optional(),
24
+ // z.any() used because PromptEntry is a complex abstract class type
25
+ prompt: zod_1.z.any(),
26
+ // Cached parsed arguments to avoid parsing twice (once in createPromptContext, once in execute)
27
+ parsedArgs: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
28
+ // z.any() used because PromptContext is a complex abstract class type
29
+ promptContext: zod_1.z.any(),
30
+ // z.any() used because prompt output type varies by prompt implementation
31
+ rawOutput: zod_1.z.any().optional(),
32
+ output: outputSchema,
33
+ });
34
+ const plan = {
35
+ pre: ['parseInput', 'findPrompt', 'createPromptContext'],
36
+ execute: ['execute', 'validateOutput'],
37
+ finalize: ['finalize'],
38
+ };
39
+ const name = 'prompts:get-prompt';
40
+ const { Stage } = (0, common_1.FlowHooksOf)(name);
41
+ let GetPromptFlow = class GetPromptFlow extends common_1.FlowBase {
42
+ logger = this.scopeLogger.child('GetPromptFlow');
43
+ async parseInput() {
44
+ this.logger.verbose('parseInput:start');
45
+ let method;
46
+ let params;
47
+ let ctx;
48
+ try {
49
+ const inputData = inputSchema.parse(this.rawInput);
50
+ method = inputData.request.method;
51
+ params = inputData.request.params;
52
+ ctx = inputData.ctx;
53
+ }
54
+ catch (e) {
55
+ throw new errors_1.InvalidInputError('Invalid Input', e instanceof zod_1.z.ZodError ? e.issues : undefined);
56
+ }
57
+ if (method !== 'prompts/get') {
58
+ this.logger.warn(`parseInput: invalid method "${method}"`);
59
+ throw new errors_1.InvalidMethodError(method, 'prompts/get');
60
+ }
61
+ this.state.set({
62
+ input: {
63
+ name: params.name,
64
+ arguments: params.arguments,
65
+ },
66
+ authInfo: ctx.authInfo,
67
+ });
68
+ this.logger.verbose('parseInput:done');
69
+ }
70
+ async findPrompt() {
71
+ this.logger.verbose('findPrompt:start');
72
+ const { name } = this.state.required.input;
73
+ this.logger.info(`findPrompt: looking for prompt with name "${name}"`);
74
+ // Try to find a prompt that matches this name
75
+ const prompt = this.scope.prompts.findByName(name);
76
+ if (!prompt) {
77
+ this.logger.warn(`findPrompt: prompt "${name}" not found`);
78
+ throw new errors_1.PromptNotFoundError(name);
79
+ }
80
+ // Store prompt owner ID in state for hook filtering during execution
81
+ this.state.set('promptOwnerId', prompt.owner?.id);
82
+ this.logger = this.logger.child(`GetPromptFlow(${name})`);
83
+ this.state.set('prompt', prompt);
84
+ this.logger.info(`findPrompt: prompt "${prompt.name}" found`);
85
+ this.logger.verbose('findPrompt:done');
86
+ }
87
+ async createPromptContext() {
88
+ this.logger.verbose('createPromptContext:start');
89
+ const { ctx } = this.input;
90
+ const { prompt, input } = this.state.required;
91
+ try {
92
+ // Parse and validate arguments, cache for reuse in execute stage
93
+ const parsedArgs = prompt.parseArguments(input.arguments);
94
+ this.state.set('parsedArgs', parsedArgs);
95
+ const context = prompt.create(parsedArgs, ctx);
96
+ const promptHooks = this.scope.hooks.getClsHooks(prompt.record.provide).map((hook) => {
97
+ hook.run = async () => {
98
+ return context[hook.metadata.method]();
99
+ };
100
+ return hook;
101
+ });
102
+ this.appendContextHooks(promptHooks);
103
+ context.mark('createPromptContext');
104
+ this.state.set('promptContext', context);
105
+ this.logger.verbose('createPromptContext:done');
106
+ }
107
+ catch (error) {
108
+ this.logger.error('createPromptContext: failed to create context', error);
109
+ throw new errors_1.PromptExecutionError(input.name, error instanceof Error ? error : undefined);
110
+ }
111
+ }
112
+ async execute() {
113
+ this.logger.verbose('execute:start');
114
+ const promptContext = this.state.promptContext;
115
+ const { input, parsedArgs } = this.state.required;
116
+ if (!promptContext) {
117
+ this.logger.warn('execute: promptContext not found, skipping execution');
118
+ return;
119
+ }
120
+ promptContext.mark('execute');
121
+ try {
122
+ // Use cached parsed arguments from createPromptContext stage
123
+ promptContext.output = await promptContext.execute(parsedArgs);
124
+ this.logger.verbose('execute:done');
125
+ }
126
+ catch (error) {
127
+ this.logger.error('execute: prompt execution failed', error);
128
+ throw new errors_1.PromptExecutionError(input.name, error instanceof Error ? error : undefined);
129
+ }
130
+ }
131
+ async validateOutput() {
132
+ this.logger.verbose('validateOutput:start');
133
+ const { promptContext } = this.state;
134
+ if (!promptContext) {
135
+ this.logger.warn('validateOutput: promptContext not found, skipping validation');
136
+ return;
137
+ }
138
+ promptContext.mark('validateOutput');
139
+ // Store the RAW output for plugins to inspect
140
+ this.state.set('rawOutput', promptContext.output);
141
+ this.logger.verbose('validateOutput:done');
142
+ }
143
+ async finalize() {
144
+ this.logger.verbose('finalize:start');
145
+ const { prompt, rawOutput, input } = this.state;
146
+ if (!prompt) {
147
+ this.logger.error('finalize: prompt not found in state');
148
+ throw new errors_1.PromptExecutionError('unknown', new Error('Prompt not found in state'));
149
+ }
150
+ if (rawOutput === undefined) {
151
+ this.logger.error('finalize: prompt output not found in state');
152
+ throw new errors_1.PromptExecutionError(input?.name || 'unknown', new Error('Prompt output not found'));
153
+ }
154
+ // Parse and construct the MCP-compliant output using safeParseOutput
155
+ const parseResult = prompt.safeParseOutput(rawOutput);
156
+ if (!parseResult.success) {
157
+ this.logger.error('finalize: output validation failed', {
158
+ prompt: prompt.metadata.name,
159
+ errors: parseResult.error,
160
+ });
161
+ throw new errors_1.InvalidOutputError();
162
+ }
163
+ // Respond with the properly formatted MCP result
164
+ this.respond(parseResult.data);
165
+ this.logger.verbose('finalize:done');
166
+ }
167
+ };
168
+ tslib_1.__decorate([
169
+ Stage('parseInput'),
170
+ tslib_1.__metadata("design:type", Function),
171
+ tslib_1.__metadata("design:paramtypes", []),
172
+ tslib_1.__metadata("design:returntype", Promise)
173
+ ], GetPromptFlow.prototype, "parseInput", null);
174
+ tslib_1.__decorate([
175
+ Stage('findPrompt'),
176
+ tslib_1.__metadata("design:type", Function),
177
+ tslib_1.__metadata("design:paramtypes", []),
178
+ tslib_1.__metadata("design:returntype", Promise)
179
+ ], GetPromptFlow.prototype, "findPrompt", null);
180
+ tslib_1.__decorate([
181
+ Stage('createPromptContext'),
182
+ tslib_1.__metadata("design:type", Function),
183
+ tslib_1.__metadata("design:paramtypes", []),
184
+ tslib_1.__metadata("design:returntype", Promise)
185
+ ], GetPromptFlow.prototype, "createPromptContext", null);
186
+ tslib_1.__decorate([
187
+ Stage('execute'),
188
+ tslib_1.__metadata("design:type", Function),
189
+ tslib_1.__metadata("design:paramtypes", []),
190
+ tslib_1.__metadata("design:returntype", Promise)
191
+ ], GetPromptFlow.prototype, "execute", null);
192
+ tslib_1.__decorate([
193
+ Stage('validateOutput'),
194
+ tslib_1.__metadata("design:type", Function),
195
+ tslib_1.__metadata("design:paramtypes", []),
196
+ tslib_1.__metadata("design:returntype", Promise)
197
+ ], GetPromptFlow.prototype, "validateOutput", null);
198
+ tslib_1.__decorate([
199
+ Stage('finalize'),
200
+ tslib_1.__metadata("design:type", Function),
201
+ tslib_1.__metadata("design:paramtypes", []),
202
+ tslib_1.__metadata("design:returntype", Promise)
203
+ ], GetPromptFlow.prototype, "finalize", null);
204
+ GetPromptFlow = tslib_1.__decorate([
205
+ (0, common_1.Flow)({
206
+ name,
207
+ plan,
208
+ inputSchema,
209
+ outputSchema,
210
+ access: 'authorized',
211
+ })
212
+ ], GetPromptFlow);
213
+ exports.default = GetPromptFlow;
214
+ //# sourceMappingURL=get-prompt.flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-prompt.flow.js","sourceRoot":"","sources":["../../../../src/prompt/flows/get-prompt.flow.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAErD,yCAAiH;AACjH,6BAAwB;AACxB,iEAAmG;AAEnG,yCAMsB;AAEtB,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,iCAAsB;IAC/B,4FAA4F;IAC5F,GAAG,EAAE,OAAC,CAAC,GAAG,EAAE;CACb,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,gCAAqB,CAAC;AAE3C,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,SAAS,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACvD,CAAC;IACF,sDAAsD;IACtD,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,0FAA0F;IAC1F,QAAQ,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAyB;IACnD,oEAAoE;IACpE,MAAM,EAAE,OAAC,CAAC,GAAG,EAA4B;IACzC,gGAAgG;IAChG,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvD,sEAAsE;IACtE,aAAa,EAAE,OAAC,CAAC,GAAG,EAA8B;IAClD,0EAA0E;IAC1E,SAAS,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,YAAY;CACrB,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG;IACX,GAAG,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,qBAAqB,CAAC;IACxD,OAAO,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACtC,QAAQ,EAAE,CAAC,UAAU,CAAC;CACa,CAAC;AActC,MAAM,IAAI,GAAG,oBAA6B,CAAC;AAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,oBAAW,EAAuB,IAAI,CAAC,CAAC;AAS3C,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,iBAAqB;IAC9D,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAG3C,AAAN,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAExC,IAAI,MAAe,CAAC;QACpB,IAAI,MAAW,CAAC;QAChB,IAAI,GAAQ,CAAC;QACb,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;YAClC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;YAClC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QACtB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,0BAAiB,CAAC,eAAe,EAAE,CAAC,YAAY,OAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,MAAM,GAAG,CAAC,CAAC;YAC3D,MAAM,IAAI,2BAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B;YACD,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAExC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,IAAI,GAAG,CAAC,CAAC;QAEvE,8CAA8C;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,aAAa,CAAC,CAAC;YAC3D,MAAM,IAAI,4BAAmB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,qEAAqE;QACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC;IAGK,AAAN,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACjD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAE9C,IAAI,CAAC;YACH,iEAAiE;YACjE,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAEzC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnF,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,EAAE;oBACpB,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzC,CAAC,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;YAC1E,MAAM,IAAI,6BAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAElD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9B,IAAI,CAAC;YACH,6DAA6D;YAC7D,aAAa,CAAC,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,IAAI,6BAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAC5C,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAErC,8CAA8C;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7C,CAAC;IAGK,AAAN,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACtC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,MAAM,IAAI,6BAAoB,CAAC,SAAS,EAAE,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,MAAM,IAAI,6BAAoB,CAAC,KAAK,EAAE,IAAI,IAAI,SAAS,EAAE,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACjG,CAAC;QAED,qEAAqE;QACrE,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE;gBACtD,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;gBAC5B,MAAM,EAAE,WAAW,CAAC,KAAK;aAC1B,CAAC,CAAC;YAEH,MAAM,IAAI,2BAAkB,EAAE,CAAC;QACjC,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC;CACF,CAAA;AAxJO;IADL,KAAK,CAAC,YAAY,CAAC;;;;+CA6BnB;AAGK;IADL,KAAK,CAAC,YAAY,CAAC;;;;+CAsBnB;AAGK;IADL,KAAK,CAAC,qBAAqB,CAAC;;;;wDA2B5B;AAGK;IADL,KAAK,CAAC,SAAS,CAAC;;;;4CAoBhB;AAGK;IADL,KAAK,CAAC,gBAAgB,CAAC;;;;mDAcvB;AAGK;IADL,KAAK,CAAC,UAAU,CAAC;;;;6CA8BjB;AA3JkB,aAAa;IAPjC,IAAA,aAAI,EAAC;QACJ,IAAI;QACJ,IAAI;QACJ,WAAW;QACX,YAAY;QACZ,MAAM,EAAE,YAAY;KACrB,CAAC;GACmB,aAAa,CA4JjC;kBA5JoB,aAAa","sourcesContent":["// file: libs/sdk/src/prompt/flows/get-prompt.flow.ts\n\nimport { Flow, FlowBase, FlowHooksOf, FlowPlan, FlowRunOptions, PromptContext, PromptEntry } from '../../common';\nimport { z } from 'zod';\nimport { GetPromptRequestSchema, GetPromptResultSchema } from '@modelcontextprotocol/sdk/types.js';\nimport { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';\nimport {\n InvalidMethodError,\n PromptNotFoundError,\n InvalidInputError,\n InvalidOutputError,\n PromptExecutionError,\n} from '../../errors';\n\nconst inputSchema = z.object({\n request: GetPromptRequestSchema,\n // z.any() used because ctx is the MCP SDK's PromptGetExtra type which varies by SDK version\n ctx: z.any(),\n});\n\nconst outputSchema = GetPromptResultSchema;\n\nconst stateSchema = z.object({\n input: z.object({\n name: z.string().min(1),\n arguments: z.record(z.string(), z.string()).optional(),\n }),\n // Prompt owner ID for hook filtering during execution\n promptOwnerId: z.string().optional(),\n // z.any() used because AuthInfo is a complex external type from @modelcontextprotocol/sdk\n authInfo: z.any().optional() as z.ZodType<AuthInfo>,\n // z.any() used because PromptEntry is a complex abstract class type\n prompt: z.any() as z.ZodType<PromptEntry>,\n // Cached parsed arguments to avoid parsing twice (once in createPromptContext, once in execute)\n parsedArgs: z.record(z.string(), z.string()).optional(),\n // z.any() used because PromptContext is a complex abstract class type\n promptContext: z.any() as z.ZodType<PromptContext>,\n // z.any() used because prompt output type varies by prompt implementation\n rawOutput: z.any().optional(),\n output: outputSchema,\n});\n\nconst plan = {\n pre: ['parseInput', 'findPrompt', 'createPromptContext'],\n execute: ['execute', 'validateOutput'],\n finalize: ['finalize'],\n} as const satisfies FlowPlan<string>;\n\ndeclare global {\n interface ExtendFlows {\n 'prompts:get-prompt': FlowRunOptions<\n GetPromptFlow,\n typeof plan,\n typeof inputSchema,\n typeof outputSchema,\n typeof stateSchema\n >;\n }\n}\n\nconst name = 'prompts:get-prompt' as const;\nconst { Stage } = FlowHooksOf<'prompts:get-prompt'>(name);\n\n@Flow({\n name,\n plan,\n inputSchema,\n outputSchema,\n access: 'authorized',\n})\nexport default class GetPromptFlow extends FlowBase<typeof name> {\n logger = this.scopeLogger.child('GetPromptFlow');\n\n @Stage('parseInput')\n async parseInput() {\n this.logger.verbose('parseInput:start');\n\n let method!: string;\n let params: any;\n let ctx: any;\n try {\n const inputData = inputSchema.parse(this.rawInput);\n method = inputData.request.method;\n params = inputData.request.params;\n ctx = inputData.ctx;\n } catch (e) {\n throw new InvalidInputError('Invalid Input', e instanceof z.ZodError ? e.issues : undefined);\n }\n\n if (method !== 'prompts/get') {\n this.logger.warn(`parseInput: invalid method \"${method}\"`);\n throw new InvalidMethodError(method, 'prompts/get');\n }\n\n this.state.set({\n input: {\n name: params.name,\n arguments: params.arguments,\n },\n authInfo: ctx.authInfo,\n });\n this.logger.verbose('parseInput:done');\n }\n\n @Stage('findPrompt')\n async findPrompt() {\n this.logger.verbose('findPrompt:start');\n\n const { name } = this.state.required.input;\n this.logger.info(`findPrompt: looking for prompt with name \"${name}\"`);\n\n // Try to find a prompt that matches this name\n const prompt = this.scope.prompts.findByName(name);\n\n if (!prompt) {\n this.logger.warn(`findPrompt: prompt \"${name}\" not found`);\n throw new PromptNotFoundError(name);\n }\n\n // Store prompt owner ID in state for hook filtering during execution\n this.state.set('promptOwnerId', prompt.owner?.id);\n\n this.logger = this.logger.child(`GetPromptFlow(${name})`);\n this.state.set('prompt', prompt);\n this.logger.info(`findPrompt: prompt \"${prompt.name}\" found`);\n this.logger.verbose('findPrompt:done');\n }\n\n @Stage('createPromptContext')\n async createPromptContext() {\n this.logger.verbose('createPromptContext:start');\n const { ctx } = this.input;\n const { prompt, input } = this.state.required;\n\n try {\n // Parse and validate arguments, cache for reuse in execute stage\n const parsedArgs = prompt.parseArguments(input.arguments);\n this.state.set('parsedArgs', parsedArgs);\n\n const context = prompt.create(parsedArgs, ctx);\n const promptHooks = this.scope.hooks.getClsHooks(prompt.record.provide).map((hook) => {\n hook.run = async () => {\n return context[hook.metadata.method]();\n };\n return hook;\n });\n\n this.appendContextHooks(promptHooks);\n context.mark('createPromptContext');\n this.state.set('promptContext', context);\n this.logger.verbose('createPromptContext:done');\n } catch (error) {\n this.logger.error('createPromptContext: failed to create context', error);\n throw new PromptExecutionError(input.name, error instanceof Error ? error : undefined);\n }\n }\n\n @Stage('execute')\n async execute() {\n this.logger.verbose('execute:start');\n const promptContext = this.state.promptContext;\n const { input, parsedArgs } = this.state.required;\n\n if (!promptContext) {\n this.logger.warn('execute: promptContext not found, skipping execution');\n return;\n }\n promptContext.mark('execute');\n\n try {\n // Use cached parsed arguments from createPromptContext stage\n promptContext.output = await promptContext.execute(parsedArgs);\n this.logger.verbose('execute:done');\n } catch (error) {\n this.logger.error('execute: prompt execution failed', error);\n throw new PromptExecutionError(input.name, error instanceof Error ? error : undefined);\n }\n }\n\n @Stage('validateOutput')\n async validateOutput() {\n this.logger.verbose('validateOutput:start');\n const { promptContext } = this.state;\n if (!promptContext) {\n this.logger.warn('validateOutput: promptContext not found, skipping validation');\n return;\n }\n promptContext.mark('validateOutput');\n\n // Store the RAW output for plugins to inspect\n this.state.set('rawOutput', promptContext.output);\n\n this.logger.verbose('validateOutput:done');\n }\n\n @Stage('finalize')\n async finalize() {\n this.logger.verbose('finalize:start');\n const { prompt, rawOutput, input } = this.state;\n\n if (!prompt) {\n this.logger.error('finalize: prompt not found in state');\n throw new PromptExecutionError('unknown', new Error('Prompt not found in state'));\n }\n\n if (rawOutput === undefined) {\n this.logger.error('finalize: prompt output not found in state');\n throw new PromptExecutionError(input?.name || 'unknown', new Error('Prompt output not found'));\n }\n\n // Parse and construct the MCP-compliant output using safeParseOutput\n const parseResult = prompt.safeParseOutput(rawOutput);\n\n if (!parseResult.success) {\n this.logger.error('finalize: output validation failed', {\n prompt: prompt.metadata.name,\n errors: parseResult.error,\n });\n\n throw new InvalidOutputError();\n }\n\n // Respond with the properly formatted MCP result\n this.respond(parseResult.data);\n this.logger.verbose('finalize:done');\n }\n}\n"]}
@@ -0,0 +1,78 @@
1
+ import { FlowBase, FlowRunOptions } from '../../common';
2
+ import 'reflect-metadata';
3
+ import { z } from 'zod';
4
+ declare const inputSchema: z.ZodObject<{
5
+ request: z.ZodObject<{
6
+ params: z.ZodOptional<z.ZodObject<{
7
+ task: z.ZodOptional<z.ZodObject<{
8
+ ttl: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodNull]>>;
9
+ pollInterval: z.ZodOptional<z.ZodNumber>;
10
+ }, z.core.$loose>>;
11
+ _meta: z.ZodOptional<z.ZodObject<{
12
+ progressToken: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
13
+ "io.modelcontextprotocol/related-task": z.ZodOptional<z.ZodObject<{
14
+ taskId: z.ZodString;
15
+ }, z.core.$loose>>;
16
+ }, z.core.$loose>>;
17
+ cursor: z.ZodOptional<z.ZodString>;
18
+ }, z.core.$loose>>;
19
+ method: z.ZodLiteral<"prompts/list">;
20
+ }, z.core.$strip>;
21
+ ctx: z.ZodUnknown;
22
+ }, z.core.$strip>;
23
+ declare const outputSchema: z.ZodObject<{
24
+ _meta: z.ZodOptional<z.ZodObject<{
25
+ "io.modelcontextprotocol/related-task": z.ZodOptional<z.ZodObject<{
26
+ taskId: z.ZodString;
27
+ }, z.core.$loose>>;
28
+ }, z.core.$loose>>;
29
+ nextCursor: z.ZodOptional<z.ZodString>;
30
+ prompts: z.ZodArray<z.ZodObject<{
31
+ description: z.ZodOptional<z.ZodString>;
32
+ arguments: z.ZodOptional<z.ZodArray<z.ZodObject<{
33
+ name: z.ZodString;
34
+ description: z.ZodOptional<z.ZodString>;
35
+ required: z.ZodOptional<z.ZodBoolean>;
36
+ }, z.core.$strip>>>;
37
+ _meta: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
38
+ icons: z.ZodOptional<z.ZodArray<z.ZodObject<{
39
+ src: z.ZodString;
40
+ mimeType: z.ZodOptional<z.ZodString>;
41
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
42
+ }, z.core.$strip>>>;
43
+ name: z.ZodString;
44
+ title: z.ZodOptional<z.ZodString>;
45
+ }, z.core.$strip>>;
46
+ }, z.core.$loose>;
47
+ declare const stateSchema: z.ZodObject<{
48
+ cursor: z.ZodOptional<z.ZodString>;
49
+ prompts: z.ZodArray<z.ZodObject<{
50
+ ownerName: z.ZodString;
51
+ prompt: z.ZodAny;
52
+ }, z.core.$strip>>;
53
+ resolvedPrompts: z.ZodArray<z.ZodObject<{
54
+ ownerName: z.ZodString;
55
+ prompt: z.ZodAny;
56
+ finalName: z.ZodString;
57
+ }, z.core.$strip>>;
58
+ }, z.core.$strip>;
59
+ declare const plan: {
60
+ readonly pre: ["parseInput"];
61
+ readonly execute: ["findPrompts", "resolveConflicts"];
62
+ readonly post: ["parsePrompts"];
63
+ };
64
+ declare global {
65
+ interface ExtendFlows {
66
+ 'prompts:list-prompts': FlowRunOptions<PromptsListFlow, typeof plan, typeof inputSchema, typeof outputSchema, typeof stateSchema>;
67
+ }
68
+ }
69
+ declare const name: "prompts:list-prompts";
70
+ export default class PromptsListFlow extends FlowBase<typeof name> {
71
+ logger: import("../../common").FrontMcpLogger;
72
+ private sample;
73
+ parseInput(): Promise<void>;
74
+ findPrompts(): Promise<void>;
75
+ resolveConflicts(): Promise<void>;
76
+ parsePrompts(): Promise<void>;
77
+ }
78
+ export {};
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ // file: libs/sdk/src/prompt/flows/prompts-list.flow.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("../../common");
6
+ require("reflect-metadata");
7
+ const zod_1 = require("zod");
8
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
9
+ const errors_1 = require("../../errors");
10
+ const inputSchema = zod_1.z.object({
11
+ request: types_js_1.ListPromptsRequestSchema,
12
+ ctx: zod_1.z.unknown(),
13
+ });
14
+ const outputSchema = types_js_1.ListPromptsResultSchema;
15
+ const stateSchema = zod_1.z.object({
16
+ cursor: zod_1.z.string().optional(),
17
+ prompts: zod_1.z.array(zod_1.z.object({
18
+ ownerName: zod_1.z.string(),
19
+ // z.any() used because PromptEntry is a complex abstract class type
20
+ prompt: zod_1.z.any(),
21
+ })),
22
+ resolvedPrompts: zod_1.z.array(zod_1.z.object({
23
+ ownerName: zod_1.z.string(),
24
+ // z.any() used because PromptEntry is a complex abstract class type
25
+ prompt: zod_1.z.any(),
26
+ finalName: zod_1.z.string(),
27
+ })),
28
+ });
29
+ const plan = {
30
+ pre: ['parseInput'],
31
+ execute: ['findPrompts', 'resolveConflicts'],
32
+ post: ['parsePrompts'],
33
+ };
34
+ const name = 'prompts:list-prompts';
35
+ const { Stage } = (0, common_1.FlowHooksOf)('prompts:list-prompts');
36
+ let PromptsListFlow = class PromptsListFlow extends common_1.FlowBase {
37
+ logger = this.scopeLogger.child('PromptsListFlow');
38
+ sample(arr, n = 5) {
39
+ return arr.slice(0, n);
40
+ }
41
+ async parseInput() {
42
+ this.logger.verbose('parseInput:start');
43
+ let method;
44
+ let params;
45
+ try {
46
+ const inputData = inputSchema.parse(this.rawInput);
47
+ method = inputData.request.method;
48
+ params = inputData.request.params;
49
+ }
50
+ catch (e) {
51
+ throw new errors_1.InvalidInputError('Invalid request format', e instanceof zod_1.z.ZodError ? e.issues : undefined);
52
+ }
53
+ if (method !== 'prompts/list') {
54
+ this.logger.warn(`parseInput: invalid method "${method}"`);
55
+ throw new errors_1.InvalidMethodError(method, 'prompts/list');
56
+ }
57
+ const cursor = params?.cursor;
58
+ if (cursor)
59
+ this.logger.verbose(`parseInput: cursor=${cursor}`);
60
+ this.state.set('cursor', cursor);
61
+ this.logger.verbose('parseInput:done');
62
+ }
63
+ async findPrompts() {
64
+ this.logger.info('findPrompts:start');
65
+ try {
66
+ const prompts = [];
67
+ // Get prompts from scope's prompt registry
68
+ const scopePrompts = this.scope.prompts.getPrompts();
69
+ this.logger.verbose(`findPrompts: scope prompts=${scopePrompts.length}`);
70
+ for (const prompt of scopePrompts) {
71
+ prompts.push({ ownerName: prompt.owner.id, prompt });
72
+ }
73
+ this.logger.info(`findPrompts: total prompts collected=${prompts.length}`);
74
+ if (prompts.length === 0) {
75
+ this.logger.warn('findPrompts: no prompts found');
76
+ }
77
+ this.state.set('prompts', prompts);
78
+ this.logger.verbose('findPrompts:done');
79
+ }
80
+ catch (error) {
81
+ this.logger.error('findPrompts: failed to collect prompts', error);
82
+ throw error;
83
+ }
84
+ }
85
+ async resolveConflicts() {
86
+ this.logger.verbose('resolveConflicts:start');
87
+ try {
88
+ const found = this.state.required.prompts;
89
+ const counts = new Map();
90
+ for (const { prompt } of found) {
91
+ const baseName = prompt.metadata.name;
92
+ counts.set(baseName, (counts.get(baseName) ?? 0) + 1);
93
+ }
94
+ const conflicts = new Set([...counts.entries()].filter(([, n]) => n > 1).map(([k]) => k));
95
+ if (conflicts.size > 0) {
96
+ const preview = this.sample(Array.from(conflicts)).join(', ');
97
+ const extra = conflicts.size > 5 ? `, +${conflicts.size - 5} more` : '';
98
+ this.logger.warn(`resolveConflicts: ${conflicts.size} name conflict(s) detected: ${preview}${extra}`);
99
+ }
100
+ else {
101
+ this.logger.info('resolveConflicts: no name conflicts detected');
102
+ }
103
+ const resolved = found.map(({ ownerName, prompt }) => {
104
+ const baseName = prompt.metadata.name;
105
+ const finalName = conflicts.has(baseName) ? `${ownerName}:${baseName}` : baseName;
106
+ return { ownerName, prompt, finalName };
107
+ });
108
+ this.state.set('resolvedPrompts', resolved);
109
+ this.logger.verbose('resolveConflicts:done');
110
+ }
111
+ catch (error) {
112
+ this.logger.error('resolveConflicts: failed to resolve conflicts', error);
113
+ throw error;
114
+ }
115
+ }
116
+ async parsePrompts() {
117
+ this.logger.verbose('parsePrompts:start');
118
+ try {
119
+ const resolved = this.state.required.resolvedPrompts;
120
+ const prompts = resolved.map(({ finalName, prompt }) => ({
121
+ name: finalName,
122
+ title: prompt.metadata.title,
123
+ description: prompt.metadata.description,
124
+ arguments: prompt.metadata.arguments,
125
+ icons: prompt.metadata.icons,
126
+ }));
127
+ const preview = this.sample(prompts.map((p) => p.name)).join(', ');
128
+ const extra = prompts.length > 5 ? `, +${prompts.length - 5} more` : '';
129
+ this.logger.info(`parsePrompts: prepared ${prompts.length} prompt descriptor(s): ${preview}${extra}`);
130
+ this.respond({ prompts });
131
+ this.logger.info('parsePrompts: response sent');
132
+ this.logger.verbose('parsePrompts:done');
133
+ }
134
+ catch (error) {
135
+ if (error instanceof common_1.FlowControl)
136
+ throw error;
137
+ this.logger.error('parsePrompts: failed to parse prompts', error);
138
+ throw error;
139
+ }
140
+ }
141
+ };
142
+ tslib_1.__decorate([
143
+ Stage('parseInput'),
144
+ tslib_1.__metadata("design:type", Function),
145
+ tslib_1.__metadata("design:paramtypes", []),
146
+ tslib_1.__metadata("design:returntype", Promise)
147
+ ], PromptsListFlow.prototype, "parseInput", null);
148
+ tslib_1.__decorate([
149
+ Stage('findPrompts'),
150
+ tslib_1.__metadata("design:type", Function),
151
+ tslib_1.__metadata("design:paramtypes", []),
152
+ tslib_1.__metadata("design:returntype", Promise)
153
+ ], PromptsListFlow.prototype, "findPrompts", null);
154
+ tslib_1.__decorate([
155
+ Stage('resolveConflicts'),
156
+ tslib_1.__metadata("design:type", Function),
157
+ tslib_1.__metadata("design:paramtypes", []),
158
+ tslib_1.__metadata("design:returntype", Promise)
159
+ ], PromptsListFlow.prototype, "resolveConflicts", null);
160
+ tslib_1.__decorate([
161
+ Stage('parsePrompts'),
162
+ tslib_1.__metadata("design:type", Function),
163
+ tslib_1.__metadata("design:paramtypes", []),
164
+ tslib_1.__metadata("design:returntype", Promise)
165
+ ], PromptsListFlow.prototype, "parsePrompts", null);
166
+ PromptsListFlow = tslib_1.__decorate([
167
+ (0, common_1.Flow)({
168
+ name,
169
+ plan,
170
+ inputSchema,
171
+ outputSchema,
172
+ access: 'authorized',
173
+ })
174
+ ], PromptsListFlow);
175
+ exports.default = PromptsListFlow;
176
+ //# sourceMappingURL=prompts-list.flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts-list.flow.js","sourceRoot":"","sources":["../../../../src/prompt/flows/prompts-list.flow.ts"],"names":[],"mappings":"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","sourcesContent":["// file: libs/sdk/src/prompt/flows/prompts-list.flow.ts\n\nimport { Flow, FlowBase, FlowControl, FlowHooksOf, FlowPlan, FlowRunOptions, PromptEntry } from '../../common';\nimport 'reflect-metadata';\nimport { z } from 'zod';\nimport { ListPromptsRequestSchema, ListPromptsResultSchema, Prompt } from '@modelcontextprotocol/sdk/types.js';\nimport { InvalidMethodError, InvalidInputError } from '../../errors';\n\nconst inputSchema = z.object({\n request: ListPromptsRequestSchema,\n ctx: z.unknown(),\n});\n\nconst outputSchema = ListPromptsResultSchema;\n\nconst stateSchema = z.object({\n cursor: z.string().optional(),\n prompts: z.array(\n z.object({\n ownerName: z.string(),\n // z.any() used because PromptEntry is a complex abstract class type\n prompt: z.any(),\n }),\n ),\n resolvedPrompts: z.array(\n z.object({\n ownerName: z.string(),\n // z.any() used because PromptEntry is a complex abstract class type\n prompt: z.any(),\n finalName: z.string(),\n }),\n ),\n});\n\ntype ResponsePromptItem = Prompt;\n\nconst plan = {\n pre: ['parseInput'],\n execute: ['findPrompts', 'resolveConflicts'],\n post: ['parsePrompts'],\n} as const satisfies FlowPlan<string>;\n\ndeclare global {\n interface ExtendFlows {\n 'prompts:list-prompts': FlowRunOptions<\n PromptsListFlow,\n typeof plan,\n typeof inputSchema,\n typeof outputSchema,\n typeof stateSchema\n >;\n }\n}\n\nconst name = 'prompts:list-prompts' as const;\nconst { Stage } = FlowHooksOf('prompts:list-prompts');\n\n@Flow({\n name,\n plan,\n inputSchema,\n outputSchema,\n access: 'authorized',\n})\nexport default class PromptsListFlow extends FlowBase<typeof name> {\n logger = this.scopeLogger.child('PromptsListFlow');\n\n private sample<T>(arr: T[], n = 5): T[] {\n return arr.slice(0, n);\n }\n\n @Stage('parseInput')\n async parseInput() {\n this.logger.verbose('parseInput:start');\n\n let method!: string;\n let params: { cursor?: string } | undefined;\n try {\n const inputData = inputSchema.parse(this.rawInput);\n method = inputData.request.method;\n params = inputData.request.params as { cursor?: string } | undefined;\n } catch (e) {\n throw new InvalidInputError('Invalid request format', e instanceof z.ZodError ? e.issues : undefined);\n }\n\n if (method !== 'prompts/list') {\n this.logger.warn(`parseInput: invalid method \"${method}\"`);\n throw new InvalidMethodError(method, 'prompts/list');\n }\n\n const cursor = params?.cursor;\n if (cursor) this.logger.verbose(`parseInput: cursor=${cursor}`);\n this.state.set('cursor', cursor);\n this.logger.verbose('parseInput:done');\n }\n\n @Stage('findPrompts')\n async findPrompts() {\n this.logger.info('findPrompts:start');\n\n try {\n const prompts: Array<{ ownerName: string; prompt: PromptEntry }> = [];\n\n // Get prompts from scope's prompt registry\n const scopePrompts = this.scope.prompts.getPrompts();\n this.logger.verbose(`findPrompts: scope prompts=${scopePrompts.length}`);\n\n for (const prompt of scopePrompts) {\n prompts.push({ ownerName: prompt.owner.id, prompt });\n }\n\n this.logger.info(`findPrompts: total prompts collected=${prompts.length}`);\n if (prompts.length === 0) {\n this.logger.warn('findPrompts: no prompts found');\n }\n\n this.state.set('prompts', prompts);\n this.logger.verbose('findPrompts:done');\n } catch (error) {\n this.logger.error('findPrompts: failed to collect prompts', error);\n throw error;\n }\n }\n\n @Stage('resolveConflicts')\n async resolveConflicts() {\n this.logger.verbose('resolveConflicts:start');\n\n try {\n const found = this.state.required.prompts;\n\n const counts = new Map<string, number>();\n for (const { prompt } of found) {\n const baseName = prompt.metadata.name;\n counts.set(baseName, (counts.get(baseName) ?? 0) + 1);\n }\n\n const conflicts = new Set<string>([...counts.entries()].filter(([, n]) => n > 1).map(([k]) => k));\n\n if (conflicts.size > 0) {\n const preview = this.sample(Array.from(conflicts)).join(', ');\n const extra = conflicts.size > 5 ? `, +${conflicts.size - 5} more` : '';\n this.logger.warn(`resolveConflicts: ${conflicts.size} name conflict(s) detected: ${preview}${extra}`);\n } else {\n this.logger.info('resolveConflicts: no name conflicts detected');\n }\n\n const resolved = found.map(({ ownerName, prompt }) => {\n const baseName = prompt.metadata.name;\n const finalName = conflicts.has(baseName) ? `${ownerName}:${baseName}` : baseName;\n return { ownerName, prompt, finalName };\n });\n\n this.state.set('resolvedPrompts', resolved);\n this.logger.verbose('resolveConflicts:done');\n } catch (error) {\n this.logger.error('resolveConflicts: failed to resolve conflicts', error);\n throw error;\n }\n }\n\n @Stage('parsePrompts')\n async parsePrompts() {\n this.logger.verbose('parsePrompts:start');\n\n try {\n const resolved = this.state.required.resolvedPrompts;\n\n const prompts: ResponsePromptItem[] = resolved.map(({ finalName, prompt }) => ({\n name: finalName,\n title: prompt.metadata.title,\n description: prompt.metadata.description,\n arguments: prompt.metadata.arguments,\n icons: prompt.metadata.icons,\n }));\n\n const preview = this.sample(prompts.map((p) => p.name)).join(', ');\n const extra = prompts.length > 5 ? `, +${prompts.length - 5} more` : '';\n this.logger.info(`parsePrompts: prepared ${prompts.length} prompt descriptor(s): ${preview}${extra}`);\n\n this.respond({ prompts });\n this.logger.info('parsePrompts: response sent');\n this.logger.verbose('parsePrompts:done');\n } catch (error) {\n if (error instanceof FlowControl) throw error;\n this.logger.error('parsePrompts: failed to parse prompts', error);\n throw error;\n }\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export { default as PromptRegistry } from './prompt.registry';
2
+ export { PromptInstance } from './prompt.instance';
3
+ export * from './prompt.types';
4
+ export * from './prompt.events';
5
+ export * from './prompt.utils';
6
+ export { default as GetPromptFlow } from './flows/get-prompt.flow';
7
+ export { default as PromptsListFlow } from './flows/prompts-list.flow';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ // file: libs/sdk/src/prompt/index.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PromptsListFlow = exports.GetPromptFlow = exports.PromptInstance = exports.PromptRegistry = void 0;
5
+ const tslib_1 = require("tslib");
6
+ var prompt_registry_1 = require("./prompt.registry");
7
+ Object.defineProperty(exports, "PromptRegistry", { enumerable: true, get: function () { return tslib_1.__importDefault(prompt_registry_1).default; } });
8
+ var prompt_instance_1 = require("./prompt.instance");
9
+ Object.defineProperty(exports, "PromptInstance", { enumerable: true, get: function () { return prompt_instance_1.PromptInstance; } });
10
+ tslib_1.__exportStar(require("./prompt.types"), exports);
11
+ tslib_1.__exportStar(require("./prompt.events"), exports);
12
+ tslib_1.__exportStar(require("./prompt.utils"), exports);
13
+ var get_prompt_flow_1 = require("./flows/get-prompt.flow");
14
+ Object.defineProperty(exports, "GetPromptFlow", { enumerable: true, get: function () { return tslib_1.__importDefault(get_prompt_flow_1).default; } });
15
+ var prompts_list_flow_1 = require("./flows/prompts-list.flow");
16
+ Object.defineProperty(exports, "PromptsListFlow", { enumerable: true, get: function () { return tslib_1.__importDefault(prompts_list_flow_1).default; } });
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/prompt/index.ts"],"names":[],"mappings":";AAAA,qCAAqC;;;;AAErC,qDAA8D;AAArD,0IAAA,OAAO,OAAkB;AAClC,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,yDAA+B;AAC/B,0DAAgC;AAChC,yDAA+B;AAC/B,2DAAmE;AAA1D,yIAAA,OAAO,OAAiB;AACjC,+DAAuE;AAA9D,6IAAA,OAAO,OAAmB","sourcesContent":["// file: libs/sdk/src/prompt/index.ts\n\nexport { default as PromptRegistry } from './prompt.registry';\nexport { PromptInstance } from './prompt.instance';\nexport * from './prompt.types';\nexport * from './prompt.events';\nexport * from './prompt.utils';\nexport { default as GetPromptFlow } from './flows/get-prompt.flow';\nexport { default as PromptsListFlow } from './flows/prompts-list.flow';\n"]}
@@ -0,0 +1,17 @@
1
+ import { PromptInstance } from './prompt.instance';
2
+ export type PromptChangeKind = 'added' | 'updated' | 'removed' | 'reset';
3
+ export type PromptChangeEvent = {
4
+ kind: PromptChangeKind;
5
+ changeScope: 'global' | 'session';
6
+ sessionId?: string;
7
+ relatedRequestId?: string;
8
+ version: number;
9
+ snapshot: readonly PromptInstance[];
10
+ };
11
+ type Listener = (e: PromptChangeEvent) => void;
12
+ export declare class PromptEmitter {
13
+ private listeners;
14
+ on(l: Listener): () => void;
15
+ emit(e: PromptChangeEvent): void;
16
+ }
17
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ // file: libs/sdk/src/prompt/prompt.events.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PromptEmitter = void 0;
5
+ class PromptEmitter {
6
+ listeners = new Set();
7
+ on(l) {
8
+ this.listeners.add(l);
9
+ return () => this.listeners.delete(l);
10
+ }
11
+ emit(e) {
12
+ for (const l of [...this.listeners]) {
13
+ try {
14
+ l(e);
15
+ }
16
+ catch (err) {
17
+ // Log error but continue notifying other listeners
18
+ // Use safe logging to avoid Node.js 24 util.inspect bug with Zod errors
19
+ console.error('PromptEmitter listener error:', err instanceof Error ? err.message : 'Unknown error');
20
+ }
21
+ }
22
+ }
23
+ }
24
+ exports.PromptEmitter = PromptEmitter;
25
+ //# sourceMappingURL=prompt.events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.events.js","sourceRoot":"","sources":["../../../src/prompt/prompt.events.ts"],"names":[],"mappings":";AAAA,6CAA6C;;;AAiB7C,MAAa,aAAa;IAChB,SAAS,GAAG,IAAI,GAAG,EAAY,CAAC;IAExC,EAAE,CAAC,CAAW;QACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,CAAoB;QACvB,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,CAAC,CAAC,CAAC,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,mDAAmD;gBACnD,wEAAwE;gBACxE,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YACvG,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAnBD,sCAmBC","sourcesContent":["// file: libs/sdk/src/prompt/prompt.events.ts\n\nimport { PromptInstance } from './prompt.instance';\n\nexport type PromptChangeKind = 'added' | 'updated' | 'removed' | 'reset';\n\nexport type PromptChangeEvent = {\n kind: PromptChangeKind;\n changeScope: 'global' | 'session';\n sessionId?: string;\n relatedRequestId?: string;\n version: number;\n snapshot: readonly PromptInstance[];\n};\n\ntype Listener = (e: PromptChangeEvent) => void;\n\nexport class PromptEmitter {\n private listeners = new Set<Listener>();\n\n on(l: Listener): () => void {\n this.listeners.add(l);\n return () => this.listeners.delete(l);\n }\n\n emit(e: PromptChangeEvent) {\n for (const l of [...this.listeners]) {\n try {\n l(e);\n } catch (err) {\n // Log error but continue notifying other listeners\n // Use safe logging to avoid Node.js 24 util.inspect bug with Zod errors\n console.error('PromptEmitter listener error:', err instanceof Error ? err.message : 'Unknown error');\n }\n }\n }\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import { EntryOwnerRef, PromptEntry, PromptGetExtra, ParsedPromptResult, PromptSafeTransformResult, PromptRecord, PromptContext, PromptMetadata } from '../common';
2
+ import ProviderRegistry from '../provider/provider.registry';
3
+ import HookRegistry from '../hooks/hook.registry';
4
+ import { Scope } from '../scope';
5
+ export declare class PromptInstance extends PromptEntry {
6
+ private readonly providers;
7
+ readonly scope: Scope;
8
+ readonly hooks: HookRegistry;
9
+ constructor(record: PromptRecord, providers: ProviderRegistry, owner: EntryOwnerRef);
10
+ protected initialize(): Promise<void>;
11
+ getMetadata(): PromptMetadata;
12
+ /**
13
+ * Create a prompt context (class or function wrapper).
14
+ */
15
+ create(args: Record<string, string>, ctx: PromptGetExtra): PromptContext;
16
+ /**
17
+ * Parse and validate arguments against the prompt's argument definitions.
18
+ * @param args Arguments from the MCP request
19
+ * @returns Validated arguments
20
+ */
21
+ parseArguments(args?: Record<string, string>): Record<string, string>;
22
+ /**
23
+ * Convert the raw prompt return value into an MCP GetPromptResult.
24
+ */
25
+ parseOutput(raw: unknown): ParsedPromptResult;
26
+ /**
27
+ * Safe version of parseOutput that returns success/error instead of throwing.
28
+ */
29
+ safeParseOutput(raw: unknown): PromptSafeTransformResult<ParsedPromptResult>;
30
+ }