@frontmcp/sdk 0.6.1 → 0.6.2

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 (1059) hide show
  1. package/{src/auth → auth}/instances/instance.local-primary-auth.d.ts +1 -1
  2. package/{src/auth → auth}/instances/instance.remote-primary-auth.d.ts +1 -1
  3. package/{src/common → common}/interfaces/internal/primary-auth-provider.interface.d.ts +1 -4
  4. package/{src/common → common}/metadata/front-mcp.metadata.d.ts +1074 -44
  5. package/common/types/options/auth/app-auth.schema.d.ts +275 -0
  6. package/common/types/options/auth/auth.interfaces.d.ts +461 -0
  7. package/common/types/options/auth/auth.schema.d.ts +284 -0
  8. package/common/types/options/auth/auth.utils.d.ts +32 -0
  9. package/common/types/options/auth/index.d.ts +16 -0
  10. package/common/types/options/auth/orchestrated.schema.d.ts +381 -0
  11. package/common/types/options/auth/public.schema.d.ts +42 -0
  12. package/common/types/options/auth/shared.schemas.d.ts +120 -0
  13. package/common/types/options/auth/transparent.schema.d.ts +56 -0
  14. package/common/types/options/auth/transport.deprecated.d.ts +63 -0
  15. package/{src/common → common}/types/options/index.d.ts +1 -1
  16. package/{src/common → common}/types/options/transport.options.d.ts +6 -1
  17. package/{src/common → common}/utils/decide-request-intent.utils.d.ts +6 -7
  18. package/esm/index.mjs +22664 -0
  19. package/esm/mcp-apps/index.mjs +723 -0
  20. package/esm/package.json +81 -0
  21. package/index.js +22957 -0
  22. package/logger/logger.tokens.d.ts +1 -0
  23. package/mcp-apps/index.js +799 -0
  24. package/package.json +26 -13
  25. package/README.md +0 -461
  26. package/src/adapter/adapter.instance.js +0 -70
  27. package/src/adapter/adapter.instance.js.map +0 -1
  28. package/src/adapter/adapter.regsitry.js +0 -54
  29. package/src/adapter/adapter.regsitry.js.map +0 -1
  30. package/src/adapter/adapter.utils.js +0 -83
  31. package/src/adapter/adapter.utils.js.map +0 -1
  32. package/src/app/app.registry.js +0 -66
  33. package/src/app/app.registry.js.map +0 -1
  34. package/src/app/app.utils.js +0 -58
  35. package/src/app/app.utils.js.map +0 -1
  36. package/src/app/instances/app.local.instance.js +0 -67
  37. package/src/app/instances/app.local.instance.js.map +0 -1
  38. package/src/app/instances/app.remote.instance.js +0 -36
  39. package/src/app/instances/app.remote.instance.js.map +0 -1
  40. package/src/app/instances/index.js +0 -6
  41. package/src/app/instances/index.js.map +0 -1
  42. package/src/auth/auth.registry.js +0 -219
  43. package/src/auth/auth.registry.js.map +0 -1
  44. package/src/auth/auth.utils.js +0 -84
  45. package/src/auth/auth.utils.js.map +0 -1
  46. package/src/auth/authorization/authorization.class.js +0 -217
  47. package/src/auth/authorization/authorization.class.js.map +0 -1
  48. package/src/auth/authorization/authorization.types.js +0 -79
  49. package/src/auth/authorization/authorization.types.js.map +0 -1
  50. package/src/auth/authorization/index.js +0 -19
  51. package/src/auth/authorization/index.js.map +0 -1
  52. package/src/auth/authorization/orchestrated.authorization.js +0 -306
  53. package/src/auth/authorization/orchestrated.authorization.js.map +0 -1
  54. package/src/auth/authorization/public.authorization.js +0 -132
  55. package/src/auth/authorization/public.authorization.js.map +0 -1
  56. package/src/auth/authorization/transparent.authorization.js +0 -147
  57. package/src/auth/authorization/transparent.authorization.js.map +0 -1
  58. package/src/auth/consent/consent.types.js +0 -119
  59. package/src/auth/consent/consent.types.js.map +0 -1
  60. package/src/auth/consent/index.js +0 -13
  61. package/src/auth/consent/index.js.map +0 -1
  62. package/src/auth/detection/auth-provider-detection.js +0 -230
  63. package/src/auth/detection/auth-provider-detection.js.map +0 -1
  64. package/src/auth/detection/index.js +0 -15
  65. package/src/auth/detection/index.js.map +0 -1
  66. package/src/auth/flows/auth.verify.flow.js +0 -379
  67. package/src/auth/flows/auth.verify.flow.js.map +0 -1
  68. package/src/auth/flows/oauth.authorize.flow.js +0 -822
  69. package/src/auth/flows/oauth.authorize.flow.js.map +0 -1
  70. package/src/auth/flows/oauth.callback.flow.js +0 -357
  71. package/src/auth/flows/oauth.callback.flow.js.map +0 -1
  72. package/src/auth/flows/oauth.register.flow.js +0 -201
  73. package/src/auth/flows/oauth.register.flow.js.map +0 -1
  74. package/src/auth/flows/oauth.token.flow.js +0 -319
  75. package/src/auth/flows/oauth.token.flow.js.map +0 -1
  76. package/src/auth/flows/session.verify.flow.js +0 -304
  77. package/src/auth/flows/session.verify.flow.js.map +0 -1
  78. package/src/auth/flows/well-known.jwks.flow.js +0 -89
  79. package/src/auth/flows/well-known.jwks.flow.js.map +0 -1
  80. package/src/auth/flows/well-known.oauth-authorization-server.flow.js +0 -122
  81. package/src/auth/flows/well-known.oauth-authorization-server.flow.js.map +0 -1
  82. package/src/auth/flows/well-known.prm.flow.js +0 -106
  83. package/src/auth/flows/well-known.prm.flow.js.map +0 -1
  84. package/src/auth/instances/instance.local-primary-auth.js +0 -308
  85. package/src/auth/instances/instance.local-primary-auth.js.map +0 -1
  86. package/src/auth/instances/instance.remote-primary-auth.js +0 -49
  87. package/src/auth/instances/instance.remote-primary-auth.js.map +0 -1
  88. package/src/auth/jwks/dev-key-persistence.js +0 -219
  89. package/src/auth/jwks/dev-key-persistence.js.map +0 -1
  90. package/src/auth/jwks/index.js +0 -7
  91. package/src/auth/jwks/index.js.map +0 -1
  92. package/src/auth/jwks/jwks.service.js +0 -303
  93. package/src/auth/jwks/jwks.service.js.map +0 -1
  94. package/src/auth/jwks/jwks.types.js +0 -3
  95. package/src/auth/jwks/jwks.types.js.map +0 -1
  96. package/src/auth/jwks/jwks.utils.js +0 -32
  97. package/src/auth/jwks/jwks.utils.js.map +0 -1
  98. package/src/auth/machine-id.js +0 -32
  99. package/src/auth/machine-id.js.map +0 -1
  100. package/src/auth/oauth/flows/oauth.authorize.flow.js +0 -33
  101. package/src/auth/oauth/flows/oauth.authorize.flow.js.map +0 -1
  102. package/src/auth/oauth/flows/oauth.device-authorization.flow.js +0 -48
  103. package/src/auth/oauth/flows/oauth.device-authorization.flow.js.map +0 -1
  104. package/src/auth/oauth/flows/oauth.introspect.flow.js +0 -28
  105. package/src/auth/oauth/flows/oauth.introspect.flow.js.map +0 -1
  106. package/src/auth/oauth/flows/oauth.par.flow.js +0 -29
  107. package/src/auth/oauth/flows/oauth.par.flow.js.map +0 -1
  108. package/src/auth/oauth/flows/oauth.revoke.flow.js +0 -27
  109. package/src/auth/oauth/flows/oauth.revoke.flow.js.map +0 -1
  110. package/src/auth/oauth/flows/oauth.token.flow.js +0 -59
  111. package/src/auth/oauth/flows/oauth.token.flow.js.map +0 -1
  112. package/src/auth/oauth/flows/oauth.userinfo.flow.js +0 -24
  113. package/src/auth/oauth/flows/oauth.userinfo.flow.js.map +0 -1
  114. package/src/auth/oauth/flows/oidc.logout.flow.js +0 -20
  115. package/src/auth/oauth/flows/oidc.logout.flow.js.map +0 -1
  116. package/src/auth/session/authorization-vault.js +0 -817
  117. package/src/auth/session/authorization-vault.js.map +0 -1
  118. package/src/auth/session/authorization.store.js +0 -323
  119. package/src/auth/session/authorization.store.js.map +0 -1
  120. package/src/auth/session/encrypted-authorization-vault.js +0 -493
  121. package/src/auth/session/encrypted-authorization-vault.js.map +0 -1
  122. package/src/auth/session/index.js +0 -18
  123. package/src/auth/session/index.js.map +0 -1
  124. package/src/auth/session/record/session.base.js +0 -125
  125. package/src/auth/session/record/session.base.js.map +0 -1
  126. package/src/auth/session/record/session.stateful.js +0 -55
  127. package/src/auth/session/record/session.stateful.js.map +0 -1
  128. package/src/auth/session/record/session.stateless.js +0 -32
  129. package/src/auth/session/record/session.stateless.js.map +0 -1
  130. package/src/auth/session/record/session.transparent.js +0 -22
  131. package/src/auth/session/record/session.transparent.js.map +0 -1
  132. package/src/auth/session/redis-session.store.js +0 -204
  133. package/src/auth/session/redis-session.store.js.map +0 -1
  134. package/src/auth/session/session.crypto.js +0 -47
  135. package/src/auth/session/session.crypto.js.map +0 -1
  136. package/src/auth/session/session.schema.js +0 -13
  137. package/src/auth/session/session.schema.js.map +0 -1
  138. package/src/auth/session/session.service.js +0 -105
  139. package/src/auth/session/session.service.js.map +0 -1
  140. package/src/auth/session/session.transport.js +0 -20
  141. package/src/auth/session/session.transport.js.map +0 -1
  142. package/src/auth/session/session.types.js +0 -4
  143. package/src/auth/session/session.types.js.map +0 -1
  144. package/src/auth/session/token.refresh.js +0 -63
  145. package/src/auth/session/token.refresh.js.map +0 -1
  146. package/src/auth/session/token.store.js +0 -53
  147. package/src/auth/session/token.store.js.map +0 -1
  148. package/src/auth/session/token.vault.js +0 -54
  149. package/src/auth/session/token.vault.js.map +0 -1
  150. package/src/auth/session/transport-session.manager.js +0 -298
  151. package/src/auth/session/transport-session.manager.js.map +0 -1
  152. package/src/auth/session/transport-session.types.js +0 -111
  153. package/src/auth/session/transport-session.types.js.map +0 -1
  154. package/src/auth/session/utils/auth-token.utils.js +0 -57
  155. package/src/auth/session/utils/auth-token.utils.js.map +0 -1
  156. package/src/auth/session/utils/session-id.utils.js +0 -217
  157. package/src/auth/session/utils/session-id.utils.js.map +0 -1
  158. package/src/auth/session/utils/tiny-ttl-cache.js +0 -26
  159. package/src/auth/session/utils/tiny-ttl-cache.js.map +0 -1
  160. package/src/auth/session/vault-encryption.js +0 -263
  161. package/src/auth/session/vault-encryption.js.map +0 -1
  162. package/src/auth/session/vercel-kv-session.store.js +0 -216
  163. package/src/auth/session/vercel-kv-session.store.js.map +0 -1
  164. package/src/auth/ui/base-layout.js +0 -279
  165. package/src/auth/ui/base-layout.js.map +0 -1
  166. package/src/auth/ui/index.js +0 -34
  167. package/src/auth/ui/index.js.map +0 -1
  168. package/src/auth/ui/templates.js +0 -426
  169. package/src/auth/ui/templates.js.map +0 -1
  170. package/src/auth/utils/audience.validator.js +0 -196
  171. package/src/auth/utils/audience.validator.js.map +0 -1
  172. package/src/auth/utils/index.js +0 -7
  173. package/src/auth/utils/index.js.map +0 -1
  174. package/src/auth/utils/www-authenticate.utils.js +0 -183
  175. package/src/auth/utils/www-authenticate.utils.js.map +0 -1
  176. package/src/common/common.schema.js +0 -35
  177. package/src/common/common.schema.js.map +0 -1
  178. package/src/common/constants.js +0 -13
  179. package/src/common/constants.js.map +0 -1
  180. package/src/common/decorators/adapter.decorator.js +0 -20
  181. package/src/common/decorators/adapter.decorator.js.map +0 -1
  182. package/src/common/decorators/app.decorator.js +0 -44
  183. package/src/common/decorators/app.decorator.js.map +0 -1
  184. package/src/common/decorators/auth-provider.decorator.js +0 -20
  185. package/src/common/decorators/auth-provider.decorator.js.map +0 -1
  186. package/src/common/decorators/decorator-utils.js +0 -195
  187. package/src/common/decorators/decorator-utils.js.map +0 -1
  188. package/src/common/decorators/flow.decorator.js +0 -19
  189. package/src/common/decorators/flow.decorator.js.map +0 -1
  190. package/src/common/decorators/front-mcp.decorator.js +0 -64
  191. package/src/common/decorators/front-mcp.decorator.js.map +0 -1
  192. package/src/common/decorators/hook.decorator.js +0 -178
  193. package/src/common/decorators/hook.decorator.js.map +0 -1
  194. package/src/common/decorators/index.js +0 -16
  195. package/src/common/decorators/index.js.map +0 -1
  196. package/src/common/decorators/logger.decorator.js +0 -20
  197. package/src/common/decorators/logger.decorator.js.map +0 -1
  198. package/src/common/decorators/plugin.decorator.js +0 -39
  199. package/src/common/decorators/plugin.decorator.js.map +0 -1
  200. package/src/common/decorators/prompt.decorator.js +0 -38
  201. package/src/common/decorators/prompt.decorator.js.map +0 -1
  202. package/src/common/decorators/provider.decorator.js +0 -20
  203. package/src/common/decorators/provider.decorator.js.map +0 -1
  204. package/src/common/decorators/resource.decorator.js +0 -94
  205. package/src/common/decorators/resource.decorator.js.map +0 -1
  206. package/src/common/decorators/tool.decorator.js +0 -45
  207. package/src/common/decorators/tool.decorator.js.map +0 -1
  208. package/src/common/dynamic/dynamic.adapter.js +0 -28
  209. package/src/common/dynamic/dynamic.adapter.js.map +0 -1
  210. package/src/common/dynamic/dynamic.plugin.js +0 -42
  211. package/src/common/dynamic/dynamic.plugin.js.map +0 -1
  212. package/src/common/dynamic/dynamic.utils.js +0 -27
  213. package/src/common/dynamic/dynamic.utils.js.map +0 -1
  214. package/src/common/dynamic/index.js +0 -6
  215. package/src/common/dynamic/index.js.map +0 -1
  216. package/src/common/entries/adapter.entry.js +0 -8
  217. package/src/common/entries/adapter.entry.js.map +0 -1
  218. package/src/common/entries/app.entry.js +0 -9
  219. package/src/common/entries/app.entry.js.map +0 -1
  220. package/src/common/entries/auth-provider.entry.js +0 -8
  221. package/src/common/entries/auth-provider.entry.js.map +0 -1
  222. package/src/common/entries/base.entry.js +0 -17
  223. package/src/common/entries/base.entry.js.map +0 -1
  224. package/src/common/entries/flow.entry.js +0 -21
  225. package/src/common/entries/flow.entry.js.map +0 -1
  226. package/src/common/entries/hook.entry.js +0 -20
  227. package/src/common/entries/hook.entry.js.map +0 -1
  228. package/src/common/entries/index.js +0 -17
  229. package/src/common/entries/index.js.map +0 -1
  230. package/src/common/entries/logger.entry.js +0 -8
  231. package/src/common/entries/logger.entry.js.map +0 -1
  232. package/src/common/entries/plugin.entry.js +0 -8
  233. package/src/common/entries/plugin.entry.js.map +0 -1
  234. package/src/common/entries/prompt.entry.js +0 -18
  235. package/src/common/entries/prompt.entry.js.map +0 -1
  236. package/src/common/entries/provider.entry.js +0 -8
  237. package/src/common/entries/provider.entry.js.map +0 -1
  238. package/src/common/entries/resource.entry.js +0 -35
  239. package/src/common/entries/resource.entry.js.map +0 -1
  240. package/src/common/entries/scope.entry.js +0 -14
  241. package/src/common/entries/scope.entry.js.map +0 -1
  242. package/src/common/entries/tool.entry.js +0 -31
  243. package/src/common/entries/tool.entry.js.map +0 -1
  244. package/src/common/flow/flow.utils.js +0 -96
  245. package/src/common/flow/flow.utils.js.map +0 -1
  246. package/src/common/index.js +0 -20
  247. package/src/common/index.js.map +0 -1
  248. package/src/common/interfaces/adapter.interface.js +0 -3
  249. package/src/common/interfaces/adapter.interface.js.map +0 -1
  250. package/src/common/interfaces/app.interface.js +0 -3
  251. package/src/common/interfaces/app.interface.js.map +0 -1
  252. package/src/common/interfaces/auth-hook.interface.js +0 -135
  253. package/src/common/interfaces/auth-hook.interface.js.map +0 -1
  254. package/src/common/interfaces/auth-provider.interface.js +0 -18
  255. package/src/common/interfaces/auth-provider.interface.js.map +0 -1
  256. package/src/common/interfaces/base.interface.js +0 -3
  257. package/src/common/interfaces/base.interface.js.map +0 -1
  258. package/src/common/interfaces/execution-context.interface.js +0 -166
  259. package/src/common/interfaces/execution-context.interface.js.map +0 -1
  260. package/src/common/interfaces/flow.interface.js +0 -95
  261. package/src/common/interfaces/flow.interface.js.map +0 -1
  262. package/src/common/interfaces/front-mcp.interface.js +0 -3
  263. package/src/common/interfaces/front-mcp.interface.js.map +0 -1
  264. package/src/common/interfaces/hook.interface.js +0 -3
  265. package/src/common/interfaces/hook.interface.js.map +0 -1
  266. package/src/common/interfaces/index.js +0 -21
  267. package/src/common/interfaces/index.js.map +0 -1
  268. package/src/common/interfaces/internal/flow.utils.js +0 -83
  269. package/src/common/interfaces/internal/flow.utils.js.map +0 -1
  270. package/src/common/interfaces/internal/index.js +0 -7
  271. package/src/common/interfaces/internal/index.js.map +0 -1
  272. package/src/common/interfaces/internal/primary-auth-provider.interface.js +0 -81
  273. package/src/common/interfaces/internal/primary-auth-provider.interface.js.map +0 -1
  274. package/src/common/interfaces/internal/registry.interface.js +0 -3
  275. package/src/common/interfaces/internal/registry.interface.js.map +0 -1
  276. package/src/common/interfaces/logger.interface.js +0 -10
  277. package/src/common/interfaces/logger.interface.js.map +0 -1
  278. package/src/common/interfaces/plugin.interface.js +0 -3
  279. package/src/common/interfaces/plugin.interface.js.map +0 -1
  280. package/src/common/interfaces/prompt.interface.js +0 -81
  281. package/src/common/interfaces/prompt.interface.js.map +0 -1
  282. package/src/common/interfaces/provider.interface.js +0 -18
  283. package/src/common/interfaces/provider.interface.js.map +0 -1
  284. package/src/common/interfaces/resource.interface.js +0 -56
  285. package/src/common/interfaces/resource.interface.js.map +0 -1
  286. package/src/common/interfaces/scope.interface.js +0 -3
  287. package/src/common/interfaces/scope.interface.js.map +0 -1
  288. package/src/common/interfaces/server.interface.js +0 -18
  289. package/src/common/interfaces/server.interface.js.map +0 -1
  290. package/src/common/interfaces/session-hook.interface.js +0 -140
  291. package/src/common/interfaces/session-hook.interface.js.map +0 -1
  292. package/src/common/interfaces/tool-hook.interface.js +0 -92
  293. package/src/common/interfaces/tool-hook.interface.js.map +0 -1
  294. package/src/common/interfaces/tool.interface.js +0 -117
  295. package/src/common/interfaces/tool.interface.js.map +0 -1
  296. package/src/common/metadata/adapter.metadata.js +0 -10
  297. package/src/common/metadata/adapter.metadata.js.map +0 -1
  298. package/src/common/metadata/app.metadata.js +0 -30
  299. package/src/common/metadata/app.metadata.js.map +0 -1
  300. package/src/common/metadata/auth-provider.metadata.js +0 -19
  301. package/src/common/metadata/auth-provider.metadata.js.map +0 -1
  302. package/src/common/metadata/flow.metadata.js +0 -15
  303. package/src/common/metadata/flow.metadata.js.map +0 -1
  304. package/src/common/metadata/front-mcp.metadata.js +0 -30
  305. package/src/common/metadata/front-mcp.metadata.js.map +0 -1
  306. package/src/common/metadata/hook.metadata.js +0 -3
  307. package/src/common/metadata/hook.metadata.js.map +0 -1
  308. package/src/common/metadata/index.js +0 -17
  309. package/src/common/metadata/index.js.map +0 -1
  310. package/src/common/metadata/logger.metadata.js +0 -10
  311. package/src/common/metadata/logger.metadata.js.map +0 -1
  312. package/src/common/metadata/plugin.metadata.js +0 -18
  313. package/src/common/metadata/plugin.metadata.js.map +0 -1
  314. package/src/common/metadata/prompt.metadata.js +0 -27
  315. package/src/common/metadata/prompt.metadata.js.map +0 -1
  316. package/src/common/metadata/provider.metadata.js +0 -36
  317. package/src/common/metadata/provider.metadata.js.map +0 -1
  318. package/src/common/metadata/resource.metadata.js +0 -31
  319. package/src/common/metadata/resource.metadata.js.map +0 -1
  320. package/src/common/metadata/tool-ui.metadata.js +0 -12
  321. package/src/common/metadata/tool-ui.metadata.js.map +0 -1
  322. package/src/common/metadata/tool.metadata.js +0 -55
  323. package/src/common/metadata/tool.metadata.js.map +0 -1
  324. package/src/common/migrate/auth-transport.migrate.js +0 -140
  325. package/src/common/migrate/auth-transport.migrate.js.map +0 -1
  326. package/src/common/migrate/index.js +0 -6
  327. package/src/common/migrate/index.js.map +0 -1
  328. package/src/common/providers/base-config.provider.js +0 -128
  329. package/src/common/providers/base-config.provider.js.map +0 -1
  330. package/src/common/records/adapter.record.js +0 -11
  331. package/src/common/records/adapter.record.js.map +0 -1
  332. package/src/common/records/app.record.js +0 -9
  333. package/src/common/records/app.record.js.map +0 -1
  334. package/src/common/records/auth-provider.record.js +0 -12
  335. package/src/common/records/auth-provider.record.js.map +0 -1
  336. package/src/common/records/flow.record.js +0 -8
  337. package/src/common/records/flow.record.js.map +0 -1
  338. package/src/common/records/hook.record.js +0 -8
  339. package/src/common/records/hook.record.js.map +0 -1
  340. package/src/common/records/index.js +0 -16
  341. package/src/common/records/index.js.map +0 -1
  342. package/src/common/records/logger.record.js +0 -8
  343. package/src/common/records/logger.record.js.map +0 -1
  344. package/src/common/records/plugin.record.js +0 -11
  345. package/src/common/records/plugin.record.js.map +0 -1
  346. package/src/common/records/prompt.record.js +0 -9
  347. package/src/common/records/prompt.record.js.map +0 -1
  348. package/src/common/records/provider.record.js +0 -14
  349. package/src/common/records/provider.record.js.map +0 -1
  350. package/src/common/records/resource.record.js +0 -20
  351. package/src/common/records/resource.record.js.map +0 -1
  352. package/src/common/records/scope.record.js +0 -9
  353. package/src/common/records/scope.record.js.map +0 -1
  354. package/src/common/records/tool.record.js +0 -9
  355. package/src/common/records/tool.record.js.map +0 -1
  356. package/src/common/schemas/annotated-class.schema.js +0 -109
  357. package/src/common/schemas/annotated-class.schema.js.map +0 -1
  358. package/src/common/schemas/http-input.schema.js +0 -13
  359. package/src/common/schemas/http-input.schema.js.map +0 -1
  360. package/src/common/schemas/http-output.schema.js +0 -321
  361. package/src/common/schemas/http-output.schema.js.map +0 -1
  362. package/src/common/schemas/index.js +0 -8
  363. package/src/common/schemas/index.js.map +0 -1
  364. package/src/common/schemas/session-header.schema.js +0 -42
  365. package/src/common/schemas/session-header.schema.js.map +0 -1
  366. package/src/common/tokens/adapter.tokens.js +0 -11
  367. package/src/common/tokens/adapter.tokens.js.map +0 -1
  368. package/src/common/tokens/app.tokens.js +0 -30
  369. package/src/common/tokens/app.tokens.js.map +0 -1
  370. package/src/common/tokens/auth-provider.tokens.js +0 -12
  371. package/src/common/tokens/auth-provider.tokens.js.map +0 -1
  372. package/src/common/tokens/base.tokens.js +0 -9
  373. package/src/common/tokens/base.tokens.js.map +0 -1
  374. package/src/common/tokens/flow-hook.tokens.js +0 -9
  375. package/src/common/tokens/flow-hook.tokens.js.map +0 -1
  376. package/src/common/tokens/flow.tokens.js +0 -16
  377. package/src/common/tokens/flow.tokens.js.map +0 -1
  378. package/src/common/tokens/front-mcp.tokens.js +0 -25
  379. package/src/common/tokens/front-mcp.tokens.js.map +0 -1
  380. package/src/common/tokens/index.js +0 -17
  381. package/src/common/tokens/index.js.map +0 -1
  382. package/src/common/tokens/logger.tokens.js +0 -11
  383. package/src/common/tokens/logger.tokens.js.map +0 -1
  384. package/src/common/tokens/plugin.tokens.js +0 -18
  385. package/src/common/tokens/plugin.tokens.js.map +0 -1
  386. package/src/common/tokens/prompt.tokens.js +0 -14
  387. package/src/common/tokens/prompt.tokens.js.map +0 -1
  388. package/src/common/tokens/provider.tokens.js +0 -12
  389. package/src/common/tokens/provider.tokens.js.map +0 -1
  390. package/src/common/tokens/resource.tokens.js +0 -28
  391. package/src/common/tokens/resource.tokens.js.map +0 -1
  392. package/src/common/tokens/server.tokens.js +0 -11
  393. package/src/common/tokens/server.tokens.js.map +0 -1
  394. package/src/common/tokens/tool.tokens.js +0 -21
  395. package/src/common/tokens/tool.tokens.js.map +0 -1
  396. package/src/common/types/auth/index.js +0 -6
  397. package/src/common/types/auth/index.js.map +0 -1
  398. package/src/common/types/auth/jwt.types.js +0 -36
  399. package/src/common/types/auth/jwt.types.js.map +0 -1
  400. package/src/common/types/auth/session.types.js +0 -53
  401. package/src/common/types/auth/session.types.js.map +0 -1
  402. package/src/common/types/common.types.js +0 -3
  403. package/src/common/types/common.types.js.map +0 -1
  404. package/src/common/types/index.js +0 -7
  405. package/src/common/types/index.js.map +0 -1
  406. package/src/common/types/options/auth.options.d.ts +0 -1266
  407. package/src/common/types/options/auth.options.js +0 -560
  408. package/src/common/types/options/auth.options.js.map +0 -1
  409. package/src/common/types/options/http.options.js +0 -10
  410. package/src/common/types/options/http.options.js.map +0 -1
  411. package/src/common/types/options/index.js +0 -11
  412. package/src/common/types/options/index.js.map +0 -1
  413. package/src/common/types/options/logging.options.js +0 -33
  414. package/src/common/types/options/logging.options.js.map +0 -1
  415. package/src/common/types/options/redis.options.js +0 -191
  416. package/src/common/types/options/redis.options.js.map +0 -1
  417. package/src/common/types/options/server-info.options.js +0 -13
  418. package/src/common/types/options/server-info.options.js.map +0 -1
  419. package/src/common/types/options/session.options.js +0 -32
  420. package/src/common/types/options/session.options.js.map +0 -1
  421. package/src/common/types/options/transport.options.js +0 -121
  422. package/src/common/types/options/transport.options.js.map +0 -1
  423. package/src/common/utils/decide-request-intent.utils.js +0 -391
  424. package/src/common/utils/decide-request-intent.utils.js.map +0 -1
  425. package/src/common/utils/global-config.utils.js +0 -44
  426. package/src/common/utils/global-config.utils.js.map +0 -1
  427. package/src/common/utils/index.js +0 -7
  428. package/src/common/utils/index.js.map +0 -1
  429. package/src/common/utils/path.utils.js +0 -66
  430. package/src/common/utils/path.utils.js.map +0 -1
  431. package/src/completion/flows/complete.flow.js +0 -199
  432. package/src/completion/flows/complete.flow.js.map +0 -1
  433. package/src/context/frontmcp-context-storage.js +0 -183
  434. package/src/context/frontmcp-context-storage.js.map +0 -1
  435. package/src/context/frontmcp-context.js +0 -360
  436. package/src/context/frontmcp-context.js.map +0 -1
  437. package/src/context/frontmcp-context.provider.js +0 -61
  438. package/src/context/frontmcp-context.provider.js.map +0 -1
  439. package/src/context/index.js +0 -64
  440. package/src/context/index.js.map +0 -1
  441. package/src/context/request-context-storage.js +0 -183
  442. package/src/context/request-context-storage.js.map +0 -1
  443. package/src/context/request-context.js +0 -209
  444. package/src/context/request-context.js.map +0 -1
  445. package/src/context/request-context.provider.js +0 -51
  446. package/src/context/request-context.provider.js.map +0 -1
  447. package/src/context/session-key.provider.js +0 -65
  448. package/src/context/session-key.provider.js.map +0 -1
  449. package/src/context/trace-context.js +0 -142
  450. package/src/context/trace-context.js.map +0 -1
  451. package/src/errors/authorization-required.error.js +0 -274
  452. package/src/errors/authorization-required.error.js.map +0 -1
  453. package/src/errors/error-handler.js +0 -107
  454. package/src/errors/error-handler.js.map +0 -1
  455. package/src/errors/index.js +0 -45
  456. package/src/errors/index.js.map +0 -1
  457. package/src/errors/mcp.error.js +0 -416
  458. package/src/errors/mcp.error.js.map +0 -1
  459. package/src/exceptions/mcp-exceptions/session-missing.exception.js +0 -11
  460. package/src/exceptions/mcp-exceptions/session-missing.exception.js.map +0 -1
  461. package/src/exceptions/mcp-exceptions/unsupported-client-version.exception.js +0 -15
  462. package/src/exceptions/mcp-exceptions/unsupported-client-version.exception.js.map +0 -1
  463. package/src/flows/flow.instance.js +0 -420
  464. package/src/flows/flow.instance.js.map +0 -1
  465. package/src/flows/flow.registry.js +0 -121
  466. package/src/flows/flow.registry.js.map +0 -1
  467. package/src/flows/flow.stages.js +0 -113
  468. package/src/flows/flow.stages.js.map +0 -1
  469. package/src/flows/flow.utils.js +0 -36
  470. package/src/flows/flow.utils.js.map +0 -1
  471. package/src/front-mcp/front-mcp.js +0 -63
  472. package/src/front-mcp/front-mcp.js.map +0 -1
  473. package/src/front-mcp/front-mcp.providers.js +0 -29
  474. package/src/front-mcp/front-mcp.providers.js.map +0 -1
  475. package/src/front-mcp/front-mcp.tokens.js +0 -5
  476. package/src/front-mcp/front-mcp.tokens.js.map +0 -1
  477. package/src/front-mcp/index.js +0 -8
  478. package/src/front-mcp/index.js.map +0 -1
  479. package/src/front-mcp/serverless-handler.js +0 -61
  480. package/src/front-mcp/serverless-handler.js.map +0 -1
  481. package/src/hooks/hook.instance.js +0 -26
  482. package/src/hooks/hook.instance.js.map +0 -1
  483. package/src/hooks/hook.registry.js +0 -152
  484. package/src/hooks/hook.registry.js.map +0 -1
  485. package/src/hooks/hooks.utils.js +0 -34
  486. package/src/hooks/hooks.utils.js.map +0 -1
  487. package/src/index.js +0 -37
  488. package/src/index.js.map +0 -1
  489. package/src/logger/instances/instance.console-logger.js +0 -75
  490. package/src/logger/instances/instance.console-logger.js.map +0 -1
  491. package/src/logger/instances/instance.logger.js +0 -77
  492. package/src/logger/instances/instance.logger.js.map +0 -1
  493. package/src/logger/logger.registry.js +0 -96
  494. package/src/logger/logger.registry.js.map +0 -1
  495. package/src/logger/logger.tokens.js +0 -3
  496. package/src/logger/logger.tokens.js.map +0 -1
  497. package/src/logger/logger.types.js +0 -8
  498. package/src/logger/logger.types.js.map +0 -1
  499. package/src/logger/logger.utils.js +0 -42
  500. package/src/logger/logger.utils.js.map +0 -1
  501. package/src/logging/flows/set-level.flow.js +0 -108
  502. package/src/logging/flows/set-level.flow.js.map +0 -1
  503. package/src/mcp-apps/csp.js +0 -267
  504. package/src/mcp-apps/csp.js.map +0 -1
  505. package/src/mcp-apps/index.js +0 -91
  506. package/src/mcp-apps/index.js.map +0 -1
  507. package/src/mcp-apps/schemas.js +0 -345
  508. package/src/mcp-apps/schemas.js.map +0 -1
  509. package/src/mcp-apps/template.js +0 -419
  510. package/src/mcp-apps/template.js.map +0 -1
  511. package/src/mcp-apps/types.js +0 -59
  512. package/src/mcp-apps/types.js.map +0 -1
  513. package/src/notification/index.js +0 -13
  514. package/src/notification/index.js.map +0 -1
  515. package/src/notification/notification.service.js +0 -731
  516. package/src/notification/notification.service.js.map +0 -1
  517. package/src/plugin/plugin.registry.js +0 -152
  518. package/src/plugin/plugin.registry.js.map +0 -1
  519. package/src/plugin/plugin.utils.js +0 -88
  520. package/src/plugin/plugin.utils.js.map +0 -1
  521. package/src/prompt/flows/get-prompt.flow.js +0 -214
  522. package/src/prompt/flows/get-prompt.flow.js.map +0 -1
  523. package/src/prompt/flows/prompts-list.flow.js +0 -176
  524. package/src/prompt/flows/prompts-list.flow.js.map +0 -1
  525. package/src/prompt/index.js +0 -17
  526. package/src/prompt/index.js.map +0 -1
  527. package/src/prompt/prompt.events.js +0 -25
  528. package/src/prompt/prompt.events.js.map +0 -1
  529. package/src/prompt/prompt.instance.js +0 -120
  530. package/src/prompt/prompt.instance.js.map +0 -1
  531. package/src/prompt/prompt.registry.js +0 -380
  532. package/src/prompt/prompt.registry.js.map +0 -1
  533. package/src/prompt/prompt.types.js +0 -11
  534. package/src/prompt/prompt.types.js.map +0 -1
  535. package/src/prompt/prompt.utils.js +0 -136
  536. package/src/prompt/prompt.utils.js.map +0 -1
  537. package/src/provider/provider.registry.js +0 -868
  538. package/src/provider/provider.registry.js.map +0 -1
  539. package/src/provider/provider.types.js +0 -3
  540. package/src/provider/provider.types.js.map +0 -1
  541. package/src/provider/provider.utils.js +0 -103
  542. package/src/provider/provider.utils.js.map +0 -1
  543. package/src/regsitry/index.js +0 -5
  544. package/src/regsitry/index.js.map +0 -1
  545. package/src/regsitry/registry.base.js +0 -32
  546. package/src/regsitry/registry.base.js.map +0 -1
  547. package/src/resource/flows/read-resource.flow.js +0 -270
  548. package/src/resource/flows/read-resource.flow.js.map +0 -1
  549. package/src/resource/flows/resource-templates-list.flow.js +0 -191
  550. package/src/resource/flows/resource-templates-list.flow.js.map +0 -1
  551. package/src/resource/flows/resources-list.flow.js +0 -196
  552. package/src/resource/flows/resources-list.flow.js.map +0 -1
  553. package/src/resource/flows/subscribe-resource.flow.js +0 -123
  554. package/src/resource/flows/subscribe-resource.flow.js.map +0 -1
  555. package/src/resource/flows/unsubscribe-resource.flow.js +0 -107
  556. package/src/resource/flows/unsubscribe-resource.flow.js.map +0 -1
  557. package/src/resource/index.js +0 -20
  558. package/src/resource/index.js.map +0 -1
  559. package/src/resource/resource.events.js +0 -17
  560. package/src/resource/resource.events.js.map +0 -1
  561. package/src/resource/resource.instance.js +0 -163
  562. package/src/resource/resource.instance.js.map +0 -1
  563. package/src/resource/resource.registry.js +0 -468
  564. package/src/resource/resource.registry.js.map +0 -1
  565. package/src/resource/resource.types.js +0 -11
  566. package/src/resource/resource.types.js.map +0 -1
  567. package/src/resource/resource.utils.js +0 -151
  568. package/src/resource/resource.utils.js.map +0 -1
  569. package/src/scope/flows/http.request.flow.js +0 -474
  570. package/src/scope/flows/http.request.flow.js.map +0 -1
  571. package/src/scope/index.js +0 -6
  572. package/src/scope/index.js.map +0 -1
  573. package/src/scope/scope.instance.js +0 -263
  574. package/src/scope/scope.instance.js.map +0 -1
  575. package/src/scope/scope.registry.js +0 -94
  576. package/src/scope/scope.registry.js.map +0 -1
  577. package/src/scope/scope.utils.js +0 -61
  578. package/src/scope/scope.utils.js.map +0 -1
  579. package/src/server/adapters/base.host.adapter.js +0 -8
  580. package/src/server/adapters/base.host.adapter.js.map +0 -1
  581. package/src/server/adapters/express.host.adapter.js +0 -70
  582. package/src/server/adapters/express.host.adapter.js.map +0 -1
  583. package/src/server/server.instance.js +0 -54
  584. package/src/server/server.instance.js.map +0 -1
  585. package/src/server/server.types.js +0 -3
  586. package/src/server/server.types.js.map +0 -1
  587. package/src/server/server.validation.js +0 -192
  588. package/src/server/server.validation.js.map +0 -1
  589. package/src/store/adapters/store.base.adapter.js +0 -16
  590. package/src/store/adapters/store.base.adapter.js.map +0 -1
  591. package/src/store/adapters/store.memory.adapter.js +0 -89
  592. package/src/store/adapters/store.memory.adapter.js.map +0 -1
  593. package/src/store/adapters/store.redis.adapter.js +0 -104
  594. package/src/store/adapters/store.redis.adapter.js.map +0 -1
  595. package/src/store/adapters/store.vercel-kv.adapter.js +0 -155
  596. package/src/store/adapters/store.vercel-kv.adapter.js.map +0 -1
  597. package/src/store/index.js +0 -14
  598. package/src/store/index.js.map +0 -1
  599. package/src/store/store.factory.js +0 -194
  600. package/src/store/store.factory.js.map +0 -1
  601. package/src/store/store.helpers.js +0 -67
  602. package/src/store/store.helpers.js.map +0 -1
  603. package/src/store/store.registry.js +0 -37
  604. package/src/store/store.registry.js.map +0 -1
  605. package/src/store/store.tokens.js +0 -7
  606. package/src/store/store.tokens.js.map +0 -1
  607. package/src/store/store.types.js +0 -11
  608. package/src/store/store.types.js.map +0 -1
  609. package/src/store/store.utils.js +0 -18
  610. package/src/store/store.utils.js.map +0 -1
  611. package/src/tool/flows/call-tool.flow.js +0 -616
  612. package/src/tool/flows/call-tool.flow.js.map +0 -1
  613. package/src/tool/flows/tools-list.flow.js +0 -328
  614. package/src/tool/flows/tools-list.flow.js.map +0 -1
  615. package/src/tool/tool.events.js +0 -16
  616. package/src/tool/tool.events.js.map +0 -1
  617. package/src/tool/tool.instance.js +0 -117
  618. package/src/tool/tool.instance.js.map +0 -1
  619. package/src/tool/tool.registry.js +0 -353
  620. package/src/tool/tool.registry.js.map +0 -1
  621. package/src/tool/tool.types.js +0 -10
  622. package/src/tool/tool.types.js.map +0 -1
  623. package/src/tool/tool.utils.js +0 -366
  624. package/src/tool/tool.utils.js.map +0 -1
  625. package/src/tool/ui/index.js +0 -63
  626. package/src/tool/ui/index.js.map +0 -1
  627. package/src/tool/ui/platform-adapters.js +0 -18
  628. package/src/tool/ui/platform-adapters.js.map +0 -1
  629. package/src/tool/ui/template-helpers.js +0 -95
  630. package/src/tool/ui/template-helpers.js.map +0 -1
  631. package/src/tool/ui/ui-resource-template.js +0 -64
  632. package/src/tool/ui/ui-resource-template.js.map +0 -1
  633. package/src/tool/ui/ui-resource.handler.js +0 -129
  634. package/src/tool/ui/ui-resource.handler.js.map +0 -1
  635. package/src/transport/adapters/transport.local.adapter.js +0 -148
  636. package/src/transport/adapters/transport.local.adapter.js.map +0 -1
  637. package/src/transport/adapters/transport.sse.adapter.js +0 -65
  638. package/src/transport/adapters/transport.sse.adapter.js.map +0 -1
  639. package/src/transport/adapters/transport.streamable-http.adapter.js +0 -112
  640. package/src/transport/adapters/transport.streamable-http.adapter.js.map +0 -1
  641. package/src/transport/flows/handle.sse.flow.js +0 -197
  642. package/src/transport/flows/handle.sse.flow.js.map +0 -1
  643. package/src/transport/flows/handle.stateless-http.flow.js +0 -102
  644. package/src/transport/flows/handle.stateless-http.flow.js.map +0 -1
  645. package/src/transport/flows/handle.streamable-http.flow.js +0 -315
  646. package/src/transport/flows/handle.streamable-http.flow.js.map +0 -1
  647. package/src/transport/legacy/legacy.sse.tranporter.js +0 -185
  648. package/src/transport/legacy/legacy.sse.tranporter.js.map +0 -1
  649. package/src/transport/mcp-handlers/Initialized-notification.hanlder.js +0 -14
  650. package/src/transport/mcp-handlers/Initialized-notification.hanlder.js.map +0 -1
  651. package/src/transport/mcp-handlers/call-tool-request.handler.js +0 -46
  652. package/src/transport/mcp-handlers/call-tool-request.handler.js.map +0 -1
  653. package/src/transport/mcp-handlers/complete-request.handler.js +0 -11
  654. package/src/transport/mcp-handlers/complete-request.handler.js.map +0 -1
  655. package/src/transport/mcp-handlers/get-prompt-request.handler.js +0 -11
  656. package/src/transport/mcp-handlers/get-prompt-request.handler.js.map +0 -1
  657. package/src/transport/mcp-handlers/index.js +0 -57
  658. package/src/transport/mcp-handlers/index.js.map +0 -1
  659. package/src/transport/mcp-handlers/initialize-request.handler.js +0 -109
  660. package/src/transport/mcp-handlers/initialize-request.handler.js.map +0 -1
  661. package/src/transport/mcp-handlers/list-prompts-request.handler.js +0 -11
  662. package/src/transport/mcp-handlers/list-prompts-request.handler.js.map +0 -1
  663. package/src/transport/mcp-handlers/list-resource-templates-request.handler.js +0 -12
  664. package/src/transport/mcp-handlers/list-resource-templates-request.handler.js.map +0 -1
  665. package/src/transport/mcp-handlers/list-resources-request.handler.js +0 -12
  666. package/src/transport/mcp-handlers/list-resources-request.handler.js.map +0 -1
  667. package/src/transport/mcp-handlers/list-tools-request.handler.js +0 -11
  668. package/src/transport/mcp-handlers/list-tools-request.handler.js.map +0 -1
  669. package/src/transport/mcp-handlers/logging-set-level-request.handler.js +0 -34
  670. package/src/transport/mcp-handlers/logging-set-level-request.handler.js.map +0 -1
  671. package/src/transport/mcp-handlers/mcp-handlers.types.js +0 -3
  672. package/src/transport/mcp-handlers/mcp-handlers.types.js.map +0 -1
  673. package/src/transport/mcp-handlers/read-resource-request.handler.js +0 -12
  674. package/src/transport/mcp-handlers/read-resource-request.handler.js.map +0 -1
  675. package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js +0 -26
  676. package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js.map +0 -1
  677. package/src/transport/mcp-handlers/subscribe-request.handler.js +0 -34
  678. package/src/transport/mcp-handlers/subscribe-request.handler.js.map +0 -1
  679. package/src/transport/mcp-handlers/unsubscribe-request.handler.js +0 -34
  680. package/src/transport/mcp-handlers/unsubscribe-request.handler.js.map +0 -1
  681. package/src/transport/transport.error.js +0 -25
  682. package/src/transport/transport.error.js.map +0 -1
  683. package/src/transport/transport.event-store.js +0 -36
  684. package/src/transport/transport.event-store.js.map +0 -1
  685. package/src/transport/transport.local.js +0 -71
  686. package/src/transport/transport.local.js.map +0 -1
  687. package/src/transport/transport.registry.js +0 -552
  688. package/src/transport/transport.registry.js.map +0 -1
  689. package/src/transport/transport.remote.js +0 -31
  690. package/src/transport/transport.remote.js.map +0 -1
  691. package/src/transport/transport.types.js +0 -3
  692. package/src/transport/transport.types.js.map +0 -1
  693. package/src/types/drinen-hooks.types.js +0 -3
  694. package/src/types/drinen-hooks.types.js.map +0 -1
  695. package/src/types/invoke.type.js +0 -34
  696. package/src/types/invoke.type.js.map +0 -1
  697. package/src/types/token.types.js +0 -3
  698. package/src/types/token.types.js.map +0 -1
  699. package/src/utils/content.utils.js +0 -194
  700. package/src/utils/content.utils.js.map +0 -1
  701. package/src/utils/index.js +0 -55
  702. package/src/utils/index.js.map +0 -1
  703. package/src/utils/lineage.utils.js +0 -82
  704. package/src/utils/lineage.utils.js.map +0 -1
  705. package/src/utils/metadata.utils.js +0 -26
  706. package/src/utils/metadata.utils.js.map +0 -1
  707. package/src/utils/naming.utils.js +0 -136
  708. package/src/utils/naming.utils.js.map +0 -1
  709. package/src/utils/server.utils.js +0 -59
  710. package/src/utils/server.utils.js.map +0 -1
  711. package/src/utils/string.utils.js +0 -10
  712. package/src/utils/string.utils.js.map +0 -1
  713. package/src/utils/token.utils.js +0 -65
  714. package/src/utils/token.utils.js.map +0 -1
  715. package/src/utils/types.utils.js +0 -3
  716. package/src/utils/types.utils.js.map +0 -1
  717. package/src/utils/uri-template.utils.js +0 -113
  718. package/src/utils/uri-template.utils.js.map +0 -1
  719. package/src/utils/uri-validation.utils.js +0 -76
  720. package/src/utils/uri-validation.utils.js.map +0 -1
  721. package/{src/adapter → adapter}/adapter.instance.d.ts +0 -0
  722. package/{src/adapter → adapter}/adapter.regsitry.d.ts +0 -0
  723. package/{src/adapter → adapter}/adapter.utils.d.ts +0 -0
  724. package/{src/app → app}/app.registry.d.ts +0 -0
  725. package/{src/app → app}/app.utils.d.ts +0 -0
  726. package/{src/app → app}/instances/app.local.instance.d.ts +0 -0
  727. package/{src/app → app}/instances/app.remote.instance.d.ts +0 -0
  728. package/{src/app → app}/instances/index.d.ts +0 -0
  729. package/{src/auth → auth}/auth.registry.d.ts +0 -0
  730. package/{src/auth → auth}/auth.utils.d.ts +0 -0
  731. package/{src/auth → auth}/authorization/authorization.class.d.ts +0 -0
  732. package/{src/auth → auth}/authorization/authorization.types.d.ts +0 -0
  733. package/{src/auth → auth}/authorization/index.d.ts +0 -0
  734. package/{src/auth → auth}/authorization/orchestrated.authorization.d.ts +0 -0
  735. package/{src/auth → auth}/authorization/public.authorization.d.ts +0 -0
  736. package/{src/auth → auth}/authorization/transparent.authorization.d.ts +0 -0
  737. package/{src/auth → auth}/consent/consent.types.d.ts +0 -0
  738. package/{src/auth → auth}/consent/index.d.ts +0 -0
  739. package/{src/auth → auth}/detection/auth-provider-detection.d.ts +0 -0
  740. package/{src/auth → auth}/detection/index.d.ts +0 -0
  741. package/{src/auth → auth}/flows/auth.verify.flow.d.ts +0 -0
  742. package/{src/auth → auth}/flows/oauth.authorize.flow.d.ts +0 -0
  743. package/{src/auth → auth}/flows/oauth.callback.flow.d.ts +0 -0
  744. package/{src/auth → auth}/flows/oauth.register.flow.d.ts +0 -0
  745. package/{src/auth → auth}/flows/oauth.token.flow.d.ts +0 -0
  746. package/{src/auth → auth}/flows/session.verify.flow.d.ts +0 -0
  747. package/{src/auth → auth}/flows/well-known.jwks.flow.d.ts +0 -0
  748. package/{src/auth → auth}/flows/well-known.oauth-authorization-server.flow.d.ts +0 -0
  749. package/{src/auth → auth}/flows/well-known.prm.flow.d.ts +0 -0
  750. package/{src/auth → auth}/jwks/dev-key-persistence.d.ts +0 -0
  751. package/{src/auth → auth}/jwks/index.d.ts +0 -0
  752. package/{src/auth → auth}/jwks/jwks.service.d.ts +0 -0
  753. package/{src/auth → auth}/jwks/jwks.types.d.ts +0 -0
  754. package/{src/auth → auth}/jwks/jwks.utils.d.ts +0 -0
  755. package/{src/auth → auth}/machine-id.d.ts +0 -0
  756. package/{src/auth → auth}/oauth/flows/oauth.authorize.flow.d.ts +0 -0
  757. package/{src/auth → auth}/oauth/flows/oauth.device-authorization.flow.d.ts +0 -0
  758. package/{src/auth → auth}/oauth/flows/oauth.introspect.flow.d.ts +0 -0
  759. package/{src/auth → auth}/oauth/flows/oauth.par.flow.d.ts +0 -0
  760. package/{src/auth → auth}/oauth/flows/oauth.revoke.flow.d.ts +0 -0
  761. package/{src/auth → auth}/oauth/flows/oauth.token.flow.d.ts +0 -0
  762. package/{src/auth → auth}/oauth/flows/oauth.userinfo.flow.d.ts +0 -0
  763. package/{src/auth → auth}/oauth/flows/oidc.logout.flow.d.ts +0 -0
  764. package/{src/auth → auth}/session/authorization-vault.d.ts +0 -0
  765. package/{src/auth → auth}/session/authorization.store.d.ts +0 -0
  766. package/{src/auth → auth}/session/encrypted-authorization-vault.d.ts +0 -0
  767. package/{src/auth → auth}/session/index.d.ts +0 -0
  768. package/{src/auth → auth}/session/record/session.base.d.ts +0 -0
  769. package/{src/auth → auth}/session/record/session.stateful.d.ts +0 -0
  770. package/{src/auth → auth}/session/record/session.stateless.d.ts +0 -0
  771. package/{src/auth → auth}/session/record/session.transparent.d.ts +0 -0
  772. package/{src/auth → auth}/session/redis-session.store.d.ts +0 -0
  773. package/{src/auth → auth}/session/session.crypto.d.ts +0 -0
  774. package/{src/auth → auth}/session/session.schema.d.ts +0 -0
  775. package/{src/auth → auth}/session/session.service.d.ts +0 -0
  776. package/{src/auth → auth}/session/session.transport.d.ts +0 -0
  777. package/{src/auth → auth}/session/session.types.d.ts +0 -0
  778. package/{src/auth → auth}/session/token.refresh.d.ts +0 -0
  779. package/{src/auth → auth}/session/token.store.d.ts +0 -0
  780. package/{src/auth → auth}/session/token.vault.d.ts +0 -0
  781. package/{src/auth → auth}/session/transport-session.manager.d.ts +0 -0
  782. package/{src/auth → auth}/session/transport-session.types.d.ts +0 -0
  783. package/{src/auth → auth}/session/utils/auth-token.utils.d.ts +0 -0
  784. package/{src/auth → auth}/session/utils/session-id.utils.d.ts +0 -0
  785. package/{src/auth → auth}/session/utils/tiny-ttl-cache.d.ts +0 -0
  786. package/{src/auth → auth}/session/vault-encryption.d.ts +0 -0
  787. package/{src/auth → auth}/session/vercel-kv-session.store.d.ts +0 -0
  788. package/{src/auth → auth}/ui/base-layout.d.ts +0 -0
  789. package/{src/auth → auth}/ui/index.d.ts +0 -0
  790. package/{src/auth → auth}/ui/templates.d.ts +0 -0
  791. package/{src/auth → auth}/utils/audience.validator.d.ts +0 -0
  792. package/{src/auth → auth}/utils/index.d.ts +0 -0
  793. package/{src/auth → auth}/utils/www-authenticate.utils.d.ts +0 -0
  794. package/{src/common → common}/common.schema.d.ts +0 -0
  795. package/{src/common → common}/constants.d.ts +0 -0
  796. package/{src/common → common}/decorators/adapter.decorator.d.ts +0 -0
  797. package/{src/common → common}/decorators/app.decorator.d.ts +0 -0
  798. package/{src/common → common}/decorators/auth-provider.decorator.d.ts +0 -0
  799. package/{src/common → common}/decorators/decorator-utils.d.ts +0 -0
  800. package/{src/common → common}/decorators/flow.decorator.d.ts +0 -0
  801. package/{src/common → common}/decorators/front-mcp.decorator.d.ts +0 -0
  802. package/{src/common → common}/decorators/hook.decorator.d.ts +0 -0
  803. package/{src/common → common}/decorators/index.d.ts +0 -0
  804. package/{src/common → common}/decorators/logger.decorator.d.ts +0 -0
  805. package/{src/common → common}/decorators/plugin.decorator.d.ts +0 -0
  806. package/{src/common → common}/decorators/prompt.decorator.d.ts +0 -0
  807. package/{src/common → common}/decorators/provider.decorator.d.ts +0 -0
  808. package/{src/common → common}/decorators/resource.decorator.d.ts +0 -0
  809. package/{src/common → common}/decorators/tool.decorator.d.ts +0 -0
  810. package/{src/common → common}/dynamic/dynamic.adapter.d.ts +0 -0
  811. package/{src/common → common}/dynamic/dynamic.plugin.d.ts +0 -0
  812. package/{src/common → common}/dynamic/dynamic.utils.d.ts +0 -0
  813. package/{src/common → common}/dynamic/index.d.ts +0 -0
  814. package/{src/common → common}/entries/adapter.entry.d.ts +0 -0
  815. package/{src/common → common}/entries/app.entry.d.ts +0 -0
  816. package/{src/common → common}/entries/auth-provider.entry.d.ts +0 -0
  817. package/{src/common → common}/entries/base.entry.d.ts +0 -0
  818. package/{src/common → common}/entries/flow.entry.d.ts +0 -0
  819. package/{src/common → common}/entries/hook.entry.d.ts +0 -0
  820. package/{src/common → common}/entries/index.d.ts +0 -0
  821. package/{src/common → common}/entries/logger.entry.d.ts +0 -0
  822. package/{src/common → common}/entries/plugin.entry.d.ts +0 -0
  823. package/{src/common → common}/entries/prompt.entry.d.ts +0 -0
  824. package/{src/common → common}/entries/provider.entry.d.ts +0 -0
  825. package/{src/common → common}/entries/resource.entry.d.ts +0 -0
  826. package/{src/common → common}/entries/scope.entry.d.ts +0 -0
  827. package/{src/common → common}/entries/tool.entry.d.ts +0 -0
  828. package/{src/common → common}/flow/flow.utils.d.ts +0 -0
  829. package/{src/common → common}/index.d.ts +0 -0
  830. package/{src/common → common}/interfaces/adapter.interface.d.ts +0 -0
  831. package/{src/common → common}/interfaces/app.interface.d.ts +0 -0
  832. package/{src/common → common}/interfaces/auth-hook.interface.d.ts +0 -0
  833. package/{src/common → common}/interfaces/auth-provider.interface.d.ts +0 -0
  834. package/{src/common → common}/interfaces/base.interface.d.ts +0 -0
  835. package/{src/common → common}/interfaces/execution-context.interface.d.ts +0 -0
  836. package/{src/common → common}/interfaces/flow.interface.d.ts +0 -0
  837. package/{src/common → common}/interfaces/front-mcp.interface.d.ts +0 -0
  838. package/{src/common → common}/interfaces/hook.interface.d.ts +0 -0
  839. package/{src/common → common}/interfaces/index.d.ts +0 -0
  840. package/{src/common → common}/interfaces/internal/flow.utils.d.ts +0 -0
  841. package/{src/common → common}/interfaces/internal/index.d.ts +0 -0
  842. package/{src/common → common}/interfaces/internal/registry.interface.d.ts +0 -0
  843. package/{src/common → common}/interfaces/logger.interface.d.ts +0 -0
  844. package/{src/common → common}/interfaces/plugin.interface.d.ts +0 -0
  845. package/{src/common → common}/interfaces/prompt.interface.d.ts +0 -0
  846. package/{src/common → common}/interfaces/provider.interface.d.ts +0 -0
  847. package/{src/common → common}/interfaces/resource.interface.d.ts +0 -0
  848. package/{src/common → common}/interfaces/scope.interface.d.ts +0 -0
  849. package/{src/common → common}/interfaces/server.interface.d.ts +0 -0
  850. package/{src/common → common}/interfaces/session-hook.interface.d.ts +0 -0
  851. package/{src/common → common}/interfaces/tool-hook.interface.d.ts +0 -0
  852. package/{src/common → common}/interfaces/tool.interface.d.ts +0 -0
  853. package/{src/common → common}/metadata/adapter.metadata.d.ts +0 -0
  854. package/{src/common → common}/metadata/app.metadata.d.ts +42 -42
  855. package/{src/common → common}/metadata/auth-provider.metadata.d.ts +0 -0
  856. package/{src/common → common}/metadata/flow.metadata.d.ts +0 -0
  857. package/{src/common → common}/metadata/hook.metadata.d.ts +0 -0
  858. package/{src/common → common}/metadata/index.d.ts +0 -0
  859. package/{src/common → common}/metadata/logger.metadata.d.ts +0 -0
  860. package/{src/common → common}/metadata/plugin.metadata.d.ts +0 -0
  861. package/{src/common → common}/metadata/prompt.metadata.d.ts +0 -0
  862. package/{src/common → common}/metadata/provider.metadata.d.ts +0 -0
  863. package/{src/common → common}/metadata/resource.metadata.d.ts +0 -0
  864. package/{src/common → common}/metadata/tool-ui.metadata.d.ts +0 -0
  865. package/{src/common → common}/metadata/tool.metadata.d.ts +0 -0
  866. package/{src/common → common}/migrate/auth-transport.migrate.d.ts +0 -0
  867. package/{src/common → common}/migrate/index.d.ts +0 -0
  868. package/{src/common → common}/providers/base-config.provider.d.ts +0 -0
  869. package/{src/common → common}/records/adapter.record.d.ts +0 -0
  870. package/{src/common → common}/records/app.record.d.ts +0 -0
  871. package/{src/common → common}/records/auth-provider.record.d.ts +0 -0
  872. package/{src/common → common}/records/flow.record.d.ts +0 -0
  873. package/{src/common → common}/records/hook.record.d.ts +0 -0
  874. package/{src/common → common}/records/index.d.ts +0 -0
  875. package/{src/common → common}/records/logger.record.d.ts +0 -0
  876. package/{src/common → common}/records/plugin.record.d.ts +0 -0
  877. package/{src/common → common}/records/prompt.record.d.ts +0 -0
  878. package/{src/common → common}/records/provider.record.d.ts +0 -0
  879. package/{src/common → common}/records/resource.record.d.ts +0 -0
  880. package/{src/common → common}/records/scope.record.d.ts +0 -0
  881. package/{src/common → common}/records/tool.record.d.ts +0 -0
  882. package/{src/common → common}/schemas/annotated-class.schema.d.ts +0 -0
  883. package/{src/common → common}/schemas/http-input.schema.d.ts +0 -0
  884. package/{src/common → common}/schemas/http-output.schema.d.ts +0 -0
  885. package/{src/common → common}/schemas/index.d.ts +0 -0
  886. package/{src/common → common}/schemas/session-header.schema.d.ts +0 -0
  887. package/{src/common → common}/tokens/adapter.tokens.d.ts +0 -0
  888. package/{src/common → common}/tokens/app.tokens.d.ts +0 -0
  889. package/{src/common → common}/tokens/auth-provider.tokens.d.ts +0 -0
  890. package/{src/common → common}/tokens/base.tokens.d.ts +0 -0
  891. package/{src/common → common}/tokens/flow-hook.tokens.d.ts +0 -0
  892. package/{src/common → common}/tokens/flow.tokens.d.ts +0 -0
  893. package/{src/common → common}/tokens/front-mcp.tokens.d.ts +0 -0
  894. package/{src/common → common}/tokens/index.d.ts +0 -0
  895. package/{src/common → common}/tokens/logger.tokens.d.ts +0 -0
  896. package/{src/common → common}/tokens/plugin.tokens.d.ts +0 -0
  897. package/{src/common → common}/tokens/prompt.tokens.d.ts +0 -0
  898. package/{src/common → common}/tokens/provider.tokens.d.ts +0 -0
  899. package/{src/common → common}/tokens/resource.tokens.d.ts +0 -0
  900. package/{src/common → common}/tokens/server.tokens.d.ts +0 -0
  901. package/{src/common → common}/tokens/tool.tokens.d.ts +0 -0
  902. package/{src/common → common}/types/auth/index.d.ts +0 -0
  903. package/{src/common → common}/types/auth/jwt.types.d.ts +0 -0
  904. package/{src/common → common}/types/auth/session.types.d.ts +0 -0
  905. package/{src/common → common}/types/common.types.d.ts +0 -0
  906. package/{src/common → common}/types/index.d.ts +0 -0
  907. package/{src/logger/logger.tokens.d.ts → common/types/options/auth/auth.typecheck.d.ts} +0 -0
  908. package/{src/common → common}/types/options/http.options.d.ts +0 -0
  909. package/{src/common → common}/types/options/logging.options.d.ts +0 -0
  910. package/{src/common → common}/types/options/redis.options.d.ts +0 -0
  911. package/{src/common → common}/types/options/server-info.options.d.ts +0 -0
  912. package/{src/common → common}/types/options/session.options.d.ts +0 -0
  913. package/{src/common → common}/utils/global-config.utils.d.ts +0 -0
  914. package/{src/common → common}/utils/index.d.ts +0 -0
  915. package/{src/common → common}/utils/path.utils.d.ts +0 -0
  916. package/{src/completion → completion}/flows/complete.flow.d.ts +0 -0
  917. package/{src/context → context}/frontmcp-context-storage.d.ts +0 -0
  918. package/{src/context → context}/frontmcp-context.d.ts +0 -0
  919. package/{src/context → context}/frontmcp-context.provider.d.ts +0 -0
  920. package/{src/context → context}/index.d.ts +0 -0
  921. package/{src/context → context}/request-context-storage.d.ts +0 -0
  922. package/{src/context → context}/request-context.d.ts +0 -0
  923. package/{src/context → context}/request-context.provider.d.ts +0 -0
  924. package/{src/context → context}/session-key.provider.d.ts +0 -0
  925. package/{src/context → context}/trace-context.d.ts +0 -0
  926. package/{src/errors → errors}/authorization-required.error.d.ts +0 -0
  927. package/{src/errors → errors}/error-handler.d.ts +0 -0
  928. package/{src/errors → errors}/index.d.ts +0 -0
  929. package/{src/errors → errors}/mcp.error.d.ts +0 -0
  930. package/{src/exceptions → exceptions}/mcp-exceptions/session-missing.exception.d.ts +0 -0
  931. package/{src/exceptions → exceptions}/mcp-exceptions/unsupported-client-version.exception.d.ts +0 -0
  932. package/{src/flows → flows}/flow.instance.d.ts +0 -0
  933. package/{src/flows → flows}/flow.registry.d.ts +0 -0
  934. package/{src/flows → flows}/flow.stages.d.ts +0 -0
  935. package/{src/flows → flows}/flow.utils.d.ts +0 -0
  936. package/{src/front-mcp → front-mcp}/front-mcp.d.ts +0 -0
  937. package/{src/front-mcp → front-mcp}/front-mcp.providers.d.ts +38 -38
  938. /package/{src/front-mcp → front-mcp}/front-mcp.tokens.d.ts +0 -0
  939. /package/{src/front-mcp → front-mcp}/index.d.ts +0 -0
  940. /package/{src/front-mcp → front-mcp}/serverless-handler.d.ts +0 -0
  941. /package/{src/hooks → hooks}/hook.instance.d.ts +0 -0
  942. /package/{src/hooks → hooks}/hook.registry.d.ts +0 -0
  943. /package/{src/hooks → hooks}/hooks.utils.d.ts +0 -0
  944. /package/{src/index.d.ts → index.d.ts} +0 -0
  945. /package/{src/logger → logger}/instances/instance.console-logger.d.ts +0 -0
  946. /package/{src/logger → logger}/instances/instance.logger.d.ts +0 -0
  947. /package/{src/logger → logger}/logger.registry.d.ts +0 -0
  948. /package/{src/logger → logger}/logger.types.d.ts +0 -0
  949. /package/{src/logger → logger}/logger.utils.d.ts +0 -0
  950. /package/{src/logging → logging}/flows/set-level.flow.d.ts +0 -0
  951. /package/{src/mcp-apps → mcp-apps}/csp.d.ts +0 -0
  952. /package/{src/mcp-apps → mcp-apps}/index.d.ts +0 -0
  953. /package/{src/mcp-apps → mcp-apps}/schemas.d.ts +0 -0
  954. /package/{src/mcp-apps → mcp-apps}/template.d.ts +0 -0
  955. /package/{src/mcp-apps → mcp-apps}/types.d.ts +0 -0
  956. /package/{src/notification → notification}/index.d.ts +0 -0
  957. /package/{src/notification → notification}/notification.service.d.ts +0 -0
  958. /package/{src/plugin → plugin}/plugin.registry.d.ts +0 -0
  959. /package/{src/plugin → plugin}/plugin.utils.d.ts +0 -0
  960. /package/{src/prompt → prompt}/flows/get-prompt.flow.d.ts +0 -0
  961. /package/{src/prompt → prompt}/flows/prompts-list.flow.d.ts +0 -0
  962. /package/{src/prompt → prompt}/index.d.ts +0 -0
  963. /package/{src/prompt → prompt}/prompt.events.d.ts +0 -0
  964. /package/{src/prompt → prompt}/prompt.instance.d.ts +0 -0
  965. /package/{src/prompt → prompt}/prompt.registry.d.ts +0 -0
  966. /package/{src/prompt → prompt}/prompt.types.d.ts +0 -0
  967. /package/{src/prompt → prompt}/prompt.utils.d.ts +0 -0
  968. /package/{src/provider → provider}/provider.registry.d.ts +0 -0
  969. /package/{src/provider → provider}/provider.types.d.ts +0 -0
  970. /package/{src/provider → provider}/provider.utils.d.ts +0 -0
  971. /package/{src/regsitry → regsitry}/index.d.ts +0 -0
  972. /package/{src/regsitry → regsitry}/registry.base.d.ts +0 -0
  973. /package/{src/resource → resource}/flows/read-resource.flow.d.ts +0 -0
  974. /package/{src/resource → resource}/flows/resource-templates-list.flow.d.ts +0 -0
  975. /package/{src/resource → resource}/flows/resources-list.flow.d.ts +0 -0
  976. /package/{src/resource → resource}/flows/subscribe-resource.flow.d.ts +0 -0
  977. /package/{src/resource → resource}/flows/unsubscribe-resource.flow.d.ts +0 -0
  978. /package/{src/resource → resource}/index.d.ts +0 -0
  979. /package/{src/resource → resource}/resource.events.d.ts +0 -0
  980. /package/{src/resource → resource}/resource.instance.d.ts +0 -0
  981. /package/{src/resource → resource}/resource.registry.d.ts +0 -0
  982. /package/{src/resource → resource}/resource.types.d.ts +0 -0
  983. /package/{src/resource → resource}/resource.utils.d.ts +0 -0
  984. /package/{src/scope → scope}/flows/http.request.flow.d.ts +0 -0
  985. /package/{src/scope → scope}/index.d.ts +0 -0
  986. /package/{src/scope → scope}/scope.instance.d.ts +0 -0
  987. /package/{src/scope → scope}/scope.registry.d.ts +0 -0
  988. /package/{src/scope → scope}/scope.utils.d.ts +0 -0
  989. /package/{src/server → server}/adapters/base.host.adapter.d.ts +0 -0
  990. /package/{src/server → server}/adapters/express.host.adapter.d.ts +0 -0
  991. /package/{src/server → server}/server.instance.d.ts +0 -0
  992. /package/{src/server → server}/server.types.d.ts +0 -0
  993. /package/{src/server → server}/server.validation.d.ts +0 -0
  994. /package/{src/store → store}/adapters/store.base.adapter.d.ts +0 -0
  995. /package/{src/store → store}/adapters/store.memory.adapter.d.ts +0 -0
  996. /package/{src/store → store}/adapters/store.redis.adapter.d.ts +0 -0
  997. /package/{src/store → store}/adapters/store.vercel-kv.adapter.d.ts +0 -0
  998. /package/{src/store → store}/index.d.ts +0 -0
  999. /package/{src/store → store}/store.factory.d.ts +0 -0
  1000. /package/{src/store → store}/store.helpers.d.ts +0 -0
  1001. /package/{src/store → store}/store.registry.d.ts +0 -0
  1002. /package/{src/store → store}/store.tokens.d.ts +0 -0
  1003. /package/{src/store → store}/store.types.d.ts +0 -0
  1004. /package/{src/store → store}/store.utils.d.ts +0 -0
  1005. /package/{src/tool → tool}/flows/call-tool.flow.d.ts +0 -0
  1006. /package/{src/tool → tool}/flows/tools-list.flow.d.ts +0 -0
  1007. /package/{src/tool → tool}/tool.events.d.ts +0 -0
  1008. /package/{src/tool → tool}/tool.instance.d.ts +0 -0
  1009. /package/{src/tool → tool}/tool.registry.d.ts +0 -0
  1010. /package/{src/tool → tool}/tool.types.d.ts +0 -0
  1011. /package/{src/tool → tool}/tool.utils.d.ts +0 -0
  1012. /package/{src/tool → tool}/ui/index.d.ts +0 -0
  1013. /package/{src/tool → tool}/ui/platform-adapters.d.ts +0 -0
  1014. /package/{src/tool → tool}/ui/template-helpers.d.ts +0 -0
  1015. /package/{src/tool → tool}/ui/ui-resource-template.d.ts +0 -0
  1016. /package/{src/tool → tool}/ui/ui-resource.handler.d.ts +0 -0
  1017. /package/{src/transport → transport}/adapters/transport.local.adapter.d.ts +0 -0
  1018. /package/{src/transport → transport}/adapters/transport.sse.adapter.d.ts +0 -0
  1019. /package/{src/transport → transport}/adapters/transport.streamable-http.adapter.d.ts +0 -0
  1020. /package/{src/transport → transport}/flows/handle.sse.flow.d.ts +0 -0
  1021. /package/{src/transport → transport}/flows/handle.stateless-http.flow.d.ts +0 -0
  1022. /package/{src/transport → transport}/flows/handle.streamable-http.flow.d.ts +0 -0
  1023. /package/{src/transport → transport}/legacy/legacy.sse.tranporter.d.ts +0 -0
  1024. /package/{src/transport → transport}/mcp-handlers/Initialized-notification.hanlder.d.ts +0 -0
  1025. /package/{src/transport → transport}/mcp-handlers/call-tool-request.handler.d.ts +0 -0
  1026. /package/{src/transport → transport}/mcp-handlers/complete-request.handler.d.ts +0 -0
  1027. /package/{src/transport → transport}/mcp-handlers/get-prompt-request.handler.d.ts +0 -0
  1028. /package/{src/transport → transport}/mcp-handlers/index.d.ts +0 -0
  1029. /package/{src/transport → transport}/mcp-handlers/initialize-request.handler.d.ts +0 -0
  1030. /package/{src/transport → transport}/mcp-handlers/list-prompts-request.handler.d.ts +0 -0
  1031. /package/{src/transport → transport}/mcp-handlers/list-resource-templates-request.handler.d.ts +0 -0
  1032. /package/{src/transport → transport}/mcp-handlers/list-resources-request.handler.d.ts +0 -0
  1033. /package/{src/transport → transport}/mcp-handlers/list-tools-request.handler.d.ts +0 -0
  1034. /package/{src/transport → transport}/mcp-handlers/logging-set-level-request.handler.d.ts +0 -0
  1035. /package/{src/transport → transport}/mcp-handlers/mcp-handlers.types.d.ts +0 -0
  1036. /package/{src/transport → transport}/mcp-handlers/read-resource-request.handler.d.ts +0 -0
  1037. /package/{src/transport → transport}/mcp-handlers/roots-list-changed-notification.handler.d.ts +0 -0
  1038. /package/{src/transport → transport}/mcp-handlers/subscribe-request.handler.d.ts +0 -0
  1039. /package/{src/transport → transport}/mcp-handlers/unsubscribe-request.handler.d.ts +0 -0
  1040. /package/{src/transport → transport}/transport.error.d.ts +0 -0
  1041. /package/{src/transport → transport}/transport.event-store.d.ts +0 -0
  1042. /package/{src/transport → transport}/transport.local.d.ts +0 -0
  1043. /package/{src/transport → transport}/transport.registry.d.ts +0 -0
  1044. /package/{src/transport → transport}/transport.remote.d.ts +0 -0
  1045. /package/{src/transport → transport}/transport.types.d.ts +0 -0
  1046. /package/{src/types → types}/drinen-hooks.types.d.ts +0 -0
  1047. /package/{src/types → types}/invoke.type.d.ts +0 -0
  1048. /package/{src/types → types}/token.types.d.ts +0 -0
  1049. /package/{src/utils → utils}/content.utils.d.ts +0 -0
  1050. /package/{src/utils → utils}/index.d.ts +0 -0
  1051. /package/{src/utils → utils}/lineage.utils.d.ts +0 -0
  1052. /package/{src/utils → utils}/metadata.utils.d.ts +0 -0
  1053. /package/{src/utils → utils}/naming.utils.d.ts +0 -0
  1054. /package/{src/utils → utils}/server.utils.d.ts +0 -0
  1055. /package/{src/utils → utils}/string.utils.d.ts +0 -0
  1056. /package/{src/utils → utils}/token.utils.d.ts +0 -0
  1057. /package/{src/utils → utils}/types.utils.d.ts +0 -0
  1058. /package/{src/utils → utils}/uri-template.utils.d.ts +0 -0
  1059. /package/{src/utils → utils}/uri-validation.utils.d.ts +0 -0
@@ -1,552 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TransportService = void 0;
4
- const tslib_1 = require("tslib");
5
- // server/transport/transport.registry.ts
6
- const crypto_1 = require("crypto");
7
- const transport_remote_1 = require("./transport.remote");
8
- const transport_local_1 = require("./transport.local");
9
- const handle_streamable_http_flow_1 = tslib_1.__importDefault(require("./flows/handle.streamable-http.flow"));
10
- const handle_sse_flow_1 = tslib_1.__importDefault(require("./flows/handle.sse.flow"));
11
- const handle_stateless_http_flow_1 = tslib_1.__importDefault(require("./flows/handle.stateless-http.flow"));
12
- const store_1 = require("../store");
13
- const authorization_class_1 = require("../auth/authorization/authorization.class");
14
- class TransportService {
15
- ready;
16
- byType = new Map();
17
- distributed;
18
- bus;
19
- scope;
20
- /**
21
- * Session history cache for tracking if sessions were ever created.
22
- * Used to differentiate between "session never initialized" (HTTP 400) and
23
- * "session expired/terminated" (HTTP 404) per MCP Spec 2025-11-25.
24
- *
25
- * Key: JSON-encoded {type, tokenHash, sessionId}, Value: creation timestamp
26
- * Note: We use JSON instead of colon-delimiter because sessionId can contain colons.
27
- */
28
- sessionHistory = new Map();
29
- MAX_SESSION_HISTORY = 10000;
30
- /**
31
- * Session store for transport persistence (Redis or Vercel KV)
32
- * Used to persist session metadata across server restarts
33
- */
34
- sessionStore;
35
- /**
36
- * Transport persistence configuration
37
- */
38
- persistenceConfig;
39
- /**
40
- * Pending store configuration for async initialization
41
- */
42
- pendingStoreConfig;
43
- /**
44
- * Mutex map for preventing concurrent transport creation for the same key.
45
- * Key: JSON-encoded {t: type, h: tokenHash, s: sessionId}, Value: Promise that resolves when creation completes
46
- */
47
- creationMutex = new Map();
48
- constructor(scope, persistenceConfig) {
49
- this.scope = scope;
50
- this.persistenceConfig = persistenceConfig;
51
- this.distributed = false; // get from scope metadata
52
- this.bus = undefined; // get from scope metadata
53
- if (this.distributed && !this.bus) {
54
- throw new Error('TransportRegistry: distributed=true requires a TransportBus implementation.');
55
- }
56
- // Initialize session store if persistence is enabled (Redis or Vercel KV)
57
- if (persistenceConfig?.enabled && persistenceConfig.redis) {
58
- // Use factory to create appropriate session store based on provider
59
- const redisConfig = persistenceConfig.redis;
60
- const providerType = 'provider' in redisConfig ? redisConfig.provider : 'redis';
61
- // Override keyPrefix for transport persistence (separate from auth sessions)
62
- // Cast to RedisOptions since we're modifying the config
63
- this.pendingStoreConfig = {
64
- ...redisConfig,
65
- keyPrefix: redisConfig.keyPrefix ?? 'mcp:transport:',
66
- defaultTtlMs: persistenceConfig.defaultTtlMs ?? 3600000, // 1 hour default
67
- };
68
- this.scope.logger.info(`[TransportService] ${providerType} session store will be initialized for transport persistence`);
69
- }
70
- this.ready = this.initialize();
71
- }
72
- async initialize() {
73
- // Create session store if configuration is pending
74
- if (this.pendingStoreConfig) {
75
- try {
76
- const store = await (0, store_1.createSessionStore)(this.pendingStoreConfig, this.scope.logger.child('SessionStore'));
77
- // Cast to our extended type (both RedisSessionStore and VercelKvSessionStore have ping/disconnect)
78
- this.sessionStore = store;
79
- this.pendingStoreConfig = undefined;
80
- }
81
- catch (error) {
82
- this.scope.logger.error('[TransportService] Failed to create session store - session persistence disabled', {
83
- error: error.message,
84
- });
85
- }
86
- }
87
- // Validate connection if session store is configured
88
- if (this.sessionStore) {
89
- const isConnected = this.sessionStore.ping ? await this.sessionStore.ping() : true;
90
- if (!isConnected) {
91
- const providerType = this.persistenceConfig?.redis && 'provider' in this.persistenceConfig.redis
92
- ? this.persistenceConfig.redis.provider
93
- : 'redis';
94
- this.scope.logger.error(`[TransportService] Failed to connect to ${providerType} - session persistence disabled`);
95
- // Nullify sessionStore to prevent silent failures on all subsequent operations
96
- // This ensures clean graceful degradation - sessions will only persist in memory
97
- if (this.sessionStore.disconnect) {
98
- await this.sessionStore.disconnect().catch(() => void 0);
99
- }
100
- this.sessionStore = undefined;
101
- }
102
- else {
103
- this.scope.logger.info('[TransportService] Session store connection validated successfully');
104
- }
105
- }
106
- await this.scope.registryFlows(handle_streamable_http_flow_1.default, handle_sse_flow_1.default, handle_stateless_http_flow_1.default);
107
- }
108
- async destroy() {
109
- // Close session store connection if it was created
110
- if (this.sessionStore && this.sessionStore.disconnect) {
111
- try {
112
- await this.sessionStore.disconnect();
113
- this.scope.logger.info('[TransportService] Session store disconnected');
114
- }
115
- catch (error) {
116
- this.scope.logger.warn('[TransportService] Error disconnecting session store', {
117
- error: error.message,
118
- });
119
- }
120
- }
121
- }
122
- async getTransporter(type, token, sessionId) {
123
- const key = this.keyOf(type, token, sessionId);
124
- // 1. Check local in-memory cache first
125
- const local = this.lookupLocal(key);
126
- if (local)
127
- return local;
128
- // 2. Check distributed bus (if enabled)
129
- if (this.distributed && this.bus) {
130
- const location = await this.bus.lookup(key);
131
- if (location) {
132
- return new transport_remote_1.RemoteTransporter(key, this.bus);
133
- }
134
- }
135
- // Note: Redis-stored sessions require recreation via recreateTransporter()
136
- // Flows should use getStoredSession() to check if session exists in Redis,
137
- // then call recreateTransporter() with the response object.
138
- return undefined;
139
- }
140
- /**
141
- * Get stored session from Redis (without creating a transport).
142
- * Used by flows to check if session exists and can be recreated.
143
- *
144
- * @param type - Transport type
145
- * @param token - Authorization token
146
- * @param sessionId - Session ID
147
- * @returns Stored session data if exists and token matches, undefined otherwise
148
- */
149
- async getStoredSession(type, token, sessionId) {
150
- if (!this.sessionStore || type !== 'streamable-http')
151
- return undefined;
152
- const tokenHash = this.sha256(token);
153
- const stored = await this.sessionStore.get(sessionId);
154
- if (!stored)
155
- return undefined;
156
- // Verify the token hash matches
157
- if (stored.authorizationId !== tokenHash) {
158
- this.scope.logger.warn('[TransportService] Session token mismatch during lookup', {
159
- sessionId: sessionId.slice(0, 20),
160
- storedTokenHash: stored.authorizationId.slice(0, 8),
161
- requestTokenHash: tokenHash.slice(0, 8),
162
- });
163
- return undefined;
164
- }
165
- return stored;
166
- }
167
- /**
168
- * Recreate a transport from stored session data.
169
- * Must be called with a valid response object to create the actual transport.
170
- *
171
- * @param type - Transport type
172
- * @param token - Authorization token
173
- * @param sessionId - Session ID
174
- * @param storedSession - Previously stored session data
175
- * @param res - Server response object for the new transport
176
- * @returns The recreated transport
177
- */
178
- async recreateTransporter(type, token, sessionId, storedSession, res) {
179
- const key = this.keyOf(type, token, sessionId);
180
- // Check if already recreated in memory
181
- const existing = this.lookupLocal(key);
182
- if (existing)
183
- return existing;
184
- // Use mutex to prevent concurrent recreation of the same transport
185
- // Use JSON encoding for mutex key (consistent with history key format, handles colons in sessionId)
186
- const mutexKey = JSON.stringify({ t: type, h: key.tokenHash, s: sessionId });
187
- const pendingCreation = this.creationMutex.get(mutexKey);
188
- if (pendingCreation) {
189
- // Another request is already recreating this transport - wait for it
190
- return pendingCreation;
191
- }
192
- // Recreate the transport with mutex protection
193
- const recreationPromise = this.doRecreateTransporter(key, sessionId, storedSession, res);
194
- this.creationMutex.set(mutexKey, recreationPromise);
195
- try {
196
- return await recreationPromise;
197
- }
198
- catch (error) {
199
- // Log recreation errors for debugging
200
- this.scope.logger.error('[TransportService] Failed to recreate transport from stored session', {
201
- sessionId: sessionId.slice(0, 20),
202
- error: error instanceof Error ? { name: error.name, message: error.message } : String(error),
203
- });
204
- throw error;
205
- }
206
- finally {
207
- this.creationMutex.delete(mutexKey);
208
- }
209
- }
210
- /**
211
- * Internal method to actually recreate the transport (called with mutex protection)
212
- */
213
- async doRecreateTransporter(key, sessionId, storedSession, res) {
214
- // Double-check in case another request completed while we were waiting
215
- const existing = this.lookupLocal(key);
216
- if (existing)
217
- return existing;
218
- this.scope.logger.info('[TransportService] Recreating transport from stored session', {
219
- sessionId: sessionId.slice(0, 20),
220
- protocol: storedSession.session.protocol,
221
- createdAt: storedSession.createdAt,
222
- });
223
- // Mark session as recreated in history
224
- const historyKey = this.makeHistoryKey(key.type, key.tokenHash, sessionId);
225
- this.sessionHistory.set(historyKey, storedSession.createdAt);
226
- const sessionStore = this.sessionStore;
227
- const persistenceConfig = this.persistenceConfig;
228
- // Create new transport
229
- const transporter = new transport_local_1.LocalTransporter(this.scope, key, res, () => {
230
- key.sessionId = sessionId;
231
- this.evictLocal(key);
232
- if (this.distributed && this.bus) {
233
- this.bus.revoke(key).catch(() => void 0);
234
- }
235
- // Remove from Redis on dispose
236
- if (sessionStore) {
237
- sessionStore.delete(sessionId).catch(() => void 0);
238
- }
239
- });
240
- await transporter.ready();
241
- this.insertLocal(key, transporter);
242
- // Update session access time in Redis
243
- if (sessionStore) {
244
- const updatedSession = {
245
- ...storedSession,
246
- lastAccessedAt: Date.now(),
247
- };
248
- sessionStore.set(sessionId, updatedSession, persistenceConfig?.defaultTtlMs).catch((err) => {
249
- this.scope.logger.warn('[TransportService] Failed to update session in Redis', {
250
- sessionId: sessionId.slice(0, 20),
251
- error: err instanceof Error ? err.message : String(err),
252
- });
253
- });
254
- }
255
- if (this.distributed && this.bus) {
256
- await this.bus.advertise(key);
257
- }
258
- return transporter;
259
- }
260
- async createTransporter(type, token, sessionId, res) {
261
- const key = this.keyOf(type, token, sessionId);
262
- // Check if already exists
263
- const existing = this.lookupLocal(key);
264
- if (existing)
265
- return existing;
266
- // Use mutex to prevent concurrent creation of the same transport
267
- // Use JSON encoding for mutex key (consistent with history key format, handles colons in sessionId)
268
- const mutexKey = JSON.stringify({ t: type, h: key.tokenHash, s: sessionId });
269
- const pendingCreation = this.creationMutex.get(mutexKey);
270
- if (pendingCreation) {
271
- // Another request is already creating this transport - wait for it
272
- return pendingCreation;
273
- }
274
- // Create the transport with mutex protection
275
- const creationPromise = this.doCreateTransporter(key, sessionId, res, type);
276
- this.creationMutex.set(mutexKey, creationPromise);
277
- try {
278
- return await creationPromise;
279
- }
280
- finally {
281
- this.creationMutex.delete(mutexKey);
282
- }
283
- }
284
- /**
285
- * Internal method to actually create the transport (called with mutex protection)
286
- */
287
- async doCreateTransporter(key, sessionId, res, type) {
288
- // Double-check in case another request completed while we were waiting
289
- const existing = this.lookupLocal(key);
290
- if (existing)
291
- return existing;
292
- const sessionStore = this.sessionStore;
293
- const persistenceConfig = this.persistenceConfig;
294
- const transporter = new transport_local_1.LocalTransporter(this.scope, key, res, () => {
295
- key.sessionId = sessionId;
296
- this.evictLocal(key);
297
- if (this.distributed && this.bus) {
298
- this.bus.revoke(key).catch(() => void 0);
299
- }
300
- // Remove from Redis on dispose
301
- if (sessionStore) {
302
- sessionStore.delete(sessionId).catch(() => void 0);
303
- }
304
- });
305
- await transporter.ready();
306
- this.insertLocal(key, transporter);
307
- // Persist session to Redis (streamable-http only for now)
308
- if (sessionStore && type === 'streamable-http') {
309
- const storedSession = {
310
- session: {
311
- id: sessionId,
312
- authorizationId: key.tokenHash,
313
- protocol: 'streamable-http',
314
- createdAt: Date.now(),
315
- nodeId: (0, authorization_class_1.getMachineId)(),
316
- },
317
- authorizationId: key.tokenHash,
318
- createdAt: Date.now(),
319
- lastAccessedAt: Date.now(),
320
- };
321
- sessionStore.set(sessionId, storedSession, persistenceConfig?.defaultTtlMs).catch((err) => {
322
- this.scope.logger.warn('[TransportService] Failed to persist session to Redis', {
323
- sessionId: sessionId.slice(0, 20),
324
- error: err instanceof Error ? err.message : String(err),
325
- });
326
- });
327
- }
328
- if (this.distributed && this.bus) {
329
- await this.bus.advertise(key);
330
- }
331
- return transporter;
332
- }
333
- async destroyTransporter(type, token, sessionId, reason) {
334
- const key = this.keyOf(type, token, sessionId);
335
- const local = this.lookupLocal(key);
336
- if (local) {
337
- await local.destroy(reason);
338
- return;
339
- }
340
- if (this.distributed && this.bus) {
341
- const location = await this.bus.lookup(key);
342
- if (location) {
343
- await this.bus.destroyRemote(key, reason);
344
- return;
345
- }
346
- }
347
- throw new Error('Invalid session: cannot destroy non-existent transporter.');
348
- }
349
- /**
350
- * Get or create a shared singleton transport for anonymous stateless requests.
351
- * All anonymous requests share the same transport instance.
352
- */
353
- async getOrCreateAnonymousStatelessTransport(type, res) {
354
- const key = this.keyOf(type, '__anonymous__', '__stateless__');
355
- const existing = this.lookupLocal(key);
356
- if (existing)
357
- return existing;
358
- // Create shared transport for all anonymous requests
359
- const transporter = new transport_local_1.LocalTransporter(this.scope, key, res, () => {
360
- this.evictLocal(key);
361
- if (this.distributed && this.bus) {
362
- this.bus.revoke(key).catch(() => void 0);
363
- }
364
- });
365
- await transporter.ready();
366
- this.insertLocal(key, transporter);
367
- if (this.distributed && this.bus) {
368
- await this.bus.advertise(key);
369
- }
370
- return transporter;
371
- }
372
- /**
373
- * Get or create a singleton transport for authenticated stateless requests.
374
- * Each unique token gets its own singleton transport.
375
- */
376
- async getOrCreateAuthenticatedStatelessTransport(type, token, res) {
377
- const key = this.keyOf(type, token, '__stateless__');
378
- const existing = this.lookupLocal(key);
379
- if (existing)
380
- return existing;
381
- // Create singleton transport for this token
382
- const transporter = new transport_local_1.LocalTransporter(this.scope, key, res, () => {
383
- this.evictLocal(key);
384
- if (this.distributed && this.bus) {
385
- this.bus.revoke(key).catch(() => void 0);
386
- }
387
- });
388
- await transporter.ready();
389
- this.insertLocal(key, transporter);
390
- if (this.distributed && this.bus) {
391
- await this.bus.advertise(key);
392
- }
393
- return transporter;
394
- }
395
- /**
396
- * Check if a session was ever created (even if it's been terminated/evicted).
397
- * Used to differentiate between "session never initialized" (HTTP 400) and
398
- * "session expired/terminated" (HTTP 404) per MCP Spec 2025-11-25.
399
- *
400
- * Note: This is synchronous and only checks local history. For async Redis check,
401
- * use wasSessionCreatedAsync.
402
- *
403
- * @param type - Transport type (e.g., 'streamable-http', 'sse')
404
- * @param token - The authorization token
405
- * @param sessionId - The session ID to check
406
- * @returns true if session was ever created locally, false otherwise
407
- */
408
- wasSessionCreated(type, token, sessionId) {
409
- const tokenHash = this.sha256(token);
410
- const historyKey = this.makeHistoryKey(type, tokenHash, sessionId);
411
- return this.sessionHistory.has(historyKey);
412
- }
413
- /**
414
- * Async version that also checks Redis for session existence.
415
- * Used when we need to check if session was ever created across server restarts.
416
- */
417
- async wasSessionCreatedAsync(type, token, sessionId) {
418
- // Check local history first (fast path)
419
- if (this.wasSessionCreated(type, token, sessionId)) {
420
- return true;
421
- }
422
- // Check Redis if available - use getStoredSession() to verify token hash
423
- // (sessionStore.exists() would leak session existence to unauthorized callers)
424
- if (this.sessionStore && type === 'streamable-http') {
425
- const stored = await this.getStoredSession(type, token, sessionId);
426
- return stored !== undefined;
427
- }
428
- return false;
429
- }
430
- /* --------------------------------- internals -------------------------------- */
431
- sha256(value) {
432
- return (0, crypto_1.createHash)('sha256').update(value, 'utf8').digest('hex');
433
- }
434
- /**
435
- * Create a history key from components.
436
- * Uses JSON encoding to handle sessionIds that contain special characters.
437
- */
438
- makeHistoryKey(type, tokenHash, sessionId) {
439
- return JSON.stringify({ t: type, h: tokenHash, s: sessionId });
440
- }
441
- /**
442
- * Parse a history key back into components.
443
- * Returns undefined if the key is malformed.
444
- */
445
- parseHistoryKey(key) {
446
- try {
447
- const parsed = JSON.parse(key);
448
- if (typeof parsed.t === 'string' && typeof parsed.h === 'string' && typeof parsed.s === 'string') {
449
- return { type: parsed.t, tokenHash: parsed.h, sessionId: parsed.s };
450
- }
451
- return undefined;
452
- }
453
- catch {
454
- return undefined;
455
- }
456
- }
457
- keyOf(type, token, sessionId, sessionIdSse) {
458
- return {
459
- type,
460
- token,
461
- tokenHash: this.sha256(token),
462
- sessionId,
463
- sessionIdSse,
464
- };
465
- }
466
- ensureTypeBucket(type) {
467
- let bucket = this.byType.get(type);
468
- if (!bucket) {
469
- bucket = new Map();
470
- this.byType.set(type, bucket);
471
- }
472
- return bucket;
473
- }
474
- ensureTokenBucket(typeBucket, tokenHash) {
475
- let bucket = typeBucket.get(tokenHash);
476
- if (!bucket) {
477
- bucket = new Map();
478
- typeBucket.set(tokenHash, bucket);
479
- }
480
- return bucket;
481
- }
482
- lookupLocal(key) {
483
- const typeBucket = this.byType.get(key.type);
484
- if (!typeBucket)
485
- return undefined;
486
- const tokenBucket = typeBucket.get(key.tokenHash);
487
- if (!tokenBucket)
488
- return undefined;
489
- return tokenBucket.get(key.sessionId);
490
- }
491
- insertLocal(key, t) {
492
- const typeBucket = this.ensureTypeBucket(key.type);
493
- const tokenBucket = this.ensureTokenBucket(typeBucket, key.tokenHash);
494
- tokenBucket.set(key.sessionId, t);
495
- // Record session creation in history for HTTP 404 detection
496
- const historyKey = this.makeHistoryKey(key.type, key.tokenHash, key.sessionId);
497
- this.sessionHistory.set(historyKey, Date.now());
498
- // Evict oldest entries if cache exceeds max size
499
- // Only evict entries that don't have active transports (to avoid inconsistent state)
500
- if (this.sessionHistory.size > this.MAX_SESSION_HISTORY) {
501
- const entries = [...this.sessionHistory.entries()].sort((a, b) => a[1] - b[1]);
502
- // Try to remove oldest 10% of entries (skip those with active transports)
503
- const targetEvictions = Math.ceil(this.MAX_SESSION_HISTORY * 0.1);
504
- let evicted = 0;
505
- for (const [histKey] of entries) {
506
- if (evicted >= targetEvictions)
507
- break;
508
- // Parse history key to check if transport still exists
509
- const parsed = this.parseHistoryKey(histKey);
510
- if (!parsed) {
511
- // Invalid key format - safe to evict
512
- this.sessionHistory.delete(histKey);
513
- evicted++;
514
- continue;
515
- }
516
- const { type, tokenHash, sessionId } = parsed;
517
- const typeBucket = this.byType.get(type);
518
- const tokenBucket = typeBucket?.get(tokenHash);
519
- const hasActiveTransport = tokenBucket?.has(sessionId) ?? false;
520
- // Only evict if there's no active transport for this session
521
- if (!hasActiveTransport) {
522
- this.sessionHistory.delete(histKey);
523
- evicted++;
524
- }
525
- }
526
- // Log warning if we couldn't evict enough entries (all have active transports)
527
- if (evicted < targetEvictions) {
528
- this.scope.logger.warn('[TransportService] Session history eviction: unable to free target memory', {
529
- targetEvictions,
530
- actualEvictions: evicted,
531
- currentSize: this.sessionHistory.size,
532
- maxSize: this.MAX_SESSION_HISTORY,
533
- });
534
- }
535
- }
536
- }
537
- evictLocal(key) {
538
- const typeBucket = this.byType.get(key.type);
539
- if (!typeBucket)
540
- return;
541
- const tokenBucket = typeBucket.get(key.tokenHash);
542
- if (!tokenBucket)
543
- return;
544
- tokenBucket.delete(key.sessionId);
545
- if (tokenBucket.size === 0)
546
- typeBucket.delete(key.tokenHash);
547
- if (typeBucket.size === 0)
548
- this.byType.delete(key.type);
549
- }
550
- }
551
- exports.TransportService = TransportService;
552
- //# sourceMappingURL=transport.registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.registry.js","sourceRoot":"","sources":["../../../src/transport/transport.registry.ts"],"names":[],"mappings":"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","sourcesContent":["// server/transport/transport.registry.ts\nimport { createHash } from 'crypto';\nimport {\n TransportBus,\n Transporter,\n TransportKey,\n TransportRegistryBucket,\n TransportTokenBucket,\n TransportType,\n TransportTypeBucket,\n} from './transport.types';\nimport { RemoteTransporter } from './transport.remote';\nimport { LocalTransporter } from './transport.local';\nimport { ServerResponse, TransportPersistenceConfigInput } from '../common';\nimport { Scope } from '../scope';\nimport HandleStreamableHttpFlow from './flows/handle.streamable-http.flow';\nimport HandleSseFlow from './flows/handle.sse.flow';\nimport HandleStatelessHttpFlow from './flows/handle.stateless-http.flow';\nimport { StoredSession } from '../auth/session';\nimport type { SessionStore } from '../auth/session/transport-session.types';\nimport { createSessionStore } from '../store';\nimport type { RedisOptions } from '../common/types/options/redis.options';\nimport { getMachineId } from '../auth/authorization/authorization.class';\n\nexport class TransportService {\n readonly ready: Promise<void>;\n private readonly byType: TransportRegistryBucket = new Map();\n private readonly distributed: boolean;\n private readonly bus?: TransportBus;\n private readonly scope: Scope;\n\n /**\n * Session history cache for tracking if sessions were ever created.\n * Used to differentiate between \"session never initialized\" (HTTP 400) and\n * \"session expired/terminated\" (HTTP 404) per MCP Spec 2025-11-25.\n *\n * Key: JSON-encoded {type, tokenHash, sessionId}, Value: creation timestamp\n * Note: We use JSON instead of colon-delimiter because sessionId can contain colons.\n */\n private readonly sessionHistory: Map<string, number> = new Map();\n private readonly MAX_SESSION_HISTORY = 10000;\n\n /**\n * Session store for transport persistence (Redis or Vercel KV)\n * Used to persist session metadata across server restarts\n */\n private sessionStore?: SessionStore & { ping?: () => Promise<boolean>; disconnect?: () => Promise<void> };\n\n /**\n * Transport persistence configuration\n */\n private persistenceConfig?: TransportPersistenceConfigInput;\n\n /**\n * Pending store configuration for async initialization\n */\n private pendingStoreConfig?: RedisOptions;\n\n /**\n * Mutex map for preventing concurrent transport creation for the same key.\n * Key: JSON-encoded {t: type, h: tokenHash, s: sessionId}, Value: Promise that resolves when creation completes\n */\n private readonly creationMutex: Map<string, Promise<Transporter>> = new Map();\n\n constructor(scope: Scope, persistenceConfig?: TransportPersistenceConfigInput) {\n this.scope = scope;\n this.persistenceConfig = persistenceConfig;\n this.distributed = false; // get from scope metadata\n this.bus = undefined; // get from scope metadata\n if (this.distributed && !this.bus) {\n throw new Error('TransportRegistry: distributed=true requires a TransportBus implementation.');\n }\n\n // Initialize session store if persistence is enabled (Redis or Vercel KV)\n if (persistenceConfig?.enabled && persistenceConfig.redis) {\n // Use factory to create appropriate session store based on provider\n const redisConfig = persistenceConfig.redis;\n const providerType = 'provider' in redisConfig ? redisConfig.provider : 'redis';\n\n // Override keyPrefix for transport persistence (separate from auth sessions)\n // Cast to RedisOptions since we're modifying the config\n this.pendingStoreConfig = {\n ...redisConfig,\n keyPrefix: redisConfig.keyPrefix ?? 'mcp:transport:',\n defaultTtlMs: persistenceConfig.defaultTtlMs ?? 3600000, // 1 hour default\n } as RedisOptions;\n\n this.scope.logger.info(\n `[TransportService] ${providerType} session store will be initialized for transport persistence`,\n );\n }\n\n this.ready = this.initialize();\n }\n\n private async initialize() {\n // Create session store if configuration is pending\n if (this.pendingStoreConfig) {\n try {\n const store = await createSessionStore(this.pendingStoreConfig, this.scope.logger.child('SessionStore'));\n // Cast to our extended type (both RedisSessionStore and VercelKvSessionStore have ping/disconnect)\n this.sessionStore = store as SessionStore & { ping?: () => Promise<boolean>; disconnect?: () => Promise<void> };\n this.pendingStoreConfig = undefined;\n } catch (error) {\n this.scope.logger.error('[TransportService] Failed to create session store - session persistence disabled', {\n error: (error as Error).message,\n });\n }\n }\n\n // Validate connection if session store is configured\n if (this.sessionStore) {\n const isConnected = this.sessionStore.ping ? await this.sessionStore.ping() : true;\n if (!isConnected) {\n const providerType =\n this.persistenceConfig?.redis && 'provider' in this.persistenceConfig.redis\n ? this.persistenceConfig.redis.provider\n : 'redis';\n this.scope.logger.error(\n `[TransportService] Failed to connect to ${providerType} - session persistence disabled`,\n );\n // Nullify sessionStore to prevent silent failures on all subsequent operations\n // This ensures clean graceful degradation - sessions will only persist in memory\n if (this.sessionStore.disconnect) {\n await this.sessionStore.disconnect().catch(() => void 0);\n }\n this.sessionStore = undefined;\n } else {\n this.scope.logger.info('[TransportService] Session store connection validated successfully');\n }\n }\n\n await this.scope.registryFlows(HandleStreamableHttpFlow, HandleSseFlow, HandleStatelessHttpFlow);\n }\n\n async destroy() {\n // Close session store connection if it was created\n if (this.sessionStore && this.sessionStore.disconnect) {\n try {\n await this.sessionStore.disconnect();\n this.scope.logger.info('[TransportService] Session store disconnected');\n } catch (error) {\n this.scope.logger.warn('[TransportService] Error disconnecting session store', {\n error: (error as Error).message,\n });\n }\n }\n }\n\n async getTransporter(type: TransportType, token: string, sessionId: string): Promise<Transporter | undefined> {\n const key = this.keyOf(type, token, sessionId);\n\n // 1. Check local in-memory cache first\n const local = this.lookupLocal(key);\n if (local) return local;\n\n // 2. Check distributed bus (if enabled)\n if (this.distributed && this.bus) {\n const location = await this.bus.lookup(key);\n if (location) {\n return new RemoteTransporter(key, this.bus);\n }\n }\n\n // Note: Redis-stored sessions require recreation via recreateTransporter()\n // Flows should use getStoredSession() to check if session exists in Redis,\n // then call recreateTransporter() with the response object.\n\n return undefined;\n }\n\n /**\n * Get stored session from Redis (without creating a transport).\n * Used by flows to check if session exists and can be recreated.\n *\n * @param type - Transport type\n * @param token - Authorization token\n * @param sessionId - Session ID\n * @returns Stored session data if exists and token matches, undefined otherwise\n */\n async getStoredSession(type: TransportType, token: string, sessionId: string): Promise<StoredSession | undefined> {\n if (!this.sessionStore || type !== 'streamable-http') return undefined;\n\n const tokenHash = this.sha256(token);\n const stored = await this.sessionStore.get(sessionId);\n if (!stored) return undefined;\n\n // Verify the token hash matches\n if (stored.authorizationId !== tokenHash) {\n this.scope.logger.warn('[TransportService] Session token mismatch during lookup', {\n sessionId: sessionId.slice(0, 20),\n storedTokenHash: stored.authorizationId.slice(0, 8),\n requestTokenHash: tokenHash.slice(0, 8),\n });\n return undefined;\n }\n\n return stored;\n }\n\n /**\n * Recreate a transport from stored session data.\n * Must be called with a valid response object to create the actual transport.\n *\n * @param type - Transport type\n * @param token - Authorization token\n * @param sessionId - Session ID\n * @param storedSession - Previously stored session data\n * @param res - Server response object for the new transport\n * @returns The recreated transport\n */\n async recreateTransporter(\n type: TransportType,\n token: string,\n sessionId: string,\n storedSession: StoredSession,\n res: ServerResponse,\n ): Promise<Transporter> {\n const key = this.keyOf(type, token, sessionId);\n\n // Check if already recreated in memory\n const existing = this.lookupLocal(key);\n if (existing) return existing;\n\n // Use mutex to prevent concurrent recreation of the same transport\n // Use JSON encoding for mutex key (consistent with history key format, handles colons in sessionId)\n const mutexKey = JSON.stringify({ t: type, h: key.tokenHash, s: sessionId });\n const pendingCreation = this.creationMutex.get(mutexKey);\n if (pendingCreation) {\n // Another request is already recreating this transport - wait for it\n return pendingCreation;\n }\n\n // Recreate the transport with mutex protection\n const recreationPromise = this.doRecreateTransporter(key, sessionId, storedSession, res);\n this.creationMutex.set(mutexKey, recreationPromise);\n\n try {\n return await recreationPromise;\n } catch (error) {\n // Log recreation errors for debugging\n this.scope.logger.error('[TransportService] Failed to recreate transport from stored session', {\n sessionId: sessionId.slice(0, 20),\n error: error instanceof Error ? { name: error.name, message: error.message } : String(error),\n });\n throw error;\n } finally {\n this.creationMutex.delete(mutexKey);\n }\n }\n\n /**\n * Internal method to actually recreate the transport (called with mutex protection)\n */\n private async doRecreateTransporter(\n key: TransportKey,\n sessionId: string,\n storedSession: StoredSession,\n res: ServerResponse,\n ): Promise<Transporter> {\n // Double-check in case another request completed while we were waiting\n const existing = this.lookupLocal(key);\n if (existing) return existing;\n\n this.scope.logger.info('[TransportService] Recreating transport from stored session', {\n sessionId: sessionId.slice(0, 20),\n protocol: storedSession.session.protocol,\n createdAt: storedSession.createdAt,\n });\n\n // Mark session as recreated in history\n const historyKey = this.makeHistoryKey(key.type, key.tokenHash, sessionId);\n this.sessionHistory.set(historyKey, storedSession.createdAt);\n\n const sessionStore = this.sessionStore;\n const persistenceConfig = this.persistenceConfig;\n\n // Create new transport\n const transporter = new LocalTransporter(this.scope, key, res, () => {\n key.sessionId = sessionId;\n this.evictLocal(key);\n if (this.distributed && this.bus) {\n this.bus.revoke(key).catch(() => void 0);\n }\n // Remove from Redis on dispose\n if (sessionStore) {\n sessionStore.delete(sessionId).catch(() => void 0);\n }\n });\n\n await transporter.ready();\n this.insertLocal(key, transporter);\n\n // Update session access time in Redis\n if (sessionStore) {\n const updatedSession: StoredSession = {\n ...storedSession,\n lastAccessedAt: Date.now(),\n };\n sessionStore.set(sessionId, updatedSession, persistenceConfig?.defaultTtlMs).catch((err) => {\n this.scope.logger.warn('[TransportService] Failed to update session in Redis', {\n sessionId: sessionId.slice(0, 20),\n error: err instanceof Error ? err.message : String(err),\n });\n });\n }\n\n if (this.distributed && this.bus) {\n await this.bus.advertise(key);\n }\n\n return transporter;\n }\n\n async createTransporter(\n type: TransportType,\n token: string,\n sessionId: string,\n res: ServerResponse,\n ): Promise<Transporter> {\n const key = this.keyOf(type, token, sessionId);\n\n // Check if already exists\n const existing = this.lookupLocal(key);\n if (existing) return existing;\n\n // Use mutex to prevent concurrent creation of the same transport\n // Use JSON encoding for mutex key (consistent with history key format, handles colons in sessionId)\n const mutexKey = JSON.stringify({ t: type, h: key.tokenHash, s: sessionId });\n const pendingCreation = this.creationMutex.get(mutexKey);\n if (pendingCreation) {\n // Another request is already creating this transport - wait for it\n return pendingCreation;\n }\n\n // Create the transport with mutex protection\n const creationPromise = this.doCreateTransporter(key, sessionId, res, type);\n this.creationMutex.set(mutexKey, creationPromise);\n\n try {\n return await creationPromise;\n } finally {\n this.creationMutex.delete(mutexKey);\n }\n }\n\n /**\n * Internal method to actually create the transport (called with mutex protection)\n */\n private async doCreateTransporter(\n key: TransportKey,\n sessionId: string,\n res: ServerResponse,\n type: TransportType,\n ): Promise<Transporter> {\n // Double-check in case another request completed while we were waiting\n const existing = this.lookupLocal(key);\n if (existing) return existing;\n\n const sessionStore = this.sessionStore;\n const persistenceConfig = this.persistenceConfig;\n\n const transporter = new LocalTransporter(this.scope, key, res, () => {\n key.sessionId = sessionId;\n this.evictLocal(key);\n if (this.distributed && this.bus) {\n this.bus.revoke(key).catch(() => void 0);\n }\n // Remove from Redis on dispose\n if (sessionStore) {\n sessionStore.delete(sessionId).catch(() => void 0);\n }\n });\n\n await transporter.ready();\n\n this.insertLocal(key, transporter);\n\n // Persist session to Redis (streamable-http only for now)\n if (sessionStore && type === 'streamable-http') {\n const storedSession: StoredSession = {\n session: {\n id: sessionId,\n authorizationId: key.tokenHash,\n protocol: 'streamable-http',\n createdAt: Date.now(),\n nodeId: getMachineId(),\n },\n authorizationId: key.tokenHash,\n createdAt: Date.now(),\n lastAccessedAt: Date.now(),\n };\n sessionStore.set(sessionId, storedSession, persistenceConfig?.defaultTtlMs).catch((err) => {\n this.scope.logger.warn('[TransportService] Failed to persist session to Redis', {\n sessionId: sessionId.slice(0, 20),\n error: err instanceof Error ? err.message : String(err),\n });\n });\n }\n\n if (this.distributed && this.bus) {\n await this.bus.advertise(key);\n }\n\n return transporter;\n }\n\n async destroyTransporter(type: TransportType, token: string, sessionId: string, reason?: string): Promise<void> {\n const key = this.keyOf(type, token, sessionId);\n\n const local = this.lookupLocal(key);\n if (local) {\n await local.destroy(reason);\n return;\n }\n\n if (this.distributed && this.bus) {\n const location = await this.bus.lookup(key);\n if (location) {\n await this.bus.destroyRemote(key, reason);\n return;\n }\n }\n\n throw new Error('Invalid session: cannot destroy non-existent transporter.');\n }\n\n /**\n * Get or create a shared singleton transport for anonymous stateless requests.\n * All anonymous requests share the same transport instance.\n */\n async getOrCreateAnonymousStatelessTransport(type: TransportType, res: ServerResponse): Promise<Transporter> {\n const key = this.keyOf(type, '__anonymous__', '__stateless__');\n const existing = this.lookupLocal(key);\n if (existing) return existing;\n\n // Create shared transport for all anonymous requests\n const transporter = new LocalTransporter(this.scope, key, res, () => {\n this.evictLocal(key);\n if (this.distributed && this.bus) {\n this.bus.revoke(key).catch(() => void 0);\n }\n });\n\n await transporter.ready();\n this.insertLocal(key, transporter);\n\n if (this.distributed && this.bus) {\n await this.bus.advertise(key);\n }\n\n return transporter;\n }\n\n /**\n * Get or create a singleton transport for authenticated stateless requests.\n * Each unique token gets its own singleton transport.\n */\n async getOrCreateAuthenticatedStatelessTransport(\n type: TransportType,\n token: string,\n res: ServerResponse,\n ): Promise<Transporter> {\n const key = this.keyOf(type, token, '__stateless__');\n const existing = this.lookupLocal(key);\n if (existing) return existing;\n\n // Create singleton transport for this token\n const transporter = new LocalTransporter(this.scope, key, res, () => {\n this.evictLocal(key);\n if (this.distributed && this.bus) {\n this.bus.revoke(key).catch(() => void 0);\n }\n });\n\n await transporter.ready();\n this.insertLocal(key, transporter);\n\n if (this.distributed && this.bus) {\n await this.bus.advertise(key);\n }\n\n return transporter;\n }\n\n /**\n * Check if a session was ever created (even if it's been terminated/evicted).\n * Used to differentiate between \"session never initialized\" (HTTP 400) and\n * \"session expired/terminated\" (HTTP 404) per MCP Spec 2025-11-25.\n *\n * Note: This is synchronous and only checks local history. For async Redis check,\n * use wasSessionCreatedAsync.\n *\n * @param type - Transport type (e.g., 'streamable-http', 'sse')\n * @param token - The authorization token\n * @param sessionId - The session ID to check\n * @returns true if session was ever created locally, false otherwise\n */\n wasSessionCreated(type: TransportType, token: string, sessionId: string): boolean {\n const tokenHash = this.sha256(token);\n const historyKey = this.makeHistoryKey(type, tokenHash, sessionId);\n return this.sessionHistory.has(historyKey);\n }\n\n /**\n * Async version that also checks Redis for session existence.\n * Used when we need to check if session was ever created across server restarts.\n */\n async wasSessionCreatedAsync(type: TransportType, token: string, sessionId: string): Promise<boolean> {\n // Check local history first (fast path)\n if (this.wasSessionCreated(type, token, sessionId)) {\n return true;\n }\n\n // Check Redis if available - use getStoredSession() to verify token hash\n // (sessionStore.exists() would leak session existence to unauthorized callers)\n if (this.sessionStore && type === 'streamable-http') {\n const stored = await this.getStoredSession(type, token, sessionId);\n return stored !== undefined;\n }\n\n return false;\n }\n\n /* --------------------------------- internals -------------------------------- */\n\n private sha256(value: string): string {\n return createHash('sha256').update(value, 'utf8').digest('hex');\n }\n\n /**\n * Create a history key from components.\n * Uses JSON encoding to handle sessionIds that contain special characters.\n */\n private makeHistoryKey(type: string, tokenHash: string, sessionId: string): string {\n return JSON.stringify({ t: type, h: tokenHash, s: sessionId });\n }\n\n /**\n * Parse a history key back into components.\n * Returns undefined if the key is malformed.\n */\n private parseHistoryKey(key: string): { type: string; tokenHash: string; sessionId: string } | undefined {\n try {\n const parsed = JSON.parse(key);\n if (typeof parsed.t === 'string' && typeof parsed.h === 'string' && typeof parsed.s === 'string') {\n return { type: parsed.t, tokenHash: parsed.h, sessionId: parsed.s };\n }\n return undefined;\n } catch {\n return undefined;\n }\n }\n\n private keyOf(type: TransportType, token: string, sessionId: string, sessionIdSse?: string): TransportKey {\n return {\n type,\n token,\n tokenHash: this.sha256(token),\n sessionId,\n sessionIdSse,\n };\n }\n\n private ensureTypeBucket(type: TransportType): TransportTypeBucket {\n let bucket = this.byType.get(type);\n if (!bucket) {\n bucket = new Map<string, TransportTokenBucket>();\n this.byType.set(type, bucket);\n }\n return bucket;\n }\n\n private ensureTokenBucket(typeBucket: TransportTypeBucket, tokenHash: string): TransportTokenBucket {\n let bucket = typeBucket.get(tokenHash);\n if (!bucket) {\n bucket = new Map<string, Transporter>();\n typeBucket.set(tokenHash, bucket);\n }\n return bucket;\n }\n\n private lookupLocal(key: TransportKey): Transporter | undefined {\n const typeBucket = this.byType.get(key.type);\n if (!typeBucket) return undefined;\n const tokenBucket = typeBucket.get(key.tokenHash);\n if (!tokenBucket) return undefined;\n return tokenBucket.get(key.sessionId);\n }\n\n private insertLocal(key: TransportKey, t: Transporter): void {\n const typeBucket = this.ensureTypeBucket(key.type);\n const tokenBucket = this.ensureTokenBucket(typeBucket, key.tokenHash);\n tokenBucket.set(key.sessionId, t);\n\n // Record session creation in history for HTTP 404 detection\n const historyKey = this.makeHistoryKey(key.type, key.tokenHash, key.sessionId);\n this.sessionHistory.set(historyKey, Date.now());\n\n // Evict oldest entries if cache exceeds max size\n // Only evict entries that don't have active transports (to avoid inconsistent state)\n if (this.sessionHistory.size > this.MAX_SESSION_HISTORY) {\n const entries = [...this.sessionHistory.entries()].sort((a, b) => a[1] - b[1]);\n // Try to remove oldest 10% of entries (skip those with active transports)\n const targetEvictions = Math.ceil(this.MAX_SESSION_HISTORY * 0.1);\n let evicted = 0;\n\n for (const [histKey] of entries) {\n if (evicted >= targetEvictions) break;\n\n // Parse history key to check if transport still exists\n const parsed = this.parseHistoryKey(histKey);\n if (!parsed) {\n // Invalid key format - safe to evict\n this.sessionHistory.delete(histKey);\n evicted++;\n continue;\n }\n\n const { type, tokenHash, sessionId } = parsed;\n const typeBucket = this.byType.get(type as TransportType);\n const tokenBucket = typeBucket?.get(tokenHash);\n const hasActiveTransport = tokenBucket?.has(sessionId) ?? false;\n\n // Only evict if there's no active transport for this session\n if (!hasActiveTransport) {\n this.sessionHistory.delete(histKey);\n evicted++;\n }\n }\n\n // Log warning if we couldn't evict enough entries (all have active transports)\n if (evicted < targetEvictions) {\n this.scope.logger.warn('[TransportService] Session history eviction: unable to free target memory', {\n targetEvictions,\n actualEvictions: evicted,\n currentSize: this.sessionHistory.size,\n maxSize: this.MAX_SESSION_HISTORY,\n });\n }\n }\n }\n\n private evictLocal(key: TransportKey): void {\n const typeBucket = this.byType.get(key.type);\n if (!typeBucket) return;\n const tokenBucket = typeBucket.get(key.tokenHash);\n if (!tokenBucket) return;\n tokenBucket.delete(key.sessionId);\n if (tokenBucket.size === 0) typeBucket.delete(key.tokenHash);\n if (typeBucket.size === 0) this.byType.delete(key.type);\n }\n}\n"]}