@frontmcp/sdk 0.4.1 → 0.5.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 (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 +78 -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 +326 -1630
  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 +74 -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 +62 -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 +153 -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 +67 -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 +91 -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 +64 -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 +64 -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 +45 -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 +44 -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 +64 -1110
  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 +32 -473
  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 +69 -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 +87 -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 +517 -208
  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 +54 -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 +51 -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 +51 -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 +19 -146
  452. package/src/transport/mcp-handlers/logging-set-level-request.handler.d.ts +46 -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 +46 -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 +37 -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 +37 -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
@@ -1,20 +1,21 @@
1
1
  import { Reference, PluginType, ProviderType } from '../interfaces';
2
- type InitOptions<T> = ((T & {
2
+ type InitOptions<TInput> = ((TInput & {
3
3
  useFactory?: never;
4
4
  inject?: never;
5
5
  }) & {
6
6
  providers?: readonly ProviderType[];
7
7
  }) | {
8
8
  inject: () => readonly Reference<any>[];
9
- useFactory: (...args: any[]) => T;
9
+ useFactory: (...args: any[]) => TInput;
10
10
  providers?: readonly ProviderType[];
11
11
  };
12
- type PluginClassWithOptions<T> = {
12
+ type PluginClassWithOptions<TInput, TOptions> = {
13
13
  new (...args: any[]): any;
14
14
  prototype: {
15
- __options_brand?: T;
15
+ __options_brand?: TOptions;
16
+ __options_input_brand?: TInput;
16
17
  };
17
- dynamicProviders?: (options: T) => readonly ProviderType[];
18
+ dynamicProviders?: (options: TInput) => readonly ProviderType[];
18
19
  };
19
20
  type ValueMcpPlugin<T> = {
20
21
  provide: any;
@@ -29,11 +30,21 @@ type FactoryMcpPlugin<T> = {
29
30
  type PluginReturn<T> = (ValueMcpPlugin<T> | FactoryMcpPlugin<T>) & PluginType & {
30
31
  providers?: readonly ProviderType[];
31
32
  };
32
- export declare abstract class DynamicPlugin<TOptions extends object> {
33
+ /**
34
+ * Base class for plugins that support dynamic configuration.
35
+ *
36
+ * @template TOptions - The resolved options type (after parsing with defaults applied)
37
+ * @template TInput - The input options type (what users provide to init()). Defaults to TOptions for backwards compatibility.
38
+ */
39
+ export declare abstract class DynamicPlugin<TOptions extends object, TInput extends object = TOptions> {
33
40
  /**
34
- * Private property to ensure options are typed correctly.
41
+ * Brand for resolved options type (used internally).
35
42
  */
36
43
  __options_brand: TOptions;
44
+ /**
45
+ * Brand for input options type (used by init()).
46
+ */
47
+ __options_input_brand: TInput;
37
48
  /**
38
49
  * Optional hook to contribute providers to the plugin.
39
50
  * @param options
@@ -42,11 +53,11 @@ export declare abstract class DynamicPlugin<TOptions extends object> {
42
53
  get<T>(token: Reference<T>): T;
43
54
  /**
44
55
  * Static init() method to create a plugin provider.
45
- * @param options
56
+ * @param options - Input options (with optional fields for defaults)
46
57
  */
47
- static init<TThis extends PluginClassWithOptions<any>>(this: TThis, options: InitOptions<TThis['prototype'] extends {
48
- __options_brand?: infer O;
49
- } ? O : never>): PluginReturn<TThis['prototype'] extends {
58
+ static init<TThis extends PluginClassWithOptions<any, any>>(this: TThis, options: InitOptions<TThis['prototype'] extends {
59
+ __options_input_brand?: infer I;
60
+ } ? I : never>): PluginReturn<TThis['prototype'] extends {
50
61
  __options_brand?: infer O;
51
62
  } ? O : never>;
52
63
  }
@@ -2,13 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DynamicPlugin = void 0;
4
4
  const dynamic_utils_1 = require("./dynamic.utils");
5
+ /**
6
+ * Base class for plugins that support dynamic configuration.
7
+ *
8
+ * @template TOptions - The resolved options type (after parsing with defaults applied)
9
+ * @template TInput - The input options type (what users provide to init()). Defaults to TOptions for backwards compatibility.
10
+ */
5
11
  class DynamicPlugin {
6
12
  get(token) {
7
13
  throw new Error('Method not implemented.');
8
14
  }
9
15
  /**
10
16
  * Static init() method to create a plugin provider.
11
- * @param options
17
+ * @param options - Input options (with optional fields for defaults)
12
18
  */
13
19
  static init(options) {
14
20
  const extraProviders = options.providers;
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic.plugin.js","sourceRoot":"","sources":["../../../../src/common/dynamic/dynamic.plugin.ts"],"names":[],"mappings":";;;AAEA,mDAA+E;AA0B/E,MAAsB,aAAa;IAYjC,GAAG,CAAI,KAAmB;QACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAI,CAET,OAA0F;QAE1F,MAAM,cAAc,GAAI,OAAe,CAAC,SAAgD,CAAC;QACzF,MAAM,YAAY,GAAG,OAAc,CAAC;QAEpC,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;YAC5B,OAAO;gBACL,GAAG,YAAY;gBACf,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,OAAO,CAAC,MAAgC;gBAChD,UAAU,EAAE,OAAO,CAAC,UAAiB;gBACrC,SAAS,EAAE,IAAA,qCAAqB,EAAC,cAAc,IAAI,EAAE,CAAC;aACvD,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,uCAAuB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG,IAAA,qCAAqB,EAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,OAAO;YACL,GAAG,YAAY;YACf,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC;YAC3B,SAAS,EAAE,eAAe;SAC3B,CAAC;IACJ,CAAC;CACF;AA9CD,sCA8CC","sourcesContent":["// dynamic-plugin.ts\nimport {Reference, PluginType, ProviderType, ProviderRegistryInterface} from '../interfaces';\nimport {collectDynamicProviders, dedupePluginProviders} from './dynamic.utils';\n\n// keep your original options union; just add optional `providers`\ntype InitOptions<T> =\n | ((T & { useFactory?: never; inject?: never }) & { providers?: readonly ProviderType[] })\n | {\n inject: () => readonly Reference<any>[];\n useFactory: (...args: any[]) => T;\n providers?: readonly ProviderType[];\n};\n\ntype PluginClassWithOptions<T> = {\n new(...args: any[]): any;\n prototype: { __options_brand?: T };\n // optional hook contributed by plugin authors\n dynamicProviders?: (options: T) => readonly ProviderType[];\n};\n\ntype ValueMcpPlugin<T> = { provide: any; useValue: T; providers?: ProviderType[] };\ntype FactoryMcpPlugin<T> = { provide: any; inject: () => readonly Reference<any>[]; useFactory: (...args: any[]) => T };\n\ntype PluginReturn<T> = (ValueMcpPlugin<T> | FactoryMcpPlugin<T>) &\n PluginType & {\n providers?: readonly ProviderType[];\n};\n\nexport abstract class DynamicPlugin<TOptions extends object> {\n /**\n * Private property to ensure options are typed correctly.\n */\n declare __options_brand: TOptions;\n\n /**\n * Optional hook to contribute providers to the plugin.\n * @param options\n */\n static dynamicProviders?(options: any): readonly ProviderType[];\n\n get<T>(token: Reference<T>): T {\n throw new Error('Method not implemented.');\n }\n\n /**\n * Static init() method to create a plugin provider.\n * @param options\n */\n static init<TThis extends PluginClassWithOptions<any>>(\n this: TThis,\n options: InitOptions<TThis['prototype'] extends { __options_brand?: infer O } ? O : never>,\n ): PluginReturn<TThis['prototype'] extends { __options_brand?: infer O } ? O : never> {\n const extraProviders = (options as any).providers as readonly ProviderType[] | undefined;\n const typedOptions = options as any;\n\n if ('useFactory' in options) {\n return {\n ...typedOptions,\n provide: this,\n inject: options.inject as () => Reference<any>[],\n useFactory: options.useFactory as any,\n providers: dedupePluginProviders(extraProviders ?? []),\n };\n }\n\n const dyn = collectDynamicProviders(this, typedOptions);\n const mergedProviders = dedupePluginProviders([...(dyn ?? []), ...(extraProviders ?? [])]);\n return {\n ...typedOptions,\n provide: this,\n useValue: new this(options),\n providers: mergedProviders,\n };\n }\n}"]}
1
+ {"version":3,"file":"dynamic.plugin.js","sourceRoot":"","sources":["../../../../src/common/dynamic/dynamic.plugin.ts"],"names":[],"mappings":";;;AAEA,mDAAiF;AA0BjF;;;;;GAKG;AACH,MAAsB,aAAa;IAiBjC,GAAG,CAAI,KAAmB;QACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAI,CAET,OAAgG;QAEhG,MAAM,cAAc,GAAI,OAAe,CAAC,SAAgD,CAAC;QACzF,MAAM,YAAY,GAAG,OAAc,CAAC;QAEpC,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;YAC5B,OAAO;gBACL,GAAG,YAAY;gBACf,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,OAAO,CAAC,MAAgC;gBAChD,UAAU,EAAE,OAAO,CAAC,UAAiB;gBACrC,SAAS,EAAE,IAAA,qCAAqB,EAAC,cAAc,IAAI,EAAE,CAAC;aACvD,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,uCAAuB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG,IAAA,qCAAqB,EAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,OAAO;YACL,GAAG,YAAY;YACf,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC;YAC3B,SAAS,EAAE,eAAe;SAC3B,CAAC;IACJ,CAAC;CACF;AAnDD,sCAmDC","sourcesContent":["// dynamic-plugin.ts\nimport { Reference, PluginType, ProviderType, ProviderRegistryInterface } from '../interfaces';\nimport { collectDynamicProviders, dedupePluginProviders } from './dynamic.utils';\n\n// InitOptions accepts input type (what users provide to init())\ntype InitOptions<TInput> =\n | ((TInput & { useFactory?: never; inject?: never }) & { providers?: readonly ProviderType[] })\n | {\n inject: () => readonly Reference<any>[];\n useFactory: (...args: any[]) => TInput;\n providers?: readonly ProviderType[];\n };\n\ntype PluginClassWithOptions<TInput, TOptions> = {\n new (...args: any[]): any;\n prototype: { __options_brand?: TOptions; __options_input_brand?: TInput };\n // optional hook contributed by plugin authors\n dynamicProviders?: (options: TInput) => readonly ProviderType[];\n};\n\ntype ValueMcpPlugin<T> = { provide: any; useValue: T; providers?: ProviderType[] };\ntype FactoryMcpPlugin<T> = { provide: any; inject: () => readonly Reference<any>[]; useFactory: (...args: any[]) => T };\n\ntype PluginReturn<T> = (ValueMcpPlugin<T> | FactoryMcpPlugin<T>) &\n PluginType & {\n providers?: readonly ProviderType[];\n };\n\n/**\n * Base class for plugins that support dynamic configuration.\n *\n * @template TOptions - The resolved options type (after parsing with defaults applied)\n * @template TInput - The input options type (what users provide to init()). Defaults to TOptions for backwards compatibility.\n */\nexport abstract class DynamicPlugin<TOptions extends object, TInput extends object = TOptions> {\n /**\n * Brand for resolved options type (used internally).\n */\n declare __options_brand: TOptions;\n\n /**\n * Brand for input options type (used by init()).\n */\n declare __options_input_brand: TInput;\n\n /**\n * Optional hook to contribute providers to the plugin.\n * @param options\n */\n static dynamicProviders?(options: any): readonly ProviderType[];\n\n get<T>(token: Reference<T>): T {\n throw new Error('Method not implemented.');\n }\n\n /**\n * Static init() method to create a plugin provider.\n * @param options - Input options (with optional fields for defaults)\n */\n static init<TThis extends PluginClassWithOptions<any, any>>(\n this: TThis,\n options: InitOptions<TThis['prototype'] extends { __options_input_brand?: infer I } ? I : never>,\n ): PluginReturn<TThis['prototype'] extends { __options_brand?: infer O } ? O : never> {\n const extraProviders = (options as any).providers as readonly ProviderType[] | undefined;\n const typedOptions = options as any;\n\n if ('useFactory' in options) {\n return {\n ...typedOptions,\n provide: this,\n inject: options.inject as () => Reference<any>[],\n useFactory: options.useFactory as any,\n providers: dedupePluginProviders(extraProviders ?? []),\n };\n }\n\n const dyn = collectDynamicProviders(this, typedOptions);\n const mergedProviders = dedupePluginProviders([...(dyn ?? []), ...(extraProviders ?? [])]);\n return {\n ...typedOptions,\n provide: this,\n useValue: new this(options),\n providers: mergedProviders,\n };\n }\n}\n"]}
@@ -1,6 +1,50 @@
1
- import { BaseEntry } from './base.entry';
1
+ import { BaseEntry, EntryOwnerRef } from './base.entry';
2
2
  import { PromptRecord } from '../records';
3
- import { PromptInterface } from '../interfaces';
3
+ import { PromptContext, PromptInterface } from '../interfaces';
4
4
  import { PromptMetadata } from '../metadata';
5
+ import { GetPromptResult, Request, Notification } from '@modelcontextprotocol/sdk/types.js';
6
+ import { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
7
+ import { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';
8
+ export type PromptGetExtra = RequestHandlerExtra<Request, Notification> & {
9
+ authInfo: AuthInfo;
10
+ };
11
+ export type ParsedPromptResult = GetPromptResult;
12
+ export type PromptSafeTransformResult<T> = {
13
+ success: true;
14
+ data: T;
15
+ } | {
16
+ success: false;
17
+ error: Error;
18
+ };
5
19
  export declare abstract class PromptEntry extends BaseEntry<PromptRecord, PromptInterface, PromptMetadata> {
20
+ owner: EntryOwnerRef;
21
+ /**
22
+ * The name of the prompt, as declared in the metadata.
23
+ */
24
+ name: string;
25
+ /**
26
+ * The full name of the prompt, including the owner name as prefix.
27
+ */
28
+ fullName: string;
29
+ /**
30
+ * Create a prompt context (class or function wrapper).
31
+ * @param args Arguments passed to the prompt
32
+ * @param ctx Request context with auth info
33
+ */
34
+ abstract create(args: Record<string, string>, ctx: PromptGetExtra): PromptContext;
35
+ /**
36
+ * Parse and validate arguments against the prompt's argument definitions.
37
+ * @param args Arguments from the MCP request
38
+ * @returns Validated arguments
39
+ */
40
+ abstract parseArguments(args?: Record<string, string>): Record<string, string>;
41
+ /**
42
+ * Convert the raw prompt return value into an MCP GetPromptResult.
43
+ * Accepts any raw output from the prompt execute method and normalizes it.
44
+ */
45
+ abstract parseOutput(raw: unknown): ParsedPromptResult;
46
+ /**
47
+ * Safe version of parseOutput that returns success/error instead of throwing.
48
+ */
49
+ abstract safeParseOutput(raw: unknown): PromptSafeTransformResult<ParsedPromptResult>;
6
50
  }
@@ -1,8 +1,18 @@
1
1
  "use strict";
2
+ // file: libs/sdk/src/common/entries/prompt.entry.ts
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.PromptEntry = void 0;
4
5
  const base_entry_1 = require("./base.entry");
5
6
  class PromptEntry extends base_entry_1.BaseEntry {
7
+ owner;
8
+ /**
9
+ * The name of the prompt, as declared in the metadata.
10
+ */
11
+ name;
12
+ /**
13
+ * The full name of the prompt, including the owner name as prefix.
14
+ */
15
+ fullName;
6
16
  }
7
17
  exports.PromptEntry = PromptEntry;
8
18
  //# sourceMappingURL=prompt.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/prompt.entry.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAMzC,MAAsB,WAAY,SAAQ,sBAAwD;CAGjG;AAHD,kCAGC","sourcesContent":["import { BaseEntry } from './base.entry';\nimport { PromptRecord } from '../records';\nimport { PromptInterface } from '../interfaces';\nimport { PromptMetadata } from '../metadata';\n\n\nexport abstract class PromptEntry extends BaseEntry<PromptRecord, PromptInterface, PromptMetadata> {\n\n\n}\n\n"]}
1
+ {"version":3,"file":"prompt.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/prompt.entry.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAEpD,6CAAwD;AAexD,MAAsB,WAAY,SAAQ,sBAAwD;IAChG,KAAK,CAAgB;IAErB;;OAEG;IACH,IAAI,CAAS;IAEb;;OAEG;IACH,QAAQ,CAAS;CA0BlB;AArCD,kCAqCC","sourcesContent":["// file: libs/sdk/src/common/entries/prompt.entry.ts\n\nimport { BaseEntry, EntryOwnerRef } from './base.entry';\nimport { PromptRecord } from '../records';\nimport { PromptContext, PromptInterface } from '../interfaces';\nimport { PromptMetadata } from '../metadata';\nimport { GetPromptResult, Request, Notification } from '@modelcontextprotocol/sdk/types.js';\nimport { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';\nimport { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';\n\nexport type PromptGetExtra = RequestHandlerExtra<Request, Notification> & {\n authInfo: AuthInfo;\n};\n\nexport type ParsedPromptResult = GetPromptResult;\nexport type PromptSafeTransformResult<T> = { success: true; data: T } | { success: false; error: Error };\n\nexport abstract class PromptEntry extends BaseEntry<PromptRecord, PromptInterface, PromptMetadata> {\n owner: EntryOwnerRef;\n\n /**\n * The name of the prompt, as declared in the metadata.\n */\n name: string;\n\n /**\n * The full name of the prompt, including the owner name as prefix.\n */\n fullName: string;\n\n /**\n * Create a prompt context (class or function wrapper).\n * @param args Arguments passed to the prompt\n * @param ctx Request context with auth info\n */\n abstract create(args: Record<string, string>, ctx: PromptGetExtra): PromptContext;\n\n /**\n * Parse and validate arguments against the prompt's argument definitions.\n * @param args Arguments from the MCP request\n * @returns Validated arguments\n */\n abstract parseArguments(args?: Record<string, string>): Record<string, string>;\n\n /**\n * Convert the raw prompt return value into an MCP GetPromptResult.\n * Accepts any raw output from the prompt execute method and normalizes it.\n */\n abstract parseOutput(raw: unknown): ParsedPromptResult;\n\n /**\n * Safe version of parseOutput that returns success/error instead of throwing.\n */\n abstract safeParseOutput(raw: unknown): PromptSafeTransformResult<ParsedPromptResult>;\n}\n"]}
@@ -1,7 +1,70 @@
1
- import { z } from 'zod';
2
- import { BaseEntry } from './base.entry';
3
- import { ResourceRecord } from '../records';
4
- import { ResourceInterface } from '../interfaces';
5
- import { ResourceMetadata } from '../metadata';
6
- export declare abstract class ResourceEntry<In = z.ZodRawShape, Out = z.ZodRawShape> extends BaseEntry<ResourceRecord, ResourceInterface<In, Out>, ResourceMetadata> {
1
+ import { BaseEntry, EntryOwnerRef } from './base.entry';
2
+ import { AnyResourceRecord } from '../records';
3
+ import { ResourceContext, ResourceInterface } from '../interfaces';
4
+ import { ResourceMetadata, ResourceTemplateMetadata } from '../metadata';
5
+ import { ReadResourceResult, Request, Notification } from '@modelcontextprotocol/sdk/types.js';
6
+ import { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
7
+ import { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';
8
+ export type ResourceReadExtra = RequestHandlerExtra<Request, Notification> & {
9
+ authInfo: AuthInfo;
10
+ };
11
+ export type ParsedResourceResult = ReadResourceResult;
12
+ export type ResourceSafeTransformResult<T> = {
13
+ success: true;
14
+ data: T;
15
+ } | {
16
+ success: false;
17
+ error: Error;
18
+ };
19
+ /**
20
+ * Base class for resource entries.
21
+ * @template Params - Type for URI template parameters (e.g., `{ userId: string }`)
22
+ * @template Out - Type for the resource output
23
+ */
24
+ export declare abstract class ResourceEntry<Params extends Record<string, string> = Record<string, string>, Out = unknown> extends BaseEntry<AnyResourceRecord, ResourceInterface<Params, Out>, ResourceMetadata | ResourceTemplateMetadata> {
25
+ owner: EntryOwnerRef;
26
+ /**
27
+ * The name of the resource, as declared in the metadata.
28
+ */
29
+ name: string;
30
+ /**
31
+ * The full name of the resource, including the owner name as prefix.
32
+ */
33
+ fullName: string;
34
+ /**
35
+ * URI for static resources (from ResourceMetadata)
36
+ */
37
+ uri?: string;
38
+ /**
39
+ * URI template for template resources (from ResourceTemplateMetadata)
40
+ */
41
+ uriTemplate?: string;
42
+ /**
43
+ * Whether this resource is a template (has uriTemplate instead of uri)
44
+ */
45
+ isTemplate: boolean;
46
+ /**
47
+ * Create a resource context (class or function wrapper).
48
+ * @param uri The actual URI being read (for templates, this includes resolved params)
49
+ * @param params Extracted URI template parameters (empty for static resources)
50
+ * @param ctx Request context with auth info
51
+ */
52
+ abstract create(uri: string, params: Params, ctx: ResourceReadExtra): ResourceContext<Params, Out>;
53
+ /**
54
+ * Convert the raw resource return value (Out) into an MCP ReadResourceResult.
55
+ */
56
+ abstract parseOutput(result: Out): ParsedResourceResult;
57
+ /**
58
+ * Safe version of parseOutput that returns success/error instead of throwing.
59
+ */
60
+ abstract safeParseOutput(raw: Out): ResourceSafeTransformResult<ParsedResourceResult>;
61
+ /**
62
+ * Match a URI against this resource.
63
+ * For static resources: exact match against uri
64
+ * For templates: pattern match and extract parameters
65
+ */
66
+ abstract matchUri(uri: string): {
67
+ matches: boolean;
68
+ params: Params;
69
+ };
7
70
  }
@@ -1,11 +1,35 @@
1
1
  "use strict";
2
+ // file: libs/sdk/src/common/entries/resource.entry.ts
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.ResourceEntry = void 0;
4
5
  const base_entry_1 = require("./base.entry");
6
+ /**
7
+ * Base class for resource entries.
8
+ * @template Params - Type for URI template parameters (e.g., `{ userId: string }`)
9
+ * @template Out - Type for the resource output
10
+ */
5
11
  class ResourceEntry extends base_entry_1.BaseEntry {
12
+ owner;
13
+ /**
14
+ * The name of the resource, as declared in the metadata.
15
+ */
16
+ name;
17
+ /**
18
+ * The full name of the resource, including the owner name as prefix.
19
+ */
20
+ fullName;
21
+ /**
22
+ * URI for static resources (from ResourceMetadata)
23
+ */
24
+ uri;
25
+ /**
26
+ * URI template for template resources (from ResourceTemplateMetadata)
27
+ */
28
+ uriTemplate;
29
+ /**
30
+ * Whether this resource is a template (has uriTemplate instead of uri)
31
+ */
32
+ isTemplate;
6
33
  }
7
34
  exports.ResourceEntry = ResourceEntry;
8
- // TODO: support resource templates
9
- // abstract class ResourceTemplateEntry<In = z.ZodRawShape, Out = z.ZodRawShape> extends BaseEntry<ResourceTemplateRecord, ResourceTemplateInterface<In, Out>, ResourceTemplateType> {
10
- // }
11
35
  //# sourceMappingURL=resource.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/resource.entry.ts"],"names":[],"mappings":";;;AACA,6CAAyC;AAMzC,MAAsB,aAAuD,SAAQ,sBACtB;CAG9D;AAJD,sCAIC;AAGD,mCAAmC;AACnC,sLAAsL;AACtL,IAAI","sourcesContent":["import { z } from 'zod';\nimport { BaseEntry } from './base.entry';\nimport { ResourceRecord } from '../records';\nimport { ResourceInterface } from '../interfaces';\nimport { ResourceMetadata } from '../metadata';\n\n\nexport abstract class ResourceEntry<In = z.ZodRawShape, Out = z.ZodRawShape> extends BaseEntry<\n ResourceRecord, ResourceInterface<In, Out>, ResourceMetadata> {\n\n\n}\n\n\n// TODO: support resource templates\n// abstract class ResourceTemplateEntry<In = z.ZodRawShape, Out = z.ZodRawShape> extends BaseEntry<ResourceTemplateRecord, ResourceTemplateInterface<In, Out>, ResourceTemplateType> {\n// }"]}
1
+ {"version":3,"file":"resource.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/resource.entry.ts"],"names":[],"mappings":";AAAA,sDAAsD;;;AAEtD,6CAAwD;AAexD;;;;GAIG;AACH,MAAsB,aAGpB,SAAQ,sBAAyG;IACjH,KAAK,CAAgB;IAErB;;OAEG;IACH,IAAI,CAAS;IAEb;;OAEG;IACH,QAAQ,CAAS;IAEjB;;OAEG;IACH,GAAG,CAAU;IAEb;;OAEG;IACH,WAAW,CAAU;IAErB;;OAEG;IACH,UAAU,CAAU;CA0BrB;AAvDD,sCAuDC","sourcesContent":["// file: libs/sdk/src/common/entries/resource.entry.ts\n\nimport { BaseEntry, EntryOwnerRef } from './base.entry';\nimport { AnyResourceRecord } from '../records';\nimport { ResourceContext, ResourceInterface } from '../interfaces';\nimport { ResourceMetadata, ResourceTemplateMetadata } from '../metadata';\nimport { ReadResourceResult, Request, Notification } from '@modelcontextprotocol/sdk/types.js';\nimport { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';\nimport { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';\n\nexport type ResourceReadExtra = RequestHandlerExtra<Request, Notification> & {\n authInfo: AuthInfo;\n};\n\nexport type ParsedResourceResult = ReadResourceResult;\nexport type ResourceSafeTransformResult<T> = { success: true; data: T } | { success: false; error: Error };\n\n/**\n * Base class for resource entries.\n * @template Params - Type for URI template parameters (e.g., `{ userId: string }`)\n * @template Out - Type for the resource output\n */\nexport abstract class ResourceEntry<\n Params extends Record<string, string> = Record<string, string>,\n Out = unknown,\n> extends BaseEntry<AnyResourceRecord, ResourceInterface<Params, Out>, ResourceMetadata | ResourceTemplateMetadata> {\n owner: EntryOwnerRef;\n\n /**\n * The name of the resource, as declared in the metadata.\n */\n name: string;\n\n /**\n * The full name of the resource, including the owner name as prefix.\n */\n fullName: string;\n\n /**\n * URI for static resources (from ResourceMetadata)\n */\n uri?: string;\n\n /**\n * URI template for template resources (from ResourceTemplateMetadata)\n */\n uriTemplate?: string;\n\n /**\n * Whether this resource is a template (has uriTemplate instead of uri)\n */\n isTemplate: boolean;\n\n /**\n * Create a resource context (class or function wrapper).\n * @param uri The actual URI being read (for templates, this includes resolved params)\n * @param params Extracted URI template parameters (empty for static resources)\n * @param ctx Request context with auth info\n */\n abstract create(uri: string, params: Params, ctx: ResourceReadExtra): ResourceContext<Params, Out>;\n\n /**\n * Convert the raw resource return value (Out) into an MCP ReadResourceResult.\n */\n abstract parseOutput(result: Out): ParsedResourceResult;\n\n /**\n * Safe version of parseOutput that returns success/error instead of throwing.\n */\n abstract safeParseOutput(raw: Out): ResourceSafeTransformResult<ParsedResourceResult>;\n\n /**\n * Match a URI against this resource.\n * For static resources: exact match against uri\n * For templates: pattern match and extract parameters\n */\n abstract matchUri(uri: string): { matches: boolean; params: Params };\n}\n"]}
@@ -1,7 +1,8 @@
1
1
  import { BaseEntry } from './base.entry';
2
2
  import { ScopeRecord } from '../records';
3
- import { ScopeInterface, ProviderRegistryInterface, AppRegistryInterface, AuthRegistryInterface, FrontMcpAuth, Token, FlowInputOf, FlowOutputOf, Type, FlowType, FrontMcpLogger, ToolRegistryInterface, HookRegistryInterface } from '../interfaces';
3
+ import { ScopeInterface, ProviderRegistryInterface, AppRegistryInterface, AuthRegistryInterface, FrontMcpAuth, Token, FlowInputOf, FlowOutputOf, Type, FlowType, FrontMcpLogger, ToolRegistryInterface, HookRegistryInterface, ResourceRegistryInterface, PromptRegistryInterface } from '../interfaces';
4
4
  import { FlowName, ScopeMetadata } from '../metadata';
5
+ import type { NotificationService } from '../../notification';
5
6
  export declare abstract class ScopeEntry extends BaseEntry<ScopeRecord, ScopeInterface, ScopeMetadata> {
6
7
  abstract readonly id: string;
7
8
  abstract readonly entryPath: string;
@@ -14,6 +15,9 @@ export declare abstract class ScopeEntry extends BaseEntry<ScopeRecord, ScopeInt
14
15
  abstract get providers(): ProviderRegistryInterface;
15
16
  abstract get apps(): AppRegistryInterface;
16
17
  abstract get tools(): ToolRegistryInterface;
18
+ abstract get resources(): ResourceRegistryInterface;
19
+ abstract get prompts(): PromptRegistryInterface;
20
+ abstract get notifications(): NotificationService;
17
21
  abstract registryFlows(...flows: FlowType[]): Promise<void>;
18
22
  abstract runFlow<Name extends FlowName>(name: Name, input: FlowInputOf<Name>, additionalDeps?: Map<Token, Type>): Promise<FlowOutputOf<Name> | undefined>;
19
23
  }
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ScopeEntry = void 0;
4
4
  const base_entry_1 = require("./base.entry");
5
- const path_utils_1 = require("../../auth/path.utils");
5
+ const utils_1 = require("../utils");
6
6
  class ScopeEntry extends base_entry_1.BaseEntry {
7
7
  get fullPath() {
8
- const prefix = (0, path_utils_1.normalizeEntryPrefix)(this.entryPath ?? '');
9
- const scope = (0, path_utils_1.normalizeScopeBase)(this.routeBase ?? '');
8
+ const prefix = (0, utils_1.normalizeEntryPrefix)(this.entryPath ?? '');
9
+ const scope = (0, utils_1.normalizeScopeBase)(this.routeBase ?? '');
10
10
  return `${prefix}${scope}`;
11
11
  }
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scope.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/scope.entry.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAWvC,sDAA+E;AAE/E,MAAsB,UAAW,SAAQ,sBAAqD;IAM5F,IAAI,QAAQ;QACV,MAAM,MAAM,GAAG,IAAA,iCAAoB,EAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,IAAA,+BAAkB,EAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;IAC7B,CAAC;CAiBF;AA3BD,gCA2BC","sourcesContent":["import {BaseEntry} from './base.entry';\nimport {ScopeRecord} from '../records';\nimport {\n ScopeInterface,\n ProviderRegistryInterface,\n AppRegistryInterface,\n AuthRegistryInterface,\n FrontMcpAuth,\n Token, FlowInputOf, FlowOutputOf, Type, FlowType, FrontMcpLogger, ToolRegistryInterface, HookRegistryInterface,\n} from '../interfaces';\nimport {FlowName, ScopeMetadata} from '../metadata';\nimport {normalizeEntryPrefix, normalizeScopeBase} from \"../../auth/path.utils\";\n\nexport abstract class ScopeEntry extends BaseEntry<ScopeRecord, ScopeInterface, ScopeMetadata> {\n abstract readonly id: string;\n abstract readonly entryPath: string;\n abstract readonly routeBase: string;\n abstract readonly logger: FrontMcpLogger;\n\n get fullPath(): string {\n const prefix = normalizeEntryPrefix(this.entryPath ?? '');\n const scope = normalizeScopeBase(this.routeBase ?? '');\n return `${prefix}${scope}`;\n }\n\n abstract get auth(): FrontMcpAuth;\n\n abstract get hooks(): HookRegistryInterface;\n\n abstract get authProviders(): AuthRegistryInterface;\n\n abstract get providers(): ProviderRegistryInterface;\n\n abstract get apps(): AppRegistryInterface;\n\n abstract get tools(): ToolRegistryInterface;\n\n abstract registryFlows(...flows: FlowType[]): Promise<void>;\n\n abstract runFlow<Name extends FlowName>(name: Name, input: FlowInputOf<Name>, additionalDeps?: Map<Token, Type>): Promise<FlowOutputOf<Name> | undefined>;\n}\n"]}
1
+ {"version":3,"file":"scope.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/scope.entry.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAoBzC,oCAAoE;AAGpE,MAAsB,UAAW,SAAQ,sBAAqD;IAM5F,IAAI,QAAQ;QACV,MAAM,MAAM,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;IAC7B,CAAC;CA2BF;AArCD,gCAqCC","sourcesContent":["import { BaseEntry } from './base.entry';\nimport { ScopeRecord } from '../records';\nimport {\n ScopeInterface,\n ProviderRegistryInterface,\n AppRegistryInterface,\n AuthRegistryInterface,\n FrontMcpAuth,\n Token,\n FlowInputOf,\n FlowOutputOf,\n Type,\n FlowType,\n FrontMcpLogger,\n ToolRegistryInterface,\n HookRegistryInterface,\n ResourceRegistryInterface,\n PromptRegistryInterface,\n} from '../interfaces';\nimport { FlowName, ScopeMetadata } from '../metadata';\nimport { normalizeEntryPrefix, normalizeScopeBase } from '../utils';\nimport type { NotificationService } from '../../notification';\n\nexport abstract class ScopeEntry extends BaseEntry<ScopeRecord, ScopeInterface, ScopeMetadata> {\n abstract readonly id: string;\n abstract readonly entryPath: string;\n abstract readonly routeBase: string;\n abstract readonly logger: FrontMcpLogger;\n\n get fullPath(): string {\n const prefix = normalizeEntryPrefix(this.entryPath ?? '');\n const scope = normalizeScopeBase(this.routeBase ?? '');\n return `${prefix}${scope}`;\n }\n\n abstract get auth(): FrontMcpAuth;\n\n abstract get hooks(): HookRegistryInterface;\n\n abstract get authProviders(): AuthRegistryInterface;\n\n abstract get providers(): ProviderRegistryInterface;\n\n abstract get apps(): AppRegistryInterface;\n\n abstract get tools(): ToolRegistryInterface;\n\n abstract get resources(): ResourceRegistryInterface;\n\n abstract get prompts(): PromptRegistryInterface;\n\n abstract get notifications(): NotificationService;\n\n abstract registryFlows(...flows: FlowType[]): Promise<void>;\n\n abstract runFlow<Name extends FlowName>(\n name: Name,\n input: FlowInputOf<Name>,\n additionalDeps?: Map<Token, Type>,\n ): Promise<FlowOutputOf<Name> | undefined>;\n}\n"]}
@@ -0,0 +1,56 @@
1
+ import { ZodType } from 'zod';
2
+ /**
3
+ * Parse list request input and validate method.
4
+ * Common pattern used in tools/list, resources/list, etc.
5
+ *
6
+ * @param rawInput - Raw input from the flow
7
+ * @param schema - Zod schema for the input
8
+ * @param expectedMethod - Expected MCP method (e.g., 'tools/list', 'resources/list')
9
+ * @returns Parsed params including cursor
10
+ */
11
+ export declare function parseListInput<T extends ZodType>(rawInput: unknown, schema: T, expectedMethod: string): {
12
+ cursor?: string;
13
+ params: Record<string, unknown>;
14
+ };
15
+ /**
16
+ * Entry with owner information for conflict resolution
17
+ */
18
+ export interface OwnedEntry<T> {
19
+ ownerName: string;
20
+ entry: T;
21
+ }
22
+ /**
23
+ * Resolved entry with final name after conflict resolution
24
+ */
25
+ export interface ResolvedEntry<T> extends OwnedEntry<T> {
26
+ finalName: string;
27
+ }
28
+ /**
29
+ * Resolve name conflicts by prefixing with owner name.
30
+ * Used for tools, resources, prompts, etc.
31
+ *
32
+ * @param entries - Array of entries with owner names
33
+ * @param getBaseName - Function to extract base name from entry
34
+ * @returns Resolved entries with final names
35
+ */
36
+ export declare function resolveNameConflicts<T>(entries: OwnedEntry<T>[], getBaseName: (entry: T) => string): ResolvedEntry<T>[];
37
+ /**
38
+ * Get a preview of items for logging (first N items).
39
+ *
40
+ * @param items - Array of items
41
+ * @param getName - Function to extract display name from item
42
+ * @param n - Number of items to preview (default: 5)
43
+ * @returns Formatted preview string
44
+ */
45
+ export declare function previewItems<T>(items: T[], getName: (item: T) => string, n?: number): string;
46
+ /**
47
+ * Get the count of conflicts from entries.
48
+ *
49
+ * @param entries - Array of entries
50
+ * @param getBaseName - Function to extract base name from entry
51
+ * @returns Object with conflict count and conflict names
52
+ */
53
+ export declare function detectConflicts<T>(entries: T[], getBaseName: (entry: T) => string): {
54
+ count: number;
55
+ names: string[];
56
+ };
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ // file: libs/sdk/src/common/flow/flow.utils.ts
3
+ // Shared utilities for list flows (tools/list, resources/list, etc.)
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.parseListInput = parseListInput;
6
+ exports.resolveNameConflicts = resolveNameConflicts;
7
+ exports.previewItems = previewItems;
8
+ exports.detectConflicts = detectConflicts;
9
+ const zod_1 = require("zod");
10
+ const errors_1 = require("../../errors");
11
+ /**
12
+ * Parse list request input and validate method.
13
+ * Common pattern used in tools/list, resources/list, etc.
14
+ *
15
+ * @param rawInput - Raw input from the flow
16
+ * @param schema - Zod schema for the input
17
+ * @param expectedMethod - Expected MCP method (e.g., 'tools/list', 'resources/list')
18
+ * @returns Parsed params including cursor
19
+ */
20
+ function parseListInput(rawInput, schema, expectedMethod) {
21
+ let method;
22
+ let params;
23
+ try {
24
+ const inputData = schema.parse(rawInput);
25
+ method = inputData.request.method;
26
+ params = inputData.request.params ?? {};
27
+ }
28
+ catch (e) {
29
+ throw new errors_1.InvalidInputError('Invalid request format', e instanceof zod_1.z.ZodError ? e.issues : undefined);
30
+ }
31
+ if (method !== expectedMethod) {
32
+ throw new errors_1.InvalidMethodError(method, expectedMethod);
33
+ }
34
+ return {
35
+ cursor: params?.['cursor'],
36
+ params,
37
+ };
38
+ }
39
+ /**
40
+ * Resolve name conflicts by prefixing with owner name.
41
+ * Used for tools, resources, prompts, etc.
42
+ *
43
+ * @param entries - Array of entries with owner names
44
+ * @param getBaseName - Function to extract base name from entry
45
+ * @returns Resolved entries with final names
46
+ */
47
+ function resolveNameConflicts(entries, getBaseName) {
48
+ // Count occurrences of each base name
49
+ const counts = new Map();
50
+ for (const { entry } of entries) {
51
+ const baseName = getBaseName(entry);
52
+ counts.set(baseName, (counts.get(baseName) ?? 0) + 1);
53
+ }
54
+ // Find which names have conflicts (appear more than once)
55
+ const conflicts = new Set([...counts.entries()].filter(([, n]) => n > 1).map(([k]) => k));
56
+ // Resolve by prefixing conflicting names with owner
57
+ return entries.map(({ ownerName, entry }) => {
58
+ const baseName = getBaseName(entry);
59
+ const finalName = conflicts.has(baseName) ? `${ownerName}:${baseName}` : baseName;
60
+ return { ownerName, entry, finalName };
61
+ });
62
+ }
63
+ /**
64
+ * Get a preview of items for logging (first N items).
65
+ *
66
+ * @param items - Array of items
67
+ * @param getName - Function to extract display name from item
68
+ * @param n - Number of items to preview (default: 5)
69
+ * @returns Formatted preview string
70
+ */
71
+ function previewItems(items, getName, n = 5) {
72
+ const names = items.slice(0, n).map(getName);
73
+ const preview = names.join(', ');
74
+ const extra = items.length > n ? `, +${items.length - n} more` : '';
75
+ return `${preview}${extra}`;
76
+ }
77
+ /**
78
+ * Get the count of conflicts from entries.
79
+ *
80
+ * @param entries - Array of entries
81
+ * @param getBaseName - Function to extract base name from entry
82
+ * @returns Object with conflict count and conflict names
83
+ */
84
+ function detectConflicts(entries, getBaseName) {
85
+ const counts = new Map();
86
+ for (const entry of entries) {
87
+ const baseName = getBaseName(entry);
88
+ counts.set(baseName, (counts.get(baseName) ?? 0) + 1);
89
+ }
90
+ const conflictNames = [...counts.entries()].filter(([, n]) => n > 1).map(([k]) => k);
91
+ return {
92
+ count: conflictNames.length,
93
+ names: conflictNames,
94
+ };
95
+ }
96
+ //# sourceMappingURL=flow.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.utils.js","sourceRoot":"","sources":["../../../../src/common/flow/flow.utils.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,qEAAqE;;AAcrE,wCAwBC;AAyBD,oDAoBC;AAUD,oCAKC;AASD,0CAgBC;AAzHD,6BAAiC;AACjC,yCAAqE;AAErE;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAC5B,QAAiB,EACjB,MAAS,EACT,cAAsB;IAEtB,IAAI,MAAc,CAAC;IACnB,IAAI,MAA+B,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAqE,CAAC;QAC7G,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IAC1C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,0BAAiB,CAAC,wBAAwB,EAAE,CAAC,YAAY,OAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxG,CAAC;IAED,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;QAC9B,MAAM,IAAI,2BAAkB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAuB;QAChD,MAAM;KACP,CAAC;AACJ,CAAC;AAiBD;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAClC,OAAwB,EACxB,WAAiC;IAEjC,sCAAsC;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,0DAA0D;IAC1D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAElG,oDAAoD;IACpD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAI,KAAU,EAAE,OAA4B,EAAE,CAAC,GAAG,CAAC;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,OAAO,GAAG,OAAO,GAAG,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,OAAY,EACZ,WAAiC;IAEjC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAErF,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,KAAK,EAAE,aAAa;KACrB,CAAC;AACJ,CAAC","sourcesContent":["// file: libs/sdk/src/common/flow/flow.utils.ts\n// Shared utilities for list flows (tools/list, resources/list, etc.)\n\nimport { z, ZodType } from 'zod';\nimport { InvalidInputError, InvalidMethodError } from '../../errors';\n\n/**\n * Parse list request input and validate method.\n * Common pattern used in tools/list, resources/list, etc.\n *\n * @param rawInput - Raw input from the flow\n * @param schema - Zod schema for the input\n * @param expectedMethod - Expected MCP method (e.g., 'tools/list', 'resources/list')\n * @returns Parsed params including cursor\n */\nexport function parseListInput<T extends ZodType>(\n rawInput: unknown,\n schema: T,\n expectedMethod: string,\n): { cursor?: string; params: Record<string, unknown> } {\n let method: string;\n let params: Record<string, unknown>;\n\n try {\n const inputData = schema.parse(rawInput) as { request: { method: string; params: Record<string, unknown> } };\n method = inputData.request.method;\n params = inputData.request.params ?? {};\n } catch (e) {\n throw new InvalidInputError('Invalid request format', e instanceof z.ZodError ? e.issues : undefined);\n }\n\n if (method !== expectedMethod) {\n throw new InvalidMethodError(method, expectedMethod);\n }\n\n return {\n cursor: params?.['cursor'] as string | undefined,\n params,\n };\n}\n\n/**\n * Entry with owner information for conflict resolution\n */\nexport interface OwnedEntry<T> {\n ownerName: string;\n entry: T;\n}\n\n/**\n * Resolved entry with final name after conflict resolution\n */\nexport interface ResolvedEntry<T> extends OwnedEntry<T> {\n finalName: string;\n}\n\n/**\n * Resolve name conflicts by prefixing with owner name.\n * Used for tools, resources, prompts, etc.\n *\n * @param entries - Array of entries with owner names\n * @param getBaseName - Function to extract base name from entry\n * @returns Resolved entries with final names\n */\nexport function resolveNameConflicts<T>(\n entries: OwnedEntry<T>[],\n getBaseName: (entry: T) => string,\n): ResolvedEntry<T>[] {\n // Count occurrences of each base name\n const counts = new Map<string, number>();\n for (const { entry } of entries) {\n const baseName = getBaseName(entry);\n counts.set(baseName, (counts.get(baseName) ?? 0) + 1);\n }\n\n // Find which names have conflicts (appear more than once)\n const conflicts = new Set<string>([...counts.entries()].filter(([, n]) => n > 1).map(([k]) => k));\n\n // Resolve by prefixing conflicting names with owner\n return entries.map(({ ownerName, entry }) => {\n const baseName = getBaseName(entry);\n const finalName = conflicts.has(baseName) ? `${ownerName}:${baseName}` : baseName;\n return { ownerName, entry, finalName };\n });\n}\n\n/**\n * Get a preview of items for logging (first N items).\n *\n * @param items - Array of items\n * @param getName - Function to extract display name from item\n * @param n - Number of items to preview (default: 5)\n * @returns Formatted preview string\n */\nexport function previewItems<T>(items: T[], getName: (item: T) => string, n = 5): string {\n const names = items.slice(0, n).map(getName);\n const preview = names.join(', ');\n const extra = items.length > n ? `, +${items.length - n} more` : '';\n return `${preview}${extra}`;\n}\n\n/**\n * Get the count of conflicts from entries.\n *\n * @param entries - Array of entries\n * @param getBaseName - Function to extract base name from entry\n * @returns Object with conflict count and conflict names\n */\nexport function detectConflicts<T>(\n entries: T[],\n getBaseName: (entry: T) => string,\n): { count: number; names: string[] } {\n const counts = new Map<string, number>();\n for (const entry of entries) {\n const baseName = getBaseName(entry);\n counts.set(baseName, (counts.get(baseName) ?? 0) + 1);\n }\n\n const conflictNames = [...counts.entries()].filter(([, n]) => n > 1).map(([k]) => k);\n\n return {\n count: conflictNames.length,\n names: conflictNames,\n };\n}\n"]}
@@ -9,9 +9,9 @@ export * from './records';
9
9
  export * from './entries';
10
10
  export * from './utils';
11
11
  export * from './schemas';
12
- export * from './decorators-old/async-with.decorator';
13
- export * from './decorators-old/session-hook.decorator';
12
+ export * from './flow/flow.utils';
14
13
  export * from './interfaces/tool-hook.interface';
15
14
  export * from './interfaces/session-hook.interface';
16
15
  export * from './interfaces/auth-hook.interface';
17
16
  export * from './providers/session.provider';
17
+ export * from './providers/base-config.provider';
@@ -12,10 +12,10 @@ tslib_1.__exportStar(require("./records"), exports);
12
12
  tslib_1.__exportStar(require("./entries"), exports);
13
13
  tslib_1.__exportStar(require("./utils"), exports);
14
14
  tslib_1.__exportStar(require("./schemas"), exports);
15
- tslib_1.__exportStar(require("./decorators-old/async-with.decorator"), exports);
16
- tslib_1.__exportStar(require("./decorators-old/session-hook.decorator"), exports);
15
+ tslib_1.__exportStar(require("./flow/flow.utils"), exports);
17
16
  tslib_1.__exportStar(require("./interfaces/tool-hook.interface"), exports);
18
17
  tslib_1.__exportStar(require("./interfaces/session-hook.interface"), exports);
19
18
  tslib_1.__exportStar(require("./interfaces/auth-hook.interface"), exports);
20
19
  tslib_1.__exportStar(require("./providers/session.provider"), exports);
20
+ tslib_1.__exportStar(require("./providers/base-config.provider"), exports);
21
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,uDAA6B;AAC7B,kDAAwB;AACxB,qDAA2B;AAC3B,uDAA6B;AAC7B,mDAAyB;AACzB,oDAA0B;AAC1B,oDAA0B;AAC1B,oDAA0B;AAC1B,kDAAwB;AACxB,oDAA0B;AAE1B,gFAAsD;AACtD,kFAAwD;AAExD,2EAAiD;AACjD,8EAAoD;AACpD,2EAAiD;AAGjD,uEAA6C","sourcesContent":["export * from './constants';\nexport * from './decorators';\nexport * from './types';\nexport * from './metadata';\nexport * from './interfaces';\nexport * from './tokens';\nexport * from './dynamic';\nexport * from './records';\nexport * from './entries';\nexport * from './utils';\nexport * from './schemas';\n\nexport * from './decorators-old/async-with.decorator';\nexport * from './decorators-old/session-hook.decorator';\n\nexport * from './interfaces/tool-hook.interface';\nexport * from './interfaces/session-hook.interface';\nexport * from './interfaces/auth-hook.interface';\n\n\nexport * from './providers/session.provider';\n\n\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,uDAA6B;AAC7B,kDAAwB;AACxB,qDAA2B;AAC3B,uDAA6B;AAC7B,mDAAyB;AACzB,oDAA0B;AAC1B,oDAA0B;AAC1B,oDAA0B;AAC1B,kDAAwB;AACxB,oDAA0B;AAC1B,4DAAkC;AAElC,2EAAiD;AACjD,8EAAoD;AACpD,2EAAiD;AAEjD,uEAA6C;AAC7C,2EAAiD","sourcesContent":["export * from './constants';\nexport * from './decorators';\nexport * from './types';\nexport * from './metadata';\nexport * from './interfaces';\nexport * from './tokens';\nexport * from './dynamic';\nexport * from './records';\nexport * from './entries';\nexport * from './utils';\nexport * from './schemas';\nexport * from './flow/flow.utils';\n\nexport * from './interfaces/tool-hook.interface';\nexport * from './interfaces/session-hook.interface';\nexport * from './interfaces/auth-hook.interface';\n\nexport * from './providers/session.provider';\nexport * from './providers/base-config.provider';\n"]}