@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
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ // file: libs/sdk/src/prompt/prompt.utils.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.qualifiedNameOf = exports.ownerKeyOf = exports.ensureMaxLen = exports.shortHash = exports.normalizeOwnerPath = exports.normalizeProviderId = exports.normalizeSegment = exports.sepFor = exports.toCase = exports.splitWords = void 0;
5
+ exports.collectPromptMetadata = collectPromptMetadata;
6
+ exports.normalizePrompt = normalizePrompt;
7
+ exports.promptDiscoveryDeps = promptDiscoveryDeps;
8
+ exports.buildParsedPromptResult = buildParsedPromptResult;
9
+ const common_1 = require("../common");
10
+ const token_utils_1 = require("../utils/token.utils");
11
+ const metadata_utils_1 = require("../utils/metadata.utils");
12
+ // Re-export shared naming utilities
13
+ var naming_utils_1 = require("../utils/naming.utils");
14
+ Object.defineProperty(exports, "splitWords", { enumerable: true, get: function () { return naming_utils_1.splitWords; } });
15
+ Object.defineProperty(exports, "toCase", { enumerable: true, get: function () { return naming_utils_1.toCase; } });
16
+ Object.defineProperty(exports, "sepFor", { enumerable: true, get: function () { return naming_utils_1.sepFor; } });
17
+ Object.defineProperty(exports, "normalizeSegment", { enumerable: true, get: function () { return naming_utils_1.normalizeSegment; } });
18
+ Object.defineProperty(exports, "normalizeProviderId", { enumerable: true, get: function () { return naming_utils_1.normalizeProviderId; } });
19
+ Object.defineProperty(exports, "normalizeOwnerPath", { enumerable: true, get: function () { return naming_utils_1.normalizeOwnerPath; } });
20
+ Object.defineProperty(exports, "shortHash", { enumerable: true, get: function () { return naming_utils_1.shortHash; } });
21
+ Object.defineProperty(exports, "ensureMaxLen", { enumerable: true, get: function () { return naming_utils_1.ensureMaxLen; } });
22
+ // Re-export shared lineage utilities
23
+ var lineage_utils_1 = require("../utils/lineage.utils");
24
+ Object.defineProperty(exports, "ownerKeyOf", { enumerable: true, get: function () { return lineage_utils_1.ownerKeyOf; } });
25
+ Object.defineProperty(exports, "qualifiedNameOf", { enumerable: true, get: function () { return lineage_utils_1.qualifiedNameOf; } });
26
+ /**
27
+ * Collect metadata from a class decorated with @FrontMcpPrompt
28
+ */
29
+ function collectPromptMetadata(cls) {
30
+ return Object.entries(common_1.FrontMcpPromptTokens).reduce((metadata, [key, token]) => {
31
+ const value = (0, metadata_utils_1.getMetadata)(token, cls);
32
+ if (value !== undefined) {
33
+ return Object.assign(metadata, {
34
+ [key]: value,
35
+ });
36
+ }
37
+ return metadata;
38
+ }, {});
39
+ }
40
+ /**
41
+ * Normalize any prompt input (class or function) to a PromptRecord.
42
+ *
43
+ * @param item - The prompt input to normalize. Accepts:
44
+ * - A class decorated with @FrontMcpPrompt
45
+ * - A function returned from prompt() builder
46
+ * The `any` type is intentional to handle both decorator patterns and provide
47
+ * meaningful error messages for invalid inputs.
48
+ */
49
+ function normalizePrompt(item) {
50
+ // Function-style decorator: prompt({ name: '...' })(handler)
51
+ if (item &&
52
+ typeof item === 'function' &&
53
+ item[common_1.FrontMcpPromptTokens.type] === 'function-prompt' &&
54
+ item[common_1.FrontMcpPromptTokens.metadata]) {
55
+ return {
56
+ kind: common_1.PromptKind.FUNCTION,
57
+ provide: item(),
58
+ metadata: item[common_1.FrontMcpPromptTokens.metadata],
59
+ };
60
+ }
61
+ // Class-style decorator: @FrontMcpPrompt({ name: '...' })
62
+ if ((0, token_utils_1.isClass)(item)) {
63
+ const metadata = collectPromptMetadata(item);
64
+ return { kind: common_1.PromptKind.CLASS_TOKEN, provide: item, metadata };
65
+ }
66
+ const name = item?.name ?? String(item);
67
+ throw new Error(`Invalid prompt '${name}'. Expected a class or a prompt function.`);
68
+ }
69
+ /**
70
+ * Get dependency tokens for graph/cycle detection
71
+ */
72
+ function promptDiscoveryDeps(rec) {
73
+ switch (rec.kind) {
74
+ case common_1.PromptKind.FUNCTION:
75
+ return (0, token_utils_1.depsOfFunc)(rec.provide, 'discovery');
76
+ case common_1.PromptKind.CLASS_TOKEN:
77
+ return (0, token_utils_1.depsOfClass)(rec.provide, 'discovery');
78
+ default: {
79
+ // Exhaustive check: ensures all PromptKind values are handled
80
+ const _exhaustive = rec;
81
+ throw new Error(`Unhandled prompt kind: ${_exhaustive.kind}`);
82
+ }
83
+ }
84
+ }
85
+ /**
86
+ * Build a parsed prompt result from raw output
87
+ */
88
+ function buildParsedPromptResult(raw, metadata) {
89
+ // If already in GetPromptResult format
90
+ if (raw && typeof raw === 'object' && 'messages' in raw && Array.isArray(raw.messages)) {
91
+ const rawObj = raw;
92
+ return {
93
+ description: rawObj.description ?? metadata.description,
94
+ messages: rawObj.messages,
95
+ };
96
+ }
97
+ // If raw is a string, convert to single user message
98
+ if (typeof raw === 'string') {
99
+ return {
100
+ description: metadata.description,
101
+ messages: [{ role: 'user', content: { type: 'text', text: raw } }],
102
+ };
103
+ }
104
+ // If raw is an array of messages
105
+ if (Array.isArray(raw)) {
106
+ return {
107
+ description: metadata.description,
108
+ messages: raw.map(normalizePromptMessage),
109
+ };
110
+ }
111
+ // Default: wrap in user message as JSON
112
+ return {
113
+ description: metadata.description,
114
+ messages: [{ role: 'user', content: { type: 'text', text: JSON.stringify(raw) } }],
115
+ };
116
+ }
117
+ /**
118
+ * Normalize a single message to PromptMessage format
119
+ */
120
+ function normalizePromptMessage(msg) {
121
+ // If already in correct format with valid role and content
122
+ if (msg &&
123
+ typeof msg === 'object' &&
124
+ 'role' in msg &&
125
+ 'content' in msg &&
126
+ typeof msg['role'] === 'string' &&
127
+ typeof msg['content'] === 'object') {
128
+ return msg;
129
+ }
130
+ // Assume user message with text content
131
+ return {
132
+ role: 'user',
133
+ content: { type: 'text', text: typeof msg === 'string' ? msg : JSON.stringify(msg) },
134
+ };
135
+ }
136
+ //# sourceMappingURL=prompt.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.utils.js","sourceRoot":"","sources":["../../../src/prompt/prompt.utils.ts"],"names":[],"mappings":"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","sourcesContent":["// file: libs/sdk/src/prompt/prompt.utils.ts\n\nimport {\n PromptMetadata,\n FrontMcpPromptTokens,\n PromptType,\n Token,\n PromptRecord,\n PromptKind,\n Type,\n PromptEntry,\n} from '../common';\nimport { depsOfClass, depsOfFunc, isClass } from '../utils/token.utils';\nimport { getMetadata } from '../utils/metadata.utils';\nimport { GetPromptResult, PromptMessage } from '@modelcontextprotocol/sdk/types.js';\n\n// Re-export shared naming utilities\nexport {\n splitWords,\n toCase,\n sepFor,\n normalizeSegment,\n normalizeProviderId,\n normalizeOwnerPath,\n shortHash,\n ensureMaxLen,\n} from '../utils/naming.utils';\n\n// Re-export shared lineage utilities\nexport { ownerKeyOf, qualifiedNameOf } from '../utils/lineage.utils';\n\n/**\n * Collect metadata from a class decorated with @FrontMcpPrompt\n */\nexport function collectPromptMetadata(cls: PromptType): PromptMetadata {\n return Object.entries(FrontMcpPromptTokens).reduce((metadata, [key, token]) => {\n const value = getMetadata(token, cls);\n if (value !== undefined) {\n return Object.assign(metadata, {\n [key]: value,\n });\n }\n return metadata;\n }, {} as PromptMetadata);\n}\n\n/**\n * Normalize any prompt input (class or function) to a PromptRecord.\n *\n * @param item - The prompt input to normalize. Accepts:\n * - A class decorated with @FrontMcpPrompt\n * - A function returned from prompt() builder\n * The `any` type is intentional to handle both decorator patterns and provide\n * meaningful error messages for invalid inputs.\n */\nexport function normalizePrompt(item: any): PromptRecord {\n // Function-style decorator: prompt({ name: '...' })(handler)\n if (\n item &&\n typeof item === 'function' &&\n item[FrontMcpPromptTokens.type] === 'function-prompt' &&\n item[FrontMcpPromptTokens.metadata]\n ) {\n return {\n kind: PromptKind.FUNCTION,\n provide: item(),\n metadata: item[FrontMcpPromptTokens.metadata] as PromptMetadata,\n };\n }\n\n // Class-style decorator: @FrontMcpPrompt({ name: '...' })\n if (isClass(item)) {\n const metadata = collectPromptMetadata(item as PromptType);\n return { kind: PromptKind.CLASS_TOKEN, provide: item as Type<PromptEntry>, metadata };\n }\n\n const name = (item as any)?.name ?? String(item);\n throw new Error(`Invalid prompt '${name}'. Expected a class or a prompt function.`);\n}\n\n/**\n * Get dependency tokens for graph/cycle detection\n */\nexport function promptDiscoveryDeps(rec: PromptRecord): Token[] {\n switch (rec.kind) {\n case PromptKind.FUNCTION:\n return depsOfFunc(rec.provide, 'discovery');\n case PromptKind.CLASS_TOKEN:\n return depsOfClass(rec.provide, 'discovery');\n default: {\n // Exhaustive check: ensures all PromptKind values are handled\n const _exhaustive: never = rec;\n throw new Error(`Unhandled prompt kind: ${(_exhaustive as PromptRecord).kind}`);\n }\n }\n}\n\n/**\n * Build a parsed prompt result from raw output\n */\nexport function buildParsedPromptResult(raw: unknown, metadata: PromptMetadata): GetPromptResult {\n // If already in GetPromptResult format\n if (raw && typeof raw === 'object' && 'messages' in raw && Array.isArray(raw.messages)) {\n const rawObj = raw as { description?: string; messages: unknown[] };\n return {\n description: rawObj.description ?? metadata.description,\n messages: rawObj.messages as PromptMessage[],\n };\n }\n\n // If raw is a string, convert to single user message\n if (typeof raw === 'string') {\n return {\n description: metadata.description,\n messages: [{ role: 'user', content: { type: 'text', text: raw } }],\n };\n }\n\n // If raw is an array of messages\n if (Array.isArray(raw)) {\n return {\n description: metadata.description,\n messages: raw.map(normalizePromptMessage),\n };\n }\n\n // Default: wrap in user message as JSON\n return {\n description: metadata.description,\n messages: [{ role: 'user', content: { type: 'text', text: JSON.stringify(raw) } }],\n };\n}\n\n/**\n * Normalize a single message to PromptMessage format\n */\nfunction normalizePromptMessage(msg: unknown): PromptMessage {\n // If already in correct format with valid role and content\n if (\n msg &&\n typeof msg === 'object' &&\n 'role' in msg &&\n 'content' in msg &&\n typeof (msg as Record<string, unknown>)['role'] === 'string' &&\n typeof (msg as Record<string, unknown>)['content'] === 'object'\n ) {\n return msg as PromptMessage;\n }\n\n // Assume user message with text content\n return {\n role: 'user',\n content: { type: 'text', text: typeof msg === 'string' ? msg : JSON.stringify(msg) },\n };\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  import 'reflect-metadata';
2
- import { ProviderInterface, ProviderType, ProviderScope, Token, ProviderRegistryInterface, ProviderRecord, ProviderInjectedRecord, RegistryKind, RegistryType, ProviderEntry, FrontMcpServer } from '../common';
2
+ import { ProviderInterface, ProviderType, ProviderScope, Token, ProviderRegistryInterface, ProviderRecord, ProviderInjectedRecord, ScopeEntry, RegistryKind, RegistryType, ProviderEntry, FrontMcpServer } from '../common';
3
3
  import { RegistryAbstract, RegistryBuildMapResult } from '../regsitry';
4
4
  import { ProviderViews } from './provider.types';
5
5
  import { Scope } from '../scope';
6
- import HookRegistry from "../hooks/hook.registry";
6
+ import HookRegistry from '../hooks/hook.registry';
7
7
  export default class ProviderRegistry extends RegistryAbstract<ProviderEntry, ProviderRecord, ProviderType[], ProviderRegistry | undefined> implements ProviderRegistryInterface {
8
8
  private readonly parentProviders?;
9
9
  /** used to track which registry provided which token */
@@ -32,7 +32,8 @@ export default class ProviderRegistry extends RegistryAbstract<ProviderEntry, Pr
32
32
  getAllSingletons(): ReadonlyMap<Token, unknown>;
33
33
  discoveryDeps(rec: ProviderRecord): Token[];
34
34
  invocationTokens(_token: Token, rec: ProviderRecord): Token[];
35
- getScope(rec: ProviderRecord): ProviderScope;
35
+ getProviderScope(rec: ProviderRecord): ProviderScope;
36
+ getScope(): ScopeEntry;
36
37
  private withTimeout;
37
38
  private resolveFactoryArg;
38
39
  /** Build a single DEFAULT-scoped singleton (used by incremental instantiating). */
@@ -40,7 +41,7 @@ export default class ProviderRegistry extends RegistryAbstract<ProviderEntry, Pr
40
41
  private buildIntoStore;
41
42
  private resolveManagedForClass;
42
43
  get<T>(token: Token<T>): T;
43
- addRegistry(type: RegistryKind, value: RegistryType): void;
44
+ addRegistry<T extends RegistryKind>(type: T, value: RegistryType[T]): void;
44
45
  getRegistries<T extends RegistryKind>(type: T): RegistryType[T][];
45
46
  getHooksRegistry(): HookRegistry;
46
47
  getScopeRegistry(): import("../common").ScopeRegistryInterface;
@@ -67,9 +68,15 @@ export default class ProviderRegistry extends RegistryAbstract<ProviderEntry, Pr
67
68
  instance: ProviderEntry;
68
69
  };
69
70
  injectProvider(injected: Omit<ProviderInjectedRecord, 'kind'>): void;
70
- addDynamicProviders(dynamicProviders: ProviderRecord[]): Promise<void[]>;
71
+ addDynamicProviders(dynamicProviders: ProviderType[]): Promise<void[]>;
71
72
  private getWithParents;
72
73
  getActiveScope(): Scope;
73
74
  getActiveServer(): FrontMcpServer;
75
+ /**
76
+ * Build provider instance views for different scopes
77
+ * NOTE: This is currently a stub implementation returning empty maps.
78
+ * Actual view building logic is planned as part of the session management refactoring.
79
+ * See the ProviderRegistryInterface TODO for fixing the session type.
80
+ */
74
81
  buildViews(session: string): Promise<ProviderViews>;
75
82
  }
@@ -40,7 +40,7 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
40
40
  if (!found)
41
41
  throw new Error(`Cannot resolve token ${(0, token_utils_1.tokenName)(token)}: not registered in hierarchy.`);
42
42
  const { registry, rec } = found;
43
- const sc = registry.getScope(rec);
43
+ const sc = registry.getProviderScope(rec);
44
44
  if (sc !== common_1.ProviderScope.GLOBAL) {
45
45
  const scName = common_1.ProviderScope[sc];
46
46
  throw new Error(`Dependency ${(0, token_utils_1.tokenName)(token)} is scoped (${scName}) in ${registry.constructor.name}; cannot use as DEFAULT.`);
@@ -76,8 +76,8 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
76
76
  throw new Error(`Provider ${(0, token_utils_1.tokenName)(token)} depends on ${(0, token_utils_1.tokenName)(d)}, which is not registered (local or parent).`);
77
77
  }
78
78
  const depRec = isLocal ? this.defs.get(d) : up.rec;
79
- const depScope = isLocal ? this.getScope(depRec) : up.registry.getScope(depRec);
80
- if (this.getScope(rec) === common_1.ProviderScope.GLOBAL && depScope !== common_1.ProviderScope.GLOBAL) {
79
+ const depScope = isLocal ? this.getProviderScope(depRec) : up.registry.getProviderScope(depRec);
80
+ if (this.getProviderScope(rec) === common_1.ProviderScope.GLOBAL && depScope !== common_1.ProviderScope.GLOBAL) {
81
81
  throw new Error(`Invalid dependency: DEFAULT-scoped provider ${(0, token_utils_1.tokenName)(token)} cannot depend on scoped provider ${(0, token_utils_1.tokenName)(d)}.`);
82
82
  }
83
83
  // Only wire local -> local edges in our local graph; parent deps are external to this DAG.
@@ -122,7 +122,7 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
122
122
  const only = opts?.onlyTokens ? new Set(opts.onlyTokens) : null;
123
123
  for (const token of this.order) {
124
124
  const rec = this.defs.get(token);
125
- if (this.getScope(rec) !== common_1.ProviderScope.GLOBAL)
125
+ if (this.getProviderScope(rec) !== common_1.ProviderScope.GLOBAL)
126
126
  continue;
127
127
  if (only && !only.has(token))
128
128
  continue;
@@ -136,7 +136,8 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
136
136
  }
137
137
  catch (e) {
138
138
  const msg = e?.message ?? e;
139
- console.error(`Failed instantiating`, e);
139
+ // Use safe logging to avoid Node.js 24 util.inspect bug with Zod errors
140
+ console.error(`Failed instantiating:`, msg);
140
141
  throw new Error(`Failed constructing ${(0, token_utils_1.tokenName)(token)}: ${msg}`);
141
142
  }
142
143
  }
@@ -146,136 +147,18 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
146
147
  getAllSingletons() {
147
148
  return this.instances; // exposed as ReadonlyMap in the type
148
149
  }
149
- // /** Get (or create) the mutable session store for a sessionId. */
150
- // sessionMap(sessionId: string): Map<Token, unknown> {
151
- // let store = this.scoped.get(sessionId);
152
- // if (!store) {
153
- // store = new Map<Token, unknown>();
154
- // this.scoped.set(sessionId, store);
155
- // }
156
- // return store;
157
- // }
158
- // /** Try to build SessionProvider from registered DI definition (CLASS/FACTORY/etc.). */
159
- // private async tryBuildRegisteredSessionProvider(
160
- // sessionId: string,
161
- // requestId?: string | number,
162
- // ): Promise<SessionProvider | undefined> {
163
- // // Prefer local def; otherwise look up in hierarchy
164
- // const found = this.lookupDefInHierarchy(SessionProvider as unknown as Token);
165
- // const rec = found?.rec;
166
- // const reg = found?.registry;
167
- //
168
- // if (!rec) return undefined;
169
- //
170
- // const sc = (rec as any).scope ?? ProviderScope.GLOBAL;
171
- // if (sc === ProviderScope.GLOBAL) {
172
- // // If someone registered a DEFAULT-scoped SessionProvider, use the singleton instance (from the owning registry)
173
- // if (!reg!.instances.has(SessionProvider)) {
174
- // throw new Error(
175
- // `Registered ${tokenName(SessionProvider)} (DEFAULT) not instantiated at bootstrap`,
176
- // );
177
- // }
178
- // return reg!.instances.get(SessionProvider) as SessionProvider;
179
- // }
180
- //
181
- // // Build into the session store using the owning registry's factory (so its metadata/defs are used)
182
- // const store = this.sessionMap(sessionId);
183
- // await reg!.buildIntoStore(
184
- // SessionProvider as unknown as Token,
185
- // rec,
186
- // store,
187
- // sessionId,
188
- // [sessionId, requestId],
189
- // );
190
- // const sp = store.get(SessionProvider as unknown as Token) as SessionProvider | undefined;
191
- //
192
- // // Ensure request id is set/updated, if setter exists
193
- // if (sp && requestId && typeof sp.setRequestId === 'function') sp.setRequestId(requestId);
194
- // return sp;
195
- // }
196
- // /** Ensure a SessionProvider is present in the session map (registered or anonymous).
197
- // * @deprecated
198
- // */
199
- // async ensureSessionProvider(sessionId: string, requestId?: string | number): Promise<SessionProvider> {
200
- // const store = this.sessionMap(sessionId);
201
- //
202
- // // already present
203
- // if (store.has(SessionProvider)) {
204
- // const sp = store.get(SessionProvider) as SessionProvider;
205
- // if (requestId && typeof sp.setRequestId === 'function') sp.setRequestId(requestId);
206
- // return sp;
207
- // }
208
- //
209
- // // try registered provider first (local or parent)
210
- // const registered = await this.tryBuildRegisteredSessionProvider(sessionId, requestId);
211
- // return registered as SessionProvider;
212
- //
213
- // }
214
- // /**
215
- // * Create (or get) an authenticated session store, seed SessionProvider if missing.
216
- // * @deprecated
217
- // * */
218
- // bootstrapSession(sessionId: string, requestId?: string): Map<Token, unknown> {
219
- // let store = this.scoped.get(sessionId);
220
- // if (!store) {
221
- // store = new Map<Token, unknown>();
222
- // this.scoped.set(sessionId, store);
223
- // }
224
- // if (!store.has(SessionProvider)) {
225
- // store.set(SessionProvider, {}); // new SessionProvider(sessionId, requestId ?? '', false));
226
- // } else if (requestId) {
227
- // (store.get(SessionProvider) as SessionProvider).setRequestId(requestId);
228
- // }
229
- // return store;
230
- // }
231
- // /**
232
- // * Returns all tokens that are registered as session-scoped (including SessionProvider).
233
- // * @deprecated
234
- // */
235
- // listSessionScopedTokens(): Token[] {
236
- // const out: Token[] = [];
237
- // // Only local scoped tokens are known here; parent-scoped tokens will be pulled on demand.
238
- // for (const [tok, rec] of this.defs.entries()) {
239
- // if (this.getScope(rec) === ProviderScope.SESSION) out.push(tok);
240
- // }
241
- // return out;
242
- // }
243
- // /** Eager build selected session providers into the given session store. */
244
- // private async buildSelectedSessionProviders(sessionId: string, requestId?: string | number): Promise<void> {
245
- // const store = this.sessionMap(sessionId);
246
- // await this.ensureSessionProvider(sessionId, requestId);
247
- //
248
- // // Iterate over all session-scoped tokens (local list). Parent-scoped will resolve on demand.
249
- // for (const tok of this.listSessionScopedTokens()) {
250
- // if (tok === (SessionProvider as any)) continue;
251
- //
252
- // if (store.has(tok)) continue; // already built
253
- //
254
- // const rec = this.defs.get(tok);
255
- // if (!rec) continue; // should not happen
256
- //
257
- // // Recursively build into this session store (handles scoped/default deps)
258
- // await this.buildIntoStore(tok, rec, store, sessionId);
259
- // }
260
- // }
261
- // /** Convenience: build all three maps you can pass straight into an invoke ctx. */
262
- // async buildViews(sessionId: string, requestId?: string | number): Promise<ProviderViews> {
263
- // await this.buildSelectedSessionProviders(sessionId, requestId);
264
- // return {
265
- // global: this.getAllSingletons(),
266
- // session: this.sessionMap(sessionId),
267
- // request: new Map<Token, unknown>(),
268
- // };
269
- // }
270
150
  discoveryDeps(rec) {
271
151
  return (0, provider_utils_1.providerDiscoveryDeps)(rec, this.tokens, (k, phase) => (0, token_utils_1.depsOfClass)(k, phase));
272
152
  }
273
153
  invocationTokens(_token, rec) {
274
154
  return (0, provider_utils_1.providerInvocationTokens)(rec, (k, phase) => (0, token_utils_1.depsOfClass)(k, phase));
275
155
  }
276
- getScope(rec) {
156
+ getProviderScope(rec) {
277
157
  return rec.metadata?.scope ?? common_1.ProviderScope.GLOBAL;
278
158
  }
159
+ getScope() {
160
+ return this.getActiveScope();
161
+ }
279
162
  /* -------------------- Instantiation -------------------- */
280
163
  async withTimeout(p, ms, label) {
281
164
  if (ms <= 0 || !Number.isFinite(ms))
@@ -297,7 +180,7 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
297
180
  // Local def?
298
181
  const rec = this.defs.get(t);
299
182
  if (rec) {
300
- const sc = this.getScope(rec);
183
+ const sc = this.getProviderScope(rec);
301
184
  if (sc === common_1.ProviderScope.GLOBAL) {
302
185
  if (!this.instances.has(t)) {
303
186
  throw new Error(`Dependency ${(0, token_utils_1.tokenName)(t)} (DEFAULT scope) is not instantiated`);
@@ -312,7 +195,7 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
312
195
  // Parent def?
313
196
  const up = this.lookupDefInHierarchy(t);
314
197
  if (up) {
315
- const sc = up.registry.getScope(up.rec);
198
+ const sc = up.registry.getProviderScope(up.rec);
316
199
  if (sc === common_1.ProviderScope.GLOBAL) {
317
200
  const inst = up.registry.instances.get(t);
318
201
  if (inst === undefined) {
@@ -485,7 +368,8 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
485
368
  }
486
369
  catch (e) {
487
370
  const msg = e?.message ?? e;
488
- console.error(`Failed constructing`, e);
371
+ // Use safe logging to avoid Node.js 24 util.inspect bug with Zod errors
372
+ console.error(`Failed constructing:`, msg);
489
373
  throw new Error(`Failed constructing (scoped) ${(0, token_utils_1.tokenName)(token)}: ${msg}`);
490
374
  }
491
375
  }
@@ -500,7 +384,7 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
500
384
  // Local DI?
501
385
  const depRec = this.defs.get(d);
502
386
  if (depRec) {
503
- const sc = this.getScope(depRec);
387
+ const sc = this.getProviderScope(depRec);
504
388
  if (sc === common_1.ProviderScope.GLOBAL) {
505
389
  const v = this.instances.get(d);
506
390
  if (v === undefined)
@@ -515,7 +399,7 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
515
399
  // Parent DI?
516
400
  const up = this.lookupDefInHierarchy(d);
517
401
  if (up) {
518
- const sc = up.registry.getScope(up.rec);
402
+ const sc = up.registry.getProviderScope(up.rec);
519
403
  if (sc === common_1.ProviderScope.GLOBAL) {
520
404
  const v = up.registry.instances.get(d);
521
405
  if (v === undefined)
@@ -533,8 +417,8 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
533
417
  if (this.instances.has(token))
534
418
  return this.instances.get(token);
535
419
  const rec = this.defs.get(token);
536
- if (rec && this.getScope(rec) !== common_1.ProviderScope.GLOBAL) {
537
- const scName = common_1.ProviderScope[this.getScope(rec)];
420
+ if (rec && this.getProviderScope(rec) !== common_1.ProviderScope.GLOBAL) {
421
+ const scName = common_1.ProviderScope[this.getProviderScope(rec)];
538
422
  throw new Error(`Provider ${(0, token_utils_1.tokenName)(token)} is scoped (${scName}). Use getScoped(token, key).`);
539
423
  }
540
424
  // bubble to parent
@@ -552,7 +436,7 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
552
436
  registry.add(value);
553
437
  }
554
438
  getRegistries(type) {
555
- return [...this.registries.get(type) ?? []];
439
+ return [...(this.registries.get(type) ?? [])];
556
440
  }
557
441
  getHooksRegistry() {
558
442
  return this.getRegistries('HookRegistry')[0];
@@ -570,7 +454,7 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
570
454
  const found = this.lookupDefInHierarchy(t);
571
455
  if (found) {
572
456
  const { registry, rec } = found;
573
- const sc = registry.getScope(rec);
457
+ const sc = registry.getProviderScope(rec);
574
458
  if (sc !== common_1.ProviderScope.GLOBAL)
575
459
  throw new Error(`Plugin dependency ${(0, token_utils_1.tokenName)(t)} must be DEFAULT-scoped at bootstrap`);
576
460
  const v = registry.instances.get(t);
@@ -591,7 +475,7 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
591
475
  const found = this.lookupDefInHierarchy(cls);
592
476
  if (found) {
593
477
  const { registry, rec } = found;
594
- const sc = registry.getScope(rec);
478
+ const sc = registry.getProviderScope(rec);
595
479
  if (sc !== common_1.ProviderScope.GLOBAL) {
596
480
  const scName = common_1.ProviderScope[sc];
597
481
  throw new Error(`Provider ${(0, token_utils_1.tokenName)(cls)} is scoped (${scName}). Use getScoped(token, key) or buildViews(...).`);
@@ -649,7 +533,9 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
649
533
  this.instances.set(rec.provide, rec.value);
650
534
  }
651
535
  async addDynamicProviders(dynamicProviders) {
652
- return Promise.all(dynamicProviders.map((rec) => this.initiateOne(rec.provide, rec)));
536
+ // Normalize ProviderType[] to ProviderRecord[] before instantiation
537
+ const normalized = dynamicProviders.map((p) => (0, provider_utils_1.normalizeProvider)(p));
538
+ return Promise.all(normalized.map((rec) => this.initiateOne(rec.provide, rec)));
653
539
  }
654
540
  getWithParents(token) {
655
541
  if (this.instances.has(token)) {
@@ -667,6 +553,12 @@ class ProviderRegistry extends regsitry_1.RegistryAbstract {
667
553
  getActiveServer() {
668
554
  return this.getWithParents(common_1.FrontMcpServer);
669
555
  }
556
+ /**
557
+ * Build provider instance views for different scopes
558
+ * NOTE: This is currently a stub implementation returning empty maps.
559
+ * Actual view building logic is planned as part of the session management refactoring.
560
+ * See the ProviderRegistryInterface TODO for fixing the session type.
561
+ */
670
562
  async buildViews(session) {
671
563
  return {
672
564
  global: new Map(),