@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,219 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isDevKeyPersistenceEnabled = isDevKeyPersistenceEnabled;
4
- exports.resolveKeyPath = resolveKeyPath;
5
- exports.loadDevKey = loadDevKey;
6
- exports.saveDevKey = saveDevKey;
7
- exports.deleteDevKey = deleteDevKey;
8
- const tslib_1 = require("tslib");
9
- // auth/jwks/dev-key-persistence.ts
10
- const fs = tslib_1.__importStar(require("fs/promises"));
11
- const path = tslib_1.__importStar(require("path"));
12
- const crypto = tslib_1.__importStar(require("crypto"));
13
- const zod_1 = require("zod");
14
- const DEFAULT_KEY_PATH = '.frontmcp/dev-keys.json';
15
- /**
16
- * Zod schema for RSA JWK private key
17
- */
18
- const rsaPrivateKeySchema = zod_1.z
19
- .object({
20
- kty: zod_1.z.literal('RSA'),
21
- n: zod_1.z.string().min(1),
22
- e: zod_1.z.string().min(1),
23
- d: zod_1.z.string().min(1),
24
- p: zod_1.z.string().optional(),
25
- q: zod_1.z.string().optional(),
26
- dp: zod_1.z.string().optional(),
27
- dq: zod_1.z.string().optional(),
28
- qi: zod_1.z.string().optional(),
29
- })
30
- .passthrough();
31
- /**
32
- * Zod schema for EC JWK private key
33
- */
34
- const ecPrivateKeySchema = zod_1.z
35
- .object({
36
- kty: zod_1.z.literal('EC'),
37
- crv: zod_1.z.string().min(1),
38
- x: zod_1.z.string().min(1),
39
- y: zod_1.z.string().min(1),
40
- d: zod_1.z.string().min(1),
41
- })
42
- .passthrough();
43
- /**
44
- * Zod schema for public JWK (used in JWKS)
45
- */
46
- const publicJwkSchema = zod_1.z
47
- .object({
48
- kty: zod_1.z.enum(['RSA', 'EC']),
49
- kid: zod_1.z.string().min(1),
50
- alg: zod_1.z.enum(['RS256', 'ES256']),
51
- use: zod_1.z.literal('sig'),
52
- })
53
- .passthrough();
54
- /**
55
- * Zod schema for JWKS
56
- */
57
- const jwksSchema = zod_1.z.object({
58
- keys: zod_1.z.array(publicJwkSchema).min(1),
59
- });
60
- /**
61
- * Zod schema for DevKeyData
62
- */
63
- const devKeyDataSchema = zod_1.z.object({
64
- kid: zod_1.z.string().min(1),
65
- privateKey: zod_1.z.union([rsaPrivateKeySchema, ecPrivateKeySchema]),
66
- publicJwk: jwksSchema,
67
- createdAt: zod_1.z.number().positive().int(),
68
- alg: zod_1.z.enum(['RS256', 'ES256']),
69
- });
70
- /**
71
- * Validate JWK structure based on algorithm
72
- */
73
- function validateJwkStructure(data) {
74
- const result = devKeyDataSchema.safeParse(data);
75
- if (!result.success) {
76
- return { valid: false, error: result.error.issues[0]?.message ?? 'Invalid JWK structure' };
77
- }
78
- const parsed = result.data;
79
- // Verify algorithm matches key type
80
- if (parsed.alg === 'RS256' && parsed.privateKey.kty !== 'RSA') {
81
- return { valid: false, error: 'Algorithm RS256 requires RSA key type' };
82
- }
83
- if (parsed.alg === 'ES256' && parsed.privateKey.kty !== 'EC') {
84
- return { valid: false, error: 'Algorithm ES256 requires EC key type' };
85
- }
86
- // Verify public key matches private key algorithm
87
- const publicKey = parsed.publicJwk.keys[0];
88
- if (publicKey.kty !== parsed.privateKey.kty) {
89
- return { valid: false, error: 'Public and private key types do not match' };
90
- }
91
- // Verify kid consistency between top-level and publicJwk
92
- if (publicKey.kid !== parsed.kid) {
93
- return { valid: false, error: 'kid mismatch between top-level and publicJwk' };
94
- }
95
- // Verify createdAt is not in the future and not too old (100 years)
96
- const now = Date.now();
97
- const hundredYearsMs = 100 * 365 * 24 * 60 * 60 * 1000;
98
- if (parsed.createdAt > now) {
99
- return { valid: false, error: 'createdAt is in the future' };
100
- }
101
- if (parsed.createdAt < now - hundredYearsMs) {
102
- return { valid: false, error: 'createdAt is too old' };
103
- }
104
- return { valid: true };
105
- }
106
- /**
107
- * Check if dev key persistence is enabled based on environment and options
108
- */
109
- function isDevKeyPersistenceEnabled(options) {
110
- const isProduction = process.env['NODE_ENV'] === 'production';
111
- // In production, only enable if explicitly forced
112
- if (isProduction) {
113
- return options?.forceEnable === true;
114
- }
115
- // In development, enabled by default
116
- return true;
117
- }
118
- /**
119
- * Resolve the key file path
120
- */
121
- function resolveKeyPath(options) {
122
- const keyPath = options?.keyPath ?? DEFAULT_KEY_PATH;
123
- // If absolute path, use as-is
124
- if (path.isAbsolute(keyPath)) {
125
- return keyPath;
126
- }
127
- // Relative paths are resolved from current working directory
128
- return path.resolve(process.cwd(), keyPath);
129
- }
130
- /**
131
- * Load persisted dev key from file
132
- *
133
- * @param options - Persistence options
134
- * @returns The loaded key data or null if not found/invalid
135
- */
136
- async function loadDevKey(options) {
137
- if (!isDevKeyPersistenceEnabled(options)) {
138
- return null;
139
- }
140
- const keyPath = resolveKeyPath(options);
141
- try {
142
- const content = await fs.readFile(keyPath, 'utf8');
143
- const data = JSON.parse(content);
144
- // Validate JWK structure using Zod schema
145
- const validation = validateJwkStructure(data);
146
- if (!validation.valid) {
147
- console.warn(`[DevKeyPersistence] Invalid key file format at ${keyPath}: ${validation.error}, will regenerate`);
148
- return null;
149
- }
150
- console.log(`[DevKeyPersistence] Loaded key (kid=${data.kid}) from ${keyPath}`);
151
- return data;
152
- }
153
- catch (error) {
154
- if (error.code === 'ENOENT') {
155
- // File doesn't exist - normal for first run
156
- return null;
157
- }
158
- console.warn(`[DevKeyPersistence] Failed to load key from ${keyPath}: ${error.message}`);
159
- return null;
160
- }
161
- }
162
- /**
163
- * Save dev key to file
164
- *
165
- * Uses atomic write (temp file + rename) to prevent corruption.
166
- * Sets file permissions to 0o600 (owner read/write only) for security.
167
- *
168
- * @param keyData - Key data to persist
169
- * @param options - Persistence options
170
- * @returns true if save succeeded, false otherwise
171
- */
172
- async function saveDevKey(keyData, options) {
173
- if (!isDevKeyPersistenceEnabled(options)) {
174
- return true; // Not enabled is not a failure
175
- }
176
- const keyPath = resolveKeyPath(options);
177
- const dir = path.dirname(keyPath);
178
- const tempPath = `${keyPath}.tmp.${Date.now()}.${crypto.randomBytes(8).toString('hex')}`;
179
- try {
180
- // Ensure directory exists with restricted permissions
181
- await fs.mkdir(dir, { recursive: true, mode: 0o700 });
182
- // Write to temp file first (atomic write pattern)
183
- const content = JSON.stringify(keyData, null, 2);
184
- await fs.writeFile(tempPath, content, { mode: 0o600, encoding: 'utf8' });
185
- // Atomic rename to target path
186
- await fs.rename(tempPath, keyPath);
187
- console.log(`[DevKeyPersistence] Saved key (kid=${keyData.kid}) to ${keyPath}`);
188
- return true;
189
- }
190
- catch (error) {
191
- console.error(`[DevKeyPersistence] Failed to save key to ${keyPath}: ${error.message}`);
192
- // Clean up temp file if it exists
193
- try {
194
- await fs.unlink(tempPath);
195
- }
196
- catch {
197
- // Ignore cleanup errors
198
- }
199
- return false;
200
- }
201
- }
202
- /**
203
- * Delete persisted dev key
204
- *
205
- * @param options - Persistence options
206
- */
207
- async function deleteDevKey(options) {
208
- const keyPath = resolveKeyPath(options);
209
- try {
210
- await fs.unlink(keyPath);
211
- console.log(`[DevKeyPersistence] Deleted key at ${keyPath}`);
212
- }
213
- catch (error) {
214
- if (error.code !== 'ENOENT') {
215
- console.warn(`[DevKeyPersistence] Failed to delete key at ${keyPath}: ${error.message}`);
216
- }
217
- }
218
- }
219
- //# sourceMappingURL=dev-key-persistence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-key-persistence.js","sourceRoot":"","sources":["../../../../src/auth/jwks/dev-key-persistence.ts"],"names":[],"mappings":"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","sourcesContent":["// auth/jwks/dev-key-persistence.ts\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport * as crypto from 'crypto';\nimport { JSONWebKeySet } from 'jose';\nimport { z } from 'zod';\n\n/**\n * Data structure for persisted development keys\n */\nexport interface DevKeyData {\n /** Key ID (kid) */\n kid: string;\n /** Private key in JWK format (portable) */\n privateKey: JsonWebKey;\n /** Public JWKS for verification */\n publicJwk: JSONWebKeySet;\n /** Key creation timestamp (ms) */\n createdAt: number;\n /** Algorithm used */\n alg: 'RS256' | 'ES256';\n}\n\n/**\n * Options for dev key persistence\n */\nexport interface DevKeyPersistenceOptions {\n /**\n * Path to store dev keys\n * @default '.frontmcp/dev-keys.json'\n */\n keyPath?: string;\n /**\n * Enable persistence in production (NOT RECOMMENDED)\n * @default false\n */\n forceEnable?: boolean;\n}\n\nconst DEFAULT_KEY_PATH = '.frontmcp/dev-keys.json';\n\n/**\n * Zod schema for RSA JWK private key\n */\nconst rsaPrivateKeySchema = z\n .object({\n kty: z.literal('RSA'),\n n: z.string().min(1),\n e: z.string().min(1),\n d: z.string().min(1),\n p: z.string().optional(),\n q: z.string().optional(),\n dp: z.string().optional(),\n dq: z.string().optional(),\n qi: z.string().optional(),\n })\n .passthrough();\n\n/**\n * Zod schema for EC JWK private key\n */\nconst ecPrivateKeySchema = z\n .object({\n kty: z.literal('EC'),\n crv: z.string().min(1),\n x: z.string().min(1),\n y: z.string().min(1),\n d: z.string().min(1),\n })\n .passthrough();\n\n/**\n * Zod schema for public JWK (used in JWKS)\n */\nconst publicJwkSchema = z\n .object({\n kty: z.enum(['RSA', 'EC']),\n kid: z.string().min(1),\n alg: z.enum(['RS256', 'ES256']),\n use: z.literal('sig'),\n })\n .passthrough();\n\n/**\n * Zod schema for JWKS\n */\nconst jwksSchema = z.object({\n keys: z.array(publicJwkSchema).min(1),\n});\n\n/**\n * Zod schema for DevKeyData\n */\nconst devKeyDataSchema = z.object({\n kid: z.string().min(1),\n privateKey: z.union([rsaPrivateKeySchema, ecPrivateKeySchema]),\n publicJwk: jwksSchema,\n createdAt: z.number().positive().int(),\n alg: z.enum(['RS256', 'ES256']),\n});\n\n/**\n * Validate JWK structure based on algorithm\n */\nfunction validateJwkStructure(data: unknown): { valid: boolean; error?: string } {\n const result = devKeyDataSchema.safeParse(data);\n if (!result.success) {\n return { valid: false, error: result.error.issues[0]?.message ?? 'Invalid JWK structure' };\n }\n\n const parsed = result.data;\n\n // Verify algorithm matches key type\n if (parsed.alg === 'RS256' && parsed.privateKey.kty !== 'RSA') {\n return { valid: false, error: 'Algorithm RS256 requires RSA key type' };\n }\n if (parsed.alg === 'ES256' && parsed.privateKey.kty !== 'EC') {\n return { valid: false, error: 'Algorithm ES256 requires EC key type' };\n }\n\n // Verify public key matches private key algorithm\n const publicKey = parsed.publicJwk.keys[0];\n if (publicKey.kty !== parsed.privateKey.kty) {\n return { valid: false, error: 'Public and private key types do not match' };\n }\n\n // Verify kid consistency between top-level and publicJwk\n if (publicKey.kid !== parsed.kid) {\n return { valid: false, error: 'kid mismatch between top-level and publicJwk' };\n }\n\n // Verify createdAt is not in the future and not too old (100 years)\n const now = Date.now();\n const hundredYearsMs = 100 * 365 * 24 * 60 * 60 * 1000;\n if (parsed.createdAt > now) {\n return { valid: false, error: 'createdAt is in the future' };\n }\n if (parsed.createdAt < now - hundredYearsMs) {\n return { valid: false, error: 'createdAt is too old' };\n }\n\n return { valid: true };\n}\n\n/**\n * Check if dev key persistence is enabled based on environment and options\n */\nexport function isDevKeyPersistenceEnabled(options?: DevKeyPersistenceOptions): boolean {\n const isProduction = process.env['NODE_ENV'] === 'production';\n\n // In production, only enable if explicitly forced\n if (isProduction) {\n return options?.forceEnable === true;\n }\n\n // In development, enabled by default\n return true;\n}\n\n/**\n * Resolve the key file path\n */\nexport function resolveKeyPath(options?: DevKeyPersistenceOptions): string {\n const keyPath = options?.keyPath ?? DEFAULT_KEY_PATH;\n\n // If absolute path, use as-is\n if (path.isAbsolute(keyPath)) {\n return keyPath;\n }\n\n // Relative paths are resolved from current working directory\n return path.resolve(process.cwd(), keyPath);\n}\n\n/**\n * Load persisted dev key from file\n *\n * @param options - Persistence options\n * @returns The loaded key data or null if not found/invalid\n */\nexport async function loadDevKey(options?: DevKeyPersistenceOptions): Promise<DevKeyData | null> {\n if (!isDevKeyPersistenceEnabled(options)) {\n return null;\n }\n\n const keyPath = resolveKeyPath(options);\n\n try {\n const content = await fs.readFile(keyPath, 'utf8');\n const data = JSON.parse(content);\n\n // Validate JWK structure using Zod schema\n const validation = validateJwkStructure(data);\n if (!validation.valid) {\n console.warn(`[DevKeyPersistence] Invalid key file format at ${keyPath}: ${validation.error}, will regenerate`);\n return null;\n }\n\n console.log(`[DevKeyPersistence] Loaded key (kid=${data.kid}) from ${keyPath}`);\n return data as DevKeyData;\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code === 'ENOENT') {\n // File doesn't exist - normal for first run\n return null;\n }\n\n console.warn(`[DevKeyPersistence] Failed to load key from ${keyPath}: ${(error as Error).message}`);\n return null;\n }\n}\n\n/**\n * Save dev key to file\n *\n * Uses atomic write (temp file + rename) to prevent corruption.\n * Sets file permissions to 0o600 (owner read/write only) for security.\n *\n * @param keyData - Key data to persist\n * @param options - Persistence options\n * @returns true if save succeeded, false otherwise\n */\nexport async function saveDevKey(keyData: DevKeyData, options?: DevKeyPersistenceOptions): Promise<boolean> {\n if (!isDevKeyPersistenceEnabled(options)) {\n return true; // Not enabled is not a failure\n }\n\n const keyPath = resolveKeyPath(options);\n const dir = path.dirname(keyPath);\n const tempPath = `${keyPath}.tmp.${Date.now()}.${crypto.randomBytes(8).toString('hex')}`;\n\n try {\n // Ensure directory exists with restricted permissions\n await fs.mkdir(dir, { recursive: true, mode: 0o700 });\n\n // Write to temp file first (atomic write pattern)\n const content = JSON.stringify(keyData, null, 2);\n await fs.writeFile(tempPath, content, { mode: 0o600, encoding: 'utf8' });\n\n // Atomic rename to target path\n await fs.rename(tempPath, keyPath);\n\n console.log(`[DevKeyPersistence] Saved key (kid=${keyData.kid}) to ${keyPath}`);\n return true;\n } catch (error: unknown) {\n console.error(`[DevKeyPersistence] Failed to save key to ${keyPath}: ${(error as Error).message}`);\n // Clean up temp file if it exists\n try {\n await fs.unlink(tempPath);\n } catch {\n // Ignore cleanup errors\n }\n return false;\n }\n}\n\n/**\n * Delete persisted dev key\n *\n * @param options - Persistence options\n */\nexport async function deleteDevKey(options?: DevKeyPersistenceOptions): Promise<void> {\n const keyPath = resolveKeyPath(options);\n\n try {\n await fs.unlink(keyPath);\n console.log(`[DevKeyPersistence] Deleted key at ${keyPath}`);\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code !== 'ENOENT') {\n console.warn(`[DevKeyPersistence] Failed to delete key at ${keyPath}: ${(error as Error).message}`);\n }\n }\n}\n"]}
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./jwks.service"), exports);
5
- tslib_1.__exportStar(require("./jwks.types"), exports);
6
- tslib_1.__exportStar(require("./dev-key-persistence"), exports);
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/auth/jwks/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,uDAA6B;AAC7B,gEAAsC","sourcesContent":["export * from './jwks.service';\nexport * from './jwks.types';\nexport * from './dev-key-persistence';\n"]}
@@ -1,303 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JwksService = void 0;
4
- const tslib_1 = require("tslib");
5
- // auth/jwks/jwks.service.ts
6
- const node_crypto_1 = tslib_1.__importDefault(require("node:crypto"));
7
- const jose_1 = require("jose");
8
- const jwks_utils_1 = require("./jwks.utils");
9
- const dev_key_persistence_1 = require("./dev-key-persistence");
10
- class JwksService {
11
- opts;
12
- // Orchestrator signing material
13
- orchestratorKey;
14
- // Provider JWKS cache (providerId -> jwks + fetchedAt)
15
- providerJwks = new Map();
16
- // Track if key has been initialized (for async loading)
17
- keyInitialized = false;
18
- // Promise guard to prevent concurrent key generation
19
- keyInitPromise;
20
- constructor(opts) {
21
- this.opts = {
22
- orchestratorAlg: opts?.orchestratorAlg ?? 'RS256',
23
- rotateDays: opts?.rotateDays ?? 30,
24
- providerJwksTtlMs: opts?.providerJwksTtlMs ?? 6 * 60 * 60 * 1000, // 6h
25
- networkTimeoutMs: opts?.networkTimeoutMs ?? 5000, // 5s
26
- devKeyPersistence: opts?.devKeyPersistence,
27
- };
28
- }
29
- // ===========================================================================
30
- // Public JWKS (what /.well-known/jwks.json serves)
31
- // ===========================================================================
32
- /** Gateway's public JWKS (publish at /.well-known/jwks.json when orchestrated). */
33
- async getPublicJwks() {
34
- return this.getOrchestratorJwks();
35
- }
36
- // ===========================================================================
37
- // Scope-aware verification API
38
- // ===========================================================================
39
- /** Verify a token issued by the gateway itself (orchestrated mode). */
40
- async verifyGatewayToken(token, expectedIssuer) {
41
- try {
42
- // TODO: add support for local/remote proxy mode
43
- // current implementation for anonymous mode only
44
- // const jwks = this.getPublicJwks();
45
- // const JWKS = createLocalJWKSet(jwks);
46
- // const {payload, protectedHeader} = await jwtVerify(token, JWKS, {
47
- // issuer: normalizeIssuer(expectedIssuer),
48
- // });
49
- // return {
50
- // ok: true,
51
- // issuer: payload?.iss as string | undefined,
52
- // sub: payload?.sub as string | undefined,
53
- // header: protectedHeader,
54
- // payload,
55
- // };
56
- const payload = (0, jwks_utils_1.decodeJwtPayloadSafe)(token);
57
- if (!payload) {
58
- return {
59
- ok: false,
60
- error: 'invalid bearer token',
61
- };
62
- }
63
- return {
64
- ok: true,
65
- issuer: expectedIssuer,
66
- sub: payload['sub'],
67
- payload,
68
- header: (0, jose_1.decodeProtectedHeader)(token),
69
- };
70
- }
71
- catch (err) {
72
- return { ok: false, error: err?.message ?? 'verification_failed' };
73
- }
74
- }
75
- /**
76
- * Verify a token against candidate transparent providers.
77
- * Ensures JWKS are available (cached/TTL/AS discovery) per provider.
78
- */
79
- async verifyTransparentToken(token, candidates) {
80
- if (!candidates?.length)
81
- return { ok: false, error: 'no_providers' };
82
- // Helpful only for error messages
83
- let kid;
84
- try {
85
- const header = (0, jose_1.decodeProtectedHeader)(token);
86
- kid = typeof header?.kid === 'string' ? header.kid : undefined;
87
- }
88
- catch {
89
- /* empty */
90
- }
91
- for (const p of candidates) {
92
- try {
93
- const jwks = await this.getJwksForProvider(p);
94
- if (!jwks?.keys?.length)
95
- continue;
96
- const draftPayload = (0, jwks_utils_1.decodeJwtPayloadSafe)(token);
97
- const JWKS = (0, jose_1.createLocalJWKSet)(jwks);
98
- const { payload, protectedHeader } = await (0, jose_1.jwtVerify)(token, JWKS, {
99
- issuer: [(0, jwks_utils_1.normalizeIssuer)(p.issuerUrl)].concat((draftPayload?.['iss'] ? [draftPayload['iss']] : [])), // used because current cloud gateway have invalid issuer
100
- });
101
- return {
102
- ok: true,
103
- issuer: payload?.iss,
104
- sub: payload?.sub,
105
- providerId: p.id,
106
- header: protectedHeader,
107
- payload,
108
- };
109
- }
110
- catch (e) {
111
- console.log('failed to verify token for provider: ', p.id, e);
112
- // try next provider
113
- }
114
- }
115
- return { ok: false, error: `no_provider_verified${kid ? ` (kid=${kid})` : ''}` };
116
- }
117
- // ===========================================================================
118
- // Provider JWKS (cache + preload + discovery)
119
- // ===========================================================================
120
- /** Directly set provider JWKS (e.g., inline keys from config). */
121
- setProviderJwks(providerId, jwks) {
122
- this.providerJwks.set(providerId, { jwks, fetchedAt: Date.now() });
123
- }
124
- /**
125
- * Ensure JWKS for a provider:
126
- * 1) inline jwks (if provided) → cache & return
127
- * 2) cached & fresh (TTL) → return
128
- * 3) explicit jwksUri → fetch, cache, return
129
- * 4) discover jwks_uri via AS → fetch AS metadata, then jwks_uri, cache, return
130
- */
131
- async getJwksForProvider(ref) {
132
- // Inline keys win
133
- if (ref.jwks?.keys?.length) {
134
- this.setProviderJwks(ref.id, ref.jwks);
135
- return ref.jwks;
136
- }
137
- // Cache hit and fresh?
138
- const cached = this.providerJwks.get(ref.id);
139
- if (cached && Date.now() - cached.fetchedAt < this.opts.providerJwksTtlMs) {
140
- return cached.jwks;
141
- }
142
- // If we have a jwksUri, try it
143
- if (ref.jwksUri) {
144
- const fromUri = await this.tryFetchJwks(ref.id, ref.jwksUri);
145
- if (fromUri?.keys?.length)
146
- return fromUri;
147
- }
148
- // Discover via AS .well-known
149
- const issuer = (0, jwks_utils_1.trimSlash)(ref.issuerUrl);
150
- const meta = await this.tryFetchAsMeta(`${issuer}/.well-known/oauth-authorization-server`);
151
- const uri = meta && typeof meta === 'object' && meta.jwks_uri ? String(meta.jwks_uri) : undefined;
152
- if (uri) {
153
- const fromMeta = await this.tryFetchJwks(ref.id, uri);
154
- if (fromMeta?.keys?.length)
155
- return fromMeta;
156
- }
157
- return cached?.jwks; // return stale if we had anything, else undefined
158
- }
159
- // ===========================================================================
160
- // Orchestrator keys (generation/rotation)
161
- // ===========================================================================
162
- /** Return the orchestrator public JWKS (generates/rotates as needed). */
163
- async getOrchestratorJwks() {
164
- await this.ensureOrchestratorKey();
165
- return this.orchestratorKey.publicJwk;
166
- }
167
- /** Return private signing key + kid for issuing orchestrator tokens. */
168
- async getOrchestratorSigningKey() {
169
- await this.ensureOrchestratorKey();
170
- return { kid: this.orchestratorKey.kid, key: this.orchestratorKey.privateKey, alg: this.opts.orchestratorAlg };
171
- }
172
- // ===========================================================================
173
- // Internals (fetch, rotation, helpers)
174
- // ===========================================================================
175
- async tryFetchJwks(providerId, uri) {
176
- try {
177
- const jwks = await this.fetchJson(uri);
178
- if (jwks?.keys?.length) {
179
- this.setProviderJwks(providerId, jwks);
180
- return jwks;
181
- }
182
- }
183
- catch {
184
- /* empty */
185
- }
186
- return undefined;
187
- }
188
- async tryFetchAsMeta(url) {
189
- try {
190
- return await this.fetchJson(url);
191
- }
192
- catch {
193
- return undefined;
194
- }
195
- }
196
- async fetchJson(url) {
197
- const ctl = typeof AbortController !== 'undefined' ? new AbortController() : undefined;
198
- const timer = setTimeout(() => ctl?.abort(), this.opts.networkTimeoutMs);
199
- try {
200
- const res = await fetch(url, {
201
- method: 'GET',
202
- headers: { accept: 'application/json' },
203
- signal: ctl?.signal,
204
- });
205
- if (!res.ok)
206
- throw new Error(`HTTP ${res.status}`);
207
- return (await res.json());
208
- }
209
- finally {
210
- clearTimeout(timer);
211
- }
212
- }
213
- async ensureOrchestratorKey() {
214
- const now = Date.now();
215
- const maxAge = this.opts.rotateDays * 24 * 60 * 60 * 1000;
216
- // If key exists and not expired, use it
217
- if (this.orchestratorKey && now - this.orchestratorKey.createdAt <= maxAge) {
218
- return;
219
- }
220
- // Use promise guard to prevent concurrent key generation (race condition fix)
221
- if (this.keyInitPromise) {
222
- await this.keyInitPromise;
223
- return;
224
- }
225
- // Create promise guard and initialize key
226
- this.keyInitPromise = this.initializeOrchestratorKey(now, maxAge);
227
- try {
228
- await this.keyInitPromise;
229
- }
230
- finally {
231
- // Clear promise guard after initialization to allow future rotation
232
- this.keyInitPromise = undefined;
233
- }
234
- }
235
- async initializeOrchestratorKey(now, maxAge) {
236
- // Try to load persisted key (in development mode)
237
- if ((0, dev_key_persistence_1.isDevKeyPersistenceEnabled)(this.opts.devKeyPersistence) && !this.keyInitialized) {
238
- this.keyInitialized = true;
239
- const loaded = await (0, dev_key_persistence_1.loadDevKey)(this.opts.devKeyPersistence);
240
- if (loaded && now - loaded.createdAt <= maxAge) {
241
- // Validate algorithm matches config
242
- if (loaded.alg !== this.opts.orchestratorAlg) {
243
- console.warn(`[JwksService] Persisted key algorithm (${loaded.alg}) doesn't match config (${this.opts.orchestratorAlg}), generating new key`);
244
- }
245
- else {
246
- // Reconstruct KeyObject from JWK
247
- try {
248
- // Cast to crypto.JsonWebKey to satisfy TypeScript
249
- const privateKey = node_crypto_1.default.createPrivateKey({
250
- key: loaded.privateKey,
251
- format: 'jwk',
252
- });
253
- this.orchestratorKey = {
254
- kid: loaded.kid,
255
- privateKey,
256
- publicJwk: loaded.publicJwk,
257
- createdAt: loaded.createdAt,
258
- };
259
- return;
260
- }
261
- catch (error) {
262
- console.warn(`[JwksService] Failed to load persisted key: ${error.message}, generating new key`);
263
- }
264
- }
265
- }
266
- }
267
- // Generate new key
268
- this.orchestratorKey = this.generateKey(this.opts.orchestratorAlg);
269
- this.keyInitialized = true;
270
- // Save in development mode
271
- if ((0, dev_key_persistence_1.isDevKeyPersistenceEnabled)(this.opts.devKeyPersistence)) {
272
- const keyData = {
273
- kid: this.orchestratorKey.kid,
274
- privateKey: this.orchestratorKey.privateKey.export({ format: 'jwk' }),
275
- publicJwk: this.orchestratorKey.publicJwk,
276
- createdAt: this.orchestratorKey.createdAt,
277
- alg: this.opts.orchestratorAlg,
278
- };
279
- const saved = await (0, dev_key_persistence_1.saveDevKey)(keyData, this.opts.devKeyPersistence);
280
- if (!saved) {
281
- console.warn('[JwksService] Failed to persist dev key - key will be regenerated on next restart');
282
- }
283
- }
284
- }
285
- generateKey(alg) {
286
- if (alg === 'RS256') {
287
- const { privateKey, publicKey } = node_crypto_1.default.generateKeyPairSync('rsa', { modulusLength: 2048 });
288
- const kid = node_crypto_1.default.randomBytes(8).toString('hex');
289
- const publicJwk = publicKey.export({ format: 'jwk' });
290
- Object.assign(publicJwk, { kid, alg: 'RS256', use: 'sig', kty: 'RSA' });
291
- return { kid, privateKey, publicJwk: { keys: [publicJwk] }, createdAt: Date.now() };
292
- }
293
- else {
294
- const { privateKey, publicKey } = node_crypto_1.default.generateKeyPairSync('ec', { namedCurve: 'P-256' });
295
- const kid = node_crypto_1.default.randomBytes(8).toString('hex');
296
- const publicJwk = publicKey.export({ format: 'jwk' });
297
- Object.assign(publicJwk, { kid, alg: 'ES256', use: 'sig', kty: 'EC' });
298
- return { kid, privateKey, publicJwk: { keys: [publicJwk] }, createdAt: Date.now() };
299
- }
300
- }
301
- }
302
- exports.JwksService = JwksService;
303
- //# sourceMappingURL=jwks.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jwks.service.js","sourceRoot":"","sources":["../../../../src/auth/jwks/jwks.service.ts"],"names":[],"mappings":"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","sourcesContent":["// auth/jwks/jwks.service.ts\nimport crypto from 'node:crypto';\nimport { jwtVerify, createLocalJWKSet, decodeProtectedHeader, JSONWebKeySet } from 'jose';\nimport { JwksServiceOptions, ProviderVerifyRef, VerifyResult } from './jwks.types';\nimport { normalizeIssuer, trimSlash, decodeJwtPayloadSafe } from './jwks.utils';\nimport { isDevKeyPersistenceEnabled, loadDevKey, saveDevKey, DevKeyData } from './dev-key-persistence';\n\nexport class JwksService {\n private readonly opts: Required<Omit<JwksServiceOptions, 'devKeyPersistence'>> & {\n devKeyPersistence?: JwksServiceOptions['devKeyPersistence'];\n };\n\n // Orchestrator signing material\n private orchestratorKey!: {\n kid: string;\n privateKey: crypto.KeyObject;\n publicJwk: JSONWebKeySet;\n createdAt: number;\n };\n\n // Provider JWKS cache (providerId -> jwks + fetchedAt)\n private providerJwks = new Map<string, { jwks: JSONWebKeySet; fetchedAt: number }>();\n\n // Track if key has been initialized (for async loading)\n private keyInitialized = false;\n // Promise guard to prevent concurrent key generation\n private keyInitPromise: Promise<void> | undefined;\n\n constructor(opts?: JwksServiceOptions) {\n this.opts = {\n orchestratorAlg: opts?.orchestratorAlg ?? 'RS256',\n rotateDays: opts?.rotateDays ?? 30,\n providerJwksTtlMs: opts?.providerJwksTtlMs ?? 6 * 60 * 60 * 1000, // 6h\n networkTimeoutMs: opts?.networkTimeoutMs ?? 5000, // 5s\n devKeyPersistence: opts?.devKeyPersistence,\n };\n }\n\n // ===========================================================================\n // Public JWKS (what /.well-known/jwks.json serves)\n // ===========================================================================\n\n /** Gateway's public JWKS (publish at /.well-known/jwks.json when orchestrated). */\n async getPublicJwks(): Promise<JSONWebKeySet> {\n return this.getOrchestratorJwks();\n }\n\n // ===========================================================================\n // Scope-aware verification API\n // ===========================================================================\n\n /** Verify a token issued by the gateway itself (orchestrated mode). */\n async verifyGatewayToken(token: string, expectedIssuer: string): Promise<VerifyResult> {\n try {\n // TODO: add support for local/remote proxy mode\n // current implementation for anonymous mode only\n\n // const jwks = this.getPublicJwks();\n // const JWKS = createLocalJWKSet(jwks);\n // const {payload, protectedHeader} = await jwtVerify(token, JWKS, {\n // issuer: normalizeIssuer(expectedIssuer),\n // });\n // return {\n // ok: true,\n // issuer: payload?.iss as string | undefined,\n // sub: payload?.sub as string | undefined,\n // header: protectedHeader,\n // payload,\n // };\n\n const payload = decodeJwtPayloadSafe(token);\n if (!payload) {\n return {\n ok: false,\n error: 'invalid bearer token',\n };\n }\n return {\n ok: true,\n issuer: expectedIssuer,\n sub: payload['sub'] as string,\n payload,\n header: decodeProtectedHeader(token),\n };\n } catch (err: any) {\n return { ok: false, error: err?.message ?? 'verification_failed' };\n }\n }\n\n /**\n * Verify a token against candidate transparent providers.\n * Ensures JWKS are available (cached/TTL/AS discovery) per provider.\n */\n async verifyTransparentToken(token: string, candidates: ProviderVerifyRef[]): Promise<VerifyResult> {\n if (!candidates?.length) return { ok: false, error: 'no_providers' };\n\n // Helpful only for error messages\n let kid: string | undefined;\n try {\n const header = decodeProtectedHeader(token);\n\n kid = typeof header?.kid === 'string' ? header.kid : undefined;\n } catch {\n /* empty */\n }\n\n for (const p of candidates) {\n try {\n const jwks = await this.getJwksForProvider(p);\n if (!jwks?.keys?.length) continue;\n const draftPayload = decodeJwtPayloadSafe(token);\n const JWKS = createLocalJWKSet(jwks);\n const { payload, protectedHeader } = await jwtVerify(token, JWKS, {\n issuer: [normalizeIssuer(p.issuerUrl)].concat(\n (draftPayload?.['iss'] ? [draftPayload['iss']] : []) as string[],\n ), // used because current cloud gateway have invalid issuer\n });\n\n return {\n ok: true,\n issuer: payload?.iss as string | undefined,\n sub: payload?.sub as string | undefined,\n providerId: p.id,\n header: protectedHeader,\n payload,\n };\n } catch (e) {\n console.log('failed to verify token for provider: ', p.id, e);\n // try next provider\n }\n }\n\n return { ok: false, error: `no_provider_verified${kid ? ` (kid=${kid})` : ''}` };\n }\n\n // ===========================================================================\n // Provider JWKS (cache + preload + discovery)\n // ===========================================================================\n\n /** Directly set provider JWKS (e.g., inline keys from config). */\n setProviderJwks(providerId: string, jwks: JSONWebKeySet) {\n this.providerJwks.set(providerId, { jwks, fetchedAt: Date.now() });\n }\n\n /**\n * Ensure JWKS for a provider:\n * 1) inline jwks (if provided) → cache & return\n * 2) cached & fresh (TTL) → return\n * 3) explicit jwksUri → fetch, cache, return\n * 4) discover jwks_uri via AS → fetch AS metadata, then jwks_uri, cache, return\n */\n async getJwksForProvider(ref: ProviderVerifyRef): Promise<JSONWebKeySet | undefined> {\n // Inline keys win\n if (ref.jwks?.keys?.length) {\n this.setProviderJwks(ref.id, ref.jwks);\n return ref.jwks;\n }\n\n // Cache hit and fresh?\n const cached = this.providerJwks.get(ref.id);\n if (cached && Date.now() - cached.fetchedAt < this.opts.providerJwksTtlMs) {\n return cached.jwks;\n }\n\n // If we have a jwksUri, try it\n if (ref.jwksUri) {\n const fromUri = await this.tryFetchJwks(ref.id, ref.jwksUri);\n if (fromUri?.keys?.length) return fromUri;\n }\n\n // Discover via AS .well-known\n const issuer = trimSlash(ref.issuerUrl);\n const meta = await this.tryFetchAsMeta(`${issuer}/.well-known/oauth-authorization-server`);\n const uri = meta && typeof meta === 'object' && meta.jwks_uri ? String(meta.jwks_uri) : undefined;\n if (uri) {\n const fromMeta = await this.tryFetchJwks(ref.id, uri);\n if (fromMeta?.keys?.length) return fromMeta;\n }\n\n return cached?.jwks; // return stale if we had anything, else undefined\n }\n\n // ===========================================================================\n // Orchestrator keys (generation/rotation)\n // ===========================================================================\n\n /** Return the orchestrator public JWKS (generates/rotates as needed). */\n async getOrchestratorJwks(): Promise<JSONWebKeySet> {\n await this.ensureOrchestratorKey();\n return this.orchestratorKey.publicJwk;\n }\n\n /** Return private signing key + kid for issuing orchestrator tokens. */\n async getOrchestratorSigningKey(): Promise<{ kid: string; key: crypto.KeyObject; alg: string }> {\n await this.ensureOrchestratorKey();\n return { kid: this.orchestratorKey.kid, key: this.orchestratorKey.privateKey, alg: this.opts.orchestratorAlg };\n }\n\n // ===========================================================================\n // Internals (fetch, rotation, helpers)\n // ===========================================================================\n\n private async tryFetchJwks(providerId: string, uri: string): Promise<JSONWebKeySet | undefined> {\n try {\n const jwks = await this.fetchJson<JSONWebKeySet>(uri);\n if (jwks?.keys?.length) {\n this.setProviderJwks(providerId, jwks);\n return jwks;\n }\n } catch {\n /* empty */\n }\n return undefined;\n }\n\n private async tryFetchAsMeta(url: string): Promise<any | undefined> {\n try {\n return await this.fetchJson(url);\n } catch {\n return undefined;\n }\n }\n\n private async fetchJson<T = any>(url: string): Promise<T> {\n const ctl = typeof AbortController !== 'undefined' ? new AbortController() : undefined;\n const timer = setTimeout(() => ctl?.abort(), this.opts.networkTimeoutMs);\n try {\n const res = await fetch(url, {\n method: 'GET',\n headers: { accept: 'application/json' },\n signal: ctl?.signal,\n });\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return (await res.json()) as T;\n } finally {\n clearTimeout(timer);\n }\n }\n\n private async ensureOrchestratorKey() {\n const now = Date.now();\n const maxAge = this.opts.rotateDays * 24 * 60 * 60 * 1000;\n\n // If key exists and not expired, use it\n if (this.orchestratorKey && now - this.orchestratorKey.createdAt <= maxAge) {\n return;\n }\n\n // Use promise guard to prevent concurrent key generation (race condition fix)\n if (this.keyInitPromise) {\n await this.keyInitPromise;\n return;\n }\n\n // Create promise guard and initialize key\n this.keyInitPromise = this.initializeOrchestratorKey(now, maxAge);\n try {\n await this.keyInitPromise;\n } finally {\n // Clear promise guard after initialization to allow future rotation\n this.keyInitPromise = undefined;\n }\n }\n\n private async initializeOrchestratorKey(now: number, maxAge: number) {\n // Try to load persisted key (in development mode)\n if (isDevKeyPersistenceEnabled(this.opts.devKeyPersistence) && !this.keyInitialized) {\n this.keyInitialized = true;\n const loaded = await loadDevKey(this.opts.devKeyPersistence);\n\n if (loaded && now - loaded.createdAt <= maxAge) {\n // Validate algorithm matches config\n if (loaded.alg !== this.opts.orchestratorAlg) {\n console.warn(\n `[JwksService] Persisted key algorithm (${loaded.alg}) doesn't match config (${this.opts.orchestratorAlg}), generating new key`,\n );\n } else {\n // Reconstruct KeyObject from JWK\n try {\n // Cast to crypto.JsonWebKey to satisfy TypeScript\n const privateKey = crypto.createPrivateKey({\n key: loaded.privateKey as crypto.JsonWebKey,\n format: 'jwk',\n });\n this.orchestratorKey = {\n kid: loaded.kid,\n privateKey,\n publicJwk: loaded.publicJwk,\n createdAt: loaded.createdAt,\n };\n return;\n } catch (error) {\n console.warn(`[JwksService] Failed to load persisted key: ${(error as Error).message}, generating new key`);\n }\n }\n }\n }\n\n // Generate new key\n this.orchestratorKey = this.generateKey(this.opts.orchestratorAlg);\n this.keyInitialized = true;\n\n // Save in development mode\n if (isDevKeyPersistenceEnabled(this.opts.devKeyPersistence)) {\n const keyData: DevKeyData = {\n kid: this.orchestratorKey.kid,\n privateKey: this.orchestratorKey.privateKey.export({ format: 'jwk' }) as JsonWebKey,\n publicJwk: this.orchestratorKey.publicJwk,\n createdAt: this.orchestratorKey.createdAt,\n alg: this.opts.orchestratorAlg,\n };\n const saved = await saveDevKey(keyData, this.opts.devKeyPersistence);\n if (!saved) {\n console.warn('[JwksService] Failed to persist dev key - key will be regenerated on next restart');\n }\n }\n }\n\n private generateKey(alg: 'RS256' | 'ES256') {\n if (alg === 'RS256') {\n const { privateKey, publicKey } = crypto.generateKeyPairSync('rsa', { modulusLength: 2048 });\n const kid = crypto.randomBytes(8).toString('hex');\n const publicJwk = publicKey.export({ format: 'jwk' });\n Object.assign(publicJwk, { kid, alg: 'RS256', use: 'sig', kty: 'RSA' });\n return { kid, privateKey, publicJwk: { keys: [publicJwk] }, createdAt: Date.now() };\n } else {\n const { privateKey, publicKey } = crypto.generateKeyPairSync('ec', { namedCurve: 'P-256' });\n const kid = crypto.randomBytes(8).toString('hex');\n const publicJwk = publicKey.export({ format: 'jwk' });\n Object.assign(publicJwk, { kid, alg: 'ES256', use: 'sig', kty: 'EC' });\n return { kid, privateKey, publicJwk: { keys: [publicJwk] }, createdAt: Date.now() };\n }\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=jwks.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jwks.types.js","sourceRoot":"","sources":["../../../../src/auth/jwks/jwks.types.ts"],"names":[],"mappings":"","sourcesContent":["import { JSONWebKeySet } from 'jose';\nimport { DevKeyPersistenceOptions } from './dev-key-persistence';\n\nexport type JwksServiceOptions = {\n orchestratorAlg?: 'RS256' | 'ES256';\n rotateDays?: number;\n /** TTL (ms) for cached provider JWKS before attempting refresh. Default: 6h */\n providerJwksTtlMs?: number;\n /** Timeout (ms) for network metadata/JWKS fetches. Default: 5s */\n networkTimeoutMs?: number;\n /**\n * Options for dev key persistence (development mode only by default).\n * When enabled, keys are saved to a file and reloaded on server restart.\n */\n devKeyPersistence?: DevKeyPersistenceOptions;\n};\n\nexport type { DevKeyPersistenceOptions };\n\n/** Rich descriptor used by verification & fetching */\nexport type ProviderVerifyRef = {\n id: string;\n issuerUrl: string; // upstream issuer (e.g., https://idp.example.com)\n jwksUri?: string; // optional explicit JWKS uri\n jwks?: JSONWebKeySet; // optional inline keys (prioritized)\n};\n\nexport type VerifyResult = {\n ok: boolean;\n issuer?: string;\n sub?: string;\n providerId?: string;\n header?: any;\n payload?: any;\n error?: string;\n};\n"]}
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.trimSlash = trimSlash;
4
- exports.normalizeIssuer = normalizeIssuer;
5
- exports.decodeJwtPayloadSafe = decodeJwtPayloadSafe;
6
- function trimSlash(s) {
7
- return (s ?? '').replace(/\/+$/, '');
8
- }
9
- function normalizeIssuer(u) {
10
- return trimSlash(String(u ?? ''));
11
- }
12
- /** Safe, no-verify JWT payload decode (returns undefined on error). */
13
- function decodeJwtPayloadSafe(token) {
14
- if (!token)
15
- return undefined;
16
- const parts = token.split('.');
17
- if (parts.length < 2)
18
- return undefined;
19
- try {
20
- const b64 = parts[1].replace(/-/g, '+').replace(/_/g, '/');
21
- const json = typeof Buffer !== 'undefined'
22
- ? Buffer.from(b64, 'base64').toString('utf8')
23
- : // browser fallback
24
- atob(b64);
25
- const obj = JSON.parse(json);
26
- return obj && typeof obj === 'object' ? obj : undefined;
27
- }
28
- catch {
29
- return undefined;
30
- }
31
- }
32
- //# sourceMappingURL=jwks.utils.js.map