@frontmcp/sdk 0.6.0 → 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 (1053) 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/auth → auth}/session/index.d.ts +1 -0
  4. package/auth/session/vercel-kv-session.store.d.ts +96 -0
  5. package/{src/common → common}/interfaces/internal/primary-auth-provider.interface.d.ts +1 -4
  6. package/{src/common → common}/metadata/front-mcp.metadata.d.ts +1779 -67
  7. package/{src/common → common}/metadata/prompt.metadata.d.ts +4 -0
  8. package/{src/common → common}/metadata/resource.metadata.d.ts +8 -0
  9. package/{src/common → common}/metadata/tool-ui.metadata.d.ts +2 -2
  10. package/{src/common → common}/metadata/tool.metadata.d.ts +4 -0
  11. package/{src/common → common}/schemas/http-output.schema.d.ts +24 -6
  12. package/common/types/options/auth/app-auth.schema.d.ts +275 -0
  13. package/common/types/options/auth/auth.interfaces.d.ts +461 -0
  14. package/common/types/options/auth/auth.schema.d.ts +284 -0
  15. package/common/types/options/auth/auth.utils.d.ts +32 -0
  16. package/common/types/options/auth/index.d.ts +16 -0
  17. package/common/types/options/auth/orchestrated.schema.d.ts +381 -0
  18. package/common/types/options/auth/public.schema.d.ts +42 -0
  19. package/common/types/options/auth/shared.schemas.d.ts +120 -0
  20. package/common/types/options/auth/transparent.schema.d.ts +56 -0
  21. package/common/types/options/auth/transport.deprecated.d.ts +63 -0
  22. package/{src/common → common}/types/options/index.d.ts +1 -1
  23. package/common/types/options/redis.options.d.ts +190 -0
  24. package/{src/common → common}/types/options/server-info.options.d.ts +4 -0
  25. package/{src/common → common}/types/options/transport.options.d.ts +74 -5
  26. package/{src/common → common}/utils/decide-request-intent.utils.d.ts +6 -7
  27. package/common/utils/global-config.utils.d.ts +36 -0
  28. package/{src/common → common}/utils/index.d.ts +1 -0
  29. package/{src/completion → completion}/flows/complete.flow.d.ts +6 -8
  30. package/{src/errors → errors}/index.d.ts +1 -1
  31. package/{src/errors → errors}/mcp.error.d.ts +9 -0
  32. package/esm/index.mjs +22664 -0
  33. package/esm/mcp-apps/index.mjs +723 -0
  34. package/esm/package.json +81 -0
  35. package/{src/front-mcp → front-mcp}/front-mcp.providers.d.ts +246 -38
  36. package/front-mcp/index.d.ts +2 -0
  37. package/{src/index.d.ts → index.d.ts} +1 -1
  38. package/index.js +22957 -0
  39. package/logger/logger.tokens.d.ts +1 -0
  40. package/{src/logging → logging}/flows/set-level.flow.d.ts +6 -8
  41. package/mcp-apps/index.js +799 -0
  42. package/package.json +37 -17
  43. package/{src/prompt → prompt}/flows/get-prompt.flow.d.ts +14 -8
  44. package/{src/prompt → prompt}/flows/prompts-list.flow.d.ts +8 -7
  45. package/{src/resource → resource}/flows/read-resource.flow.d.ts +8 -9
  46. package/{src/resource → resource}/flows/resource-templates-list.flow.d.ts +8 -7
  47. package/{src/resource → resource}/flows/resources-list.flow.d.ts +8 -7
  48. package/{src/resource → resource}/flows/subscribe-resource.flow.d.ts +6 -8
  49. package/{src/resource → resource}/flows/unsubscribe-resource.flow.d.ts +6 -8
  50. package/store/adapters/store.vercel-kv.adapter.d.ts +86 -0
  51. package/{src/store → store}/index.d.ts +2 -0
  52. package/store/store.factory.d.ts +86 -0
  53. package/{src/tool → tool}/flows/call-tool.flow.d.ts +18 -9
  54. package/{src/tool → tool}/flows/tools-list.flow.d.ts +9 -8
  55. package/{src/tool → tool}/ui/index.d.ts +4 -4
  56. package/{src/tool → tool}/ui/platform-adapters.d.ts +2 -2
  57. package/{src/tool → tool}/ui/template-helpers.d.ts +5 -7
  58. package/{src/tool → tool}/ui/ui-resource.handler.d.ts +1 -1
  59. package/{src/transport → transport}/mcp-handlers/complete-request.handler.d.ts +4 -15
  60. package/{src/transport → transport}/mcp-handlers/get-prompt-request.handler.d.ts +5 -15
  61. package/{src/transport → transport}/mcp-handlers/index.d.ts +67 -195
  62. package/{src/transport → transport}/mcp-handlers/list-prompts-request.handler.d.ts +5 -15
  63. package/{src/transport → transport}/mcp-handlers/list-resource-templates-request.handler.d.ts +5 -15
  64. package/{src/transport → transport}/mcp-handlers/list-resources-request.handler.d.ts +5 -15
  65. package/{src/transport → transport}/mcp-handlers/list-tools-request.handler.d.ts +5 -15
  66. package/{src/transport → transport}/mcp-handlers/logging-set-level-request.handler.d.ts +3 -14
  67. package/{src/transport → transport}/mcp-handlers/read-resource-request.handler.d.ts +4 -15
  68. package/{src/transport → transport}/mcp-handlers/subscribe-request.handler.d.ts +3 -14
  69. package/{src/transport → transport}/mcp-handlers/unsubscribe-request.handler.d.ts +3 -14
  70. package/{src/transport → transport}/transport.registry.d.ts +5 -1
  71. package/README.md +0 -460
  72. package/src/adapter/adapter.instance.js +0 -70
  73. package/src/adapter/adapter.instance.js.map +0 -1
  74. package/src/adapter/adapter.regsitry.js +0 -54
  75. package/src/adapter/adapter.regsitry.js.map +0 -1
  76. package/src/adapter/adapter.utils.js +0 -83
  77. package/src/adapter/adapter.utils.js.map +0 -1
  78. package/src/app/app.registry.js +0 -66
  79. package/src/app/app.registry.js.map +0 -1
  80. package/src/app/app.utils.js +0 -58
  81. package/src/app/app.utils.js.map +0 -1
  82. package/src/app/instances/app.local.instance.js +0 -67
  83. package/src/app/instances/app.local.instance.js.map +0 -1
  84. package/src/app/instances/app.remote.instance.js +0 -36
  85. package/src/app/instances/app.remote.instance.js.map +0 -1
  86. package/src/app/instances/index.js +0 -6
  87. package/src/app/instances/index.js.map +0 -1
  88. package/src/auth/auth.registry.js +0 -219
  89. package/src/auth/auth.registry.js.map +0 -1
  90. package/src/auth/auth.utils.js +0 -84
  91. package/src/auth/auth.utils.js.map +0 -1
  92. package/src/auth/authorization/authorization.class.js +0 -217
  93. package/src/auth/authorization/authorization.class.js.map +0 -1
  94. package/src/auth/authorization/authorization.types.js +0 -79
  95. package/src/auth/authorization/authorization.types.js.map +0 -1
  96. package/src/auth/authorization/index.js +0 -19
  97. package/src/auth/authorization/index.js.map +0 -1
  98. package/src/auth/authorization/orchestrated.authorization.js +0 -306
  99. package/src/auth/authorization/orchestrated.authorization.js.map +0 -1
  100. package/src/auth/authorization/public.authorization.js +0 -132
  101. package/src/auth/authorization/public.authorization.js.map +0 -1
  102. package/src/auth/authorization/transparent.authorization.js +0 -147
  103. package/src/auth/authorization/transparent.authorization.js.map +0 -1
  104. package/src/auth/consent/consent.types.js +0 -119
  105. package/src/auth/consent/consent.types.js.map +0 -1
  106. package/src/auth/consent/index.js +0 -13
  107. package/src/auth/consent/index.js.map +0 -1
  108. package/src/auth/detection/auth-provider-detection.js +0 -230
  109. package/src/auth/detection/auth-provider-detection.js.map +0 -1
  110. package/src/auth/detection/index.js +0 -15
  111. package/src/auth/detection/index.js.map +0 -1
  112. package/src/auth/flows/auth.verify.flow.js +0 -379
  113. package/src/auth/flows/auth.verify.flow.js.map +0 -1
  114. package/src/auth/flows/oauth.authorize.flow.js +0 -822
  115. package/src/auth/flows/oauth.authorize.flow.js.map +0 -1
  116. package/src/auth/flows/oauth.callback.flow.js +0 -357
  117. package/src/auth/flows/oauth.callback.flow.js.map +0 -1
  118. package/src/auth/flows/oauth.register.flow.js +0 -201
  119. package/src/auth/flows/oauth.register.flow.js.map +0 -1
  120. package/src/auth/flows/oauth.token.flow.js +0 -319
  121. package/src/auth/flows/oauth.token.flow.js.map +0 -1
  122. package/src/auth/flows/session.verify.flow.js +0 -304
  123. package/src/auth/flows/session.verify.flow.js.map +0 -1
  124. package/src/auth/flows/well-known.jwks.flow.js +0 -89
  125. package/src/auth/flows/well-known.jwks.flow.js.map +0 -1
  126. package/src/auth/flows/well-known.oauth-authorization-server.flow.js +0 -122
  127. package/src/auth/flows/well-known.oauth-authorization-server.flow.js.map +0 -1
  128. package/src/auth/flows/well-known.prm.flow.js +0 -106
  129. package/src/auth/flows/well-known.prm.flow.js.map +0 -1
  130. package/src/auth/instances/instance.local-primary-auth.js +0 -308
  131. package/src/auth/instances/instance.local-primary-auth.js.map +0 -1
  132. package/src/auth/instances/instance.remote-primary-auth.js +0 -49
  133. package/src/auth/instances/instance.remote-primary-auth.js.map +0 -1
  134. package/src/auth/jwks/dev-key-persistence.js +0 -219
  135. package/src/auth/jwks/dev-key-persistence.js.map +0 -1
  136. package/src/auth/jwks/index.js +0 -7
  137. package/src/auth/jwks/index.js.map +0 -1
  138. package/src/auth/jwks/jwks.service.js +0 -303
  139. package/src/auth/jwks/jwks.service.js.map +0 -1
  140. package/src/auth/jwks/jwks.types.js +0 -3
  141. package/src/auth/jwks/jwks.types.js.map +0 -1
  142. package/src/auth/jwks/jwks.utils.js +0 -32
  143. package/src/auth/jwks/jwks.utils.js.map +0 -1
  144. package/src/auth/machine-id.js +0 -32
  145. package/src/auth/machine-id.js.map +0 -1
  146. package/src/auth/oauth/flows/oauth.authorize.flow.js +0 -33
  147. package/src/auth/oauth/flows/oauth.authorize.flow.js.map +0 -1
  148. package/src/auth/oauth/flows/oauth.device-authorization.flow.js +0 -48
  149. package/src/auth/oauth/flows/oauth.device-authorization.flow.js.map +0 -1
  150. package/src/auth/oauth/flows/oauth.introspect.flow.js +0 -28
  151. package/src/auth/oauth/flows/oauth.introspect.flow.js.map +0 -1
  152. package/src/auth/oauth/flows/oauth.par.flow.js +0 -29
  153. package/src/auth/oauth/flows/oauth.par.flow.js.map +0 -1
  154. package/src/auth/oauth/flows/oauth.revoke.flow.js +0 -27
  155. package/src/auth/oauth/flows/oauth.revoke.flow.js.map +0 -1
  156. package/src/auth/oauth/flows/oauth.token.flow.js +0 -59
  157. package/src/auth/oauth/flows/oauth.token.flow.js.map +0 -1
  158. package/src/auth/oauth/flows/oauth.userinfo.flow.js +0 -24
  159. package/src/auth/oauth/flows/oauth.userinfo.flow.js.map +0 -1
  160. package/src/auth/oauth/flows/oidc.logout.flow.js +0 -20
  161. package/src/auth/oauth/flows/oidc.logout.flow.js.map +0 -1
  162. package/src/auth/session/authorization-vault.js +0 -817
  163. package/src/auth/session/authorization-vault.js.map +0 -1
  164. package/src/auth/session/authorization.store.js +0 -323
  165. package/src/auth/session/authorization.store.js.map +0 -1
  166. package/src/auth/session/encrypted-authorization-vault.js +0 -493
  167. package/src/auth/session/encrypted-authorization-vault.js.map +0 -1
  168. package/src/auth/session/index.js +0 -16
  169. package/src/auth/session/index.js.map +0 -1
  170. package/src/auth/session/record/session.base.js +0 -125
  171. package/src/auth/session/record/session.base.js.map +0 -1
  172. package/src/auth/session/record/session.stateful.js +0 -55
  173. package/src/auth/session/record/session.stateful.js.map +0 -1
  174. package/src/auth/session/record/session.stateless.js +0 -32
  175. package/src/auth/session/record/session.stateless.js.map +0 -1
  176. package/src/auth/session/record/session.transparent.js +0 -22
  177. package/src/auth/session/record/session.transparent.js.map +0 -1
  178. package/src/auth/session/redis-session.store.js +0 -204
  179. package/src/auth/session/redis-session.store.js.map +0 -1
  180. package/src/auth/session/session.crypto.js +0 -47
  181. package/src/auth/session/session.crypto.js.map +0 -1
  182. package/src/auth/session/session.schema.js +0 -13
  183. package/src/auth/session/session.schema.js.map +0 -1
  184. package/src/auth/session/session.service.js +0 -105
  185. package/src/auth/session/session.service.js.map +0 -1
  186. package/src/auth/session/session.transport.js +0 -20
  187. package/src/auth/session/session.transport.js.map +0 -1
  188. package/src/auth/session/session.types.js +0 -4
  189. package/src/auth/session/session.types.js.map +0 -1
  190. package/src/auth/session/token.refresh.js +0 -63
  191. package/src/auth/session/token.refresh.js.map +0 -1
  192. package/src/auth/session/token.store.js +0 -53
  193. package/src/auth/session/token.store.js.map +0 -1
  194. package/src/auth/session/token.vault.js +0 -54
  195. package/src/auth/session/token.vault.js.map +0 -1
  196. package/src/auth/session/transport-session.manager.js +0 -298
  197. package/src/auth/session/transport-session.manager.js.map +0 -1
  198. package/src/auth/session/transport-session.types.js +0 -111
  199. package/src/auth/session/transport-session.types.js.map +0 -1
  200. package/src/auth/session/utils/auth-token.utils.js +0 -57
  201. package/src/auth/session/utils/auth-token.utils.js.map +0 -1
  202. package/src/auth/session/utils/session-id.utils.js +0 -217
  203. package/src/auth/session/utils/session-id.utils.js.map +0 -1
  204. package/src/auth/session/utils/tiny-ttl-cache.js +0 -26
  205. package/src/auth/session/utils/tiny-ttl-cache.js.map +0 -1
  206. package/src/auth/session/vault-encryption.js +0 -263
  207. package/src/auth/session/vault-encryption.js.map +0 -1
  208. package/src/auth/ui/base-layout.js +0 -279
  209. package/src/auth/ui/base-layout.js.map +0 -1
  210. package/src/auth/ui/index.js +0 -34
  211. package/src/auth/ui/index.js.map +0 -1
  212. package/src/auth/ui/templates.js +0 -426
  213. package/src/auth/ui/templates.js.map +0 -1
  214. package/src/auth/utils/audience.validator.js +0 -196
  215. package/src/auth/utils/audience.validator.js.map +0 -1
  216. package/src/auth/utils/index.js +0 -7
  217. package/src/auth/utils/index.js.map +0 -1
  218. package/src/auth/utils/www-authenticate.utils.js +0 -183
  219. package/src/auth/utils/www-authenticate.utils.js.map +0 -1
  220. package/src/common/common.schema.js +0 -35
  221. package/src/common/common.schema.js.map +0 -1
  222. package/src/common/constants.js +0 -13
  223. package/src/common/constants.js.map +0 -1
  224. package/src/common/decorators/adapter.decorator.js +0 -20
  225. package/src/common/decorators/adapter.decorator.js.map +0 -1
  226. package/src/common/decorators/app.decorator.js +0 -44
  227. package/src/common/decorators/app.decorator.js.map +0 -1
  228. package/src/common/decorators/auth-provider.decorator.js +0 -20
  229. package/src/common/decorators/auth-provider.decorator.js.map +0 -1
  230. package/src/common/decorators/decorator-utils.js +0 -195
  231. package/src/common/decorators/decorator-utils.js.map +0 -1
  232. package/src/common/decorators/flow.decorator.js +0 -19
  233. package/src/common/decorators/flow.decorator.js.map +0 -1
  234. package/src/common/decorators/front-mcp.decorator.js +0 -67
  235. package/src/common/decorators/front-mcp.decorator.js.map +0 -1
  236. package/src/common/decorators/hook.decorator.js +0 -178
  237. package/src/common/decorators/hook.decorator.js.map +0 -1
  238. package/src/common/decorators/index.js +0 -16
  239. package/src/common/decorators/index.js.map +0 -1
  240. package/src/common/decorators/logger.decorator.js +0 -20
  241. package/src/common/decorators/logger.decorator.js.map +0 -1
  242. package/src/common/decorators/plugin.decorator.js +0 -39
  243. package/src/common/decorators/plugin.decorator.js.map +0 -1
  244. package/src/common/decorators/prompt.decorator.js +0 -38
  245. package/src/common/decorators/prompt.decorator.js.map +0 -1
  246. package/src/common/decorators/provider.decorator.js +0 -20
  247. package/src/common/decorators/provider.decorator.js.map +0 -1
  248. package/src/common/decorators/resource.decorator.js +0 -94
  249. package/src/common/decorators/resource.decorator.js.map +0 -1
  250. package/src/common/decorators/tool.decorator.js +0 -45
  251. package/src/common/decorators/tool.decorator.js.map +0 -1
  252. package/src/common/dynamic/dynamic.adapter.js +0 -28
  253. package/src/common/dynamic/dynamic.adapter.js.map +0 -1
  254. package/src/common/dynamic/dynamic.plugin.js +0 -42
  255. package/src/common/dynamic/dynamic.plugin.js.map +0 -1
  256. package/src/common/dynamic/dynamic.utils.js +0 -27
  257. package/src/common/dynamic/dynamic.utils.js.map +0 -1
  258. package/src/common/dynamic/index.js +0 -6
  259. package/src/common/dynamic/index.js.map +0 -1
  260. package/src/common/entries/adapter.entry.js +0 -8
  261. package/src/common/entries/adapter.entry.js.map +0 -1
  262. package/src/common/entries/app.entry.js +0 -9
  263. package/src/common/entries/app.entry.js.map +0 -1
  264. package/src/common/entries/auth-provider.entry.js +0 -8
  265. package/src/common/entries/auth-provider.entry.js.map +0 -1
  266. package/src/common/entries/base.entry.js +0 -17
  267. package/src/common/entries/base.entry.js.map +0 -1
  268. package/src/common/entries/flow.entry.js +0 -21
  269. package/src/common/entries/flow.entry.js.map +0 -1
  270. package/src/common/entries/hook.entry.js +0 -20
  271. package/src/common/entries/hook.entry.js.map +0 -1
  272. package/src/common/entries/index.js +0 -17
  273. package/src/common/entries/index.js.map +0 -1
  274. package/src/common/entries/logger.entry.js +0 -8
  275. package/src/common/entries/logger.entry.js.map +0 -1
  276. package/src/common/entries/plugin.entry.js +0 -8
  277. package/src/common/entries/plugin.entry.js.map +0 -1
  278. package/src/common/entries/prompt.entry.js +0 -18
  279. package/src/common/entries/prompt.entry.js.map +0 -1
  280. package/src/common/entries/provider.entry.js +0 -8
  281. package/src/common/entries/provider.entry.js.map +0 -1
  282. package/src/common/entries/resource.entry.js +0 -35
  283. package/src/common/entries/resource.entry.js.map +0 -1
  284. package/src/common/entries/scope.entry.js +0 -14
  285. package/src/common/entries/scope.entry.js.map +0 -1
  286. package/src/common/entries/tool.entry.js +0 -31
  287. package/src/common/entries/tool.entry.js.map +0 -1
  288. package/src/common/flow/flow.utils.js +0 -96
  289. package/src/common/flow/flow.utils.js.map +0 -1
  290. package/src/common/index.js +0 -20
  291. package/src/common/index.js.map +0 -1
  292. package/src/common/interfaces/adapter.interface.js +0 -3
  293. package/src/common/interfaces/adapter.interface.js.map +0 -1
  294. package/src/common/interfaces/app.interface.js +0 -3
  295. package/src/common/interfaces/app.interface.js.map +0 -1
  296. package/src/common/interfaces/auth-hook.interface.js +0 -135
  297. package/src/common/interfaces/auth-hook.interface.js.map +0 -1
  298. package/src/common/interfaces/auth-provider.interface.js +0 -18
  299. package/src/common/interfaces/auth-provider.interface.js.map +0 -1
  300. package/src/common/interfaces/base.interface.js +0 -3
  301. package/src/common/interfaces/base.interface.js.map +0 -1
  302. package/src/common/interfaces/execution-context.interface.js +0 -166
  303. package/src/common/interfaces/execution-context.interface.js.map +0 -1
  304. package/src/common/interfaces/flow.interface.js +0 -95
  305. package/src/common/interfaces/flow.interface.js.map +0 -1
  306. package/src/common/interfaces/front-mcp.interface.js +0 -3
  307. package/src/common/interfaces/front-mcp.interface.js.map +0 -1
  308. package/src/common/interfaces/hook.interface.js +0 -3
  309. package/src/common/interfaces/hook.interface.js.map +0 -1
  310. package/src/common/interfaces/index.js +0 -21
  311. package/src/common/interfaces/index.js.map +0 -1
  312. package/src/common/interfaces/internal/flow.utils.js +0 -83
  313. package/src/common/interfaces/internal/flow.utils.js.map +0 -1
  314. package/src/common/interfaces/internal/index.js +0 -7
  315. package/src/common/interfaces/internal/index.js.map +0 -1
  316. package/src/common/interfaces/internal/primary-auth-provider.interface.js +0 -81
  317. package/src/common/interfaces/internal/primary-auth-provider.interface.js.map +0 -1
  318. package/src/common/interfaces/internal/registry.interface.js +0 -3
  319. package/src/common/interfaces/internal/registry.interface.js.map +0 -1
  320. package/src/common/interfaces/logger.interface.js +0 -10
  321. package/src/common/interfaces/logger.interface.js.map +0 -1
  322. package/src/common/interfaces/plugin.interface.js +0 -3
  323. package/src/common/interfaces/plugin.interface.js.map +0 -1
  324. package/src/common/interfaces/prompt.interface.js +0 -81
  325. package/src/common/interfaces/prompt.interface.js.map +0 -1
  326. package/src/common/interfaces/provider.interface.js +0 -18
  327. package/src/common/interfaces/provider.interface.js.map +0 -1
  328. package/src/common/interfaces/resource.interface.js +0 -56
  329. package/src/common/interfaces/resource.interface.js.map +0 -1
  330. package/src/common/interfaces/scope.interface.js +0 -3
  331. package/src/common/interfaces/scope.interface.js.map +0 -1
  332. package/src/common/interfaces/server.interface.js +0 -18
  333. package/src/common/interfaces/server.interface.js.map +0 -1
  334. package/src/common/interfaces/session-hook.interface.js +0 -140
  335. package/src/common/interfaces/session-hook.interface.js.map +0 -1
  336. package/src/common/interfaces/tool-hook.interface.js +0 -92
  337. package/src/common/interfaces/tool-hook.interface.js.map +0 -1
  338. package/src/common/interfaces/tool.interface.js +0 -117
  339. package/src/common/interfaces/tool.interface.js.map +0 -1
  340. package/src/common/metadata/adapter.metadata.js +0 -10
  341. package/src/common/metadata/adapter.metadata.js.map +0 -1
  342. package/src/common/metadata/app.metadata.js +0 -30
  343. package/src/common/metadata/app.metadata.js.map +0 -1
  344. package/src/common/metadata/auth-provider.metadata.js +0 -19
  345. package/src/common/metadata/auth-provider.metadata.js.map +0 -1
  346. package/src/common/metadata/flow.metadata.js +0 -15
  347. package/src/common/metadata/flow.metadata.js.map +0 -1
  348. package/src/common/metadata/front-mcp.metadata.js +0 -29
  349. package/src/common/metadata/front-mcp.metadata.js.map +0 -1
  350. package/src/common/metadata/hook.metadata.js +0 -3
  351. package/src/common/metadata/hook.metadata.js.map +0 -1
  352. package/src/common/metadata/index.js +0 -17
  353. package/src/common/metadata/index.js.map +0 -1
  354. package/src/common/metadata/logger.metadata.js +0 -10
  355. package/src/common/metadata/logger.metadata.js.map +0 -1
  356. package/src/common/metadata/plugin.metadata.js +0 -18
  357. package/src/common/metadata/plugin.metadata.js.map +0 -1
  358. package/src/common/metadata/prompt.metadata.js +0 -27
  359. package/src/common/metadata/prompt.metadata.js.map +0 -1
  360. package/src/common/metadata/provider.metadata.js +0 -36
  361. package/src/common/metadata/provider.metadata.js.map +0 -1
  362. package/src/common/metadata/resource.metadata.js +0 -31
  363. package/src/common/metadata/resource.metadata.js.map +0 -1
  364. package/src/common/metadata/tool-ui.metadata.js +0 -12
  365. package/src/common/metadata/tool-ui.metadata.js.map +0 -1
  366. package/src/common/metadata/tool.metadata.js +0 -55
  367. package/src/common/metadata/tool.metadata.js.map +0 -1
  368. package/src/common/migrate/auth-transport.migrate.js +0 -140
  369. package/src/common/migrate/auth-transport.migrate.js.map +0 -1
  370. package/src/common/migrate/index.js +0 -6
  371. package/src/common/migrate/index.js.map +0 -1
  372. package/src/common/providers/base-config.provider.js +0 -128
  373. package/src/common/providers/base-config.provider.js.map +0 -1
  374. package/src/common/records/adapter.record.js +0 -11
  375. package/src/common/records/adapter.record.js.map +0 -1
  376. package/src/common/records/app.record.js +0 -9
  377. package/src/common/records/app.record.js.map +0 -1
  378. package/src/common/records/auth-provider.record.js +0 -12
  379. package/src/common/records/auth-provider.record.js.map +0 -1
  380. package/src/common/records/flow.record.js +0 -8
  381. package/src/common/records/flow.record.js.map +0 -1
  382. package/src/common/records/hook.record.js +0 -8
  383. package/src/common/records/hook.record.js.map +0 -1
  384. package/src/common/records/index.js +0 -16
  385. package/src/common/records/index.js.map +0 -1
  386. package/src/common/records/logger.record.js +0 -8
  387. package/src/common/records/logger.record.js.map +0 -1
  388. package/src/common/records/plugin.record.js +0 -11
  389. package/src/common/records/plugin.record.js.map +0 -1
  390. package/src/common/records/prompt.record.js +0 -9
  391. package/src/common/records/prompt.record.js.map +0 -1
  392. package/src/common/records/provider.record.js +0 -14
  393. package/src/common/records/provider.record.js.map +0 -1
  394. package/src/common/records/resource.record.js +0 -20
  395. package/src/common/records/resource.record.js.map +0 -1
  396. package/src/common/records/scope.record.js +0 -9
  397. package/src/common/records/scope.record.js.map +0 -1
  398. package/src/common/records/tool.record.js +0 -9
  399. package/src/common/records/tool.record.js.map +0 -1
  400. package/src/common/schemas/annotated-class.schema.js +0 -109
  401. package/src/common/schemas/annotated-class.schema.js.map +0 -1
  402. package/src/common/schemas/http-input.schema.js +0 -13
  403. package/src/common/schemas/http-input.schema.js.map +0 -1
  404. package/src/common/schemas/http-output.schema.js +0 -321
  405. package/src/common/schemas/http-output.schema.js.map +0 -1
  406. package/src/common/schemas/index.js +0 -8
  407. package/src/common/schemas/index.js.map +0 -1
  408. package/src/common/schemas/session-header.schema.js +0 -42
  409. package/src/common/schemas/session-header.schema.js.map +0 -1
  410. package/src/common/tokens/adapter.tokens.js +0 -11
  411. package/src/common/tokens/adapter.tokens.js.map +0 -1
  412. package/src/common/tokens/app.tokens.js +0 -30
  413. package/src/common/tokens/app.tokens.js.map +0 -1
  414. package/src/common/tokens/auth-provider.tokens.js +0 -12
  415. package/src/common/tokens/auth-provider.tokens.js.map +0 -1
  416. package/src/common/tokens/base.tokens.js +0 -9
  417. package/src/common/tokens/base.tokens.js.map +0 -1
  418. package/src/common/tokens/flow-hook.tokens.js +0 -9
  419. package/src/common/tokens/flow-hook.tokens.js.map +0 -1
  420. package/src/common/tokens/flow.tokens.js +0 -16
  421. package/src/common/tokens/flow.tokens.js.map +0 -1
  422. package/src/common/tokens/front-mcp.tokens.js +0 -24
  423. package/src/common/tokens/front-mcp.tokens.js.map +0 -1
  424. package/src/common/tokens/index.js +0 -17
  425. package/src/common/tokens/index.js.map +0 -1
  426. package/src/common/tokens/logger.tokens.js +0 -11
  427. package/src/common/tokens/logger.tokens.js.map +0 -1
  428. package/src/common/tokens/plugin.tokens.js +0 -18
  429. package/src/common/tokens/plugin.tokens.js.map +0 -1
  430. package/src/common/tokens/prompt.tokens.js +0 -14
  431. package/src/common/tokens/prompt.tokens.js.map +0 -1
  432. package/src/common/tokens/provider.tokens.js +0 -12
  433. package/src/common/tokens/provider.tokens.js.map +0 -1
  434. package/src/common/tokens/resource.tokens.js +0 -28
  435. package/src/common/tokens/resource.tokens.js.map +0 -1
  436. package/src/common/tokens/server.tokens.js +0 -11
  437. package/src/common/tokens/server.tokens.js.map +0 -1
  438. package/src/common/tokens/tool.tokens.js +0 -21
  439. package/src/common/tokens/tool.tokens.js.map +0 -1
  440. package/src/common/types/auth/index.js +0 -6
  441. package/src/common/types/auth/index.js.map +0 -1
  442. package/src/common/types/auth/jwt.types.js +0 -36
  443. package/src/common/types/auth/jwt.types.js.map +0 -1
  444. package/src/common/types/auth/session.types.js +0 -53
  445. package/src/common/types/auth/session.types.js.map +0 -1
  446. package/src/common/types/common.types.js +0 -3
  447. package/src/common/types/common.types.js.map +0 -1
  448. package/src/common/types/index.js +0 -7
  449. package/src/common/types/index.js.map +0 -1
  450. package/src/common/types/options/auth.options.d.ts +0 -1266
  451. package/src/common/types/options/auth.options.js +0 -560
  452. package/src/common/types/options/auth.options.js.map +0 -1
  453. package/src/common/types/options/http.options.js +0 -10
  454. package/src/common/types/options/http.options.js.map +0 -1
  455. package/src/common/types/options/index.js +0 -11
  456. package/src/common/types/options/index.js.map +0 -1
  457. package/src/common/types/options/logging.options.js +0 -33
  458. package/src/common/types/options/logging.options.js.map +0 -1
  459. package/src/common/types/options/redis.options.d.ts +0 -22
  460. package/src/common/types/options/redis.options.js +0 -45
  461. package/src/common/types/options/redis.options.js.map +0 -1
  462. package/src/common/types/options/server-info.options.js +0 -13
  463. package/src/common/types/options/server-info.options.js.map +0 -1
  464. package/src/common/types/options/session.options.js +0 -32
  465. package/src/common/types/options/session.options.js.map +0 -1
  466. package/src/common/types/options/transport.options.js +0 -121
  467. package/src/common/types/options/transport.options.js.map +0 -1
  468. package/src/common/utils/decide-request-intent.utils.js +0 -391
  469. package/src/common/utils/decide-request-intent.utils.js.map +0 -1
  470. package/src/common/utils/index.js +0 -6
  471. package/src/common/utils/index.js.map +0 -1
  472. package/src/common/utils/path.utils.js +0 -66
  473. package/src/common/utils/path.utils.js.map +0 -1
  474. package/src/completion/flows/complete.flow.js +0 -199
  475. package/src/completion/flows/complete.flow.js.map +0 -1
  476. package/src/context/frontmcp-context-storage.js +0 -183
  477. package/src/context/frontmcp-context-storage.js.map +0 -1
  478. package/src/context/frontmcp-context.js +0 -360
  479. package/src/context/frontmcp-context.js.map +0 -1
  480. package/src/context/frontmcp-context.provider.js +0 -61
  481. package/src/context/frontmcp-context.provider.js.map +0 -1
  482. package/src/context/index.js +0 -64
  483. package/src/context/index.js.map +0 -1
  484. package/src/context/request-context-storage.js +0 -183
  485. package/src/context/request-context-storage.js.map +0 -1
  486. package/src/context/request-context.js +0 -209
  487. package/src/context/request-context.js.map +0 -1
  488. package/src/context/request-context.provider.js +0 -51
  489. package/src/context/request-context.provider.js.map +0 -1
  490. package/src/context/session-key.provider.js +0 -65
  491. package/src/context/session-key.provider.js.map +0 -1
  492. package/src/context/trace-context.js +0 -142
  493. package/src/context/trace-context.js.map +0 -1
  494. package/src/errors/authorization-required.error.js +0 -274
  495. package/src/errors/authorization-required.error.js.map +0 -1
  496. package/src/errors/error-handler.js +0 -107
  497. package/src/errors/error-handler.js.map +0 -1
  498. package/src/errors/index.js +0 -44
  499. package/src/errors/index.js.map +0 -1
  500. package/src/errors/mcp.error.js +0 -398
  501. package/src/errors/mcp.error.js.map +0 -1
  502. package/src/exceptions/mcp-exceptions/session-missing.exception.js +0 -11
  503. package/src/exceptions/mcp-exceptions/session-missing.exception.js.map +0 -1
  504. package/src/exceptions/mcp-exceptions/unsupported-client-version.exception.js +0 -15
  505. package/src/exceptions/mcp-exceptions/unsupported-client-version.exception.js.map +0 -1
  506. package/src/flows/flow.instance.js +0 -420
  507. package/src/flows/flow.instance.js.map +0 -1
  508. package/src/flows/flow.registry.js +0 -121
  509. package/src/flows/flow.registry.js.map +0 -1
  510. package/src/flows/flow.stages.js +0 -113
  511. package/src/flows/flow.stages.js.map +0 -1
  512. package/src/flows/flow.utils.js +0 -36
  513. package/src/flows/flow.utils.js.map +0 -1
  514. package/src/front-mcp/front-mcp.js +0 -63
  515. package/src/front-mcp/front-mcp.js.map +0 -1
  516. package/src/front-mcp/front-mcp.providers.js +0 -29
  517. package/src/front-mcp/front-mcp.providers.js.map +0 -1
  518. package/src/front-mcp/front-mcp.tokens.js +0 -5
  519. package/src/front-mcp/front-mcp.tokens.js.map +0 -1
  520. package/src/front-mcp/index.d.ts +0 -1
  521. package/src/front-mcp/index.js +0 -5
  522. package/src/front-mcp/index.js.map +0 -1
  523. package/src/front-mcp/serverless-handler.js +0 -61
  524. package/src/front-mcp/serverless-handler.js.map +0 -1
  525. package/src/hooks/hook.instance.js +0 -26
  526. package/src/hooks/hook.instance.js.map +0 -1
  527. package/src/hooks/hook.registry.js +0 -152
  528. package/src/hooks/hook.registry.js.map +0 -1
  529. package/src/hooks/hooks.utils.js +0 -34
  530. package/src/hooks/hooks.utils.js.map +0 -1
  531. package/src/index.js +0 -36
  532. package/src/index.js.map +0 -1
  533. package/src/logger/instances/instance.console-logger.js +0 -75
  534. package/src/logger/instances/instance.console-logger.js.map +0 -1
  535. package/src/logger/instances/instance.logger.js +0 -77
  536. package/src/logger/instances/instance.logger.js.map +0 -1
  537. package/src/logger/logger.registry.js +0 -96
  538. package/src/logger/logger.registry.js.map +0 -1
  539. package/src/logger/logger.tokens.js +0 -3
  540. package/src/logger/logger.tokens.js.map +0 -1
  541. package/src/logger/logger.types.js +0 -8
  542. package/src/logger/logger.types.js.map +0 -1
  543. package/src/logger/logger.utils.js +0 -42
  544. package/src/logger/logger.utils.js.map +0 -1
  545. package/src/logging/flows/set-level.flow.js +0 -108
  546. package/src/logging/flows/set-level.flow.js.map +0 -1
  547. package/src/mcp-apps/csp.js +0 -267
  548. package/src/mcp-apps/csp.js.map +0 -1
  549. package/src/mcp-apps/index.js +0 -91
  550. package/src/mcp-apps/index.js.map +0 -1
  551. package/src/mcp-apps/schemas.js +0 -345
  552. package/src/mcp-apps/schemas.js.map +0 -1
  553. package/src/mcp-apps/template.js +0 -419
  554. package/src/mcp-apps/template.js.map +0 -1
  555. package/src/mcp-apps/types.js +0 -59
  556. package/src/mcp-apps/types.js.map +0 -1
  557. package/src/notification/index.js +0 -13
  558. package/src/notification/index.js.map +0 -1
  559. package/src/notification/notification.service.js +0 -731
  560. package/src/notification/notification.service.js.map +0 -1
  561. package/src/plugin/plugin.registry.js +0 -152
  562. package/src/plugin/plugin.registry.js.map +0 -1
  563. package/src/plugin/plugin.utils.js +0 -88
  564. package/src/plugin/plugin.utils.js.map +0 -1
  565. package/src/prompt/flows/get-prompt.flow.js +0 -214
  566. package/src/prompt/flows/get-prompt.flow.js.map +0 -1
  567. package/src/prompt/flows/prompts-list.flow.js +0 -176
  568. package/src/prompt/flows/prompts-list.flow.js.map +0 -1
  569. package/src/prompt/index.js +0 -17
  570. package/src/prompt/index.js.map +0 -1
  571. package/src/prompt/prompt.events.js +0 -25
  572. package/src/prompt/prompt.events.js.map +0 -1
  573. package/src/prompt/prompt.instance.js +0 -120
  574. package/src/prompt/prompt.instance.js.map +0 -1
  575. package/src/prompt/prompt.registry.js +0 -380
  576. package/src/prompt/prompt.registry.js.map +0 -1
  577. package/src/prompt/prompt.types.js +0 -11
  578. package/src/prompt/prompt.types.js.map +0 -1
  579. package/src/prompt/prompt.utils.js +0 -136
  580. package/src/prompt/prompt.utils.js.map +0 -1
  581. package/src/provider/provider.registry.js +0 -868
  582. package/src/provider/provider.registry.js.map +0 -1
  583. package/src/provider/provider.types.js +0 -3
  584. package/src/provider/provider.types.js.map +0 -1
  585. package/src/provider/provider.utils.js +0 -103
  586. package/src/provider/provider.utils.js.map +0 -1
  587. package/src/regsitry/index.js +0 -5
  588. package/src/regsitry/index.js.map +0 -1
  589. package/src/regsitry/registry.base.js +0 -32
  590. package/src/regsitry/registry.base.js.map +0 -1
  591. package/src/resource/flows/read-resource.flow.js +0 -270
  592. package/src/resource/flows/read-resource.flow.js.map +0 -1
  593. package/src/resource/flows/resource-templates-list.flow.js +0 -191
  594. package/src/resource/flows/resource-templates-list.flow.js.map +0 -1
  595. package/src/resource/flows/resources-list.flow.js +0 -196
  596. package/src/resource/flows/resources-list.flow.js.map +0 -1
  597. package/src/resource/flows/subscribe-resource.flow.js +0 -123
  598. package/src/resource/flows/subscribe-resource.flow.js.map +0 -1
  599. package/src/resource/flows/unsubscribe-resource.flow.js +0 -107
  600. package/src/resource/flows/unsubscribe-resource.flow.js.map +0 -1
  601. package/src/resource/index.js +0 -20
  602. package/src/resource/index.js.map +0 -1
  603. package/src/resource/resource.events.js +0 -17
  604. package/src/resource/resource.events.js.map +0 -1
  605. package/src/resource/resource.instance.js +0 -163
  606. package/src/resource/resource.instance.js.map +0 -1
  607. package/src/resource/resource.registry.js +0 -468
  608. package/src/resource/resource.registry.js.map +0 -1
  609. package/src/resource/resource.types.js +0 -11
  610. package/src/resource/resource.types.js.map +0 -1
  611. package/src/resource/resource.utils.js +0 -151
  612. package/src/resource/resource.utils.js.map +0 -1
  613. package/src/scope/flows/http.request.flow.js +0 -474
  614. package/src/scope/flows/http.request.flow.js.map +0 -1
  615. package/src/scope/index.js +0 -6
  616. package/src/scope/index.js.map +0 -1
  617. package/src/scope/scope.instance.js +0 -263
  618. package/src/scope/scope.instance.js.map +0 -1
  619. package/src/scope/scope.registry.js +0 -94
  620. package/src/scope/scope.registry.js.map +0 -1
  621. package/src/scope/scope.utils.js +0 -61
  622. package/src/scope/scope.utils.js.map +0 -1
  623. package/src/server/adapters/base.host.adapter.js +0 -8
  624. package/src/server/adapters/base.host.adapter.js.map +0 -1
  625. package/src/server/adapters/express.host.adapter.js +0 -70
  626. package/src/server/adapters/express.host.adapter.js.map +0 -1
  627. package/src/server/server.instance.js +0 -54
  628. package/src/server/server.instance.js.map +0 -1
  629. package/src/server/server.types.js +0 -3
  630. package/src/server/server.types.js.map +0 -1
  631. package/src/server/server.validation.js +0 -192
  632. package/src/server/server.validation.js.map +0 -1
  633. package/src/store/adapters/store.base.adapter.js +0 -16
  634. package/src/store/adapters/store.base.adapter.js.map +0 -1
  635. package/src/store/adapters/store.memory.adapter.js +0 -89
  636. package/src/store/adapters/store.memory.adapter.js.map +0 -1
  637. package/src/store/adapters/store.redis.adapter.js +0 -104
  638. package/src/store/adapters/store.redis.adapter.js.map +0 -1
  639. package/src/store/index.js +0 -12
  640. package/src/store/index.js.map +0 -1
  641. package/src/store/store.helpers.js +0 -67
  642. package/src/store/store.helpers.js.map +0 -1
  643. package/src/store/store.registry.js +0 -37
  644. package/src/store/store.registry.js.map +0 -1
  645. package/src/store/store.tokens.js +0 -7
  646. package/src/store/store.tokens.js.map +0 -1
  647. package/src/store/store.types.js +0 -11
  648. package/src/store/store.types.js.map +0 -1
  649. package/src/store/store.utils.js +0 -18
  650. package/src/store/store.utils.js.map +0 -1
  651. package/src/tool/flows/call-tool.flow.js +0 -616
  652. package/src/tool/flows/call-tool.flow.js.map +0 -1
  653. package/src/tool/flows/tools-list.flow.js +0 -328
  654. package/src/tool/flows/tools-list.flow.js.map +0 -1
  655. package/src/tool/tool.events.js +0 -16
  656. package/src/tool/tool.events.js.map +0 -1
  657. package/src/tool/tool.instance.js +0 -117
  658. package/src/tool/tool.instance.js.map +0 -1
  659. package/src/tool/tool.registry.js +0 -353
  660. package/src/tool/tool.registry.js.map +0 -1
  661. package/src/tool/tool.types.js +0 -10
  662. package/src/tool/tool.types.js.map +0 -1
  663. package/src/tool/tool.utils.js +0 -366
  664. package/src/tool/tool.utils.js.map +0 -1
  665. package/src/tool/ui/index.js +0 -63
  666. package/src/tool/ui/index.js.map +0 -1
  667. package/src/tool/ui/platform-adapters.js +0 -18
  668. package/src/tool/ui/platform-adapters.js.map +0 -1
  669. package/src/tool/ui/template-helpers.js +0 -112
  670. package/src/tool/ui/template-helpers.js.map +0 -1
  671. package/src/tool/ui/ui-resource-template.js +0 -64
  672. package/src/tool/ui/ui-resource-template.js.map +0 -1
  673. package/src/tool/ui/ui-resource.handler.js +0 -129
  674. package/src/tool/ui/ui-resource.handler.js.map +0 -1
  675. package/src/transport/adapters/transport.local.adapter.js +0 -148
  676. package/src/transport/adapters/transport.local.adapter.js.map +0 -1
  677. package/src/transport/adapters/transport.sse.adapter.js +0 -65
  678. package/src/transport/adapters/transport.sse.adapter.js.map +0 -1
  679. package/src/transport/adapters/transport.streamable-http.adapter.js +0 -112
  680. package/src/transport/adapters/transport.streamable-http.adapter.js.map +0 -1
  681. package/src/transport/flows/handle.sse.flow.js +0 -197
  682. package/src/transport/flows/handle.sse.flow.js.map +0 -1
  683. package/src/transport/flows/handle.stateless-http.flow.js +0 -102
  684. package/src/transport/flows/handle.stateless-http.flow.js.map +0 -1
  685. package/src/transport/flows/handle.streamable-http.flow.js +0 -315
  686. package/src/transport/flows/handle.streamable-http.flow.js.map +0 -1
  687. package/src/transport/legacy/legacy.sse.tranporter.js +0 -185
  688. package/src/transport/legacy/legacy.sse.tranporter.js.map +0 -1
  689. package/src/transport/mcp-handlers/Initialized-notification.hanlder.js +0 -14
  690. package/src/transport/mcp-handlers/Initialized-notification.hanlder.js.map +0 -1
  691. package/src/transport/mcp-handlers/call-tool-request.handler.js +0 -46
  692. package/src/transport/mcp-handlers/call-tool-request.handler.js.map +0 -1
  693. package/src/transport/mcp-handlers/complete-request.handler.js +0 -11
  694. package/src/transport/mcp-handlers/complete-request.handler.js.map +0 -1
  695. package/src/transport/mcp-handlers/get-prompt-request.handler.js +0 -11
  696. package/src/transport/mcp-handlers/get-prompt-request.handler.js.map +0 -1
  697. package/src/transport/mcp-handlers/index.js +0 -57
  698. package/src/transport/mcp-handlers/index.js.map +0 -1
  699. package/src/transport/mcp-handlers/initialize-request.handler.js +0 -109
  700. package/src/transport/mcp-handlers/initialize-request.handler.js.map +0 -1
  701. package/src/transport/mcp-handlers/list-prompts-request.handler.js +0 -11
  702. package/src/transport/mcp-handlers/list-prompts-request.handler.js.map +0 -1
  703. package/src/transport/mcp-handlers/list-resource-templates-request.handler.js +0 -12
  704. package/src/transport/mcp-handlers/list-resource-templates-request.handler.js.map +0 -1
  705. package/src/transport/mcp-handlers/list-resources-request.handler.js +0 -12
  706. package/src/transport/mcp-handlers/list-resources-request.handler.js.map +0 -1
  707. package/src/transport/mcp-handlers/list-tools-request.handler.js +0 -11
  708. package/src/transport/mcp-handlers/list-tools-request.handler.js.map +0 -1
  709. package/src/transport/mcp-handlers/logging-set-level-request.handler.js +0 -34
  710. package/src/transport/mcp-handlers/logging-set-level-request.handler.js.map +0 -1
  711. package/src/transport/mcp-handlers/mcp-handlers.types.js +0 -3
  712. package/src/transport/mcp-handlers/mcp-handlers.types.js.map +0 -1
  713. package/src/transport/mcp-handlers/read-resource-request.handler.js +0 -12
  714. package/src/transport/mcp-handlers/read-resource-request.handler.js.map +0 -1
  715. package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js +0 -26
  716. package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js.map +0 -1
  717. package/src/transport/mcp-handlers/subscribe-request.handler.js +0 -34
  718. package/src/transport/mcp-handlers/subscribe-request.handler.js.map +0 -1
  719. package/src/transport/mcp-handlers/unsubscribe-request.handler.js +0 -34
  720. package/src/transport/mcp-handlers/unsubscribe-request.handler.js.map +0 -1
  721. package/src/transport/transport.error.js +0 -25
  722. package/src/transport/transport.error.js.map +0 -1
  723. package/src/transport/transport.event-store.js +0 -36
  724. package/src/transport/transport.event-store.js.map +0 -1
  725. package/src/transport/transport.local.js +0 -71
  726. package/src/transport/transport.local.js.map +0 -1
  727. package/src/transport/transport.registry.js +0 -523
  728. package/src/transport/transport.registry.js.map +0 -1
  729. package/src/transport/transport.remote.js +0 -31
  730. package/src/transport/transport.remote.js.map +0 -1
  731. package/src/transport/transport.types.js +0 -3
  732. package/src/transport/transport.types.js.map +0 -1
  733. package/src/types/drinen-hooks.types.js +0 -3
  734. package/src/types/drinen-hooks.types.js.map +0 -1
  735. package/src/types/invoke.type.js +0 -34
  736. package/src/types/invoke.type.js.map +0 -1
  737. package/src/types/token.types.js +0 -3
  738. package/src/types/token.types.js.map +0 -1
  739. package/src/utils/content.utils.js +0 -194
  740. package/src/utils/content.utils.js.map +0 -1
  741. package/src/utils/index.js +0 -55
  742. package/src/utils/index.js.map +0 -1
  743. package/src/utils/lineage.utils.js +0 -82
  744. package/src/utils/lineage.utils.js.map +0 -1
  745. package/src/utils/metadata.utils.js +0 -26
  746. package/src/utils/metadata.utils.js.map +0 -1
  747. package/src/utils/naming.utils.js +0 -136
  748. package/src/utils/naming.utils.js.map +0 -1
  749. package/src/utils/server.utils.js +0 -59
  750. package/src/utils/server.utils.js.map +0 -1
  751. package/src/utils/string.utils.js +0 -10
  752. package/src/utils/string.utils.js.map +0 -1
  753. package/src/utils/token.utils.js +0 -65
  754. package/src/utils/token.utils.js.map +0 -1
  755. package/src/utils/types.utils.js +0 -3
  756. package/src/utils/types.utils.js.map +0 -1
  757. package/src/utils/uri-template.utils.js +0 -113
  758. package/src/utils/uri-template.utils.js.map +0 -1
  759. package/src/utils/uri-validation.utils.js +0 -76
  760. package/src/utils/uri-validation.utils.js.map +0 -1
  761. package/{src/adapter → adapter}/adapter.instance.d.ts +0 -0
  762. package/{src/adapter → adapter}/adapter.regsitry.d.ts +0 -0
  763. package/{src/adapter → adapter}/adapter.utils.d.ts +0 -0
  764. package/{src/app → app}/app.registry.d.ts +0 -0
  765. package/{src/app → app}/app.utils.d.ts +0 -0
  766. package/{src/app → app}/instances/app.local.instance.d.ts +0 -0
  767. package/{src/app → app}/instances/app.remote.instance.d.ts +0 -0
  768. package/{src/app → app}/instances/index.d.ts +0 -0
  769. package/{src/auth → auth}/auth.registry.d.ts +0 -0
  770. package/{src/auth → auth}/auth.utils.d.ts +0 -0
  771. package/{src/auth → auth}/authorization/authorization.class.d.ts +0 -0
  772. package/{src/auth → auth}/authorization/authorization.types.d.ts +0 -0
  773. package/{src/auth → auth}/authorization/index.d.ts +0 -0
  774. package/{src/auth → auth}/authorization/orchestrated.authorization.d.ts +0 -0
  775. package/{src/auth → auth}/authorization/public.authorization.d.ts +0 -0
  776. package/{src/auth → auth}/authorization/transparent.authorization.d.ts +0 -0
  777. package/{src/auth → auth}/consent/consent.types.d.ts +0 -0
  778. package/{src/auth → auth}/consent/index.d.ts +0 -0
  779. package/{src/auth → auth}/detection/auth-provider-detection.d.ts +0 -0
  780. package/{src/auth → auth}/detection/index.d.ts +0 -0
  781. package/{src/auth → auth}/flows/auth.verify.flow.d.ts +0 -0
  782. package/{src/auth → auth}/flows/oauth.authorize.flow.d.ts +0 -0
  783. package/{src/auth → auth}/flows/oauth.callback.flow.d.ts +0 -0
  784. package/{src/auth → auth}/flows/oauth.register.flow.d.ts +0 -0
  785. package/{src/auth → auth}/flows/oauth.token.flow.d.ts +0 -0
  786. package/{src/auth → auth}/flows/session.verify.flow.d.ts +0 -0
  787. package/{src/auth → auth}/flows/well-known.jwks.flow.d.ts +0 -0
  788. package/{src/auth → auth}/flows/well-known.oauth-authorization-server.flow.d.ts +0 -0
  789. package/{src/auth → auth}/flows/well-known.prm.flow.d.ts +0 -0
  790. package/{src/auth → auth}/jwks/dev-key-persistence.d.ts +0 -0
  791. package/{src/auth → auth}/jwks/index.d.ts +0 -0
  792. package/{src/auth → auth}/jwks/jwks.service.d.ts +0 -0
  793. package/{src/auth → auth}/jwks/jwks.types.d.ts +0 -0
  794. package/{src/auth → auth}/jwks/jwks.utils.d.ts +0 -0
  795. package/{src/auth → auth}/machine-id.d.ts +0 -0
  796. package/{src/auth → auth}/oauth/flows/oauth.authorize.flow.d.ts +0 -0
  797. package/{src/auth → auth}/oauth/flows/oauth.device-authorization.flow.d.ts +0 -0
  798. package/{src/auth → auth}/oauth/flows/oauth.introspect.flow.d.ts +0 -0
  799. package/{src/auth → auth}/oauth/flows/oauth.par.flow.d.ts +0 -0
  800. package/{src/auth → auth}/oauth/flows/oauth.revoke.flow.d.ts +0 -0
  801. package/{src/auth → auth}/oauth/flows/oauth.token.flow.d.ts +0 -0
  802. package/{src/auth → auth}/oauth/flows/oauth.userinfo.flow.d.ts +0 -0
  803. package/{src/auth → auth}/oauth/flows/oidc.logout.flow.d.ts +0 -0
  804. package/{src/auth → auth}/session/authorization-vault.d.ts +0 -0
  805. package/{src/auth → auth}/session/authorization.store.d.ts +0 -0
  806. package/{src/auth → auth}/session/encrypted-authorization-vault.d.ts +0 -0
  807. package/{src/auth → auth}/session/record/session.base.d.ts +0 -0
  808. package/{src/auth → auth}/session/record/session.stateful.d.ts +0 -0
  809. package/{src/auth → auth}/session/record/session.stateless.d.ts +0 -0
  810. package/{src/auth → auth}/session/record/session.transparent.d.ts +0 -0
  811. package/{src/auth → auth}/session/redis-session.store.d.ts +0 -0
  812. package/{src/auth → auth}/session/session.crypto.d.ts +0 -0
  813. package/{src/auth → auth}/session/session.schema.d.ts +0 -0
  814. package/{src/auth → auth}/session/session.service.d.ts +0 -0
  815. package/{src/auth → auth}/session/session.transport.d.ts +0 -0
  816. package/{src/auth → auth}/session/session.types.d.ts +0 -0
  817. package/{src/auth → auth}/session/token.refresh.d.ts +0 -0
  818. package/{src/auth → auth}/session/token.store.d.ts +0 -0
  819. package/{src/auth → auth}/session/token.vault.d.ts +0 -0
  820. package/{src/auth → auth}/session/transport-session.manager.d.ts +0 -0
  821. package/{src/auth → auth}/session/transport-session.types.d.ts +0 -0
  822. package/{src/auth → auth}/session/utils/auth-token.utils.d.ts +0 -0
  823. package/{src/auth → auth}/session/utils/session-id.utils.d.ts +0 -0
  824. package/{src/auth → auth}/session/utils/tiny-ttl-cache.d.ts +0 -0
  825. package/{src/auth → auth}/session/vault-encryption.d.ts +0 -0
  826. package/{src/auth → auth}/ui/base-layout.d.ts +0 -0
  827. package/{src/auth → auth}/ui/index.d.ts +0 -0
  828. package/{src/auth → auth}/ui/templates.d.ts +0 -0
  829. package/{src/auth → auth}/utils/audience.validator.d.ts +0 -0
  830. package/{src/auth → auth}/utils/index.d.ts +0 -0
  831. package/{src/auth → auth}/utils/www-authenticate.utils.d.ts +0 -0
  832. package/{src/common → common}/common.schema.d.ts +0 -0
  833. package/{src/common → common}/constants.d.ts +0 -0
  834. package/{src/common → common}/decorators/adapter.decorator.d.ts +0 -0
  835. package/{src/common → common}/decorators/app.decorator.d.ts +0 -0
  836. package/{src/common → common}/decorators/auth-provider.decorator.d.ts +0 -0
  837. package/{src/common → common}/decorators/decorator-utils.d.ts +0 -0
  838. package/{src/common → common}/decorators/flow.decorator.d.ts +0 -0
  839. package/{src/common → common}/decorators/front-mcp.decorator.d.ts +0 -0
  840. package/{src/common → common}/decorators/hook.decorator.d.ts +0 -0
  841. package/{src/common → common}/decorators/index.d.ts +0 -0
  842. package/{src/common → common}/decorators/logger.decorator.d.ts +0 -0
  843. package/{src/common → common}/decorators/plugin.decorator.d.ts +0 -0
  844. package/{src/common → common}/decorators/prompt.decorator.d.ts +0 -0
  845. package/{src/common → common}/decorators/provider.decorator.d.ts +0 -0
  846. package/{src/common → common}/decorators/resource.decorator.d.ts +0 -0
  847. package/{src/common → common}/decorators/tool.decorator.d.ts +0 -0
  848. package/{src/common → common}/dynamic/dynamic.adapter.d.ts +0 -0
  849. package/{src/common → common}/dynamic/dynamic.plugin.d.ts +0 -0
  850. package/{src/common → common}/dynamic/dynamic.utils.d.ts +0 -0
  851. package/{src/common → common}/dynamic/index.d.ts +0 -0
  852. package/{src/common → common}/entries/adapter.entry.d.ts +0 -0
  853. package/{src/common → common}/entries/app.entry.d.ts +0 -0
  854. package/{src/common → common}/entries/auth-provider.entry.d.ts +0 -0
  855. package/{src/common → common}/entries/base.entry.d.ts +0 -0
  856. package/{src/common → common}/entries/flow.entry.d.ts +0 -0
  857. package/{src/common → common}/entries/hook.entry.d.ts +0 -0
  858. package/{src/common → common}/entries/index.d.ts +0 -0
  859. package/{src/common → common}/entries/logger.entry.d.ts +0 -0
  860. package/{src/common → common}/entries/plugin.entry.d.ts +0 -0
  861. package/{src/common → common}/entries/prompt.entry.d.ts +0 -0
  862. package/{src/common → common}/entries/provider.entry.d.ts +0 -0
  863. package/{src/common → common}/entries/resource.entry.d.ts +0 -0
  864. package/{src/common → common}/entries/scope.entry.d.ts +0 -0
  865. package/{src/common → common}/entries/tool.entry.d.ts +0 -0
  866. package/{src/common → common}/flow/flow.utils.d.ts +0 -0
  867. package/{src/common → common}/index.d.ts +0 -0
  868. package/{src/common → common}/interfaces/adapter.interface.d.ts +0 -0
  869. package/{src/common → common}/interfaces/app.interface.d.ts +0 -0
  870. package/{src/common → common}/interfaces/auth-hook.interface.d.ts +0 -0
  871. package/{src/common → common}/interfaces/auth-provider.interface.d.ts +0 -0
  872. package/{src/common → common}/interfaces/base.interface.d.ts +0 -0
  873. package/{src/common → common}/interfaces/execution-context.interface.d.ts +0 -0
  874. package/{src/common → common}/interfaces/flow.interface.d.ts +0 -0
  875. package/{src/common → common}/interfaces/front-mcp.interface.d.ts +0 -0
  876. package/{src/common → common}/interfaces/hook.interface.d.ts +0 -0
  877. package/{src/common → common}/interfaces/index.d.ts +0 -0
  878. package/{src/common → common}/interfaces/internal/flow.utils.d.ts +0 -0
  879. package/{src/common → common}/interfaces/internal/index.d.ts +0 -0
  880. package/{src/common → common}/interfaces/internal/registry.interface.d.ts +0 -0
  881. package/{src/common → common}/interfaces/logger.interface.d.ts +0 -0
  882. package/{src/common → common}/interfaces/plugin.interface.d.ts +0 -0
  883. package/{src/common → common}/interfaces/prompt.interface.d.ts +0 -0
  884. package/{src/common → common}/interfaces/provider.interface.d.ts +0 -0
  885. package/{src/common → common}/interfaces/resource.interface.d.ts +0 -0
  886. package/{src/common → common}/interfaces/scope.interface.d.ts +0 -0
  887. package/{src/common → common}/interfaces/server.interface.d.ts +0 -0
  888. package/{src/common → common}/interfaces/session-hook.interface.d.ts +0 -0
  889. package/{src/common → common}/interfaces/tool-hook.interface.d.ts +0 -0
  890. package/{src/common → common}/interfaces/tool.interface.d.ts +0 -0
  891. package/{src/common → common}/metadata/adapter.metadata.d.ts +0 -0
  892. package/{src/common → common}/metadata/app.metadata.d.ts +42 -42
  893. /package/{src/common → common}/metadata/auth-provider.metadata.d.ts +0 -0
  894. /package/{src/common → common}/metadata/flow.metadata.d.ts +0 -0
  895. /package/{src/common → common}/metadata/hook.metadata.d.ts +0 -0
  896. /package/{src/common → common}/metadata/index.d.ts +0 -0
  897. /package/{src/common → common}/metadata/logger.metadata.d.ts +0 -0
  898. /package/{src/common → common}/metadata/plugin.metadata.d.ts +0 -0
  899. /package/{src/common → common}/metadata/provider.metadata.d.ts +0 -0
  900. /package/{src/common → common}/migrate/auth-transport.migrate.d.ts +0 -0
  901. /package/{src/common → common}/migrate/index.d.ts +0 -0
  902. /package/{src/common → common}/providers/base-config.provider.d.ts +0 -0
  903. /package/{src/common → common}/records/adapter.record.d.ts +0 -0
  904. /package/{src/common → common}/records/app.record.d.ts +0 -0
  905. /package/{src/common → common}/records/auth-provider.record.d.ts +0 -0
  906. /package/{src/common → common}/records/flow.record.d.ts +0 -0
  907. /package/{src/common → common}/records/hook.record.d.ts +0 -0
  908. /package/{src/common → common}/records/index.d.ts +0 -0
  909. /package/{src/common → common}/records/logger.record.d.ts +0 -0
  910. /package/{src/common → common}/records/plugin.record.d.ts +0 -0
  911. /package/{src/common → common}/records/prompt.record.d.ts +0 -0
  912. /package/{src/common → common}/records/provider.record.d.ts +0 -0
  913. /package/{src/common → common}/records/resource.record.d.ts +0 -0
  914. /package/{src/common → common}/records/scope.record.d.ts +0 -0
  915. /package/{src/common → common}/records/tool.record.d.ts +0 -0
  916. /package/{src/common → common}/schemas/annotated-class.schema.d.ts +0 -0
  917. /package/{src/common → common}/schemas/http-input.schema.d.ts +0 -0
  918. /package/{src/common → common}/schemas/index.d.ts +0 -0
  919. /package/{src/common → common}/schemas/session-header.schema.d.ts +0 -0
  920. /package/{src/common → common}/tokens/adapter.tokens.d.ts +0 -0
  921. /package/{src/common → common}/tokens/app.tokens.d.ts +0 -0
  922. /package/{src/common → common}/tokens/auth-provider.tokens.d.ts +0 -0
  923. /package/{src/common → common}/tokens/base.tokens.d.ts +0 -0
  924. /package/{src/common → common}/tokens/flow-hook.tokens.d.ts +0 -0
  925. /package/{src/common → common}/tokens/flow.tokens.d.ts +0 -0
  926. /package/{src/common → common}/tokens/front-mcp.tokens.d.ts +0 -0
  927. /package/{src/common → common}/tokens/index.d.ts +0 -0
  928. /package/{src/common → common}/tokens/logger.tokens.d.ts +0 -0
  929. /package/{src/common → common}/tokens/plugin.tokens.d.ts +0 -0
  930. /package/{src/common → common}/tokens/prompt.tokens.d.ts +0 -0
  931. /package/{src/common → common}/tokens/provider.tokens.d.ts +0 -0
  932. /package/{src/common → common}/tokens/resource.tokens.d.ts +0 -0
  933. /package/{src/common → common}/tokens/server.tokens.d.ts +0 -0
  934. /package/{src/common → common}/tokens/tool.tokens.d.ts +0 -0
  935. /package/{src/common → common}/types/auth/index.d.ts +0 -0
  936. /package/{src/common → common}/types/auth/jwt.types.d.ts +0 -0
  937. /package/{src/common → common}/types/auth/session.types.d.ts +0 -0
  938. /package/{src/common → common}/types/common.types.d.ts +0 -0
  939. /package/{src/common → common}/types/index.d.ts +0 -0
  940. /package/{src/logger/logger.tokens.d.ts → common/types/options/auth/auth.typecheck.d.ts} +0 -0
  941. /package/{src/common → common}/types/options/http.options.d.ts +0 -0
  942. /package/{src/common → common}/types/options/logging.options.d.ts +0 -0
  943. /package/{src/common → common}/types/options/session.options.d.ts +0 -0
  944. /package/{src/common → common}/utils/path.utils.d.ts +0 -0
  945. /package/{src/context → context}/frontmcp-context-storage.d.ts +0 -0
  946. /package/{src/context → context}/frontmcp-context.d.ts +0 -0
  947. /package/{src/context → context}/frontmcp-context.provider.d.ts +0 -0
  948. /package/{src/context → context}/index.d.ts +0 -0
  949. /package/{src/context → context}/request-context-storage.d.ts +0 -0
  950. /package/{src/context → context}/request-context.d.ts +0 -0
  951. /package/{src/context → context}/request-context.provider.d.ts +0 -0
  952. /package/{src/context → context}/session-key.provider.d.ts +0 -0
  953. /package/{src/context → context}/trace-context.d.ts +0 -0
  954. /package/{src/errors → errors}/authorization-required.error.d.ts +0 -0
  955. /package/{src/errors → errors}/error-handler.d.ts +0 -0
  956. /package/{src/exceptions → exceptions}/mcp-exceptions/session-missing.exception.d.ts +0 -0
  957. /package/{src/exceptions → exceptions}/mcp-exceptions/unsupported-client-version.exception.d.ts +0 -0
  958. /package/{src/flows → flows}/flow.instance.d.ts +0 -0
  959. /package/{src/flows → flows}/flow.registry.d.ts +0 -0
  960. /package/{src/flows → flows}/flow.stages.d.ts +0 -0
  961. /package/{src/flows → flows}/flow.utils.d.ts +0 -0
  962. /package/{src/front-mcp → front-mcp}/front-mcp.d.ts +0 -0
  963. /package/{src/front-mcp → front-mcp}/front-mcp.tokens.d.ts +0 -0
  964. /package/{src/front-mcp → front-mcp}/serverless-handler.d.ts +0 -0
  965. /package/{src/hooks → hooks}/hook.instance.d.ts +0 -0
  966. /package/{src/hooks → hooks}/hook.registry.d.ts +0 -0
  967. /package/{src/hooks → hooks}/hooks.utils.d.ts +0 -0
  968. /package/{src/logger → logger}/instances/instance.console-logger.d.ts +0 -0
  969. /package/{src/logger → logger}/instances/instance.logger.d.ts +0 -0
  970. /package/{src/logger → logger}/logger.registry.d.ts +0 -0
  971. /package/{src/logger → logger}/logger.types.d.ts +0 -0
  972. /package/{src/logger → logger}/logger.utils.d.ts +0 -0
  973. /package/{src/mcp-apps → mcp-apps}/csp.d.ts +0 -0
  974. /package/{src/mcp-apps → mcp-apps}/index.d.ts +0 -0
  975. /package/{src/mcp-apps → mcp-apps}/schemas.d.ts +0 -0
  976. /package/{src/mcp-apps → mcp-apps}/template.d.ts +0 -0
  977. /package/{src/mcp-apps → mcp-apps}/types.d.ts +0 -0
  978. /package/{src/notification → notification}/index.d.ts +0 -0
  979. /package/{src/notification → notification}/notification.service.d.ts +0 -0
  980. /package/{src/plugin → plugin}/plugin.registry.d.ts +0 -0
  981. /package/{src/plugin → plugin}/plugin.utils.d.ts +0 -0
  982. /package/{src/prompt → prompt}/index.d.ts +0 -0
  983. /package/{src/prompt → prompt}/prompt.events.d.ts +0 -0
  984. /package/{src/prompt → prompt}/prompt.instance.d.ts +0 -0
  985. /package/{src/prompt → prompt}/prompt.registry.d.ts +0 -0
  986. /package/{src/prompt → prompt}/prompt.types.d.ts +0 -0
  987. /package/{src/prompt → prompt}/prompt.utils.d.ts +0 -0
  988. /package/{src/provider → provider}/provider.registry.d.ts +0 -0
  989. /package/{src/provider → provider}/provider.types.d.ts +0 -0
  990. /package/{src/provider → provider}/provider.utils.d.ts +0 -0
  991. /package/{src/regsitry → regsitry}/index.d.ts +0 -0
  992. /package/{src/regsitry → regsitry}/registry.base.d.ts +0 -0
  993. /package/{src/resource → resource}/index.d.ts +0 -0
  994. /package/{src/resource → resource}/resource.events.d.ts +0 -0
  995. /package/{src/resource → resource}/resource.instance.d.ts +0 -0
  996. /package/{src/resource → resource}/resource.registry.d.ts +0 -0
  997. /package/{src/resource → resource}/resource.types.d.ts +0 -0
  998. /package/{src/resource → resource}/resource.utils.d.ts +0 -0
  999. /package/{src/scope → scope}/flows/http.request.flow.d.ts +0 -0
  1000. /package/{src/scope → scope}/index.d.ts +0 -0
  1001. /package/{src/scope → scope}/scope.instance.d.ts +0 -0
  1002. /package/{src/scope → scope}/scope.registry.d.ts +0 -0
  1003. /package/{src/scope → scope}/scope.utils.d.ts +0 -0
  1004. /package/{src/server → server}/adapters/base.host.adapter.d.ts +0 -0
  1005. /package/{src/server → server}/adapters/express.host.adapter.d.ts +0 -0
  1006. /package/{src/server → server}/server.instance.d.ts +0 -0
  1007. /package/{src/server → server}/server.types.d.ts +0 -0
  1008. /package/{src/server → server}/server.validation.d.ts +0 -0
  1009. /package/{src/store → store}/adapters/store.base.adapter.d.ts +0 -0
  1010. /package/{src/store → store}/adapters/store.memory.adapter.d.ts +0 -0
  1011. /package/{src/store → store}/adapters/store.redis.adapter.d.ts +0 -0
  1012. /package/{src/store → store}/store.helpers.d.ts +0 -0
  1013. /package/{src/store → store}/store.registry.d.ts +0 -0
  1014. /package/{src/store → store}/store.tokens.d.ts +0 -0
  1015. /package/{src/store → store}/store.types.d.ts +0 -0
  1016. /package/{src/store → store}/store.utils.d.ts +0 -0
  1017. /package/{src/tool → tool}/tool.events.d.ts +0 -0
  1018. /package/{src/tool → tool}/tool.instance.d.ts +0 -0
  1019. /package/{src/tool → tool}/tool.registry.d.ts +0 -0
  1020. /package/{src/tool → tool}/tool.types.d.ts +0 -0
  1021. /package/{src/tool → tool}/tool.utils.d.ts +0 -0
  1022. /package/{src/tool → tool}/ui/ui-resource-template.d.ts +0 -0
  1023. /package/{src/transport → transport}/adapters/transport.local.adapter.d.ts +0 -0
  1024. /package/{src/transport → transport}/adapters/transport.sse.adapter.d.ts +0 -0
  1025. /package/{src/transport → transport}/adapters/transport.streamable-http.adapter.d.ts +0 -0
  1026. /package/{src/transport → transport}/flows/handle.sse.flow.d.ts +0 -0
  1027. /package/{src/transport → transport}/flows/handle.stateless-http.flow.d.ts +0 -0
  1028. /package/{src/transport → transport}/flows/handle.streamable-http.flow.d.ts +0 -0
  1029. /package/{src/transport → transport}/legacy/legacy.sse.tranporter.d.ts +0 -0
  1030. /package/{src/transport → transport}/mcp-handlers/Initialized-notification.hanlder.d.ts +0 -0
  1031. /package/{src/transport → transport}/mcp-handlers/call-tool-request.handler.d.ts +0 -0
  1032. /package/{src/transport → transport}/mcp-handlers/initialize-request.handler.d.ts +0 -0
  1033. /package/{src/transport → transport}/mcp-handlers/mcp-handlers.types.d.ts +0 -0
  1034. /package/{src/transport → transport}/mcp-handlers/roots-list-changed-notification.handler.d.ts +0 -0
  1035. /package/{src/transport → transport}/transport.error.d.ts +0 -0
  1036. /package/{src/transport → transport}/transport.event-store.d.ts +0 -0
  1037. /package/{src/transport → transport}/transport.local.d.ts +0 -0
  1038. /package/{src/transport → transport}/transport.remote.d.ts +0 -0
  1039. /package/{src/transport → transport}/transport.types.d.ts +0 -0
  1040. /package/{src/types → types}/drinen-hooks.types.d.ts +0 -0
  1041. /package/{src/types → types}/invoke.type.d.ts +0 -0
  1042. /package/{src/types → types}/token.types.d.ts +0 -0
  1043. /package/{src/utils → utils}/content.utils.d.ts +0 -0
  1044. /package/{src/utils → utils}/index.d.ts +0 -0
  1045. /package/{src/utils → utils}/lineage.utils.d.ts +0 -0
  1046. /package/{src/utils → utils}/metadata.utils.d.ts +0 -0
  1047. /package/{src/utils → utils}/naming.utils.d.ts +0 -0
  1048. /package/{src/utils → utils}/server.utils.d.ts +0 -0
  1049. /package/{src/utils → utils}/string.utils.d.ts +0 -0
  1050. /package/{src/utils → utils}/token.utils.d.ts +0 -0
  1051. /package/{src/utils → utils}/types.utils.d.ts +0 -0
  1052. /package/{src/utils → utils}/uri-template.utils.d.ts +0 -0
  1053. /package/{src/utils → utils}/uri-validation.utils.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"authorization-vault.js","sourceRoot":"","sources":["../../../../src/auth/session/authorization-vault.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Authorization Vault\n *\n * Secure storage for stateful authorization sessions.\n * Stores provider tokens, consent selections, and session metadata.\n *\n * Supports multiple credential types:\n * - OAuth tokens (access_token, refresh_token, scopes)\n * - API Keys (key value, header name)\n * - Basic Auth (username, password)\n * - Private Keys (PEM/JWK format for signing)\n * - Custom credentials (extensible)\n *\n * In stateful mode:\n * - Access token is a non-rotatable key to this vault\n * - All sensitive data stored server-side\n * - Supports incremental authorization via links\n *\n * In stateless mode:\n * - No vault used, all data in JWT claims\n * - No incremental authorization support\n */\n\nimport { z } from 'zod';\nimport { randomUUID } from 'node:crypto';\n\n// ============================================\n// Credential Type Enum\n// ============================================\n\n/**\n * Supported credential types for app authentication\n */\nexport const credentialTypeSchema = z.enum([\n 'oauth', // OAuth 2.0 tokens\n 'api_key', // API key (header or query param)\n 'basic', // Basic auth (username:password)\n 'bearer', // Bearer token (static)\n 'private_key', // Private key for signing (JWT, etc.)\n 'mtls', // Mutual TLS certificate\n 'custom', // Custom credential type\n]);\n\nexport type CredentialType = z.infer<typeof credentialTypeSchema>;\n\n// ============================================\n// Credential Schemas by Type\n// ============================================\n\n/**\n * OAuth credential - standard OAuth 2.0 tokens\n */\nexport const oauthCredentialSchema = z.object({\n type: z.literal('oauth'),\n /** Access token */\n accessToken: z.string(),\n /** Refresh token (optional) */\n refreshToken: z.string().optional(),\n /** Token type (usually 'Bearer') */\n tokenType: z.string().default('Bearer'),\n /** Token expiration timestamp (epoch ms) */\n expiresAt: z.number().optional(),\n /** Granted scopes */\n scopes: z.array(z.string()).default([]),\n /** ID token for OIDC (optional) */\n idToken: z.string().optional(),\n});\n\n/**\n * API Key credential - sent in header or query param\n */\nexport const apiKeyCredentialSchema = z.object({\n type: z.literal('api_key'),\n /** The API key value */\n key: z.string().min(1),\n /** Header name to use (e.g., 'X-API-Key', 'Authorization') */\n headerName: z.string().default('X-API-Key'),\n /** Prefix for the header value (e.g., 'Bearer ', 'Api-Key ') */\n headerPrefix: z.string().optional(),\n /** Alternative: send as query parameter */\n queryParam: z.string().optional(),\n});\n\n/**\n * Basic Auth credential - username and password\n */\nexport const basicAuthCredentialSchema = z.object({\n type: z.literal('basic'),\n /** Username */\n username: z.string().min(1),\n /** Password */\n password: z.string(),\n /** Pre-computed base64 encoded value (optional, for caching) */\n encodedValue: z.string().optional(),\n});\n\n/**\n * Bearer token credential - static bearer token\n */\nexport const bearerCredentialSchema = z.object({\n type: z.literal('bearer'),\n /** The bearer token value */\n token: z.string().min(1),\n /** Token expiration (optional, for static tokens that expire) */\n expiresAt: z.number().optional(),\n});\n\n/**\n * Private key credential - for JWT signing or request signing\n */\nexport const privateKeyCredentialSchema = z.object({\n type: z.literal('private_key'),\n /** Key format */\n format: z.enum(['pem', 'jwk', 'pkcs8', 'pkcs12']),\n /** The key data (PEM string or JWK JSON) */\n keyData: z.string(),\n /** Key ID (for JWK) */\n keyId: z.string().optional(),\n /** Algorithm to use for signing */\n algorithm: z.string().optional(),\n /** Passphrase if key is encrypted */\n passphrase: z.string().optional(),\n /** Associated certificate (for mTLS) */\n certificate: z.string().optional(),\n});\n\n/**\n * mTLS credential - client certificate for mutual TLS\n */\nexport const mtlsCredentialSchema = z.object({\n type: z.literal('mtls'),\n /** Client certificate (PEM format) */\n certificate: z.string(),\n /** Private key (PEM format) */\n privateKey: z.string(),\n /** Passphrase if private key is encrypted */\n passphrase: z.string().optional(),\n /** CA certificate chain (optional) */\n caCertificate: z.string().optional(),\n});\n\n/**\n * Custom credential - extensible for app-specific auth\n */\nexport const customCredentialSchema = z.object({\n type: z.literal('custom'),\n /** Custom type identifier */\n customType: z.string().min(1),\n /** Arbitrary credential data */\n data: z.record(z.string(), z.unknown()),\n /** Headers to include in requests */\n headers: z.record(z.string(), z.string()).optional(),\n});\n\n/**\n * Union of all credential types\n */\nexport const credentialSchema = z.discriminatedUnion('type', [\n oauthCredentialSchema,\n apiKeyCredentialSchema,\n basicAuthCredentialSchema,\n bearerCredentialSchema,\n privateKeyCredentialSchema,\n mtlsCredentialSchema,\n customCredentialSchema,\n]);\n\nexport type OAuthCredential = z.infer<typeof oauthCredentialSchema>;\nexport type ApiKeyCredential = z.infer<typeof apiKeyCredentialSchema>;\nexport type BasicAuthCredential = z.infer<typeof basicAuthCredentialSchema>;\nexport type BearerCredential = z.infer<typeof bearerCredentialSchema>;\nexport type PrivateKeyCredential = z.infer<typeof privateKeyCredentialSchema>;\nexport type MtlsCredential = z.infer<typeof mtlsCredentialSchema>;\nexport type CustomCredential = z.infer<typeof customCredentialSchema>;\nexport type Credential = z.infer<typeof credentialSchema>;\n\n// ============================================\n// App Credential Schema\n// ============================================\n\n/**\n * Credential stored for an app in the vault\n */\nexport const appCredentialSchema = z.object({\n /** App ID this credential belongs to */\n appId: z.string().min(1),\n /** Provider ID within the app (for apps with multiple auth providers) */\n providerId: z.string().min(1),\n /** The credential data */\n credential: credentialSchema,\n /** Timestamp when credential was acquired */\n acquiredAt: z.number(),\n /** Timestamp when credential was last used */\n lastUsedAt: z.number().optional(),\n /** Credential expiration (if applicable) */\n expiresAt: z.number().optional(),\n /** Whether this credential is currently valid */\n isValid: z.boolean().default(true),\n /** Error message if credential is invalid */\n invalidReason: z.string().optional(),\n /** User info associated with this credential */\n userInfo: z\n .object({\n sub: z.string().optional(),\n email: z.string().optional(),\n name: z.string().optional(),\n })\n .optional(),\n /** Metadata for tracking/debugging */\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type AppCredential = z.infer<typeof appCredentialSchema>;\n\n/**\n * Consent record stored in vault\n */\nexport const vaultConsentRecordSchema = z.object({\n /** Whether consent was enabled */\n enabled: z.boolean(),\n /** Selected tool IDs (user approved these) */\n selectedToolIds: z.array(z.string()),\n /** Available tool IDs at time of consent */\n availableToolIds: z.array(z.string()),\n /** Timestamp when consent was given */\n consentedAt: z.number(),\n /** Consent version for tracking changes */\n version: z.string().default('1.0'),\n});\n\n/**\n * Federated login record stored in vault\n */\nexport const vaultFederatedRecordSchema = z.object({\n /** Provider IDs that were selected */\n selectedProviderIds: z.array(z.string()),\n /** Provider IDs that were skipped (can be authorized later) */\n skippedProviderIds: z.array(z.string()),\n /** Primary provider ID */\n primaryProviderId: z.string().optional(),\n /** Timestamp when federated login was completed */\n completedAt: z.number(),\n});\n\n/**\n * Pending incremental authorization request\n */\nexport const pendingIncrementalAuthSchema = z.object({\n /** Unique ID for this request */\n id: z.string(),\n /** App ID being authorized */\n appId: z.string(),\n /** Tool ID that triggered the auth request */\n toolId: z.string().optional(),\n /** Authorization URL */\n authUrl: z.string(),\n /** Required scopes */\n requiredScopes: z.array(z.string()).optional(),\n /** Whether elicit is being used */\n elicitId: z.string().optional(),\n /** Timestamp when request was created */\n createdAt: z.number(),\n /** Expiration timestamp */\n expiresAt: z.number(),\n /** Status of the request */\n status: z.enum(['pending', 'completed', 'cancelled', 'expired']),\n});\n\n/**\n * Authorization vault entry (the full session state)\n */\nexport const authorizationVaultEntrySchema = z.object({\n /** Vault ID (maps to access token jti claim) */\n id: z.string(),\n /** User subject identifier */\n userSub: z.string(),\n /** User email */\n userEmail: z.string().optional(),\n /** User name */\n userName: z.string().optional(),\n /** Client ID that created this session */\n clientId: z.string(),\n /** Creation timestamp */\n createdAt: z.number(),\n /** Last access timestamp */\n lastAccessAt: z.number(),\n /** App credentials (keyed by `${appId}:${providerId}`) */\n appCredentials: z.record(z.string(), appCredentialSchema).default({}),\n /** Consent record */\n consent: vaultConsentRecordSchema.optional(),\n /** Federated login record */\n federated: vaultFederatedRecordSchema.optional(),\n /** Pending incremental authorization requests */\n pendingAuths: z.array(pendingIncrementalAuthSchema),\n /** Apps that are fully authorized */\n authorizedAppIds: z.array(z.string()),\n /** Apps that were skipped (not yet authorized) */\n skippedAppIds: z.array(z.string()),\n});\n\n// ============================================\n// Types\n// ============================================\n\nexport type VaultConsentRecord = z.infer<typeof vaultConsentRecordSchema>;\nexport type VaultFederatedRecord = z.infer<typeof vaultFederatedRecordSchema>;\nexport type PendingIncrementalAuth = z.infer<typeof pendingIncrementalAuthSchema>;\nexport type AuthorizationVaultEntry = z.infer<typeof authorizationVaultEntrySchema>;\n\n// ============================================\n// Authorization Vault Interface\n// ============================================\n\nexport interface AuthorizationVault {\n /**\n * Create a new vault entry\n */\n create(params: {\n userSub: string;\n userEmail?: string;\n userName?: string;\n clientId: string;\n consent?: VaultConsentRecord;\n federated?: VaultFederatedRecord;\n authorizedAppIds?: string[];\n skippedAppIds?: string[];\n }): Promise<AuthorizationVaultEntry>;\n\n /**\n * Get vault entry by ID\n */\n get(id: string): Promise<AuthorizationVaultEntry | null>;\n\n /**\n * Update vault entry\n */\n update(id: string, updates: Partial<AuthorizationVaultEntry>): Promise<void>;\n\n /**\n * Delete vault entry\n */\n delete(id: string): Promise<void>;\n\n /**\n * Update consent in the vault\n */\n updateConsent(vaultId: string, consent: VaultConsentRecord): Promise<void>;\n\n /**\n * Add app to authorized list (for incremental auth)\n */\n authorizeApp(vaultId: string, appId: string): Promise<void>;\n\n /**\n * Create a pending incremental auth request\n */\n createPendingAuth(\n vaultId: string,\n params: {\n appId: string;\n toolId?: string;\n authUrl: string;\n requiredScopes?: string[];\n elicitId?: string;\n ttlMs?: number;\n },\n ): Promise<PendingIncrementalAuth>;\n\n /**\n * Get pending auth by ID\n */\n getPendingAuth(vaultId: string, pendingAuthId: string): Promise<PendingIncrementalAuth | null>;\n\n /**\n * Complete a pending incremental auth\n */\n completePendingAuth(vaultId: string, pendingAuthId: string): Promise<void>;\n\n /**\n * Cancel a pending incremental auth\n */\n cancelPendingAuth(vaultId: string, pendingAuthId: string): Promise<void>;\n\n /**\n * Check if app is authorized\n */\n isAppAuthorized(vaultId: string, appId: string): Promise<boolean>;\n\n /**\n * Get all pending auths for a vault\n */\n getPendingAuths(vaultId: string): Promise<PendingIncrementalAuth[]>;\n\n // ============================================\n // App Credential Methods\n // ============================================\n\n /**\n * Add an app credential to the vault\n * Only stores if app is authorized AND (consent disabled OR app tools in consent)\n */\n addAppCredential(vaultId: string, credential: AppCredential): Promise<void>;\n\n /**\n * Remove an app credential from the vault\n */\n removeAppCredential(vaultId: string, appId: string, providerId: string): Promise<void>;\n\n /**\n * Get all credentials for a specific app\n */\n getAppCredentials(vaultId: string, appId: string): Promise<AppCredential[]>;\n\n /**\n * Get a specific credential for an app and provider\n */\n getCredential(vaultId: string, appId: string, providerId: string): Promise<AppCredential | null>;\n\n /**\n * Get all credentials in the vault (filtered by consent if enabled)\n * @param filterByConsent If true, only returns credentials for apps with consented tools\n */\n getAllCredentials(vaultId: string, filterByConsent?: boolean): Promise<AppCredential[]>;\n\n /**\n * Update credential metadata (last used, validity, etc.)\n */\n updateCredential(\n vaultId: string,\n appId: string,\n providerId: string,\n updates: Partial<Pick<AppCredential, 'lastUsedAt' | 'isValid' | 'invalidReason' | 'expiresAt' | 'metadata'>>,\n ): Promise<void>;\n\n /**\n * Check if a credential should be stored based on consent\n * Returns true if:\n * - Consent is disabled, OR\n * - The app has at least one tool in the consent selection\n */\n shouldStoreCredential(vaultId: string, appId: string, toolIds?: string[]): Promise<boolean>;\n\n /**\n * Invalidate a credential (mark as invalid without removing)\n */\n invalidateCredential(vaultId: string, appId: string, providerId: string, reason: string): Promise<void>;\n\n /**\n * Refresh an OAuth credential (update tokens)\n */\n refreshOAuthCredential(\n vaultId: string,\n appId: string,\n providerId: string,\n tokens: { accessToken: string; refreshToken?: string; expiresAt?: number },\n ): Promise<void>;\n\n /**\n * Cleanup expired entries and pending auths\n */\n cleanup(): Promise<void>;\n}\n\n// ============================================\n// In-Memory Implementation\n// ============================================\n\n/**\n * In-Memory Authorization Vault\n *\n * Development/testing implementation. Data is lost on restart.\n * For production, use RedisAuthorizationVault.\n */\nexport class InMemoryAuthorizationVault implements AuthorizationVault {\n private vaults = new Map<string, AuthorizationVaultEntry>();\n\n /** Default TTL for pending auth requests (10 minutes) */\n private readonly pendingAuthTtlMs = 10 * 60 * 1000;\n\n async create(params: {\n userSub: string;\n userEmail?: string;\n userName?: string;\n clientId: string;\n consent?: VaultConsentRecord;\n federated?: VaultFederatedRecord;\n authorizedAppIds?: string[];\n skippedAppIds?: string[];\n }): Promise<AuthorizationVaultEntry> {\n const now = Date.now();\n const entry: AuthorizationVaultEntry = {\n id: randomUUID(),\n userSub: params.userSub,\n userEmail: params.userEmail,\n userName: params.userName,\n clientId: params.clientId,\n createdAt: now,\n lastAccessAt: now,\n appCredentials: {},\n consent: params.consent,\n federated: params.federated,\n pendingAuths: [],\n authorizedAppIds: params.authorizedAppIds ?? [],\n skippedAppIds: params.skippedAppIds ?? [],\n };\n\n this.vaults.set(entry.id, entry);\n return entry;\n }\n\n async get(id: string): Promise<AuthorizationVaultEntry | null> {\n const entry = this.vaults.get(id);\n if (!entry) return null;\n\n // Note: lastAccessAt is updated on explicit operations, not on read\n // This prevents unnecessary writes on read operations\n return entry;\n }\n\n async update(id: string, updates: Partial<AuthorizationVaultEntry>): Promise<void> {\n const entry = this.vaults.get(id);\n if (!entry) return;\n\n Object.assign(entry, updates, { lastAccessAt: Date.now() });\n }\n\n async delete(id: string): Promise<void> {\n this.vaults.delete(id);\n }\n\n async updateConsent(vaultId: string, consent: VaultConsentRecord): Promise<void> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return;\n\n entry.consent = consent;\n entry.lastAccessAt = Date.now();\n }\n\n async authorizeApp(vaultId: string, appId: string): Promise<void> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return;\n\n // Remove from skipped, add to authorized\n entry.skippedAppIds = entry.skippedAppIds.filter((id) => id !== appId);\n if (!entry.authorizedAppIds.includes(appId)) {\n entry.authorizedAppIds.push(appId);\n }\n entry.lastAccessAt = Date.now();\n }\n\n async createPendingAuth(\n vaultId: string,\n params: {\n appId: string;\n toolId?: string;\n authUrl: string;\n requiredScopes?: string[];\n elicitId?: string;\n ttlMs?: number;\n },\n ): Promise<PendingIncrementalAuth> {\n const entry = this.vaults.get(vaultId);\n if (!entry) {\n throw new Error(`Vault not found: ${vaultId}`);\n }\n\n const now = Date.now();\n const pendingAuth: PendingIncrementalAuth = {\n id: randomUUID(),\n appId: params.appId,\n toolId: params.toolId,\n authUrl: params.authUrl,\n requiredScopes: params.requiredScopes,\n elicitId: params.elicitId,\n createdAt: now,\n expiresAt: now + (params.ttlMs ?? this.pendingAuthTtlMs),\n status: 'pending',\n };\n\n entry.pendingAuths.push(pendingAuth);\n entry.lastAccessAt = now;\n\n return pendingAuth;\n }\n\n async getPendingAuth(vaultId: string, pendingAuthId: string): Promise<PendingIncrementalAuth | null> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return null;\n\n const pendingAuth = entry.pendingAuths.find((p) => p.id === pendingAuthId);\n if (!pendingAuth) return null;\n\n // Check if expired\n if (Date.now() > pendingAuth.expiresAt) {\n pendingAuth.status = 'expired';\n }\n\n return pendingAuth;\n }\n\n async completePendingAuth(vaultId: string, pendingAuthId: string): Promise<void> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return;\n\n const pendingAuth = entry.pendingAuths.find((p) => p.id === pendingAuthId);\n if (pendingAuth) {\n pendingAuth.status = 'completed';\n\n // Auto-authorize the app\n await this.authorizeApp(vaultId, pendingAuth.appId);\n }\n }\n\n async cancelPendingAuth(vaultId: string, pendingAuthId: string): Promise<void> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return;\n\n const pendingAuth = entry.pendingAuths.find((p) => p.id === pendingAuthId);\n if (pendingAuth) {\n pendingAuth.status = 'cancelled';\n }\n }\n\n async isAppAuthorized(vaultId: string, appId: string): Promise<boolean> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return false;\n\n return entry.authorizedAppIds.includes(appId);\n }\n\n async getPendingAuths(vaultId: string): Promise<PendingIncrementalAuth[]> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return [];\n\n const now = Date.now();\n\n // Update expired status and filter\n return entry.pendingAuths.filter((p) => {\n if (now > p.expiresAt && p.status === 'pending') {\n p.status = 'expired';\n }\n return p.status === 'pending';\n });\n }\n\n async cleanup(): Promise<void> {\n const now = Date.now();\n\n for (const [id, entry] of this.vaults) {\n // Clean up expired pending auths\n entry.pendingAuths = entry.pendingAuths.filter((p) => {\n if (now > p.expiresAt && p.status === 'pending') {\n p.status = 'expired';\n }\n // Keep for audit trail, or remove completely if desired\n return p.status === 'pending';\n });\n }\n }\n\n // ============================================\n // App Credential Methods\n // ============================================\n\n /** Create a credential key from appId and providerId */\n private credentialKey(appId: string, providerId: string): string {\n return `${appId}:${providerId}`;\n }\n\n async addAppCredential(vaultId: string, credential: AppCredential): Promise<void> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return;\n\n // Check if we should store based on consent\n const shouldStore = await this.shouldStoreCredential(vaultId, credential.appId);\n if (!shouldStore) {\n return;\n }\n\n const key = this.credentialKey(credential.appId, credential.providerId);\n entry.appCredentials[key] = credential;\n entry.lastAccessAt = Date.now();\n }\n\n async removeAppCredential(vaultId: string, appId: string, providerId: string): Promise<void> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return;\n\n const key = this.credentialKey(appId, providerId);\n delete entry.appCredentials[key];\n entry.lastAccessAt = Date.now();\n }\n\n async getAppCredentials(vaultId: string, appId: string): Promise<AppCredential[]> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return [];\n\n const prefix = `${appId}:`;\n return Object.entries(entry.appCredentials)\n .filter(([key]) => key.startsWith(prefix))\n .map(([, cred]) => cred);\n }\n\n async getCredential(vaultId: string, appId: string, providerId: string): Promise<AppCredential | null> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return null;\n\n const key = this.credentialKey(appId, providerId);\n return entry.appCredentials[key] ?? null;\n }\n\n async getAllCredentials(vaultId: string, filterByConsent = false): Promise<AppCredential[]> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return [];\n\n const allCredentials = Object.values(entry.appCredentials);\n\n if (!filterByConsent || !entry.consent?.enabled) {\n return allCredentials;\n }\n\n // Filter by consent - only return credentials for apps that have tools in consent selection\n const consentedToolIds = new Set(entry.consent.selectedToolIds);\n return allCredentials.filter((cred) => {\n // Check if any tool for this app is in consent\n // Tool IDs are typically formatted as `appId:toolName` or similar\n return Array.from(consentedToolIds).some((toolId) => toolId.startsWith(`${cred.appId}:`));\n });\n }\n\n async updateCredential(\n vaultId: string,\n appId: string,\n providerId: string,\n updates: Partial<Pick<AppCredential, 'lastUsedAt' | 'isValid' | 'invalidReason' | 'expiresAt' | 'metadata'>>,\n ): Promise<void> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return;\n\n const key = this.credentialKey(appId, providerId);\n const credential = entry.appCredentials[key];\n if (!credential) return;\n\n Object.assign(credential, updates);\n entry.lastAccessAt = Date.now();\n }\n\n async shouldStoreCredential(vaultId: string, appId: string, toolIds?: string[]): Promise<boolean> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return false;\n\n // If consent is not enabled, always allow\n if (!entry.consent?.enabled) {\n return true;\n }\n\n // If toolIds provided, check if any match consent selection\n if (toolIds && toolIds.length > 0) {\n return toolIds.some((toolId) => entry.consent!.selectedToolIds.includes(toolId));\n }\n\n // Check if any tool for this app is in consent selection\n const consentedToolIds = entry.consent.selectedToolIds;\n return consentedToolIds.some((toolId) => toolId.startsWith(`${appId}:`));\n }\n\n async invalidateCredential(vaultId: string, appId: string, providerId: string, reason: string): Promise<void> {\n await this.updateCredential(vaultId, appId, providerId, {\n isValid: false,\n invalidReason: reason,\n });\n }\n\n async refreshOAuthCredential(\n vaultId: string,\n appId: string,\n providerId: string,\n tokens: { accessToken: string; refreshToken?: string; expiresAt?: number },\n ): Promise<void> {\n const entry = this.vaults.get(vaultId);\n if (!entry) return;\n\n const key = this.credentialKey(appId, providerId);\n const credential = entry.appCredentials[key];\n if (!credential || credential.credential.type !== 'oauth') return;\n\n // Update OAuth tokens\n credential.credential.accessToken = tokens.accessToken;\n if (tokens.refreshToken !== undefined) {\n credential.credential.refreshToken = tokens.refreshToken;\n }\n if (tokens.expiresAt !== undefined) {\n credential.credential.expiresAt = tokens.expiresAt;\n credential.expiresAt = tokens.expiresAt;\n }\n\n // Mark as valid again\n credential.isValid = true;\n credential.invalidReason = undefined;\n entry.lastAccessAt = Date.now();\n }\n}\n\n// ============================================\n// Redis Implementation (placeholder)\n// ============================================\n\n/**\n * Redis Authorization Vault (placeholder)\n *\n * Production implementation using Redis for distributed storage.\n * TODO: Implement after in-memory vault is validated.\n */\nexport class RedisAuthorizationVault implements AuthorizationVault {\n constructor(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly redis: any,\n private readonly namespace = 'vault:',\n ) {}\n\n private key(id: string): string {\n return `${this.namespace}${id}`;\n }\n\n /** Create a credential key from appId and providerId */\n private credentialKey(appId: string, providerId: string): string {\n return `${appId}:${providerId}`;\n }\n\n async create(params: {\n userSub: string;\n userEmail?: string;\n userName?: string;\n clientId: string;\n consent?: VaultConsentRecord;\n federated?: VaultFederatedRecord;\n authorizedAppIds?: string[];\n skippedAppIds?: string[];\n }): Promise<AuthorizationVaultEntry> {\n const now = Date.now();\n const entry: AuthorizationVaultEntry = {\n id: randomUUID(),\n userSub: params.userSub,\n userEmail: params.userEmail,\n userName: params.userName,\n clientId: params.clientId,\n createdAt: now,\n lastAccessAt: now,\n appCredentials: {},\n consent: params.consent,\n federated: params.federated,\n pendingAuths: [],\n authorizedAppIds: params.authorizedAppIds ?? [],\n skippedAppIds: params.skippedAppIds ?? [],\n };\n\n await this.redis.set(this.key(entry.id), JSON.stringify(entry));\n return entry;\n }\n\n async get(id: string): Promise<AuthorizationVaultEntry | null> {\n const data = await this.redis.get(this.key(id));\n if (!data) return null;\n\n const entry = JSON.parse(data) as AuthorizationVaultEntry;\n // Note: lastAccessAt is updated on explicit operations, not on read\n // This prevents unnecessary writes on read operations\n return entry;\n }\n\n async update(id: string, updates: Partial<AuthorizationVaultEntry>): Promise<void> {\n const entry = await this.get(id);\n if (!entry) return;\n\n Object.assign(entry, updates, { lastAccessAt: Date.now() });\n await this.redis.set(this.key(id), JSON.stringify(entry));\n }\n\n async delete(id: string): Promise<void> {\n await this.redis.del(this.key(id));\n }\n\n async updateConsent(vaultId: string, consent: VaultConsentRecord): Promise<void> {\n const entry = await this.get(vaultId);\n if (!entry) return;\n\n entry.consent = consent;\n await this.redis.set(this.key(vaultId), JSON.stringify(entry));\n }\n\n async authorizeApp(vaultId: string, appId: string): Promise<void> {\n const entry = await this.get(vaultId);\n if (!entry) return;\n\n entry.skippedAppIds = entry.skippedAppIds.filter((id) => id !== appId);\n if (!entry.authorizedAppIds.includes(appId)) {\n entry.authorizedAppIds.push(appId);\n }\n await this.redis.set(this.key(vaultId), JSON.stringify(entry));\n }\n\n async createPendingAuth(\n vaultId: string,\n params: {\n appId: string;\n toolId?: string;\n authUrl: string;\n requiredScopes?: string[];\n elicitId?: string;\n ttlMs?: number;\n },\n ): Promise<PendingIncrementalAuth> {\n const entry = await this.get(vaultId);\n if (!entry) {\n throw new Error(`Vault not found: ${vaultId}`);\n }\n\n const now = Date.now();\n const pendingAuth: PendingIncrementalAuth = {\n id: randomUUID(),\n appId: params.appId,\n toolId: params.toolId,\n authUrl: params.authUrl,\n requiredScopes: params.requiredScopes,\n elicitId: params.elicitId,\n createdAt: now,\n expiresAt: now + (params.ttlMs ?? 10 * 60 * 1000),\n status: 'pending',\n };\n\n entry.pendingAuths.push(pendingAuth);\n await this.redis.set(this.key(vaultId), JSON.stringify(entry));\n\n return pendingAuth;\n }\n\n async getPendingAuth(vaultId: string, pendingAuthId: string): Promise<PendingIncrementalAuth | null> {\n const entry = await this.get(vaultId);\n if (!entry) return null;\n\n const pendingAuth = entry.pendingAuths.find((p) => p.id === pendingAuthId);\n if (!pendingAuth) return null;\n\n if (Date.now() > pendingAuth.expiresAt && pendingAuth.status === 'pending') {\n pendingAuth.status = 'expired';\n await this.redis.set(this.key(vaultId), JSON.stringify(entry));\n }\n\n return pendingAuth;\n }\n\n async completePendingAuth(vaultId: string, pendingAuthId: string): Promise<void> {\n const entry = await this.get(vaultId);\n if (!entry) return;\n\n const pendingAuth = entry.pendingAuths.find((p) => p.id === pendingAuthId);\n if (pendingAuth) {\n pendingAuth.status = 'completed';\n await this.authorizeApp(vaultId, pendingAuth.appId);\n }\n }\n\n async cancelPendingAuth(vaultId: string, pendingAuthId: string): Promise<void> {\n const entry = await this.get(vaultId);\n if (!entry) return;\n\n const pendingAuth = entry.pendingAuths.find((p) => p.id === pendingAuthId);\n if (pendingAuth) {\n pendingAuth.status = 'cancelled';\n await this.redis.set(this.key(vaultId), JSON.stringify(entry));\n }\n }\n\n async isAppAuthorized(vaultId: string, appId: string): Promise<boolean> {\n const entry = await this.get(vaultId);\n if (!entry) return false;\n\n return entry.authorizedAppIds.includes(appId);\n }\n\n async getPendingAuths(vaultId: string): Promise<PendingIncrementalAuth[]> {\n const entry = await this.get(vaultId);\n if (!entry) return [];\n\n const now = Date.now();\n let updated = false;\n\n const pending = entry.pendingAuths.filter((p) => {\n if (now > p.expiresAt && p.status === 'pending') {\n p.status = 'expired';\n updated = true;\n }\n return p.status === 'pending';\n });\n\n if (updated) {\n await this.redis.set(this.key(vaultId), JSON.stringify(entry));\n }\n\n return pending;\n }\n\n async cleanup(): Promise<void> {\n // Redis cleanup would use SCAN to find and clean entries\n // This is a placeholder\n }\n\n // ============================================\n // App Credential Methods\n // ============================================\n\n async addAppCredential(vaultId: string, credential: AppCredential): Promise<void> {\n const entry = await this.get(vaultId);\n if (!entry) return;\n\n // Check if we should store based on consent\n const shouldStore = await this.shouldStoreCredential(vaultId, credential.appId);\n if (!shouldStore) {\n return;\n }\n\n const key = this.credentialKey(credential.appId, credential.providerId);\n entry.appCredentials[key] = credential;\n await this.redis.set(this.key(vaultId), JSON.stringify(entry));\n }\n\n async removeAppCredential(vaultId: string, appId: string, providerId: string): Promise<void> {\n const entry = await this.get(vaultId);\n if (!entry) return;\n\n const key = this.credentialKey(appId, providerId);\n delete entry.appCredentials[key];\n await this.redis.set(this.key(vaultId), JSON.stringify(entry));\n }\n\n async getAppCredentials(vaultId: string, appId: string): Promise<AppCredential[]> {\n const entry = await this.get(vaultId);\n if (!entry) return [];\n\n const prefix = `${appId}:`;\n return Object.entries(entry.appCredentials)\n .filter(([key]) => key.startsWith(prefix))\n .map(([, cred]) => cred);\n }\n\n async getCredential(vaultId: string, appId: string, providerId: string): Promise<AppCredential | null> {\n const entry = await this.get(vaultId);\n if (!entry) return null;\n\n const key = this.credentialKey(appId, providerId);\n return entry.appCredentials[key] ?? null;\n }\n\n async getAllCredentials(vaultId: string, filterByConsent = false): Promise<AppCredential[]> {\n const entry = await this.get(vaultId);\n if (!entry) return [];\n\n const allCredentials = Object.values(entry.appCredentials);\n\n if (!filterByConsent || !entry.consent?.enabled) {\n return allCredentials;\n }\n\n // Filter by consent - only return credentials for apps that have tools in consent selection\n const consentedToolIds = new Set(entry.consent.selectedToolIds);\n return allCredentials.filter((cred) => {\n return Array.from(consentedToolIds).some((toolId) => toolId.startsWith(`${cred.appId}:`));\n });\n }\n\n async updateCredential(\n vaultId: string,\n appId: string,\n providerId: string,\n updates: Partial<Pick<AppCredential, 'lastUsedAt' | 'isValid' | 'invalidReason' | 'expiresAt' | 'metadata'>>,\n ): Promise<void> {\n const entry = await this.get(vaultId);\n if (!entry) return;\n\n const key = this.credentialKey(appId, providerId);\n const credential = entry.appCredentials[key];\n if (!credential) return;\n\n Object.assign(credential, updates);\n await this.redis.set(this.key(vaultId), JSON.stringify(entry));\n }\n\n async shouldStoreCredential(vaultId: string, appId: string, toolIds?: string[]): Promise<boolean> {\n const entry = await this.get(vaultId);\n if (!entry) return false;\n\n // If consent is not enabled, always allow\n if (!entry.consent?.enabled) {\n return true;\n }\n\n // If toolIds provided, check if any match consent selection\n if (toolIds && toolIds.length > 0) {\n return toolIds.some((toolId) => entry.consent!.selectedToolIds.includes(toolId));\n }\n\n // Check if any tool for this app is in consent selection\n const consentedToolIds = entry.consent.selectedToolIds;\n return consentedToolIds.some((toolId) => toolId.startsWith(`${appId}:`));\n }\n\n async invalidateCredential(vaultId: string, appId: string, providerId: string, reason: string): Promise<void> {\n await this.updateCredential(vaultId, appId, providerId, {\n isValid: false,\n invalidReason: reason,\n });\n }\n\n async refreshOAuthCredential(\n vaultId: string,\n appId: string,\n providerId: string,\n tokens: { accessToken: string; refreshToken?: string; expiresAt?: number },\n ): Promise<void> {\n const entry = await this.get(vaultId);\n if (!entry) return;\n\n const key = this.credentialKey(appId, providerId);\n const credential = entry.appCredentials[key];\n if (!credential || credential.credential.type !== 'oauth') return;\n\n // Update OAuth tokens\n credential.credential.accessToken = tokens.accessToken;\n if (tokens.refreshToken !== undefined) {\n credential.credential.refreshToken = tokens.refreshToken;\n }\n if (tokens.expiresAt !== undefined) {\n credential.credential.expiresAt = tokens.expiresAt;\n credential.expiresAt = tokens.expiresAt;\n }\n\n // Mark as valid again\n credential.isValid = true;\n credential.invalidReason = undefined;\n await this.redis.set(this.key(vaultId), JSON.stringify(entry));\n }\n}\n"]}
@@ -1,323 +0,0 @@
1
- "use strict";
2
- // auth/session/authorization.store.ts
3
- /**
4
- * Authorization Store for OAuth flows
5
- *
6
- * Stores authorization codes, PKCE challenges, and pending authorizations.
7
- * Supports both in-memory (dev/test) and Redis (production) backends.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.RedisAuthorizationStore = exports.InMemoryAuthorizationStore = exports.authorizationCodeRecordSchema = exports.pkceChallengeSchema = void 0;
11
- exports.verifyPkce = verifyPkce;
12
- exports.generatePkceChallenge = generatePkceChallenge;
13
- const node_crypto_1 = require("node:crypto");
14
- const zod_1 = require("zod");
15
- /**
16
- * Zod schemas for validation
17
- */
18
- exports.pkceChallengeSchema = zod_1.z.object({
19
- challenge: zod_1.z.string().min(43).max(128),
20
- method: zod_1.z.literal('S256'),
21
- });
22
- exports.authorizationCodeRecordSchema = zod_1.z.object({
23
- code: zod_1.z.string().min(1),
24
- clientId: zod_1.z.string().min(1),
25
- redirectUri: zod_1.z.string().url(),
26
- scopes: zod_1.z.array(zod_1.z.string()),
27
- pkce: exports.pkceChallengeSchema,
28
- userSub: zod_1.z.string().min(1),
29
- userEmail: zod_1.z.string().email().optional(),
30
- userName: zod_1.z.string().optional(),
31
- state: zod_1.z.string().optional(),
32
- createdAt: zod_1.z.number(),
33
- expiresAt: zod_1.z.number(),
34
- used: zod_1.z.boolean(),
35
- resource: zod_1.z.string().url().optional(),
36
- });
37
- /**
38
- * PKCE utilities
39
- */
40
- function verifyPkce(codeVerifier, challenge) {
41
- if (challenge.method !== 'S256') {
42
- return false;
43
- }
44
- // S256: BASE64URL(SHA256(code_verifier)) === code_challenge
45
- const hash = (0, node_crypto_1.createHash)('sha256').update(codeVerifier).digest('base64url');
46
- return hash === challenge.challenge;
47
- }
48
- function generatePkceChallenge(codeVerifier) {
49
- const challenge = (0, node_crypto_1.createHash)('sha256').update(codeVerifier).digest('base64url');
50
- return { challenge, method: 'S256' };
51
- }
52
- /**
53
- * In-Memory Authorization Store
54
- *
55
- * Development/testing implementation. Data is lost on restart.
56
- * For production, use RedisAuthorizationStore.
57
- */
58
- class InMemoryAuthorizationStore {
59
- codes = new Map();
60
- pending = new Map();
61
- refreshTokens = new Map();
62
- /** Default TTL for authorization codes (60 seconds) */
63
- codeTtlMs = 60 * 1000;
64
- /** Default TTL for pending authorizations (10 minutes) */
65
- pendingTtlMs = 10 * 60 * 1000;
66
- /** Default TTL for refresh tokens (30 days) */
67
- refreshTtlMs = 30 * 24 * 60 * 60 * 1000;
68
- generateCode() {
69
- // Generate a cryptographically secure authorization code
70
- return (0, node_crypto_1.randomUUID)().replace(/-/g, '') + (0, node_crypto_1.randomUUID)().replace(/-/g, '');
71
- }
72
- generateRefreshToken() {
73
- return (0, node_crypto_1.randomUUID)() + '-' + (0, node_crypto_1.randomUUID)();
74
- }
75
- async storeAuthorizationCode(record) {
76
- this.codes.set(record.code, record);
77
- }
78
- async getAuthorizationCode(code) {
79
- const record = this.codes.get(code);
80
- if (!record)
81
- return null;
82
- // Check expiration
83
- if (Date.now() > record.expiresAt) {
84
- this.codes.delete(code);
85
- return null;
86
- }
87
- return record;
88
- }
89
- async markCodeUsed(code) {
90
- const record = this.codes.get(code);
91
- if (record) {
92
- record.used = true;
93
- }
94
- }
95
- async deleteAuthorizationCode(code) {
96
- this.codes.delete(code);
97
- }
98
- async storePendingAuthorization(record) {
99
- this.pending.set(record.id, record);
100
- }
101
- async getPendingAuthorization(id) {
102
- const record = this.pending.get(id);
103
- if (!record)
104
- return null;
105
- // Check expiration
106
- if (Date.now() > record.expiresAt) {
107
- this.pending.delete(id);
108
- return null;
109
- }
110
- return record;
111
- }
112
- async deletePendingAuthorization(id) {
113
- this.pending.delete(id);
114
- }
115
- async storeRefreshToken(record) {
116
- this.refreshTokens.set(record.token, record);
117
- }
118
- async getRefreshToken(token) {
119
- const record = this.refreshTokens.get(token);
120
- if (!record)
121
- return null;
122
- // Check expiration and revocation
123
- if (Date.now() > record.expiresAt || record.revoked) {
124
- return null;
125
- }
126
- return record;
127
- }
128
- async revokeRefreshToken(token) {
129
- const record = this.refreshTokens.get(token);
130
- if (record) {
131
- record.revoked = true;
132
- }
133
- }
134
- async rotateRefreshToken(oldToken, newRecord) {
135
- // Revoke old token
136
- await this.revokeRefreshToken(oldToken);
137
- // Store new token with reference to old
138
- newRecord.previousToken = oldToken;
139
- await this.storeRefreshToken(newRecord);
140
- }
141
- async cleanup() {
142
- const now = Date.now();
143
- // Clean expired codes
144
- for (const [code, record] of this.codes) {
145
- if (now > record.expiresAt) {
146
- this.codes.delete(code);
147
- }
148
- }
149
- // Clean expired pending authorizations
150
- for (const [id, record] of this.pending) {
151
- if (now > record.expiresAt) {
152
- this.pending.delete(id);
153
- }
154
- }
155
- // Clean expired/revoked refresh tokens
156
- for (const [token, record] of this.refreshTokens) {
157
- if (now > record.expiresAt || record.revoked) {
158
- this.refreshTokens.delete(token);
159
- }
160
- }
161
- }
162
- /**
163
- * Create an authorization code record with defaults
164
- */
165
- createCodeRecord(params) {
166
- const now = Date.now();
167
- return {
168
- code: this.generateCode(),
169
- clientId: params.clientId,
170
- redirectUri: params.redirectUri,
171
- scopes: params.scopes,
172
- pkce: params.pkce,
173
- userSub: params.userSub,
174
- userEmail: params.userEmail,
175
- userName: params.userName,
176
- state: params.state,
177
- resource: params.resource,
178
- createdAt: now,
179
- expiresAt: now + this.codeTtlMs,
180
- used: false,
181
- // Consent and Federated Login Data
182
- selectedToolIds: params.selectedToolIds,
183
- selectedProviderIds: params.selectedProviderIds,
184
- skippedProviderIds: params.skippedProviderIds,
185
- consentEnabled: params.consentEnabled,
186
- federatedLoginUsed: params.federatedLoginUsed,
187
- };
188
- }
189
- /**
190
- * Create a pending authorization record with defaults
191
- */
192
- createPendingRecord(params) {
193
- const now = Date.now();
194
- return {
195
- id: (0, node_crypto_1.randomUUID)(),
196
- clientId: params.clientId,
197
- redirectUri: params.redirectUri,
198
- scopes: params.scopes,
199
- pkce: params.pkce,
200
- state: params.state,
201
- resource: params.resource,
202
- createdAt: now,
203
- expiresAt: now + this.pendingTtlMs,
204
- // Progressive/Incremental Authorization Fields
205
- isIncremental: params.isIncremental,
206
- targetAppId: params.targetAppId,
207
- targetToolId: params.targetToolId,
208
- existingSessionId: params.existingSessionId,
209
- existingAuthorizationId: params.existingAuthorizationId,
210
- // Federated Login State
211
- federatedLogin: params.federatedLogin,
212
- // Consent State
213
- consent: params.consent,
214
- };
215
- }
216
- /**
217
- * Create a refresh token record with defaults
218
- */
219
- createRefreshTokenRecord(params) {
220
- const now = Date.now();
221
- return {
222
- token: this.generateRefreshToken(),
223
- clientId: params.clientId,
224
- userSub: params.userSub,
225
- scopes: params.scopes,
226
- resource: params.resource,
227
- createdAt: now,
228
- expiresAt: now + this.refreshTtlMs,
229
- revoked: false,
230
- };
231
- }
232
- }
233
- exports.InMemoryAuthorizationStore = InMemoryAuthorizationStore;
234
- /**
235
- * Redis Authorization Store (placeholder)
236
- *
237
- * Production implementation using Redis for distributed storage.
238
- * TODO: Implement after in-memory store is validated.
239
- */
240
- class RedisAuthorizationStore {
241
- redis;
242
- namespace;
243
- constructor(
244
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
245
- redis, namespace = 'oauth:') {
246
- this.redis = redis;
247
- this.namespace = namespace;
248
- }
249
- key(type, id) {
250
- return `${this.namespace}${type}:${id}`;
251
- }
252
- generateCode() {
253
- return (0, node_crypto_1.randomUUID)().replace(/-/g, '') + (0, node_crypto_1.randomUUID)().replace(/-/g, '');
254
- }
255
- generateRefreshToken() {
256
- return (0, node_crypto_1.randomUUID)() + '-' + (0, node_crypto_1.randomUUID)();
257
- }
258
- async storeAuthorizationCode(record) {
259
- const ttl = Math.max(Math.ceil((record.expiresAt - Date.now()) / 1000), 1);
260
- await this.redis.set(this.key('code', record.code), JSON.stringify(record), 'EX', Math.max(ttl, 1));
261
- }
262
- async getAuthorizationCode(code) {
263
- const data = await this.redis.get(this.key('code', code));
264
- if (!data)
265
- return null;
266
- return JSON.parse(data);
267
- }
268
- async markCodeUsed(code) {
269
- const record = await this.getAuthorizationCode(code);
270
- if (record) {
271
- record.used = true;
272
- const ttl = Math.ceil((record.expiresAt - Date.now()) / 1000);
273
- await this.redis.set(this.key('code', code), JSON.stringify(record), 'EX', Math.max(ttl, 1));
274
- }
275
- }
276
- async deleteAuthorizationCode(code) {
277
- await this.redis.del(this.key('code', code));
278
- }
279
- async storePendingAuthorization(record) {
280
- const ttl = Math.max(Math.ceil((record.expiresAt - Date.now()) / 1000), 1);
281
- await this.redis.set(this.key('pending', record.id), JSON.stringify(record), 'EX', ttl);
282
- }
283
- async getPendingAuthorization(id) {
284
- const data = await this.redis.get(this.key('pending', id));
285
- if (!data)
286
- return null;
287
- return JSON.parse(data);
288
- }
289
- async deletePendingAuthorization(id) {
290
- await this.redis.del(this.key('pending', id));
291
- }
292
- async storeRefreshToken(record) {
293
- const ttl = Math.ceil((record.expiresAt - Date.now()) / 1000);
294
- await this.redis.set(this.key('refresh', record.token), JSON.stringify(record), 'EX', ttl);
295
- }
296
- async getRefreshToken(token) {
297
- const data = await this.redis.get(this.key('refresh', token));
298
- if (!data)
299
- return null;
300
- const record = JSON.parse(data);
301
- if (record.revoked)
302
- return null;
303
- return record;
304
- }
305
- async revokeRefreshToken(token) {
306
- const record = await this.getRefreshToken(token);
307
- if (record) {
308
- record.revoked = true;
309
- const ttl = Math.ceil((record.expiresAt - Date.now()) / 1000);
310
- await this.redis.set(this.key('refresh', token), JSON.stringify(record), 'EX', Math.max(ttl, 1));
311
- }
312
- }
313
- async rotateRefreshToken(oldToken, newRecord) {
314
- await this.revokeRefreshToken(oldToken);
315
- newRecord.previousToken = oldToken;
316
- await this.storeRefreshToken(newRecord);
317
- }
318
- async cleanup() {
319
- // Redis handles cleanup via TTL, nothing to do here
320
- }
321
- }
322
- exports.RedisAuthorizationStore = RedisAuthorizationStore;
323
- //# sourceMappingURL=authorization.store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authorization.store.js","sourceRoot":"","sources":["../../../../src/auth/session/authorization.store.ts"],"names":[],"mappings":"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","sourcesContent":["// auth/session/authorization.store.ts\n/**\n * Authorization Store for OAuth flows\n *\n * Stores authorization codes, PKCE challenges, and pending authorizations.\n * Supports both in-memory (dev/test) and Redis (production) backends.\n */\n\nimport { randomUUID, createHash } from 'node:crypto';\nimport { z } from 'zod';\n\n/**\n * PKCE challenge data\n */\nexport interface PkceChallenge {\n /** S256 hashed code_challenge */\n challenge: string;\n /** Always 'S256' per OAuth 2.1 */\n method: 'S256';\n}\n\n/**\n * Authorization code record stored during the OAuth flow\n */\nexport interface AuthorizationCodeRecord {\n /** The authorization code (opaque string) */\n code: string;\n /** Client ID that requested authorization */\n clientId: string;\n /** Redirect URI used in the authorization request */\n redirectUri: string;\n /** Requested scopes */\n scopes: string[];\n /** PKCE challenge for verification */\n pkce: PkceChallenge;\n /** User identifier (sub claim) */\n userSub: string;\n /** User email if available */\n userEmail?: string;\n /** User name if available */\n userName?: string;\n /** Original state parameter */\n state?: string;\n /** Creation timestamp (epoch ms) */\n createdAt: number;\n /** Expiration timestamp (epoch ms) - codes are short-lived (60s default) */\n expiresAt: number;\n /** Whether this code has been used (single-use) */\n used: boolean;\n /** Resource/audience the token will be issued for */\n resource?: string;\n\n // Consent and Federated Login Data\n /** Selected tool IDs from consent flow */\n selectedToolIds?: string[];\n /** Selected provider IDs from federated login */\n selectedProviderIds?: string[];\n /** Skipped provider IDs from federated login (for progressive auth) */\n skippedProviderIds?: string[];\n /** Whether consent was enabled for this authorization */\n consentEnabled?: boolean;\n /** Whether federated login was used */\n federatedLoginUsed?: boolean;\n}\n\n/**\n * Consent state for tool selection\n */\nexport interface ConsentStateRecord {\n /** Whether consent flow is enabled */\n enabled: boolean;\n /** Available tool IDs for consent */\n availableToolIds: string[];\n /** Selected tool IDs (after user selection) */\n selectedToolIds?: string[];\n /** Whether consent has been completed */\n consentCompleted: boolean;\n /** Timestamp when consent was completed */\n consentCompletedAt?: number;\n}\n\n/**\n * Federated login state for multi-provider auth\n */\nexport interface FederatedLoginStateRecord {\n /** Available provider IDs */\n providerIds: string[];\n /** Selected provider IDs */\n selectedProviderIds?: string[];\n /** Skipped provider IDs */\n skippedProviderIds?: string[];\n /** Provider-specific user data (after auth) */\n providerUserData?: Record<string, { email?: string; name?: string; sub?: string }>;\n}\n\n/**\n * Pending authorization request (before user authenticates)\n */\nexport interface PendingAuthorizationRecord {\n /** Unique ID for this pending authorization */\n id: string;\n /** Client ID requesting authorization */\n clientId: string;\n /** Redirect URI for callback */\n redirectUri: string;\n /** Requested scopes */\n scopes: string[];\n /** PKCE challenge */\n pkce: PkceChallenge;\n /** Original state parameter from client */\n state?: string;\n /** Resource/audience */\n resource?: string;\n /** Creation timestamp */\n createdAt: number;\n /** Expiration timestamp (pending requests expire after 10 minutes) */\n expiresAt: number;\n\n // Progressive/Incremental Authorization Fields\n /** Whether this is an incremental authorization request */\n isIncremental?: boolean;\n /** Target app ID for incremental authorization */\n targetAppId?: string;\n /** Target tool ID that triggered the incremental auth */\n targetToolId?: string;\n /** Existing session ID for incremental auth (to expand the token vault) */\n existingSessionId?: string;\n /** Existing authorization ID to expand */\n existingAuthorizationId?: string;\n\n // Federated Login State\n /** Federated login state for multi-provider auth */\n federatedLogin?: FederatedLoginStateRecord;\n\n // Consent State\n /** Consent state for tool selection */\n consent?: ConsentStateRecord;\n}\n\n/**\n * Refresh token record\n */\nexport interface RefreshTokenRecord {\n /** The refresh token (opaque string) */\n token: string;\n /** Client ID */\n clientId: string;\n /** User identifier */\n userSub: string;\n /** Granted scopes */\n scopes: string[];\n /** Resource/audience */\n resource?: string;\n /** Creation timestamp */\n createdAt: number;\n /** Expiration timestamp */\n expiresAt: number;\n /** Whether this token has been revoked */\n revoked: boolean;\n /** Previous token if rotated */\n previousToken?: string;\n}\n\n/**\n * Zod schemas for validation\n */\nexport const pkceChallengeSchema = z.object({\n challenge: z.string().min(43).max(128),\n method: z.literal('S256'),\n});\n\nexport const authorizationCodeRecordSchema = z.object({\n code: z.string().min(1),\n clientId: z.string().min(1),\n redirectUri: z.string().url(),\n scopes: z.array(z.string()),\n pkce: pkceChallengeSchema,\n userSub: z.string().min(1),\n userEmail: z.string().email().optional(),\n userName: z.string().optional(),\n state: z.string().optional(),\n createdAt: z.number(),\n expiresAt: z.number(),\n used: z.boolean(),\n resource: z.string().url().optional(),\n});\n\n/**\n * Authorization Store Interface\n */\nexport interface AuthorizationStore {\n // Authorization code operations\n storeAuthorizationCode(record: AuthorizationCodeRecord): Promise<void>;\n getAuthorizationCode(code: string): Promise<AuthorizationCodeRecord | null>;\n markCodeUsed(code: string): Promise<void>;\n deleteAuthorizationCode(code: string): Promise<void>;\n\n // Pending authorization operations\n storePendingAuthorization(record: PendingAuthorizationRecord): Promise<void>;\n getPendingAuthorization(id: string): Promise<PendingAuthorizationRecord | null>;\n deletePendingAuthorization(id: string): Promise<void>;\n\n // Refresh token operations\n storeRefreshToken(record: RefreshTokenRecord): Promise<void>;\n getRefreshToken(token: string): Promise<RefreshTokenRecord | null>;\n revokeRefreshToken(token: string): Promise<void>;\n rotateRefreshToken(oldToken: string, newRecord: RefreshTokenRecord): Promise<void>;\n\n // Utility\n generateCode(): string;\n generateRefreshToken(): string;\n cleanup(): Promise<void>;\n}\n\n/**\n * PKCE utilities\n */\nexport function verifyPkce(codeVerifier: string, challenge: PkceChallenge): boolean {\n if (challenge.method !== 'S256') {\n return false;\n }\n\n // S256: BASE64URL(SHA256(code_verifier)) === code_challenge\n const hash = createHash('sha256').update(codeVerifier).digest('base64url');\n return hash === challenge.challenge;\n}\n\nexport function generatePkceChallenge(codeVerifier: string): PkceChallenge {\n const challenge = createHash('sha256').update(codeVerifier).digest('base64url');\n return { challenge, method: 'S256' };\n}\n\n/**\n * In-Memory Authorization Store\n *\n * Development/testing implementation. Data is lost on restart.\n * For production, use RedisAuthorizationStore.\n */\nexport class InMemoryAuthorizationStore implements AuthorizationStore {\n private codes = new Map<string, AuthorizationCodeRecord>();\n private pending = new Map<string, PendingAuthorizationRecord>();\n private refreshTokens = new Map<string, RefreshTokenRecord>();\n\n /** Default TTL for authorization codes (60 seconds) */\n private readonly codeTtlMs = 60 * 1000;\n /** Default TTL for pending authorizations (10 minutes) */\n private readonly pendingTtlMs = 10 * 60 * 1000;\n /** Default TTL for refresh tokens (30 days) */\n private readonly refreshTtlMs = 30 * 24 * 60 * 60 * 1000;\n\n generateCode(): string {\n // Generate a cryptographically secure authorization code\n return randomUUID().replace(/-/g, '') + randomUUID().replace(/-/g, '');\n }\n\n generateRefreshToken(): string {\n return randomUUID() + '-' + randomUUID();\n }\n\n async storeAuthorizationCode(record: AuthorizationCodeRecord): Promise<void> {\n this.codes.set(record.code, record);\n }\n\n async getAuthorizationCode(code: string): Promise<AuthorizationCodeRecord | null> {\n const record = this.codes.get(code);\n if (!record) return null;\n\n // Check expiration\n if (Date.now() > record.expiresAt) {\n this.codes.delete(code);\n return null;\n }\n\n return record;\n }\n\n async markCodeUsed(code: string): Promise<void> {\n const record = this.codes.get(code);\n if (record) {\n record.used = true;\n }\n }\n\n async deleteAuthorizationCode(code: string): Promise<void> {\n this.codes.delete(code);\n }\n\n async storePendingAuthorization(record: PendingAuthorizationRecord): Promise<void> {\n this.pending.set(record.id, record);\n }\n\n async getPendingAuthorization(id: string): Promise<PendingAuthorizationRecord | null> {\n const record = this.pending.get(id);\n if (!record) return null;\n\n // Check expiration\n if (Date.now() > record.expiresAt) {\n this.pending.delete(id);\n return null;\n }\n\n return record;\n }\n\n async deletePendingAuthorization(id: string): Promise<void> {\n this.pending.delete(id);\n }\n\n async storeRefreshToken(record: RefreshTokenRecord): Promise<void> {\n this.refreshTokens.set(record.token, record);\n }\n\n async getRefreshToken(token: string): Promise<RefreshTokenRecord | null> {\n const record = this.refreshTokens.get(token);\n if (!record) return null;\n\n // Check expiration and revocation\n if (Date.now() > record.expiresAt || record.revoked) {\n return null;\n }\n\n return record;\n }\n\n async revokeRefreshToken(token: string): Promise<void> {\n const record = this.refreshTokens.get(token);\n if (record) {\n record.revoked = true;\n }\n }\n\n async rotateRefreshToken(oldToken: string, newRecord: RefreshTokenRecord): Promise<void> {\n // Revoke old token\n await this.revokeRefreshToken(oldToken);\n\n // Store new token with reference to old\n newRecord.previousToken = oldToken;\n await this.storeRefreshToken(newRecord);\n }\n\n async cleanup(): Promise<void> {\n const now = Date.now();\n\n // Clean expired codes\n for (const [code, record] of this.codes) {\n if (now > record.expiresAt) {\n this.codes.delete(code);\n }\n }\n\n // Clean expired pending authorizations\n for (const [id, record] of this.pending) {\n if (now > record.expiresAt) {\n this.pending.delete(id);\n }\n }\n\n // Clean expired/revoked refresh tokens\n for (const [token, record] of this.refreshTokens) {\n if (now > record.expiresAt || record.revoked) {\n this.refreshTokens.delete(token);\n }\n }\n }\n\n /**\n * Create an authorization code record with defaults\n */\n createCodeRecord(params: {\n clientId: string;\n redirectUri: string;\n scopes: string[];\n pkce: PkceChallenge;\n userSub: string;\n userEmail?: string;\n userName?: string;\n state?: string;\n resource?: string;\n // Consent and Federated Login Data\n selectedToolIds?: string[];\n selectedProviderIds?: string[];\n skippedProviderIds?: string[];\n consentEnabled?: boolean;\n federatedLoginUsed?: boolean;\n }): AuthorizationCodeRecord {\n const now = Date.now();\n return {\n code: this.generateCode(),\n clientId: params.clientId,\n redirectUri: params.redirectUri,\n scopes: params.scopes,\n pkce: params.pkce,\n userSub: params.userSub,\n userEmail: params.userEmail,\n userName: params.userName,\n state: params.state,\n resource: params.resource,\n createdAt: now,\n expiresAt: now + this.codeTtlMs,\n used: false,\n // Consent and Federated Login Data\n selectedToolIds: params.selectedToolIds,\n selectedProviderIds: params.selectedProviderIds,\n skippedProviderIds: params.skippedProviderIds,\n consentEnabled: params.consentEnabled,\n federatedLoginUsed: params.federatedLoginUsed,\n };\n }\n\n /**\n * Create a pending authorization record with defaults\n */\n createPendingRecord(params: {\n clientId: string;\n redirectUri: string;\n scopes: string[];\n pkce: PkceChallenge;\n state?: string;\n resource?: string;\n // Progressive/Incremental Authorization Fields\n isIncremental?: boolean;\n targetAppId?: string;\n targetToolId?: string;\n existingSessionId?: string;\n existingAuthorizationId?: string;\n // Federated Login State\n federatedLogin?: FederatedLoginStateRecord;\n // Consent State\n consent?: ConsentStateRecord;\n }): PendingAuthorizationRecord {\n const now = Date.now();\n return {\n id: randomUUID(),\n clientId: params.clientId,\n redirectUri: params.redirectUri,\n scopes: params.scopes,\n pkce: params.pkce,\n state: params.state,\n resource: params.resource,\n createdAt: now,\n expiresAt: now + this.pendingTtlMs,\n // Progressive/Incremental Authorization Fields\n isIncremental: params.isIncremental,\n targetAppId: params.targetAppId,\n targetToolId: params.targetToolId,\n existingSessionId: params.existingSessionId,\n existingAuthorizationId: params.existingAuthorizationId,\n // Federated Login State\n federatedLogin: params.federatedLogin,\n // Consent State\n consent: params.consent,\n };\n }\n\n /**\n * Create a refresh token record with defaults\n */\n createRefreshTokenRecord(params: {\n clientId: string;\n userSub: string;\n scopes: string[];\n resource?: string;\n }): RefreshTokenRecord {\n const now = Date.now();\n return {\n token: this.generateRefreshToken(),\n clientId: params.clientId,\n userSub: params.userSub,\n scopes: params.scopes,\n resource: params.resource,\n createdAt: now,\n expiresAt: now + this.refreshTtlMs,\n revoked: false,\n };\n }\n}\n\n/**\n * Redis Authorization Store (placeholder)\n *\n * Production implementation using Redis for distributed storage.\n * TODO: Implement after in-memory store is validated.\n */\nexport class RedisAuthorizationStore implements AuthorizationStore {\n constructor(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly redis: any,\n private readonly namespace = 'oauth:',\n ) {}\n\n private key(type: 'code' | 'pending' | 'refresh', id: string): string {\n return `${this.namespace}${type}:${id}`;\n }\n\n generateCode(): string {\n return randomUUID().replace(/-/g, '') + randomUUID().replace(/-/g, '');\n }\n\n generateRefreshToken(): string {\n return randomUUID() + '-' + randomUUID();\n }\n\n async storeAuthorizationCode(record: AuthorizationCodeRecord): Promise<void> {\n const ttl = Math.max(Math.ceil((record.expiresAt - Date.now()) / 1000), 1);\n await this.redis.set(this.key('code', record.code), JSON.stringify(record), 'EX', Math.max(ttl, 1));\n }\n\n async getAuthorizationCode(code: string): Promise<AuthorizationCodeRecord | null> {\n const data = await this.redis.get(this.key('code', code));\n if (!data) return null;\n return JSON.parse(data) as AuthorizationCodeRecord;\n }\n\n async markCodeUsed(code: string): Promise<void> {\n const record = await this.getAuthorizationCode(code);\n if (record) {\n record.used = true;\n const ttl = Math.ceil((record.expiresAt - Date.now()) / 1000);\n await this.redis.set(this.key('code', code), JSON.stringify(record), 'EX', Math.max(ttl, 1));\n }\n }\n\n async deleteAuthorizationCode(code: string): Promise<void> {\n await this.redis.del(this.key('code', code));\n }\n\n async storePendingAuthorization(record: PendingAuthorizationRecord): Promise<void> {\n const ttl = Math.max(Math.ceil((record.expiresAt - Date.now()) / 1000), 1);\n await this.redis.set(this.key('pending', record.id), JSON.stringify(record), 'EX', ttl);\n }\n\n async getPendingAuthorization(id: string): Promise<PendingAuthorizationRecord | null> {\n const data = await this.redis.get(this.key('pending', id));\n if (!data) return null;\n return JSON.parse(data) as PendingAuthorizationRecord;\n }\n\n async deletePendingAuthorization(id: string): Promise<void> {\n await this.redis.del(this.key('pending', id));\n }\n\n async storeRefreshToken(record: RefreshTokenRecord): Promise<void> {\n const ttl = Math.ceil((record.expiresAt - Date.now()) / 1000);\n await this.redis.set(this.key('refresh', record.token), JSON.stringify(record), 'EX', ttl);\n }\n\n async getRefreshToken(token: string): Promise<RefreshTokenRecord | null> {\n const data = await this.redis.get(this.key('refresh', token));\n if (!data) return null;\n const record = JSON.parse(data) as RefreshTokenRecord;\n if (record.revoked) return null;\n return record;\n }\n\n async revokeRefreshToken(token: string): Promise<void> {\n const record = await this.getRefreshToken(token);\n if (record) {\n record.revoked = true;\n const ttl = Math.ceil((record.expiresAt - Date.now()) / 1000);\n await this.redis.set(this.key('refresh', token), JSON.stringify(record), 'EX', Math.max(ttl, 1));\n }\n }\n\n async rotateRefreshToken(oldToken: string, newRecord: RefreshTokenRecord): Promise<void> {\n await this.revokeRefreshToken(oldToken);\n newRecord.previousToken = oldToken;\n await this.storeRefreshToken(newRecord);\n }\n\n async cleanup(): Promise<void> {\n // Redis handles cleanup via TTL, nothing to do here\n }\n}\n"]}