@frontmcp/sdk 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (896) hide show
  1. package/README.md +81 -99
  2. package/package.json +24 -2
  3. package/src/adapter/adapter.instance.d.ts +11 -0
  4. package/src/adapter/adapter.instance.js +65 -0
  5. package/src/adapter/adapter.instance.js.map +1 -0
  6. package/src/adapter/adapter.regsitry.d.ts +13 -0
  7. package/src/adapter/adapter.regsitry.js +54 -0
  8. package/src/adapter/adapter.regsitry.js.map +1 -0
  9. package/src/adapter/adapter.utils.d.ts +10 -0
  10. package/src/adapter/adapter.utils.js +83 -0
  11. package/src/adapter/adapter.utils.js.map +1 -0
  12. package/src/app/app.registry.d.ts +12 -0
  13. package/src/app/app.registry.js +64 -0
  14. package/src/app/app.registry.js.map +1 -0
  15. package/src/app/app.utils.d.ts +15 -0
  16. package/src/app/app.utils.js +58 -0
  17. package/src/app/app.utils.js.map +1 -0
  18. package/src/app/instances/app.local.instance.d.ts +25 -0
  19. package/src/app/instances/app.local.instance.js +70 -0
  20. package/src/app/instances/app.local.instance.js.map +1 -0
  21. package/src/app/instances/app.remote.instance.d.ts +13 -0
  22. package/src/app/instances/app.remote.instance.js +36 -0
  23. package/src/app/instances/app.remote.instance.js.map +1 -0
  24. package/src/app/instances/index.d.ts +2 -0
  25. package/src/app/instances/index.js +6 -0
  26. package/src/app/instances/index.js.map +1 -0
  27. package/src/auth/auth.registry.d.ts +13 -0
  28. package/src/auth/auth.registry.js +81 -0
  29. package/src/auth/auth.registry.js.map +1 -0
  30. package/src/auth/auth.utils.d.ts +10 -0
  31. package/src/auth/auth.utils.js +85 -0
  32. package/src/auth/auth.utils.js.map +1 -0
  33. package/src/auth/flows/oauth.authorize.flow.d.ts +231 -0
  34. package/src/auth/flows/oauth.authorize.flow.js +154 -0
  35. package/src/auth/flows/oauth.authorize.flow.js.map +1 -0
  36. package/src/auth/flows/oauth.register.flow.d.ts +202 -0
  37. package/src/auth/flows/oauth.register.flow.js +201 -0
  38. package/src/auth/flows/oauth.register.flow.js.map +1 -0
  39. package/src/auth/flows/oauth.token.flow.d.ts +242 -0
  40. package/src/auth/flows/oauth.token.flow.js +181 -0
  41. package/src/auth/flows/oauth.token.flow.js.map +1 -0
  42. package/src/auth/flows/session.verify.flow.d.ts +404 -0
  43. package/src/auth/flows/session.verify.flow.js +205 -0
  44. package/src/auth/flows/session.verify.flow.js.map +1 -0
  45. package/src/auth/flows/well-known.jwks.flow.d.ts +261 -0
  46. package/src/auth/flows/well-known.jwks.flow.js +82 -0
  47. package/src/auth/flows/well-known.jwks.flow.js.map +1 -0
  48. package/src/auth/flows/well-known.oauth-authorization-server.flow.d.ts +282 -0
  49. package/src/auth/flows/well-known.oauth-authorization-server.flow.js +123 -0
  50. package/src/auth/flows/well-known.oauth-authorization-server.flow.js.map +1 -0
  51. package/src/auth/flows/well-known.prm.flow.d.ts +159 -0
  52. package/src/auth/flows/well-known.prm.flow.js +107 -0
  53. package/src/auth/flows/well-known.prm.flow.js.map +1 -0
  54. package/src/auth/instances/instance.local-primary-auth.d.ts +19 -0
  55. package/src/auth/instances/instance.local-primary-auth.js +76 -0
  56. package/src/auth/instances/instance.local-primary-auth.js.map +1 -0
  57. package/src/auth/instances/instance.remote-primary-auth.d.ts +14 -0
  58. package/src/auth/instances/instance.remote-primary-auth.js +47 -0
  59. package/src/auth/instances/instance.remote-primary-auth.js.map +1 -0
  60. package/src/auth/jwks/index.d.ts +2 -0
  61. package/src/auth/jwks/index.js +6 -0
  62. package/src/auth/jwks/index.js.map +1 -0
  63. package/src/auth/jwks/jwks.service.d.ts +41 -0
  64. package/src/auth/jwks/jwks.service.js +235 -0
  65. package/src/auth/jwks/jwks.service.js.map +1 -0
  66. package/src/auth/jwks/jwks.types.d.ts +25 -0
  67. package/src/auth/jwks/jwks.types.js +3 -0
  68. package/src/auth/jwks/jwks.types.js.map +1 -0
  69. package/src/auth/jwks/jwks.utils.d.ts +4 -0
  70. package/src/auth/jwks/jwks.utils.js +32 -0
  71. package/src/auth/jwks/jwks.utils.js.map +1 -0
  72. package/src/auth/oauth/flows/oauth.authorize.flow.d.ts +31 -0
  73. package/src/auth/oauth/flows/oauth.authorize.flow.js +33 -0
  74. package/src/auth/oauth/flows/oauth.authorize.flow.js.map +1 -0
  75. package/src/auth/oauth/flows/oauth.device-authorization.flow.d.ts +46 -0
  76. package/src/auth/oauth/flows/oauth.device-authorization.flow.js +48 -0
  77. package/src/auth/oauth/flows/oauth.device-authorization.flow.js.map +1 -0
  78. package/src/auth/oauth/flows/oauth.introspect.flow.d.ts +26 -0
  79. package/src/auth/oauth/flows/oauth.introspect.flow.js +28 -0
  80. package/src/auth/oauth/flows/oauth.introspect.flow.js.map +1 -0
  81. package/src/auth/oauth/flows/oauth.par.flow.d.ts +27 -0
  82. package/src/auth/oauth/flows/oauth.par.flow.js +29 -0
  83. package/src/auth/oauth/flows/oauth.par.flow.js.map +1 -0
  84. package/src/auth/oauth/flows/oauth.revoke.flow.d.ts +25 -0
  85. package/src/auth/oauth/flows/oauth.revoke.flow.js +27 -0
  86. package/src/auth/oauth/flows/oauth.revoke.flow.js.map +1 -0
  87. package/src/auth/oauth/flows/oauth.token.flow.d.ts +57 -0
  88. package/src/auth/oauth/flows/oauth.token.flow.js +59 -0
  89. package/src/auth/oauth/flows/oauth.token.flow.js.map +1 -0
  90. package/src/auth/oauth/flows/oauth.userinfo.flow.d.ts +22 -0
  91. package/src/auth/oauth/flows/oauth.userinfo.flow.js +24 -0
  92. package/src/auth/oauth/flows/oauth.userinfo.flow.js.map +1 -0
  93. package/src/auth/oauth/flows/oidc.logout.flow.d.ts +18 -0
  94. package/src/auth/oauth/flows/oidc.logout.flow.js +20 -0
  95. package/src/auth/oauth/flows/oidc.logout.flow.js.map +1 -0
  96. package/src/auth/path.utils.d.ts +20 -0
  97. package/src/auth/path.utils.js +71 -0
  98. package/src/auth/path.utils.js.map +1 -0
  99. package/src/auth/session/index.d.ts +4 -0
  100. package/src/auth/session/index.js +10 -0
  101. package/src/auth/session/index.js.map +1 -0
  102. package/src/auth/session/record/session.base.d.ts +103 -0
  103. package/src/auth/session/record/session.base.js +123 -0
  104. package/src/auth/session/record/session.base.js.map +1 -0
  105. package/src/auth/session/record/session.stateful.d.ts +20 -0
  106. package/src/auth/session/record/session.stateful.js +55 -0
  107. package/src/auth/session/record/session.stateful.js.map +1 -0
  108. package/src/auth/session/record/session.stateless.d.ts +17 -0
  109. package/src/auth/session/record/session.stateless.js +30 -0
  110. package/src/auth/session/record/session.stateless.js.map +1 -0
  111. package/src/auth/session/record/session.transparent.d.ts +17 -0
  112. package/src/auth/session/record/session.transparent.js +22 -0
  113. package/src/auth/session/record/session.transparent.js.map +1 -0
  114. package/src/auth/session/session.crypto.d.ts +7 -0
  115. package/src/auth/session/session.crypto.js +47 -0
  116. package/src/auth/session/session.crypto.js.map +1 -0
  117. package/src/auth/session/session.schema.d.ts +5 -0
  118. package/src/auth/session/session.schema.js +13 -0
  119. package/src/auth/session/session.schema.js.map +1 -0
  120. package/src/auth/session/session.service.d.ts +17 -0
  121. package/src/auth/session/session.service.js +111 -0
  122. package/src/auth/session/session.service.js.map +1 -0
  123. package/src/auth/session/session.transport.d.ts +4 -0
  124. package/src/auth/session/session.transport.js +20 -0
  125. package/src/auth/session/session.transport.js.map +1 -0
  126. package/src/auth/session/session.types.d.ts +65 -0
  127. package/src/auth/session/session.types.js +4 -0
  128. package/src/auth/session/session.types.js.map +1 -0
  129. package/src/auth/session/token.refresh.d.ts +60 -0
  130. package/src/auth/session/token.refresh.js +63 -0
  131. package/src/auth/session/token.refresh.js.map +1 -0
  132. package/src/auth/session/token.store.d.ts +35 -0
  133. package/src/auth/session/token.store.js +53 -0
  134. package/src/auth/session/token.store.js.map +1 -0
  135. package/src/auth/session/token.vault.d.ts +26 -0
  136. package/src/auth/session/token.vault.js +54 -0
  137. package/src/auth/session/token.vault.js.map +1 -0
  138. package/src/auth/session/utils/auth-token.utils.d.ts +11 -0
  139. package/src/auth/session/utils/auth-token.utils.js +57 -0
  140. package/src/auth/session/utils/auth-token.utils.js.map +1 -0
  141. package/src/auth/session/utils/session-id.utils.d.ts +17 -0
  142. package/src/auth/session/utils/session-id.utils.js +129 -0
  143. package/src/auth/session/utils/session-id.utils.js.map +1 -0
  144. package/src/auth/session/utils/tiny-ttl-cache.d.ts +7 -0
  145. package/src/auth/session/utils/tiny-ttl-cache.js +26 -0
  146. package/src/auth/session/utils/tiny-ttl-cache.js.map +1 -0
  147. package/src/common/common.schema.d.ts +29 -0
  148. package/src/common/common.schema.js +35 -0
  149. package/src/common/common.schema.js.map +1 -0
  150. package/src/common/constants.d.ts +2 -0
  151. package/src/common/constants.js +8 -0
  152. package/src/common/constants.js.map +1 -0
  153. package/src/common/decorators/adapter.decorator.js.map +1 -0
  154. package/src/common/decorators/app.decorator.js.map +1 -0
  155. package/src/common/decorators/auth-provider.decorator.js.map +1 -0
  156. package/src/common/decorators/flow.decorator.js.map +1 -0
  157. package/src/common/decorators/front-mcp.decorator.js +40 -0
  158. package/src/common/decorators/front-mcp.decorator.js.map +1 -0
  159. package/src/common/decorators/hook.decorator.js.map +1 -0
  160. package/src/common/decorators/index.js.map +1 -0
  161. package/src/common/decorators/logger.decorator.js.map +1 -0
  162. package/src/common/decorators/plugin.decorator.js.map +1 -0
  163. package/src/common/decorators/prompt.decorator.js.map +1 -0
  164. package/src/common/decorators/provider.decorator.js.map +1 -0
  165. package/src/common/decorators/resource.decorator.js.map +1 -0
  166. package/src/common/decorators/tool.decorator.d.ts +42 -0
  167. package/src/common/decorators/tool.decorator.js +46 -0
  168. package/src/common/decorators/tool.decorator.js.map +1 -0
  169. package/src/common/decorators-old/async-with.decorator.d.ts +10 -0
  170. package/src/common/decorators-old/async-with.decorator.js +24 -0
  171. package/src/common/decorators-old/async-with.decorator.js.map +1 -0
  172. package/src/common/decorators-old/auth-hook.decorator.js.map +1 -0
  173. package/src/common/decorators-old/session-hook.decorator.js.map +1 -0
  174. package/src/common/dynamic/dynamic.adapter.js.map +1 -0
  175. package/src/common/dynamic/dynamic.plugin.js.map +1 -0
  176. package/src/common/dynamic/dynamic.utils.d.ts +3 -0
  177. package/src/common/dynamic/dynamic.utils.js.map +1 -0
  178. package/src/common/dynamic/index.js.map +1 -0
  179. package/src/common/entries/adapter.entry.js.map +1 -0
  180. package/src/common/entries/app.entry.d.ts +13 -0
  181. package/src/common/entries/app.entry.js.map +1 -0
  182. package/src/common/entries/auth-provider.entry.js.map +1 -0
  183. package/src/common/entries/base.entry.js.map +1 -0
  184. package/src/common/entries/flow.entry.js.map +1 -0
  185. package/src/common/entries/hook.entry.js.map +1 -0
  186. package/src/common/entries/index.js.map +1 -0
  187. package/src/common/entries/logger.entry.js.map +1 -0
  188. package/src/common/entries/plugin.entry.js.map +1 -0
  189. package/src/common/entries/prompt.entry.js.map +1 -0
  190. package/src/common/entries/provider.entry.js.map +1 -0
  191. package/src/common/entries/resource.entry.js.map +1 -0
  192. package/src/common/entries/scope.entry.js.map +1 -0
  193. package/src/common/entries/tool.entry.js.map +1 -0
  194. package/src/common/index.d.ts +17 -0
  195. package/src/common/index.js +21 -0
  196. package/src/common/index.js.map +1 -0
  197. package/src/common/interfaces/adapter.interface.js.map +1 -0
  198. package/src/common/interfaces/app.interface.js.map +1 -0
  199. package/src/common/interfaces/auth-hook.interface.js.map +1 -0
  200. package/src/common/interfaces/auth-provider.interface.js.map +1 -0
  201. package/src/common/interfaces/base.interface.js.map +1 -0
  202. package/src/common/interfaces/flow.interface.d.ts +41 -0
  203. package/src/common/interfaces/flow.interface.js.map +1 -0
  204. package/src/common/interfaces/front-mcp.interface.js.map +1 -0
  205. package/src/common/interfaces/hook.interface.js.map +1 -0
  206. package/src/common/interfaces/index.js.map +1 -0
  207. package/src/common/interfaces/internal/flow.utils.d.ts +23 -0
  208. package/src/common/interfaces/internal/flow.utils.js.map +1 -0
  209. package/src/common/interfaces/internal/index.js.map +1 -0
  210. package/src/common/interfaces/internal/primary-auth-provider.interface.d.ts +24 -0
  211. package/src/common/interfaces/internal/primary-auth-provider.interface.js.map +1 -0
  212. package/src/common/interfaces/internal/registry.interface.d.ts +95 -0
  213. package/src/common/interfaces/internal/registry.interface.js.map +1 -0
  214. package/src/common/interfaces/logger.interface.js.map +1 -0
  215. package/src/common/interfaces/plugin.interface.js.map +1 -0
  216. package/src/common/interfaces/prompt.interface.js.map +1 -0
  217. package/src/common/interfaces/provider.interface.js.map +1 -0
  218. package/src/common/interfaces/resource.interface.js.map +1 -0
  219. package/src/common/interfaces/scope.interface.js.map +1 -0
  220. package/src/common/interfaces/server.interface.js.map +1 -0
  221. package/src/common/interfaces/session-hook.interface.js.map +1 -0
  222. package/src/common/interfaces/tool-hook.interface.js.map +1 -0
  223. package/src/common/interfaces/tool.interface.js.map +1 -0
  224. package/src/common/metadata/adapter.metadata.js.map +1 -0
  225. package/src/common/metadata/app.metadata.d.ts +872 -0
  226. package/src/common/metadata/app.metadata.js.map +1 -0
  227. package/src/common/metadata/auth-provider.metadata.js.map +1 -0
  228. package/src/common/metadata/flow.metadata.d.ts +77 -0
  229. package/src/common/metadata/flow.metadata.js.map +1 -0
  230. package/src/common/metadata/front-mcp.metadata.d.ts +1144 -0
  231. package/src/common/metadata/front-mcp.metadata.js.map +1 -0
  232. package/src/common/metadata/hook.metadata.js.map +1 -0
  233. package/src/common/metadata/index.js.map +1 -0
  234. package/src/common/metadata/logger.metadata.js.map +1 -0
  235. package/src/common/metadata/plugin.metadata.js.map +1 -0
  236. package/src/common/metadata/prompt.metadata.js.map +1 -0
  237. package/src/common/metadata/provider.metadata.js.map +1 -0
  238. package/src/common/metadata/resource.metadata.js.map +1 -0
  239. package/src/common/metadata/tool.metadata.d.ts +178 -0
  240. package/src/common/metadata/tool.metadata.js.map +1 -0
  241. package/src/common/providers/session.provider.js.map +1 -0
  242. package/src/common/records/adapter.record.js.map +1 -0
  243. package/src/common/records/app.record.js.map +1 -0
  244. package/src/common/records/auth-provider.record.js.map +1 -0
  245. package/src/common/records/flow.record.js.map +1 -0
  246. package/src/common/records/hook.record.js.map +1 -0
  247. package/src/common/records/index.js.map +1 -0
  248. package/src/common/records/logger.record.d.ts +11 -0
  249. package/src/common/records/logger.record.js.map +1 -0
  250. package/src/common/records/plugin.record.js.map +1 -0
  251. package/src/common/records/prompt.record.js.map +1 -0
  252. package/src/common/records/provider.record.js.map +1 -0
  253. package/src/common/records/resource.record.js.map +1 -0
  254. package/src/common/records/scope.record.js.map +1 -0
  255. package/src/common/records/tool.record.js.map +1 -0
  256. package/src/common/schemas/annotated-class.schema.js.map +1 -0
  257. package/src/common/schemas/http-input.schema.js.map +1 -0
  258. package/src/common/schemas/http-output.schema.d.ts +2011 -0
  259. package/src/common/schemas/http-output.schema.js.map +1 -0
  260. package/src/common/schemas/index.js.map +1 -0
  261. package/src/common/tokens/adapter.tokens.js.map +1 -0
  262. package/src/common/tokens/app.tokens.js.map +1 -0
  263. package/src/common/tokens/auth-provider.tokens.js.map +1 -0
  264. package/src/common/tokens/base.tokens.js.map +1 -0
  265. package/src/common/tokens/flow-hook.tokens.js.map +1 -0
  266. package/src/common/tokens/flow.tokens.js.map +1 -0
  267. package/src/common/tokens/front-mcp.tokens.js.map +1 -0
  268. package/src/common/tokens/index.js.map +1 -0
  269. package/src/common/tokens/logger.tokens.js.map +1 -0
  270. package/src/common/tokens/plugin.tokens.js.map +1 -0
  271. package/src/common/tokens/prompt.tokens.js.map +1 -0
  272. package/src/common/tokens/provider.tokens.js.map +1 -0
  273. package/src/common/tokens/resource.tokens.js.map +1 -0
  274. package/src/common/tokens/server.tokens.js.map +1 -0
  275. package/src/common/tokens/tool.tokens.js.map +1 -0
  276. package/src/common/types/auth/index.js.map +1 -0
  277. package/src/common/types/auth/jwt.types.js.map +1 -0
  278. package/src/common/types/auth/session.types.d.ts +263 -0
  279. package/src/common/types/auth/session.types.js.map +1 -0
  280. package/src/common/types/common.types.js.map +1 -0
  281. package/src/common/types/index.js.map +1 -0
  282. package/src/common/types/options/auth.options.d.ts +513 -0
  283. package/src/common/types/options/auth.options.js.map +1 -0
  284. package/src/common/types/options/http.options.js.map +1 -0
  285. package/src/common/types/options/index.js.map +1 -0
  286. package/src/common/types/options/logging.options.d.ts +39 -0
  287. package/src/common/types/options/logging.options.js.map +1 -0
  288. package/src/common/types/options/server-info.options.d.ts +48 -0
  289. package/src/common/types/options/server-info.options.js.map +1 -0
  290. package/src/common/types/options/session.options.d.ts +67 -0
  291. package/src/common/types/options/session.options.js.map +1 -0
  292. package/src/common/utils/decide-request-intent.utils.d.ts +79 -0
  293. package/src/common/utils/decide-request-intent.utils.js.map +1 -0
  294. package/src/common/utils/index.js.map +1 -0
  295. package/src/common/utils/path.utils.d.ts +20 -0
  296. package/src/common/utils/path.utils.js.map +1 -0
  297. package/src/exceptions/mcp-exceptions/session-missing.exception.d.ts +3 -0
  298. package/src/exceptions/mcp-exceptions/session-missing.exception.js +11 -0
  299. package/src/exceptions/mcp-exceptions/session-missing.exception.js.map +1 -0
  300. package/src/exceptions/mcp-exceptions/unsupported-client-version.exception.d.ts +5 -0
  301. package/src/exceptions/mcp-exceptions/unsupported-client-version.exception.js +15 -0
  302. package/src/exceptions/mcp-exceptions/unsupported-client-version.exception.js.map +1 -0
  303. package/src/flows/flow.instance.d.ts +16 -0
  304. package/src/flows/flow.instance.js +332 -0
  305. package/src/flows/flow.instance.js.map +1 -0
  306. package/src/flows/flow.registry.d.ts +14 -0
  307. package/src/flows/flow.registry.js +79 -0
  308. package/src/flows/flow.registry.js.map +1 -0
  309. package/src/flows/flow.stages.d.ts +12 -0
  310. package/src/flows/flow.stages.js +110 -0
  311. package/src/flows/flow.stages.js.map +1 -0
  312. package/src/flows/flow.utils.d.ts +8 -0
  313. package/src/flows/flow.utils.js +36 -0
  314. package/src/flows/flow.utils.js.map +1 -0
  315. package/src/front-mcp/front-mcp.d.ts +12 -0
  316. package/src/front-mcp/front-mcp.js +44 -0
  317. package/src/front-mcp/front-mcp.js.map +1 -0
  318. package/src/front-mcp/front-mcp.providers.d.ts +198 -0
  319. package/src/front-mcp/front-mcp.providers.js +30 -0
  320. package/src/front-mcp/front-mcp.providers.js.map +1 -0
  321. package/src/front-mcp/front-mcp.tokens.d.ts +2 -0
  322. package/src/front-mcp/front-mcp.tokens.js +5 -0
  323. package/src/front-mcp/front-mcp.tokens.js.map +1 -0
  324. package/src/front-mcp/index.d.ts +1 -0
  325. package/src/front-mcp/index.js +5 -0
  326. package/src/front-mcp/index.js.map +1 -0
  327. package/src/hooks/hook.instance.d.ts +7 -0
  328. package/src/hooks/hook.instance.js +23 -0
  329. package/src/hooks/hook.instance.js.map +1 -0
  330. package/src/hooks/hook.registry.d.ts +34 -0
  331. package/src/hooks/hook.registry.js +138 -0
  332. package/src/hooks/hook.registry.js.map +1 -0
  333. package/src/hooks/hooks.utils.d.ts +3 -0
  334. package/src/hooks/hooks.utils.js +27 -0
  335. package/src/hooks/hooks.utils.js.map +1 -0
  336. package/src/index.d.ts +21 -18
  337. package/src/index.js +9 -18
  338. package/src/index.js.map +1 -1
  339. package/src/logger/instances/instance.console-logger.d.ts +10 -0
  340. package/src/logger/instances/instance.console-logger.js +75 -0
  341. package/src/logger/instances/instance.console-logger.js.map +1 -0
  342. package/src/logger/instances/instance.logger.d.ts +24 -0
  343. package/src/logger/instances/instance.logger.js +77 -0
  344. package/src/logger/instances/instance.logger.js.map +1 -0
  345. package/src/logger/logger.registry.d.ts +13 -0
  346. package/src/logger/logger.registry.js +91 -0
  347. package/src/logger/logger.registry.js.map +1 -0
  348. package/src/logger/logger.tokens.d.ts +1 -0
  349. package/src/logger/logger.tokens.js +3 -0
  350. package/src/logger/logger.tokens.js.map +1 -0
  351. package/src/logger/logger.types.d.ts +10 -0
  352. package/src/logger/logger.types.js +8 -0
  353. package/src/logger/logger.types.js.map +1 -0
  354. package/src/logger/logger.utils.d.ts +15 -0
  355. package/src/logger/logger.utils.js +42 -0
  356. package/src/logger/logger.utils.js.map +1 -0
  357. package/src/plugin/plugin.registry.d.ts +24 -0
  358. package/src/plugin/plugin.registry.js +137 -0
  359. package/src/plugin/plugin.registry.js.map +1 -0
  360. package/src/plugin/plugin.utils.d.ts +10 -0
  361. package/src/plugin/plugin.utils.js +88 -0
  362. package/src/plugin/plugin.utils.js.map +1 -0
  363. package/src/prompt/prompt.registry.d.ts +16 -0
  364. package/src/prompt/prompt.registry.js +34 -0
  365. package/src/prompt/prompt.registry.js.map +1 -0
  366. package/src/provider/provider.registry.d.ts +75 -0
  367. package/src/provider/provider.registry.js +679 -0
  368. package/src/provider/provider.registry.js.map +1 -0
  369. package/src/provider/provider.types.d.ts +9 -0
  370. package/src/provider/provider.types.js +3 -0
  371. package/src/provider/provider.types.js.map +1 -0
  372. package/src/provider/provider.utils.d.ts +13 -0
  373. package/src/provider/provider.utils.js +103 -0
  374. package/src/provider/provider.utils.js.map +1 -0
  375. package/src/regsitry/index.d.ts +1 -0
  376. package/src/regsitry/index.js +5 -0
  377. package/src/regsitry/index.js.map +1 -0
  378. package/src/regsitry/registry.base.d.ts +25 -0
  379. package/src/regsitry/registry.base.js +32 -0
  380. package/src/regsitry/registry.base.js.map +1 -0
  381. package/src/resource/resource.registry.d.ts +15 -0
  382. package/src/resource/resource.registry.js +31 -0
  383. package/src/resource/resource.registry.js.map +1 -0
  384. package/src/scope/flows/http.request.flow.d.ts +384 -0
  385. package/src/scope/flows/http.request.flow.js +210 -0
  386. package/src/scope/flows/http.request.flow.js.map +1 -0
  387. package/src/scope/index.d.ts +1 -0
  388. package/src/scope/index.js +6 -0
  389. package/src/scope/index.js.map +1 -0
  390. package/src/scope/scope.instance.d.ts +35 -0
  391. package/src/scope/scope.instance.js +120 -0
  392. package/src/scope/scope.instance.js.map +1 -0
  393. package/src/scope/scope.registry.d.ts +10 -0
  394. package/src/scope/scope.registry.js +93 -0
  395. package/src/scope/scope.registry.js.map +1 -0
  396. package/src/scope/scope.utils.d.ts +13 -0
  397. package/src/scope/scope.utils.js +59 -0
  398. package/src/scope/scope.utils.js.map +1 -0
  399. package/src/server/adapters/base.host.adapter.d.ts +7 -0
  400. package/src/server/adapters/base.host.adapter.js +8 -0
  401. package/src/server/adapters/base.host.adapter.js.map +1 -0
  402. package/src/server/adapters/express.host.adapter.d.ts +12 -0
  403. package/src/server/adapters/express.host.adapter.js +50 -0
  404. package/src/server/adapters/express.host.adapter.js.map +1 -0
  405. package/src/server/server.instance.d.ts +12 -0
  406. package/src/server/server.instance.js +47 -0
  407. package/src/server/server.instance.js.map +1 -0
  408. package/src/server/server.types.d.ts +24 -0
  409. package/src/server/server.types.js +3 -0
  410. package/src/server/server.types.js.map +1 -0
  411. package/src/server/server.validation.d.ts +2 -0
  412. package/src/server/server.validation.js +192 -0
  413. package/src/server/server.validation.js.map +1 -0
  414. package/src/store/adapters/store.base.adapter.d.ts +21 -0
  415. package/src/store/adapters/store.base.adapter.js +16 -0
  416. package/src/store/adapters/store.base.adapter.js.map +1 -0
  417. package/src/store/adapters/store.memory.adapter.d.ts +26 -0
  418. package/src/store/adapters/store.memory.adapter.js +87 -0
  419. package/src/store/adapters/store.memory.adapter.js.map +1 -0
  420. package/src/store/adapters/store.redis.adapter.d.ts +33 -0
  421. package/src/store/adapters/store.redis.adapter.js +104 -0
  422. package/src/store/adapters/store.redis.adapter.js.map +1 -0
  423. package/src/store/index.d.ts +8 -0
  424. package/src/store/index.js +12 -0
  425. package/src/store/index.js.map +1 -0
  426. package/src/store/store.helpers.d.ts +9 -0
  427. package/src/store/store.helpers.js +67 -0
  428. package/src/store/store.helpers.js.map +1 -0
  429. package/src/store/store.registry.d.ts +13 -0
  430. package/src/store/store.registry.js +37 -0
  431. package/src/store/store.registry.js.map +1 -0
  432. package/src/store/store.tokens.d.ts +3 -0
  433. package/src/store/store.tokens.js +7 -0
  434. package/src/store/store.tokens.js.map +1 -0
  435. package/src/store/store.types.d.ts +64 -0
  436. package/src/store/store.types.js +11 -0
  437. package/src/store/store.types.js.map +1 -0
  438. package/src/store/store.utils.d.ts +8 -0
  439. package/src/store/store.utils.js +18 -0
  440. package/src/store/store.utils.js.map +1 -0
  441. package/src/tool/flows/call-tool.flow.d.ts +875 -0
  442. package/src/tool/flows/call-tool.flow.js +249 -0
  443. package/src/tool/flows/call-tool.flow.js.map +1 -0
  444. package/src/tool/flows/tools-list.flow.d.ts +771 -0
  445. package/src/tool/flows/tools-list.flow.js +149 -0
  446. package/src/tool/flows/tools-list.flow.js.map +1 -0
  447. package/src/tool/tool.events.d.ts +17 -0
  448. package/src/tool/tool.events.js +16 -0
  449. package/src/tool/tool.events.js.map +1 -0
  450. package/src/tool/tool.instance.d.ts +15 -0
  451. package/src/tool/tool.instance.js +68 -0
  452. package/src/tool/tool.instance.js.map +1 -0
  453. package/src/tool/tool.registry.d.ts +72 -0
  454. package/src/tool/tool.registry.js +339 -0
  455. package/src/tool/tool.registry.js.map +1 -0
  456. package/src/tool/tool.types.d.ts +25 -0
  457. package/src/tool/tool.types.js +10 -0
  458. package/src/tool/tool.types.js.map +1 -0
  459. package/src/tool/tool.utils.d.ts +20 -0
  460. package/src/tool/tool.utils.js +157 -0
  461. package/src/tool/tool.utils.js.map +1 -0
  462. package/src/transport/adapters/transport.local.adapter.d.ts +41 -0
  463. package/src/transport/adapters/transport.local.adapter.js +127 -0
  464. package/src/transport/adapters/transport.local.adapter.js.map +1 -0
  465. package/src/transport/adapters/transport.sse.adapter.d.ts +14 -0
  466. package/src/transport/adapters/transport.sse.adapter.js +63 -0
  467. package/src/transport/adapters/transport.sse.adapter.js.map +1 -0
  468. package/src/transport/adapters/transport.streamable-http.adapter.d.ts +13 -0
  469. package/src/transport/adapters/transport.streamable-http.adapter.js +65 -0
  470. package/src/transport/adapters/transport.streamable-http.adapter.js.map +1 -0
  471. package/src/transport/flows/handle.sse.flow.d.ts +92 -0
  472. package/src/transport/flows/handle.sse.flow.js +129 -0
  473. package/src/transport/flows/handle.sse.flow.js.map +1 -0
  474. package/src/transport/flows/handle.streamable-http.flow.d.ts +93 -0
  475. package/src/transport/flows/handle.streamable-http.flow.js +125 -0
  476. package/src/transport/flows/handle.streamable-http.flow.js.map +1 -0
  477. package/src/transport/legacy/legacy.sse.tranporter.d.ts +75 -0
  478. package/src/transport/legacy/legacy.sse.tranporter.js +170 -0
  479. package/src/transport/legacy/legacy.sse.tranporter.js.map +1 -0
  480. package/src/transport/mcp-handlers/Initialized-notification.hanlder.d.ts +3 -0
  481. package/src/transport/mcp-handlers/Initialized-notification.hanlder.js +14 -0
  482. package/src/transport/mcp-handlers/Initialized-notification.hanlder.js.map +1 -0
  483. package/src/transport/mcp-handlers/call-tool-request.handler.d.ts +3 -0
  484. package/src/transport/mcp-handlers/call-tool-request.handler.js +15 -0
  485. package/src/transport/mcp-handlers/call-tool-request.handler.js.map +1 -0
  486. package/src/transport/mcp-handlers/index.d.ts +521 -0
  487. package/src/transport/mcp-handlers/index.js +20 -0
  488. package/src/transport/mcp-handlers/index.js.map +1 -0
  489. package/src/transport/mcp-handlers/initialize-request.handler.d.ts +3 -0
  490. package/src/transport/mcp-handlers/initialize-request.handler.js +33 -0
  491. package/src/transport/mcp-handlers/initialize-request.handler.js.map +1 -0
  492. package/src/transport/mcp-handlers/list-tools-request.handler.d.ts +285 -0
  493. package/src/transport/mcp-handlers/list-tools-request.handler.js +11 -0
  494. package/src/transport/mcp-handlers/list-tools-request.handler.js.map +1 -0
  495. package/src/transport/mcp-handlers/mcp-handlers.types.d.ts +37 -0
  496. package/src/transport/mcp-handlers/mcp-handlers.types.js +3 -0
  497. package/src/transport/mcp-handlers/mcp-handlers.types.js.map +1 -0
  498. package/src/transport/transport.error.d.ts +4 -0
  499. package/src/transport/transport.error.js +25 -0
  500. package/src/transport/transport.error.js.map +1 -0
  501. package/src/transport/transport.event-store.d.ts +10 -0
  502. package/src/transport/transport.event-store.js +36 -0
  503. package/src/transport/transport.event-store.js.map +1 -0
  504. package/src/transport/transport.local.d.ts +17 -0
  505. package/src/transport/transport.local.js +65 -0
  506. package/src/transport/transport.local.js.map +1 -0
  507. package/src/transport/transport.registry.d.ts +23 -0
  508. package/src/transport/transport.registry.js +138 -0
  509. package/src/transport/transport.registry.js.map +1 -0
  510. package/src/transport/transport.remote.d.ts +15 -0
  511. package/src/transport/transport.remote.js +31 -0
  512. package/src/transport/transport.remote.js.map +1 -0
  513. package/src/transport/transport.types.d.ts +54 -0
  514. package/src/transport/transport.types.js +3 -0
  515. package/src/transport/transport.types.js.map +1 -0
  516. package/src/types/drinen-hooks.types.d.ts +20 -0
  517. package/src/types/drinen-hooks.types.js +3 -0
  518. package/src/types/drinen-hooks.types.js.map +1 -0
  519. package/src/types/invoke.type.d.ts +15 -0
  520. package/src/types/invoke.type.js +34 -0
  521. package/src/types/invoke.type.js.map +1 -0
  522. package/src/types/token.types.d.ts +1 -0
  523. package/src/types/token.types.js +3 -0
  524. package/src/types/token.types.js.map +1 -0
  525. package/src/utils/metadata.utils.d.ts +5 -0
  526. package/src/utils/metadata.utils.js +26 -0
  527. package/src/utils/metadata.utils.js.map +1 -0
  528. package/src/utils/server.utils.d.ts +19 -0
  529. package/src/utils/server.utils.js +59 -0
  530. package/src/utils/server.utils.js.map +1 -0
  531. package/src/utils/string.utils.d.ts +1 -0
  532. package/src/utils/string.utils.js +10 -0
  533. package/src/utils/string.utils.js.map +1 -0
  534. package/src/utils/token.utils.d.ts +11 -0
  535. package/src/utils/token.utils.js +65 -0
  536. package/src/utils/token.utils.js.map +1 -0
  537. package/src/utils/types.utils.d.ts +7 -0
  538. package/src/utils/types.utils.js +3 -0
  539. package/src/utils/types.utils.js.map +1 -0
  540. package/src/constants.d.ts +0 -30
  541. package/src/constants.js +0 -36
  542. package/src/constants.js.map +0 -1
  543. package/src/decorators/adapter.decorator.js.map +0 -1
  544. package/src/decorators/app.decorator.js.map +0 -1
  545. package/src/decorators/auth-provider.decorator.js.map +0 -1
  546. package/src/decorators/flow.decorator.js.map +0 -1
  547. package/src/decorators/front-mcp.decorator.js +0 -40
  548. package/src/decorators/front-mcp.decorator.js.map +0 -1
  549. package/src/decorators/hook.decorator.js.map +0 -1
  550. package/src/decorators/index.js.map +0 -1
  551. package/src/decorators/logger.decorator.js.map +0 -1
  552. package/src/decorators/plugin.decorator.js.map +0 -1
  553. package/src/decorators/prompt.decorator.js.map +0 -1
  554. package/src/decorators/provider.decorator.js.map +0 -1
  555. package/src/decorators/resource.decorator.js.map +0 -1
  556. package/src/decorators/tool.decorator.d.ts +0 -42
  557. package/src/decorators/tool.decorator.js +0 -45
  558. package/src/decorators/tool.decorator.js.map +0 -1
  559. package/src/decorators-old/async-with.decorator.d.ts +0 -9
  560. package/src/decorators-old/async-with.decorator.js +0 -23
  561. package/src/decorators-old/async-with.decorator.js.map +0 -1
  562. package/src/decorators-old/auth-hook.decorator.js.map +0 -1
  563. package/src/decorators-old/session-hook.decorator.js.map +0 -1
  564. package/src/decorators-old/tool-hook.decorator.d.ts +0 -14
  565. package/src/decorators-old/tool-hook.decorator.js +0 -27
  566. package/src/decorators-old/tool-hook.decorator.js.map +0 -1
  567. package/src/dynamic/dynamic.adapter.js.map +0 -1
  568. package/src/dynamic/dynamic.plugin.js.map +0 -1
  569. package/src/dynamic/dynamic.utils.d.ts +0 -3
  570. package/src/dynamic/dynamic.utils.js.map +0 -1
  571. package/src/dynamic/index.js.map +0 -1
  572. package/src/entries/adapter.entry.js.map +0 -1
  573. package/src/entries/app.entry.d.ts +0 -13
  574. package/src/entries/app.entry.js.map +0 -1
  575. package/src/entries/auth-provider.entry.js.map +0 -1
  576. package/src/entries/base.entry.js.map +0 -1
  577. package/src/entries/flow.entry.js.map +0 -1
  578. package/src/entries/hook.entry.js.map +0 -1
  579. package/src/entries/index.js.map +0 -1
  580. package/src/entries/logger.entry.js.map +0 -1
  581. package/src/entries/plugin.entry.js.map +0 -1
  582. package/src/entries/prompt.entry.js.map +0 -1
  583. package/src/entries/provider.entry.js.map +0 -1
  584. package/src/entries/resource.entry.js.map +0 -1
  585. package/src/entries/scope.entry.js.map +0 -1
  586. package/src/entries/tool.entry.js.map +0 -1
  587. package/src/interfaces/adapter.interface.js.map +0 -1
  588. package/src/interfaces/app.interface.js.map +0 -1
  589. package/src/interfaces/auth-hook.interface.js.map +0 -1
  590. package/src/interfaces/auth-provider.interface.js.map +0 -1
  591. package/src/interfaces/base.interface.js.map +0 -1
  592. package/src/interfaces/flow.interface.d.ts +0 -41
  593. package/src/interfaces/flow.interface.js.map +0 -1
  594. package/src/interfaces/front-mcp.interface.js.map +0 -1
  595. package/src/interfaces/hook.interface.js.map +0 -1
  596. package/src/interfaces/index.js.map +0 -1
  597. package/src/interfaces/internal/flow.utils.d.ts +0 -24
  598. package/src/interfaces/internal/flow.utils.js.map +0 -1
  599. package/src/interfaces/internal/index.js.map +0 -1
  600. package/src/interfaces/internal/primary-auth-provider.interface.d.ts +0 -24
  601. package/src/interfaces/internal/primary-auth-provider.interface.js.map +0 -1
  602. package/src/interfaces/internal/registry.interface.d.ts +0 -97
  603. package/src/interfaces/internal/registry.interface.js.map +0 -1
  604. package/src/interfaces/logger.interface.js.map +0 -1
  605. package/src/interfaces/plugin.interface.js.map +0 -1
  606. package/src/interfaces/prompt.interface.js.map +0 -1
  607. package/src/interfaces/provider.interface.js.map +0 -1
  608. package/src/interfaces/resource.interface.js.map +0 -1
  609. package/src/interfaces/scope.interface.js.map +0 -1
  610. package/src/interfaces/server.interface.js.map +0 -1
  611. package/src/interfaces/session-hook.interface.js.map +0 -1
  612. package/src/interfaces/tool-hook.interface.js.map +0 -1
  613. package/src/interfaces/tool.interface.js.map +0 -1
  614. package/src/metadata/adapter.metadata.js.map +0 -1
  615. package/src/metadata/app.metadata.d.ts +0 -872
  616. package/src/metadata/app.metadata.js.map +0 -1
  617. package/src/metadata/auth-provider.metadata.js.map +0 -1
  618. package/src/metadata/flow.metadata.d.ts +0 -77
  619. package/src/metadata/flow.metadata.js.map +0 -1
  620. package/src/metadata/front-mcp.metadata.d.ts +0 -1144
  621. package/src/metadata/front-mcp.metadata.js.map +0 -1
  622. package/src/metadata/hook.metadata.js.map +0 -1
  623. package/src/metadata/index.js.map +0 -1
  624. package/src/metadata/logger.metadata.js.map +0 -1
  625. package/src/metadata/plugin.metadata.js.map +0 -1
  626. package/src/metadata/prompt.metadata.js.map +0 -1
  627. package/src/metadata/provider.metadata.js.map +0 -1
  628. package/src/metadata/resource.metadata.js.map +0 -1
  629. package/src/metadata/tool.metadata.d.ts +0 -178
  630. package/src/metadata/tool.metadata.js.map +0 -1
  631. package/src/providers/session.provider.js.map +0 -1
  632. package/src/records/adapter.record.js.map +0 -1
  633. package/src/records/app.record.js.map +0 -1
  634. package/src/records/auth-provider.record.js.map +0 -1
  635. package/src/records/flow.record.js.map +0 -1
  636. package/src/records/hook.record.js.map +0 -1
  637. package/src/records/index.js.map +0 -1
  638. package/src/records/logger.record.d.ts +0 -11
  639. package/src/records/logger.record.js.map +0 -1
  640. package/src/records/plugin.record.js.map +0 -1
  641. package/src/records/prompt.record.js.map +0 -1
  642. package/src/records/provider.record.js.map +0 -1
  643. package/src/records/resource.record.js.map +0 -1
  644. package/src/records/scope.record.js.map +0 -1
  645. package/src/records/tool.record.js.map +0 -1
  646. package/src/schemas/annotated-class.schema.js.map +0 -1
  647. package/src/schemas/http-input.schema.js.map +0 -1
  648. package/src/schemas/http-output.schema.d.ts +0 -2011
  649. package/src/schemas/http-output.schema.js.map +0 -1
  650. package/src/schemas/index.js.map +0 -1
  651. package/src/tokens/adapter.tokens.js.map +0 -1
  652. package/src/tokens/app.tokens.js.map +0 -1
  653. package/src/tokens/auth-provider.tokens.js.map +0 -1
  654. package/src/tokens/base.tokens.js.map +0 -1
  655. package/src/tokens/flow-hook.tokens.js.map +0 -1
  656. package/src/tokens/flow.tokens.js.map +0 -1
  657. package/src/tokens/front-mcp.tokens.js.map +0 -1
  658. package/src/tokens/index.js.map +0 -1
  659. package/src/tokens/logger.tokens.js.map +0 -1
  660. package/src/tokens/plugin.tokens.js.map +0 -1
  661. package/src/tokens/prompt.tokens.js.map +0 -1
  662. package/src/tokens/provider.tokens.js.map +0 -1
  663. package/src/tokens/resource.tokens.js.map +0 -1
  664. package/src/tokens/server.tokens.js.map +0 -1
  665. package/src/tokens/tool.tokens.js.map +0 -1
  666. package/src/types/auth/index.js.map +0 -1
  667. package/src/types/auth/jwt.types.js.map +0 -1
  668. package/src/types/auth/session.types.d.ts +0 -263
  669. package/src/types/auth/session.types.js.map +0 -1
  670. package/src/types/common.types.js.map +0 -1
  671. package/src/types/index.js.map +0 -1
  672. package/src/types/options/auth.options.d.ts +0 -513
  673. package/src/types/options/auth.options.js.map +0 -1
  674. package/src/types/options/http.options.js.map +0 -1
  675. package/src/types/options/index.js.map +0 -1
  676. package/src/types/options/logging.options.d.ts +0 -39
  677. package/src/types/options/logging.options.js.map +0 -1
  678. package/src/types/options/server-info.options.d.ts +0 -48
  679. package/src/types/options/server-info.options.js.map +0 -1
  680. package/src/types/options/session.options.d.ts +0 -67
  681. package/src/types/options/session.options.js.map +0 -1
  682. package/src/utils/decide-request-intent.utils.d.ts +0 -79
  683. package/src/utils/decide-request-intent.utils.js.map +0 -1
  684. package/src/utils/index.js.map +0 -1
  685. package/src/utils/path.utils.d.ts +0 -20
  686. package/src/utils/path.utils.js.map +0 -1
  687. /package/src/{decorators → common/decorators}/adapter.decorator.d.ts +0 -0
  688. /package/src/{decorators → common/decorators}/adapter.decorator.js +0 -0
  689. /package/src/{decorators → common/decorators}/app.decorator.d.ts +0 -0
  690. /package/src/{decorators → common/decorators}/app.decorator.js +0 -0
  691. /package/src/{decorators → common/decorators}/auth-provider.decorator.d.ts +0 -0
  692. /package/src/{decorators → common/decorators}/auth-provider.decorator.js +0 -0
  693. /package/src/{decorators → common/decorators}/flow.decorator.d.ts +0 -0
  694. /package/src/{decorators → common/decorators}/flow.decorator.js +0 -0
  695. /package/src/{decorators → common/decorators}/front-mcp.decorator.d.ts +0 -0
  696. /package/src/{decorators → common/decorators}/hook.decorator.d.ts +0 -0
  697. /package/src/{decorators → common/decorators}/hook.decorator.js +0 -0
  698. /package/src/{decorators → common/decorators}/index.d.ts +0 -0
  699. /package/src/{decorators → common/decorators}/index.js +0 -0
  700. /package/src/{decorators → common/decorators}/logger.decorator.d.ts +0 -0
  701. /package/src/{decorators → common/decorators}/logger.decorator.js +0 -0
  702. /package/src/{decorators → common/decorators}/plugin.decorator.d.ts +0 -0
  703. /package/src/{decorators → common/decorators}/plugin.decorator.js +0 -0
  704. /package/src/{decorators → common/decorators}/prompt.decorator.d.ts +0 -0
  705. /package/src/{decorators → common/decorators}/prompt.decorator.js +0 -0
  706. /package/src/{decorators → common/decorators}/provider.decorator.d.ts +0 -0
  707. /package/src/{decorators → common/decorators}/provider.decorator.js +0 -0
  708. /package/src/{decorators → common/decorators}/resource.decorator.d.ts +0 -0
  709. /package/src/{decorators → common/decorators}/resource.decorator.js +0 -0
  710. /package/src/{decorators-old → common/decorators-old}/auth-hook.decorator.d.ts +0 -0
  711. /package/src/{decorators-old → common/decorators-old}/auth-hook.decorator.js +0 -0
  712. /package/src/{decorators-old → common/decorators-old}/session-hook.decorator.d.ts +0 -0
  713. /package/src/{decorators-old → common/decorators-old}/session-hook.decorator.js +0 -0
  714. /package/src/{dynamic → common/dynamic}/dynamic.adapter.d.ts +0 -0
  715. /package/src/{dynamic → common/dynamic}/dynamic.adapter.js +0 -0
  716. /package/src/{dynamic → common/dynamic}/dynamic.plugin.d.ts +0 -0
  717. /package/src/{dynamic → common/dynamic}/dynamic.plugin.js +0 -0
  718. /package/src/{dynamic → common/dynamic}/dynamic.utils.js +0 -0
  719. /package/src/{dynamic → common/dynamic}/index.d.ts +0 -0
  720. /package/src/{dynamic → common/dynamic}/index.js +0 -0
  721. /package/src/{entries → common/entries}/adapter.entry.d.ts +0 -0
  722. /package/src/{entries → common/entries}/adapter.entry.js +0 -0
  723. /package/src/{entries → common/entries}/app.entry.js +0 -0
  724. /package/src/{entries → common/entries}/auth-provider.entry.d.ts +0 -0
  725. /package/src/{entries → common/entries}/auth-provider.entry.js +0 -0
  726. /package/src/{entries → common/entries}/base.entry.d.ts +0 -0
  727. /package/src/{entries → common/entries}/base.entry.js +0 -0
  728. /package/src/{entries → common/entries}/flow.entry.d.ts +0 -0
  729. /package/src/{entries → common/entries}/flow.entry.js +0 -0
  730. /package/src/{entries → common/entries}/hook.entry.d.ts +0 -0
  731. /package/src/{entries → common/entries}/hook.entry.js +0 -0
  732. /package/src/{entries → common/entries}/index.d.ts +0 -0
  733. /package/src/{entries → common/entries}/index.js +0 -0
  734. /package/src/{entries → common/entries}/logger.entry.d.ts +0 -0
  735. /package/src/{entries → common/entries}/logger.entry.js +0 -0
  736. /package/src/{entries → common/entries}/plugin.entry.d.ts +0 -0
  737. /package/src/{entries → common/entries}/plugin.entry.js +0 -0
  738. /package/src/{entries → common/entries}/prompt.entry.d.ts +0 -0
  739. /package/src/{entries → common/entries}/prompt.entry.js +0 -0
  740. /package/src/{entries → common/entries}/provider.entry.d.ts +0 -0
  741. /package/src/{entries → common/entries}/provider.entry.js +0 -0
  742. /package/src/{entries → common/entries}/resource.entry.d.ts +0 -0
  743. /package/src/{entries → common/entries}/resource.entry.js +0 -0
  744. /package/src/{entries → common/entries}/scope.entry.d.ts +0 -0
  745. /package/src/{entries → common/entries}/scope.entry.js +0 -0
  746. /package/src/{entries → common/entries}/tool.entry.d.ts +0 -0
  747. /package/src/{entries → common/entries}/tool.entry.js +0 -0
  748. /package/src/{interfaces → common/interfaces}/adapter.interface.d.ts +0 -0
  749. /package/src/{interfaces → common/interfaces}/adapter.interface.js +0 -0
  750. /package/src/{interfaces → common/interfaces}/app.interface.d.ts +0 -0
  751. /package/src/{interfaces → common/interfaces}/app.interface.js +0 -0
  752. /package/src/{interfaces → common/interfaces}/auth-hook.interface.d.ts +0 -0
  753. /package/src/{interfaces → common/interfaces}/auth-hook.interface.js +0 -0
  754. /package/src/{interfaces → common/interfaces}/auth-provider.interface.d.ts +0 -0
  755. /package/src/{interfaces → common/interfaces}/auth-provider.interface.js +0 -0
  756. /package/src/{interfaces → common/interfaces}/base.interface.d.ts +0 -0
  757. /package/src/{interfaces → common/interfaces}/base.interface.js +0 -0
  758. /package/src/{interfaces → common/interfaces}/flow.interface.js +0 -0
  759. /package/src/{interfaces → common/interfaces}/front-mcp.interface.d.ts +0 -0
  760. /package/src/{interfaces → common/interfaces}/front-mcp.interface.js +0 -0
  761. /package/src/{interfaces → common/interfaces}/hook.interface.d.ts +0 -0
  762. /package/src/{interfaces → common/interfaces}/hook.interface.js +0 -0
  763. /package/src/{interfaces → common/interfaces}/index.d.ts +0 -0
  764. /package/src/{interfaces → common/interfaces}/index.js +0 -0
  765. /package/src/{interfaces → common/interfaces}/internal/flow.utils.js +0 -0
  766. /package/src/{interfaces → common/interfaces}/internal/index.d.ts +0 -0
  767. /package/src/{interfaces → common/interfaces}/internal/index.js +0 -0
  768. /package/src/{interfaces → common/interfaces}/internal/primary-auth-provider.interface.js +0 -0
  769. /package/src/{interfaces → common/interfaces}/internal/registry.interface.js +0 -0
  770. /package/src/{interfaces → common/interfaces}/logger.interface.d.ts +0 -0
  771. /package/src/{interfaces → common/interfaces}/logger.interface.js +0 -0
  772. /package/src/{interfaces → common/interfaces}/plugin.interface.d.ts +0 -0
  773. /package/src/{interfaces → common/interfaces}/plugin.interface.js +0 -0
  774. /package/src/{interfaces → common/interfaces}/prompt.interface.d.ts +0 -0
  775. /package/src/{interfaces → common/interfaces}/prompt.interface.js +0 -0
  776. /package/src/{interfaces → common/interfaces}/provider.interface.d.ts +0 -0
  777. /package/src/{interfaces → common/interfaces}/provider.interface.js +0 -0
  778. /package/src/{interfaces → common/interfaces}/resource.interface.d.ts +0 -0
  779. /package/src/{interfaces → common/interfaces}/resource.interface.js +0 -0
  780. /package/src/{interfaces → common/interfaces}/scope.interface.d.ts +0 -0
  781. /package/src/{interfaces → common/interfaces}/scope.interface.js +0 -0
  782. /package/src/{interfaces → common/interfaces}/server.interface.d.ts +0 -0
  783. /package/src/{interfaces → common/interfaces}/server.interface.js +0 -0
  784. /package/src/{interfaces → common/interfaces}/session-hook.interface.d.ts +0 -0
  785. /package/src/{interfaces → common/interfaces}/session-hook.interface.js +0 -0
  786. /package/src/{interfaces → common/interfaces}/tool-hook.interface.d.ts +0 -0
  787. /package/src/{interfaces → common/interfaces}/tool-hook.interface.js +0 -0
  788. /package/src/{interfaces → common/interfaces}/tool.interface.d.ts +0 -0
  789. /package/src/{interfaces → common/interfaces}/tool.interface.js +0 -0
  790. /package/src/{metadata → common/metadata}/adapter.metadata.d.ts +0 -0
  791. /package/src/{metadata → common/metadata}/adapter.metadata.js +0 -0
  792. /package/src/{metadata → common/metadata}/app.metadata.js +0 -0
  793. /package/src/{metadata → common/metadata}/auth-provider.metadata.d.ts +0 -0
  794. /package/src/{metadata → common/metadata}/auth-provider.metadata.js +0 -0
  795. /package/src/{metadata → common/metadata}/flow.metadata.js +0 -0
  796. /package/src/{metadata → common/metadata}/front-mcp.metadata.js +0 -0
  797. /package/src/{metadata → common/metadata}/hook.metadata.d.ts +0 -0
  798. /package/src/{metadata → common/metadata}/hook.metadata.js +0 -0
  799. /package/src/{metadata → common/metadata}/index.d.ts +0 -0
  800. /package/src/{metadata → common/metadata}/index.js +0 -0
  801. /package/src/{metadata → common/metadata}/logger.metadata.d.ts +0 -0
  802. /package/src/{metadata → common/metadata}/logger.metadata.js +0 -0
  803. /package/src/{metadata → common/metadata}/plugin.metadata.d.ts +0 -0
  804. /package/src/{metadata → common/metadata}/plugin.metadata.js +0 -0
  805. /package/src/{metadata → common/metadata}/prompt.metadata.d.ts +0 -0
  806. /package/src/{metadata → common/metadata}/prompt.metadata.js +0 -0
  807. /package/src/{metadata → common/metadata}/provider.metadata.d.ts +0 -0
  808. /package/src/{metadata → common/metadata}/provider.metadata.js +0 -0
  809. /package/src/{metadata → common/metadata}/resource.metadata.d.ts +0 -0
  810. /package/src/{metadata → common/metadata}/resource.metadata.js +0 -0
  811. /package/src/{metadata → common/metadata}/tool.metadata.js +0 -0
  812. /package/src/{providers → common/providers}/session.provider.d.ts +0 -0
  813. /package/src/{providers → common/providers}/session.provider.js +0 -0
  814. /package/src/{records → common/records}/adapter.record.d.ts +0 -0
  815. /package/src/{records → common/records}/adapter.record.js +0 -0
  816. /package/src/{records → common/records}/app.record.d.ts +0 -0
  817. /package/src/{records → common/records}/app.record.js +0 -0
  818. /package/src/{records → common/records}/auth-provider.record.d.ts +0 -0
  819. /package/src/{records → common/records}/auth-provider.record.js +0 -0
  820. /package/src/{records → common/records}/flow.record.d.ts +0 -0
  821. /package/src/{records → common/records}/flow.record.js +0 -0
  822. /package/src/{records → common/records}/hook.record.d.ts +0 -0
  823. /package/src/{records → common/records}/hook.record.js +0 -0
  824. /package/src/{records → common/records}/index.d.ts +0 -0
  825. /package/src/{records → common/records}/index.js +0 -0
  826. /package/src/{records → common/records}/logger.record.js +0 -0
  827. /package/src/{records → common/records}/plugin.record.d.ts +0 -0
  828. /package/src/{records → common/records}/plugin.record.js +0 -0
  829. /package/src/{records → common/records}/prompt.record.d.ts +0 -0
  830. /package/src/{records → common/records}/prompt.record.js +0 -0
  831. /package/src/{records → common/records}/provider.record.d.ts +0 -0
  832. /package/src/{records → common/records}/provider.record.js +0 -0
  833. /package/src/{records → common/records}/resource.record.d.ts +0 -0
  834. /package/src/{records → common/records}/resource.record.js +0 -0
  835. /package/src/{records → common/records}/scope.record.d.ts +0 -0
  836. /package/src/{records → common/records}/scope.record.js +0 -0
  837. /package/src/{records → common/records}/tool.record.d.ts +0 -0
  838. /package/src/{records → common/records}/tool.record.js +0 -0
  839. /package/src/{schemas → common/schemas}/annotated-class.schema.d.ts +0 -0
  840. /package/src/{schemas → common/schemas}/annotated-class.schema.js +0 -0
  841. /package/src/{schemas → common/schemas}/http-input.schema.d.ts +0 -0
  842. /package/src/{schemas → common/schemas}/http-input.schema.js +0 -0
  843. /package/src/{schemas → common/schemas}/http-output.schema.js +0 -0
  844. /package/src/{schemas → common/schemas}/index.d.ts +0 -0
  845. /package/src/{schemas → common/schemas}/index.js +0 -0
  846. /package/src/{tokens → common/tokens}/adapter.tokens.d.ts +0 -0
  847. /package/src/{tokens → common/tokens}/adapter.tokens.js +0 -0
  848. /package/src/{tokens → common/tokens}/app.tokens.d.ts +0 -0
  849. /package/src/{tokens → common/tokens}/app.tokens.js +0 -0
  850. /package/src/{tokens → common/tokens}/auth-provider.tokens.d.ts +0 -0
  851. /package/src/{tokens → common/tokens}/auth-provider.tokens.js +0 -0
  852. /package/src/{tokens → common/tokens}/base.tokens.d.ts +0 -0
  853. /package/src/{tokens → common/tokens}/base.tokens.js +0 -0
  854. /package/src/{tokens → common/tokens}/flow-hook.tokens.d.ts +0 -0
  855. /package/src/{tokens → common/tokens}/flow-hook.tokens.js +0 -0
  856. /package/src/{tokens → common/tokens}/flow.tokens.d.ts +0 -0
  857. /package/src/{tokens → common/tokens}/flow.tokens.js +0 -0
  858. /package/src/{tokens → common/tokens}/front-mcp.tokens.d.ts +0 -0
  859. /package/src/{tokens → common/tokens}/front-mcp.tokens.js +0 -0
  860. /package/src/{tokens → common/tokens}/index.d.ts +0 -0
  861. /package/src/{tokens → common/tokens}/index.js +0 -0
  862. /package/src/{tokens → common/tokens}/logger.tokens.d.ts +0 -0
  863. /package/src/{tokens → common/tokens}/logger.tokens.js +0 -0
  864. /package/src/{tokens → common/tokens}/plugin.tokens.d.ts +0 -0
  865. /package/src/{tokens → common/tokens}/plugin.tokens.js +0 -0
  866. /package/src/{tokens → common/tokens}/prompt.tokens.d.ts +0 -0
  867. /package/src/{tokens → common/tokens}/prompt.tokens.js +0 -0
  868. /package/src/{tokens → common/tokens}/provider.tokens.d.ts +0 -0
  869. /package/src/{tokens → common/tokens}/provider.tokens.js +0 -0
  870. /package/src/{tokens → common/tokens}/resource.tokens.d.ts +0 -0
  871. /package/src/{tokens → common/tokens}/resource.tokens.js +0 -0
  872. /package/src/{tokens → common/tokens}/server.tokens.d.ts +0 -0
  873. /package/src/{tokens → common/tokens}/server.tokens.js +0 -0
  874. /package/src/{tokens → common/tokens}/tool.tokens.d.ts +0 -0
  875. /package/src/{tokens → common/tokens}/tool.tokens.js +0 -0
  876. /package/src/{types → common/types}/auth/index.d.ts +0 -0
  877. /package/src/{types → common/types}/auth/index.js +0 -0
  878. /package/src/{types → common/types}/auth/jwt.types.d.ts +0 -0
  879. /package/src/{types → common/types}/auth/jwt.types.js +0 -0
  880. /package/src/{types → common/types}/auth/session.types.js +0 -0
  881. /package/src/{types → common/types}/common.types.d.ts +0 -0
  882. /package/src/{types → common/types}/common.types.js +0 -0
  883. /package/src/{types → common/types}/index.d.ts +0 -0
  884. /package/src/{types → common/types}/index.js +0 -0
  885. /package/src/{types → common/types}/options/auth.options.js +0 -0
  886. /package/src/{types → common/types}/options/http.options.d.ts +0 -0
  887. /package/src/{types → common/types}/options/http.options.js +0 -0
  888. /package/src/{types → common/types}/options/index.d.ts +0 -0
  889. /package/src/{types → common/types}/options/index.js +0 -0
  890. /package/src/{types → common/types}/options/logging.options.js +0 -0
  891. /package/src/{types → common/types}/options/server-info.options.js +0 -0
  892. /package/src/{types → common/types}/options/session.options.js +0 -0
  893. /package/src/{utils → common/utils}/decide-request-intent.utils.js +0 -0
  894. /package/src/{utils → common/utils}/index.d.ts +0 -0
  895. /package/src/{utils → common/utils}/index.js +0 -0
  896. /package/src/{utils → common/utils}/path.utils.js +0 -0
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ // auth/session/record/session.base.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SessionView = exports.Session = void 0;
5
+ const session_transport_1 = require("../session.transport");
6
+ class Session {
7
+ // ---------------- public immutable data ----------------
8
+ id;
9
+ createdAt;
10
+ scopeId;
11
+ user;
12
+ claims;
13
+ /** Epoch millis when the bearer token expires (if available). */
14
+ expiresAt;
15
+ authorizedProviders;
16
+ authorizedProviderIds;
17
+ authorizedApps;
18
+ authorizedAppIds;
19
+ authorizedResources;
20
+ scopes;
21
+ authorizedTools;
22
+ authorizedToolIds;
23
+ authorizedPrompts;
24
+ authorizedPromptIds;
25
+ // ---------------- private/shared ----------------
26
+ #scope;
27
+ #issuer;
28
+ token;
29
+ #activeTransportId;
30
+ constructor(ctx) {
31
+ this.id = ctx.id;
32
+ this.createdAt = ctx.createdAt || Date.now();
33
+ this.#scope = ctx.scope;
34
+ this.#issuer = ctx.issuer;
35
+ this.scopeId = ctx.scope.id;
36
+ this.user = ctx.user;
37
+ this.claims = ctx.claims;
38
+ // derive token expiration from JWT claims if present (exp in seconds)
39
+ const exp = (ctx.claims && typeof ctx.claims['exp'] === 'number') ? Number(ctx.claims['exp']) : undefined;
40
+ if (exp) {
41
+ this.expiresAt = exp > 1e12 ? exp : exp * 1000;
42
+ }
43
+ // project authorized fields (defaults to empty)
44
+ this.authorizedProviders = ctx.authorizedProviders ?? {};
45
+ this.authorizedProviderIds = ctx.authorizedProviderIds ?? [];
46
+ this.authorizedApps = ctx.authorizedApps ?? {};
47
+ this.authorizedAppIds = ctx.authorizedAppIds ?? [];
48
+ this.authorizedResources = ctx.authorizedResources ?? [];
49
+ this.authorizedTools = ctx.authorizedTools ?? {};
50
+ this.authorizedToolIds = ctx.authorizedToolIds ?? [];
51
+ this.authorizedPrompts = ctx.authorizedPrompts ?? {};
52
+ this.authorizedPromptIds = ctx.authorizedPromptIds ?? [];
53
+ this.token = ctx.token;
54
+ this.#activeTransportId = ctx.sessionId;
55
+ }
56
+ /**
57
+ * Get the scope associated with this session.
58
+ * Can be used by subclasses to implement custom scope handling.
59
+ * @protected
60
+ */
61
+ get scope() {
62
+ return this.#scope;
63
+ }
64
+ // ---------------- accessors ----------------
65
+ get issuer() {
66
+ return this.#issuer;
67
+ }
68
+ async getTransportSessionId() {
69
+ if (this.#activeTransportId)
70
+ return this.#activeTransportId;
71
+ const mode = this.scope.metadata.session?.transportIdMode ?? 'uuid';
72
+ if (typeof mode === 'string') {
73
+ return session_transport_1.TransportIdGenerator.createId(mode);
74
+ }
75
+ else {
76
+ const modeResult = await mode(this.issuer);
77
+ return session_transport_1.TransportIdGenerator.createId(modeResult);
78
+ }
79
+ }
80
+ // ---------------- scoped view ----------------
81
+ scoped(allowed) {
82
+ const fn = typeof allowed === 'function'
83
+ ? allowed
84
+ : Array.isArray(allowed)
85
+ ? (id) => allowed.includes(id)
86
+ : (id) => id === allowed;
87
+ return new SessionView(this, fn);
88
+ }
89
+ }
90
+ exports.Session = Session;
91
+ class SessionView {
92
+ parent;
93
+ allow;
94
+ constructor(parent, allow) {
95
+ this.parent = parent;
96
+ this.allow = allow;
97
+ }
98
+ get id() {
99
+ return this.parent.id;
100
+ }
101
+ get mode() {
102
+ return this.parent.mode;
103
+ }
104
+ get user() {
105
+ return this.parent.user;
106
+ }
107
+ get claims() {
108
+ return this.parent.claims;
109
+ }
110
+ get authorizedApps() {
111
+ return this.parent.authorizedApps;
112
+ }
113
+ async getToken(providerId) {
114
+ if (!this.allow(providerId))
115
+ throw new Error(`scoped_denied:${providerId}`);
116
+ return this.parent.getToken(providerId);
117
+ }
118
+ get transportId() {
119
+ return this.parent.getTransportSessionId;
120
+ }
121
+ }
122
+ exports.SessionView = SessionView;
123
+ //# sourceMappingURL=session.base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.base.js","sourceRoot":"","sources":["../../../../../src/auth/session/record/session.base.ts"],"names":[],"mappings":"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","sourcesContent":["// auth/session/record/session.base.ts\n\nimport type { ProviderSnapshot, SessionMode } from '../session.types';\nimport { TransportIdGenerator } from '../session.transport';\nimport { Scope } from '../../../scope';\n\nexport interface BaseCreateCtx {\n id: string;\n sessionId?: string;\n scope: Scope;\n issuer: string;\n token: string;\n user: SessionUser;\n claims?: SessionClaims;\n createdAt?: number;\n // optional precomputed authorization projections\n authorizedProviders?: Record<string, ProviderSnapshot>;\n authorizedProviderIds?: string[];\n authorizedApps?: Record<string, { id: string; toolIds: string[] }>;\n authorizedAppIds?: string[];\n authorizedResources?: string[];\n scopes?: string[];\n // Scoped tools/prompts maps\n authorizedTools?: Record<string, { executionPath: [string, string]; details?: Record<string, any> }>;\n authorizedToolIds?: string[];\n authorizedPrompts?: Record<string, { executionPath: [string, string]; details?: Record<string, any> }>;\n authorizedPromptIds?: string[];\n}\n\n// TODO: can be extended\nexport interface SessionUser {\n sub?: string;\n name?: string;\n email?: string;\n picture?: string;\n}\n\n// TODO: can be extended\nexport interface SessionClaims {\n [key: string]: any;\n}\n\nexport abstract class Session {\n // ---------------- public immutable data ----------------\n readonly id: string;\n abstract readonly mode: SessionMode;\n readonly createdAt: number;\n readonly scopeId: string;\n readonly user: SessionUser;\n readonly claims?: Record<string, unknown>;\n /** Epoch millis when the bearer token expires (if available). */\n readonly expiresAt?: number;\n\n readonly authorizedProviders: Record<string, ProviderSnapshot>;\n readonly authorizedProviderIds: string[];\n readonly authorizedApps: Record<string, { id: string; toolIds: string[] }>;\n readonly authorizedAppIds: string[];\n readonly authorizedResources: string[];\n readonly scopes?: string[];\n readonly authorizedTools?: Record<string, { executionPath: [string, string]; details?: Record<string, any> }>;\n readonly authorizedToolIds?: string[];\n readonly authorizedPrompts?: Record<string, { executionPath: [string, string]; details?: Record<string, any> }>;\n readonly authorizedPromptIds?: string[];\n\n // ---------------- private/shared ----------------\n #scope: Scope;\n #issuer: string;\n protected token: string;\n\n #activeTransportId?: string;\n\n protected constructor(ctx: BaseCreateCtx) {\n this.id = ctx.id;\n this.createdAt = ctx.createdAt || Date.now();\n this.#scope = ctx.scope;\n this.#issuer = ctx.issuer;\n this.scopeId = ctx.scope.id;\n this.user = ctx.user;\n this.claims = ctx.claims;\n // derive token expiration from JWT claims if present (exp in seconds)\n const exp = (ctx.claims && typeof (ctx.claims as any)['exp'] === 'number') ? Number((ctx.claims as any)['exp']) : undefined;\n if (exp) {\n this.expiresAt = exp > 1e12 ? exp : exp * 1000;\n }\n // project authorized fields (defaults to empty)\n this.authorizedProviders = ctx.authorizedProviders ?? {};\n this.authorizedProviderIds = ctx.authorizedProviderIds ?? [];\n this.authorizedApps = ctx.authorizedApps ?? {};\n this.authorizedAppIds = ctx.authorizedAppIds ?? [];\n this.authorizedResources = ctx.authorizedResources ?? [];\n this.authorizedTools = ctx.authorizedTools ?? {};\n this.authorizedToolIds = ctx.authorizedToolIds ?? [];\n this.authorizedPrompts = ctx.authorizedPrompts ?? {};\n this.authorizedPromptIds = ctx.authorizedPromptIds ?? [];\n this.token = ctx.token;\n this.#activeTransportId = ctx.sessionId;\n }\n\n /**\n * Get the scope associated with this session.\n * Can be used by subclasses to implement custom scope handling.\n * @protected\n */\n protected get scope(): Scope {\n return this.#scope;\n }\n // ---------------- accessors ----------------\n\n get issuer(): string {\n return this.#issuer;\n }\n\n async getTransportSessionId(): Promise<string> {\n if (this.#activeTransportId) return this.#activeTransportId;\n const mode = this.scope.metadata.session?.transportIdMode ?? 'uuid';\n if (typeof mode === 'string') {\n return TransportIdGenerator.createId(mode);\n } else {\n const modeResult = await mode(this.issuer);\n return TransportIdGenerator.createId(modeResult);\n }\n }\n\n /**\n * Get the access token for a given provider.\n * Must be implemented in subclasses based on session topology.\n * @protected\n * @param providerId\n */\n abstract getToken(providerId?: string): Promise<string> | string;\n\n // ---------------- scoped view ----------------\n scoped(allowed: string | string[] | ((id: string) => boolean)) {\n const fn =\n typeof allowed === 'function'\n ? allowed\n : Array.isArray(allowed)\n ? (id: string) => allowed.includes(id)\n : (id: string) => id === allowed;\n return new SessionView(this, fn);\n }\n}\n\nexport class SessionView {\n constructor(private readonly parent: Session, private readonly allow: (id: string) => boolean) {}\n\n get id() {\n return this.parent.id;\n }\n get mode() {\n return this.parent.mode;\n }\n get user() {\n return this.parent.user;\n }\n get claims() {\n return this.parent.claims;\n }\n get authorizedApps() {\n return this.parent.authorizedApps;\n }\n\n async getToken(providerId: string) {\n if (!this.allow(providerId)) throw new Error(`scoped_denied:${providerId}`);\n return this.parent.getToken(providerId);\n }\n get transportId() {\n return this.parent.getTransportSessionId;\n }\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import { Session, type BaseCreateCtx } from './session.base';
2
+ export type StatefulCreateCtx = BaseCreateCtx & {};
3
+ /**
4
+ * Represents a **stateful session** stored server-side (e.g., Redis).
5
+ * Nested OAuth tokens are never exposed in the JWT; instead, they are
6
+ * encrypted and persisted in Redis under a session key. The client only
7
+ * receives a lightweight reference to that key.
8
+ *
9
+ * Advantages:
10
+ * - Smaller JWT payloads and reduced token leakage risk.
11
+ * - Can refresh nested provider tokens on the fly without requiring
12
+ * the user to re-authorize.
13
+ * - Well suited for multi-app setups with short-lived OAuth tokens.
14
+ */
15
+ export declare class StatefulSession extends Session {
16
+ #private;
17
+ readonly mode = "stateful";
18
+ constructor(ctx: StatefulCreateCtx);
19
+ getToken(providerId?: string): Promise<string> | string;
20
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StatefulSession = void 0;
4
+ const session_base_1 = require("./session.base");
5
+ /**
6
+ * Represents a **stateful session** stored server-side (e.g., Redis).
7
+ * Nested OAuth tokens are never exposed in the JWT; instead, they are
8
+ * encrypted and persisted in Redis under a session key. The client only
9
+ * receives a lightweight reference to that key.
10
+ *
11
+ * Advantages:
12
+ * - Smaller JWT payloads and reduced token leakage risk.
13
+ * - Can refresh nested provider tokens on the fly without requiring
14
+ * the user to re-authorize.
15
+ * - Well suited for multi-app setups with short-lived OAuth tokens.
16
+ */
17
+ class StatefulSession extends session_base_1.Session {
18
+ mode = 'stateful';
19
+ /**
20
+ * Used to encrypt/decrypt nested provider tokens in #store.
21
+ * @private
22
+ */
23
+ // eslint-disable-next-line no-unused-private-class-members
24
+ #vault;
25
+ /**
26
+ * Used to store/retrieve encrypted nested provider tokens.
27
+ * By default it will be a memory store, but can be replaced with a
28
+ * persistent store like Redis by settings session.store in SecureMcp options
29
+ * @private
30
+ */
31
+ // eslint-disable-next-line no-unused-private-class-members
32
+ #store;
33
+ /**
34
+ * Per-provider refreshers (keyed by providerId).
35
+ * Used to refresh nested provider tokens on the fly.
36
+ * By default, it will use the default refresher, which is a simple
37
+ * refresher that refreshes the token by calling the provider's refresh endpoint.
38
+ *
39
+ * If you want to use a custom refresher, you can set it by setting session.refresher in SecureMcp options
40
+ * @private
41
+ */
42
+ // eslint-disable-next-line no-unused-private-class-members
43
+ #refreshers;
44
+ // eslint-disable-next-line no-unused-private-class-members
45
+ #defaultRefresher;
46
+ constructor(ctx) {
47
+ super(ctx);
48
+ throw new Error('Method not implemented.');
49
+ }
50
+ getToken(providerId) {
51
+ throw new Error('Method not implemented.');
52
+ }
53
+ }
54
+ exports.StatefulSession = StatefulSession;
55
+ //# sourceMappingURL=session.stateful.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.stateful.js","sourceRoot":"","sources":["../../../../../src/auth/session/record/session.stateful.ts"],"names":[],"mappings":";;;AAAA,iDAA6D;AAO7D;;;;;;;;;;;GAWG;AACH,MAAa,eAAgB,SAAQ,sBAAO;IACjC,IAAI,GAAG,UAAU,CAAC;IAC3B;;;OAGG;IACH,2DAA2D;IAC3D,MAAM,CAAa;IACnB;;;;;OAKG;IACH,2DAA2D;IAC3D,MAAM,CAAa;IAEnB;;;;;;;;OAQG;IACH,2DAA2D;IAC3D,WAAW,CAAiC;IAC5C,2DAA2D;IAC3D,iBAAiB,CAAiB;IAElC,YAAY,GAAsB;QAChC,KAAK,CAAC,GAAU,CAAC,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEQ,QAAQ,CAAC,UAAmB;QACnC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CAkCF;AAxED,0CAwEC","sourcesContent":["import { Session, type BaseCreateCtx } from './session.base';\nimport { TokenRefresher } from '../token.refresh';\nimport type { TokenStore } from '../token.store';\nimport type { TokenVault } from '../token.vault';\n\nexport type StatefulCreateCtx = BaseCreateCtx & {};\n\n/**\n * Represents a **stateful session** stored server-side (e.g., Redis).\n * Nested OAuth tokens are never exposed in the JWT; instead, they are\n * encrypted and persisted in Redis under a session key. The client only\n * receives a lightweight reference to that key.\n *\n * Advantages:\n * - Smaller JWT payloads and reduced token leakage risk.\n * - Can refresh nested provider tokens on the fly without requiring\n * the user to re-authorize.\n * - Well suited for multi-app setups with short-lived OAuth tokens.\n */\nexport class StatefulSession extends Session {\n readonly mode = 'stateful';\n /**\n * Used to encrypt/decrypt nested provider tokens in #store.\n * @private\n */\n // eslint-disable-next-line no-unused-private-class-members\n #vault: TokenVault;\n /**\n * Used to store/retrieve encrypted nested provider tokens.\n * By default it will be a memory store, but can be replaced with a\n * persistent store like Redis by settings session.store in SecureMcp options\n * @private\n */\n // eslint-disable-next-line no-unused-private-class-members\n #store: TokenStore;\n\n /**\n * Per-provider refreshers (keyed by providerId).\n * Used to refresh nested provider tokens on the fly.\n * By default, it will use the default refresher, which is a simple\n * refresher that refreshes the token by calling the provider's refresh endpoint.\n *\n * If you want to use a custom refresher, you can set it by setting session.refresher in SecureMcp options\n * @private\n */\n // eslint-disable-next-line no-unused-private-class-members\n #refreshers: Record<string, TokenRefresher>;\n // eslint-disable-next-line no-unused-private-class-members\n #defaultRefresher: TokenRefresher;\n\n constructor(ctx: StatefulCreateCtx) {\n super(ctx as any);\n throw new Error('Method not implemented.');\n }\n\n override getToken(providerId?: string): Promise<string> | string {\n throw new Error('Method not implemented.');\n }\n //\n // protected async attachProviderSecrets(p: ProviderInput): Promise<ProviderSnapshot> {\n // const snap: ProviderSnapshot = {\n // id: p.id,\n // exp: p.exp,\n // payload: p.payload,\n // apps: p.apps?.map(a => ({ id: String(a.id), toolIds: (a.toolIds ?? []).map(String) })),\n // embedMode: 'store-only',\n // };\n // if (p.token) snap.tokenEnc = encryptAesGcm(this.#key, p.token);\n // else if (p.enc) snap.tokenEnc = p.enc;\n // if (p.refreshToken) snap.refreshTokenEnc = encryptAesGcm(this.#key, p.refreshToken);\n // return snap;\n // }\n //\n // protected async readAccessToken(providerId: string): Promise<string | undefined> {\n // const s = this.authorizedProviders[providerId];\n // if (!s?.tokenEnc) return undefined;\n // return decryptAesGcm(this.#key, s.tokenEnc);\n // }\n //\n // protected readRefreshToken(providerId: string): string | undefined {\n // const s = this.authorizedProviders[providerId];\n // if (!s?.refreshTokenEnc) return undefined;\n // return decryptAesGcm(this.#key, s.refreshTokenEnc);\n // }\n //\n // protected async persistRefreshedTokens(providerId: string, res: TokenRefreshResult): Promise<void> {\n // const s = this.authorizedProviders[providerId];\n // if (!s) return;\n // if (res.accessToken) s.tokenEnc = encryptAesGcm(this.#key, res.accessToken);\n // if (res.refreshToken) s.refreshTokenEnc = encryptAesGcm(this.#key, res.refreshToken);\n // }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { Session, type BaseCreateCtx } from './session.base';
2
+ export type StatefulCreateCtx = BaseCreateCtx & {};
3
+ /**
4
+ * Represents a **stateful session (non-refreshable)** where nested OAuth
5
+ * tokens cannot be refreshed server-side. When a nested provider token
6
+ * expires, the user must re-authorize to obtain new credentials.
7
+ *
8
+ * Notes:
9
+ * - Simpler flow, but degrades UX when tokens are short-lived.
10
+ * - Prefer the refreshable stateful session for multi-app environments.
11
+ */
12
+ export declare class StatelessSession extends Session {
13
+ #private;
14
+ readonly mode = "stateless";
15
+ constructor(ctx: StatefulCreateCtx);
16
+ getToken(providerId?: string): Promise<string> | string;
17
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StatelessSession = void 0;
4
+ const session_base_1 = require("./session.base");
5
+ /**
6
+ * Represents a **stateful session (non-refreshable)** where nested OAuth
7
+ * tokens cannot be refreshed server-side. When a nested provider token
8
+ * expires, the user must re-authorize to obtain new credentials.
9
+ *
10
+ * Notes:
11
+ * - Simpler flow, but degrades UX when tokens are short-lived.
12
+ * - Prefer the refreshable stateful session for multi-app environments.
13
+ */
14
+ class StatelessSession extends session_base_1.Session {
15
+ mode = 'stateless';
16
+ /**
17
+ * Used to encrypt/decrypt nested provider tokens in #store.
18
+ * @private
19
+ */
20
+ #vault;
21
+ constructor(ctx) {
22
+ super(ctx);
23
+ throw new Error('Method not implemented.');
24
+ }
25
+ getToken(providerId) {
26
+ throw new Error('Method not implemented.');
27
+ }
28
+ }
29
+ exports.StatelessSession = StatelessSession;
30
+ //# sourceMappingURL=session.stateless.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.stateless.js","sourceRoot":"","sources":["../../../../../src/auth/session/record/session.stateless.ts"],"names":[],"mappings":";;;AAAA,iDAA6D;AAK7D;;;;;;;;GAQG;AACH,MAAa,gBAAiB,SAAQ,sBAAO;IAClC,IAAI,GAAG,WAAW,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAa;IACnB,YAAY,GAAsB;QAChC,KAAK,CAAC,GAAU,CAAC,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACQ,QAAQ,CAAC,UAAmB;QACnC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF;AAdD,4CAcC","sourcesContent":["import { Session, type BaseCreateCtx } from './session.base';\nimport { TokenVault } from '../token.vault';\n\nexport type StatefulCreateCtx = BaseCreateCtx & {};\n\n/**\n * Represents a **stateful session (non-refreshable)** where nested OAuth\n * tokens cannot be refreshed server-side. When a nested provider token\n * expires, the user must re-authorize to obtain new credentials.\n *\n * Notes:\n * - Simpler flow, but degrades UX when tokens are short-lived.\n * - Prefer the refreshable stateful session for multi-app environments.\n */\nexport class StatelessSession extends Session {\n readonly mode = 'stateless';\n /**\n * Used to encrypt/decrypt nested provider tokens in #store.\n * @private\n */\n #vault: TokenVault;\n constructor(ctx: StatefulCreateCtx) {\n super(ctx as any);\n throw new Error('Method not implemented.');\n }\n override getToken(providerId?: string): Promise<string> | string {\n throw new Error('Method not implemented.');\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { BaseCreateCtx, Session } from './session.base';
2
+ interface TransparentCreateCtx extends BaseCreateCtx {
3
+ apps: string[];
4
+ }
5
+ /**
6
+ * Represents a transparent (Non-Orchestrated) session where delivered by authorization server.
7
+ * The session cannot have nest auth providers.
8
+ * The session cannot be refreshed.
9
+ * The session cannot be revoked.
10
+ * Useful for OAuth flows where the authorization server delivers the session.
11
+ */
12
+ export declare class TransparentSession extends Session {
13
+ readonly mode = "transparent";
14
+ constructor(ctx: TransparentCreateCtx);
15
+ getToken(): Promise<string> | string;
16
+ }
17
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransparentSession = void 0;
4
+ const session_base_1 = require("./session.base");
5
+ /**
6
+ * Represents a transparent (Non-Orchestrated) session where delivered by authorization server.
7
+ * The session cannot have nest auth providers.
8
+ * The session cannot be refreshed.
9
+ * The session cannot be revoked.
10
+ * Useful for OAuth flows where the authorization server delivers the session.
11
+ */
12
+ class TransparentSession extends session_base_1.Session {
13
+ mode = 'transparent';
14
+ constructor(ctx) {
15
+ super(ctx);
16
+ }
17
+ getToken() {
18
+ return this.token;
19
+ }
20
+ }
21
+ exports.TransparentSession = TransparentSession;
22
+ //# sourceMappingURL=session.transparent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.transparent.js","sourceRoot":"","sources":["../../../../../src/auth/session/record/session.transparent.ts"],"names":[],"mappings":";;;AAAA,iDAAwD;AAMxD;;;;;;GAMG;AACH,MAAa,kBAAmB,SAAQ,sBAAO;IACpC,IAAI,GAAG,aAAa,CAAC;IAC9B,YAAY,GAAyB;QACnC,KAAK,CAAC,GAAU,CAAC,CAAC;IACpB,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AATD,gDASC","sourcesContent":["import { BaseCreateCtx, Session } from './session.base';\n\ninterface TransparentCreateCtx extends BaseCreateCtx {\n apps: string[];\n}\n\n/**\n * Represents a transparent (Non-Orchestrated) session where delivered by authorization server.\n * The session cannot have nest auth providers.\n * The session cannot be refreshed.\n * The session cannot be revoked.\n * Useful for OAuth flows where the authorization server delivers the session.\n */\nexport class TransparentSession extends Session {\n readonly mode = 'transparent';\n constructor(ctx: TransparentCreateCtx) {\n super(ctx as any);\n }\n\n override getToken(): Promise<string> | string {\n return this.token;\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { EncBlob } from './session.types';
2
+ /** Encrypt UTF-8 text using AES-256-GCM. Returns base64url fields. */
3
+ export declare function encryptAesGcm(key: Buffer, plaintext: string): EncBlob;
4
+ /** Decrypt an AES-256-GCM blob (base64url fields) to UTF-8 text. */
5
+ export declare function decryptAesGcm(key: Buffer, blob: EncBlob): string;
6
+ /** HKDF-SHA256 (RFC 5869) to derive key material. */
7
+ export declare function hkdfSha256(ikm: Buffer, salt: Buffer, info: Buffer, length: number): Buffer;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encryptAesGcm = encryptAesGcm;
4
+ exports.decryptAesGcm = decryptAesGcm;
5
+ exports.hkdfSha256 = hkdfSha256;
6
+ const tslib_1 = require("tslib");
7
+ // auth/services/session/session.crypto.ts
8
+ const node_crypto_1 = tslib_1.__importDefault(require("node:crypto"));
9
+ /** Encrypt UTF-8 text using AES-256-GCM. Returns base64url fields. */
10
+ function encryptAesGcm(key, plaintext) {
11
+ const iv = node_crypto_1.default.randomBytes(12);
12
+ const cipher = node_crypto_1.default.createCipheriv('aes-256-gcm', key, iv);
13
+ const data = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);
14
+ const tag = cipher.getAuthTag();
15
+ return {
16
+ alg: 'A256GCM',
17
+ iv: iv.toString('base64url'),
18
+ tag: tag.toString('base64url'),
19
+ data: data.toString('base64url'),
20
+ };
21
+ }
22
+ /** Decrypt an AES-256-GCM blob (base64url fields) to UTF-8 text. */
23
+ function decryptAesGcm(key, blob) {
24
+ const iv = Buffer.from(blob.iv, 'base64url');
25
+ const tag = Buffer.from(blob.tag, 'base64url');
26
+ const data = Buffer.from(blob.data, 'base64url');
27
+ const decipher = node_crypto_1.default.createDecipheriv('aes-256-gcm', key, iv);
28
+ decipher.setAuthTag(tag);
29
+ const out = Buffer.concat([decipher.update(data), decipher.final()]);
30
+ return out.toString('utf8');
31
+ }
32
+ /** HKDF-SHA256 (RFC 5869) to derive key material. */
33
+ function hkdfSha256(ikm, salt, info, length) {
34
+ const prk = node_crypto_1.default.createHmac('sha256', salt).update(ikm).digest();
35
+ let prev = Buffer.alloc(0);
36
+ const chunks = [];
37
+ let ctr = 1;
38
+ while (Buffer.concat(chunks).length < length) {
39
+ prev = node_crypto_1.default
40
+ .createHmac('sha256', prk)
41
+ .update(Buffer.concat([prev, info, Buffer.from([ctr++])]))
42
+ .digest();
43
+ chunks.push(prev);
44
+ }
45
+ return Buffer.concat(chunks).subarray(0, length);
46
+ }
47
+ //# sourceMappingURL=session.crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.crypto.js","sourceRoot":"","sources":["../../../../src/auth/session/session.crypto.ts"],"names":[],"mappings":";;AAKA,sCAWC;AAGD,sCAQC;AAGD,gCAaC;;AA3CD,0CAA0C;AAC1C,sEAAiC;AAGjC,sEAAsE;AACtE,SAAgB,aAAa,CAAC,GAAW,EAAE,SAAiB;IAC1D,MAAM,EAAE,GAAG,qBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,qBAAM,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAChC,OAAO;QACL,GAAG,EAAE,SAAS;QACd,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5B,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,SAAgB,aAAa,CAAC,GAAW,EAAE,IAAa;IACtD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,qBAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrE,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,qDAAqD;AACrD,SAAgB,UAAU,CAAC,GAAW,EAAE,IAAY,EAAE,IAAY,EAAE,MAAc;IAChF,MAAM,GAAG,GAAG,qBAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IACnE,IAAI,IAAI,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QAC7C,IAAI,GAAG,qBAAM;aACV,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC;aACzB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aACzD,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC","sourcesContent":["// auth/services/session/session.crypto.ts\nimport crypto from 'node:crypto';\nimport type { EncBlob } from './session.types';\n\n/** Encrypt UTF-8 text using AES-256-GCM. Returns base64url fields. */\nexport function encryptAesGcm(key: Buffer, plaintext: string): EncBlob {\n const iv = crypto.randomBytes(12);\n const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);\n const data = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);\n const tag = cipher.getAuthTag();\n return {\n alg: 'A256GCM',\n iv: iv.toString('base64url'),\n tag: tag.toString('base64url'),\n data: data.toString('base64url'),\n };\n}\n\n/** Decrypt an AES-256-GCM blob (base64url fields) to UTF-8 text. */\nexport function decryptAesGcm(key: Buffer, blob: EncBlob): string {\n const iv = Buffer.from(blob.iv, 'base64url');\n const tag = Buffer.from(blob.tag, 'base64url');\n const data = Buffer.from(blob.data, 'base64url');\n const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv);\n decipher.setAuthTag(tag);\n const out = Buffer.concat([decipher.update(data), decipher.final()]);\n return out.toString('utf8');\n}\n\n/** HKDF-SHA256 (RFC 5869) to derive key material. */\nexport function hkdfSha256(ikm: Buffer, salt: Buffer, info: Buffer, length: number): Buffer {\n const prk = crypto.createHmac('sha256', salt).update(ikm).digest();\n let prev: Buffer = Buffer.alloc(0);\n const chunks: Buffer[] = [];\n let ctr = 1;\n while (Buffer.concat(chunks).length < length) {\n prev = crypto\n .createHmac('sha256', prk)\n .update(Buffer.concat([prev, info, Buffer.from([ctr++])]))\n .digest();\n chunks.push(prev);\n }\n return Buffer.concat(chunks).subarray(0, length);\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod';
2
+ import { TransparentSession } from './record/session.transparent';
3
+ import { StatefulSession } from './record/session.stateful';
4
+ import { StatelessSession } from './record/session.stateless';
5
+ export declare const SessionSchema: z.ZodUnion<[z.ZodType<TransparentSession, z.ZodTypeDef, TransparentSession>, z.ZodType<StatefulSession, z.ZodTypeDef, StatefulSession>, z.ZodType<StatelessSession, z.ZodTypeDef, StatelessSession>]>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const session_transparent_1 = require("./record/session.transparent");
6
+ const session_stateful_1 = require("./record/session.stateful");
7
+ const session_stateless_1 = require("./record/session.stateless");
8
+ exports.SessionSchema = zod_1.z.union([
9
+ zod_1.z.instanceof(session_transparent_1.TransparentSession),
10
+ zod_1.z.instanceof(session_stateful_1.StatefulSession),
11
+ zod_1.z.instanceof(session_stateless_1.StatelessSession),
12
+ ]);
13
+ //# sourceMappingURL=session.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.schema.js","sourceRoot":"","sources":["../../../../src/auth/session/session.schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,sEAAkE;AAClE,gEAA4D;AAC5D,kEAA8D;AAEjD,QAAA,aAAa,GAAG,OAAC,CAAC,KAAK,CAAC;IACnC,OAAC,CAAC,UAAU,CAAC,wCAAkB,CAAC;IAChC,OAAC,CAAC,UAAU,CAAC,kCAAe,CAAC;IAC7B,OAAC,CAAC,UAAU,CAAC,oCAAgB,CAAC;CAC/B,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { TransparentSession } from './record/session.transparent';\nimport { StatefulSession } from './record/session.stateful';\nimport { StatelessSession } from './record/session.stateless';\n\nexport const SessionSchema = z.union([\n z.instanceof(TransparentSession),\n z.instanceof(StatefulSession),\n z.instanceof(StatelessSession),\n]);\n"]}
@@ -0,0 +1,17 @@
1
+ import { StatelessSession } from './record/session.stateless';
2
+ import { StatefulSession } from './record/session.stateful';
3
+ import { Scope } from '../../scope';
4
+ import { CreateSessionArgs } from './session.types';
5
+ import { TransparentSession } from './record/session.transparent';
6
+ import { Authorization } from '../../common';
7
+ export declare class SessionService {
8
+ private store;
9
+ keyOf(authorization: Authorization): Promise<void>;
10
+ /**
11
+ * Create and persist a new Session from verified auth data.
12
+ * The returned Session exposes async token helpers, scoped view, and transport JWT helpers.
13
+ */
14
+ createSession(scope: Scope, args: CreateSessionArgs): Promise<StatelessSession | StatefulSession | TransparentSession>;
15
+ private createOrchestratedSession;
16
+ private createTransparentSession;
17
+ }
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionService = void 0;
4
+ // auth/session/session.service.ts
5
+ const session_stateless_1 = require("./record/session.stateless");
6
+ const session_stateful_1 = require("./record/session.stateful");
7
+ const session_transparent_1 = require("./record/session.transparent");
8
+ const store_1 = require("../../store");
9
+ const session_id_utils_1 = require("./utils/session-id.utils");
10
+ class SessionService {
11
+ store = new store_1.ScopedInMemoryStore();
12
+ async keyOf(authorization) {
13
+ const sessionKey = (0, session_id_utils_1.encryptJson)({ token: authorization.token });
14
+ if (authorization.session) {
15
+ }
16
+ }
17
+ /**
18
+ * Create and persist a new Session from verified auth data.
19
+ * The returned Session exposes async token helpers, scoped view, and transport JWT helpers.
20
+ */
21
+ async createSession(scope, args) {
22
+ if (scope.orchestrated) {
23
+ return this.createOrchestratedSession(scope, args);
24
+ }
25
+ else {
26
+ return this.createTransparentSession(scope, args);
27
+ }
28
+ }
29
+ createOrchestratedSession(scope, args) {
30
+ const stateless = scope.metadata.session?.sessionMode === 'stateless';
31
+ if (stateless) {
32
+ return new session_stateless_1.StatelessSession(args);
33
+ }
34
+ else {
35
+ return new session_stateful_1.StatefulSession(args);
36
+ }
37
+ }
38
+ createTransparentSession(scope, args) {
39
+ const primary = scope.auth;
40
+ const apps = scope.apps.getApps();
41
+ const appIds = apps.map((app) => app.id);
42
+ // Prefer precomputed projections when provided
43
+ let authorizedApps = args.authorizedApps ?? {};
44
+ if (!args.authorizedApps) {
45
+ authorizedApps = {};
46
+ for (const app of apps) {
47
+ try {
48
+ const toolNames = app.tools.getTools().map((t) => String(t.metadata.name));
49
+ authorizedApps[app.id] = { id: app.id, toolIds: toolNames };
50
+ }
51
+ catch {
52
+ authorizedApps[app.id] = { id: app.id, toolIds: [] };
53
+ }
54
+ }
55
+ }
56
+ // TODO: the authorized resources should be computed from the oauth-protected-resource flow
57
+ // let authorizedResources: string[] = args.authorizedResources ?? [];
58
+ // if (!args.authorizedResources) {
59
+ // authorizedResources = [];
60
+ // }
61
+ // Providers snapshot
62
+ let authorizedProviders = args.authorizedProviders;
63
+ let authorizedProviderIds = args.authorizedProviderIds;
64
+ if (!authorizedProviders || !authorizedProviderIds) {
65
+ const expClaim = args.claims && typeof args.claims['exp'] === 'number'
66
+ ? Number(args.claims['exp'])
67
+ : undefined;
68
+ const providerSnapshot = {
69
+ id: primary.id,
70
+ exp: expClaim,
71
+ payload: args.claims ?? {},
72
+ apps: appIds.map((id) => ({ id, toolIds: authorizedApps[id]?.toolIds ?? [] })),
73
+ embedMode: 'plain',
74
+ };
75
+ authorizedProviders = { [primary.id]: providerSnapshot };
76
+ authorizedProviderIds = [primary.id];
77
+ }
78
+ // resolve granted scopes from token claims (scope or scp)
79
+ let scopes = args.scopes ?? [];
80
+ if (!args.scopes) {
81
+ const rawScope = (args.claims && (args.claims['scope'] ?? args.claims['scp']));
82
+ scopes = Array.isArray(rawScope)
83
+ ? rawScope.map(String)
84
+ : typeof rawScope === 'string'
85
+ ? rawScope.split(/[\s,]+/).filter(Boolean)
86
+ : [];
87
+ }
88
+ return new session_transparent_1.TransparentSession({
89
+ apps: appIds,
90
+ id: args.token,
91
+ sessionId: args.sessionId,
92
+ scope,
93
+ user: args.user,
94
+ issuer: primary.issuer,
95
+ token: args.token,
96
+ claims: args.claims,
97
+ authorizedProviders: authorizedProviders,
98
+ authorizedProviderIds: authorizedProviderIds,
99
+ authorizedApps,
100
+ authorizedAppIds: appIds,
101
+ authorizedResources: [], // TODO: fix
102
+ scopes,
103
+ authorizedTools: args.authorizedTools,
104
+ authorizedToolIds: args.authorizedToolIds,
105
+ authorizedPrompts: args.authorizedPrompts,
106
+ authorizedPromptIds: args.authorizedPromptIds,
107
+ });
108
+ }
109
+ }
110
+ exports.SessionService = SessionService;
111
+ //# sourceMappingURL=session.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.service.js","sourceRoot":"","sources":["../../../../src/auth/session/session.service.ts"],"names":[],"mappings":"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","sourcesContent":["// auth/session/session.service.ts\nimport { StatelessSession } from './record/session.stateless';\nimport { StatefulSession } from './record/session.stateful';\nimport { Scope } from '../../scope';\nimport { CreateSessionArgs } from './session.types';\nimport { TransparentSession } from './record/session.transparent';\nimport { Authorization } from '../../common';\nimport { ScopedInMemoryStore } from '../../store';\nimport { encryptJson } from './utils/session-id.utils';\n\nexport class SessionService {\n private store = new ScopedInMemoryStore()\n\n\n async keyOf(authorization: Authorization) {\n const sessionKey = encryptJson({token:authorization.token});\n if(authorization.session){\n\n }\n }\n\n /**\n * Create and persist a new Session from verified auth data.\n * The returned Session exposes async token helpers, scoped view, and transport JWT helpers.\n */\n async createSession(scope: Scope, args: CreateSessionArgs) {\n if (scope.orchestrated) {\n return this.createOrchestratedSession(scope, args);\n } else {\n return this.createTransparentSession(scope, args);\n }\n }\n\n private createOrchestratedSession(scope: Scope, args: CreateSessionArgs) {\n const stateless = scope.metadata.session?.sessionMode === 'stateless';\n if (stateless) {\n return new StatelessSession(args as any);\n } else {\n return new StatefulSession(args as any);\n }\n }\n\n private createTransparentSession(scope: Scope, args: CreateSessionArgs) {\n const primary = scope.auth;\n\n const apps = scope.apps.getApps();\n const appIds = apps.map((app) => app.id);\n\n // Prefer precomputed projections when provided\n let authorizedApps: Record<string, { id: string; toolIds: string[] }> = args.authorizedApps ?? {};\n if (!args.authorizedApps) {\n authorizedApps = {};\n for (const app of apps) {\n try {\n const toolNames = app.tools.getTools().map((t) => String(t.metadata.name));\n authorizedApps[app.id] = { id: app.id, toolIds: toolNames };\n } catch {\n authorizedApps[app.id] = { id: app.id, toolIds: [] };\n }\n }\n }\n\n // TODO: the authorized resources should be computed from the oauth-protected-resource flow\n // let authorizedResources: string[] = args.authorizedResources ?? [];\n // if (!args.authorizedResources) {\n // authorizedResources = [];\n // }\n\n // Providers snapshot\n let authorizedProviders = args.authorizedProviders;\n let authorizedProviderIds = args.authorizedProviderIds;\n if (!authorizedProviders || !authorizedProviderIds) {\n const expClaim =\n args.claims && typeof (args.claims as any)['exp'] === 'number'\n ? Number((args.claims as any)['exp'])\n : undefined;\n const providerSnapshot = {\n id: primary.id,\n exp: expClaim,\n payload: args.claims ?? {},\n apps: appIds.map((id) => ({ id, toolIds: authorizedApps[id]?.toolIds ?? [] })),\n embedMode: 'plain' as const,\n };\n authorizedProviders = { [primary.id]: providerSnapshot } as any;\n authorizedProviderIds = [primary.id];\n }\n\n // resolve granted scopes from token claims (scope or scp)\n let scopes: string[] = args.scopes ?? [];\n if (!args.scopes) {\n const rawScope = (args.claims && ((args.claims as any)['scope'] ?? (args.claims as any)['scp'])) as unknown;\n scopes = Array.isArray(rawScope)\n ? rawScope.map(String)\n : typeof rawScope === 'string'\n ? rawScope.split(/[\\s,]+/).filter(Boolean)\n : [];\n }\n\n return new TransparentSession({\n apps: appIds,\n id: args.token,\n sessionId: args.sessionId,\n scope,\n user: args.user,\n issuer: primary.issuer,\n token: args.token,\n claims: args.claims,\n authorizedProviders: authorizedProviders as any,\n authorizedProviderIds: authorizedProviderIds as any,\n authorizedApps,\n authorizedAppIds: appIds,\n authorizedResources: [], // TODO: fix\n scopes,\n authorizedTools: args.authorizedTools,\n authorizedToolIds: args.authorizedToolIds,\n authorizedPrompts: args.authorizedPrompts,\n authorizedPromptIds: args.authorizedPromptIds,\n } as any);\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { TransportIdMode } from '../../common';
2
+ export declare class TransportIdGenerator {
3
+ static createId(mode: TransportIdMode): string;
4
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransportIdGenerator = void 0;
4
+ // auth/session/session.transport.ts
5
+ const node_crypto_1 = require("node:crypto");
6
+ class TransportIdGenerator {
7
+ static createId(mode) {
8
+ switch (mode) {
9
+ case 'uuid':
10
+ return (0, node_crypto_1.randomUUID)();
11
+ case 'jwt':
12
+ // TODO: generate a JWT with a random UUID as the jti,
13
+ return (0, node_crypto_1.randomUUID)().replace(/-/g, '');
14
+ default:
15
+ throw new Error(`Unknown transport id mode: ${mode}`);
16
+ }
17
+ }
18
+ }
19
+ exports.TransportIdGenerator = TransportIdGenerator;
20
+ //# sourceMappingURL=session.transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.transport.js","sourceRoot":"","sources":["../../../../src/auth/session/session.transport.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,6CAAyC;AAGzC,MAAa,oBAAoB;IAC/B,MAAM,CAAC,QAAQ,CAAC,IAAqB;QACnC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM;gBACT,OAAO,IAAA,wBAAU,GAAE,CAAC;YACtB,KAAK,KAAK;gBACR,sDAAsD;gBACtD,OAAO,IAAA,wBAAU,GAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACxC;gBACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;CACF;AAZD,oDAYC","sourcesContent":["// auth/session/session.transport.ts\nimport { randomUUID } from 'node:crypto';\nimport { TransportIdMode } from '../../common';\n\nexport class TransportIdGenerator {\n static createId(mode: TransportIdMode): string {\n switch (mode) {\n case 'uuid':\n return randomUUID();\n case 'jwt':\n // TODO: generate a JWT with a random UUID as the jti,\n return randomUUID().replace(/-/g, '');\n default:\n throw new Error(`Unknown transport id mode: ${mode}`);\n }\n }\n}\n"]}