@frontmcp/sdk 0.2.5 → 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,332 @@
1
+ "use strict";
2
+ // noinspection ExceptionCaughtLocallyJS
3
+ // flows/flow.instance.ts
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.FlowInstance = void 0;
6
+ require("reflect-metadata");
7
+ const common_1 = require("../common");
8
+ const flow_stages_1 = require("./flow.stages");
9
+ const server_validation_1 = require("../server/server.validation");
10
+ const CAP = (s) => (s ? s[0].toUpperCase() + s.slice(1) : s);
11
+ const WILL = (s) => `will${CAP(s)}`;
12
+ const DID = (s) => `did${CAP(s)}`;
13
+ const AROUND = (s) => `around${CAP(s)}`;
14
+ function parseTypedKey(k) {
15
+ const lc = k.toLowerCase();
16
+ if (lc.startsWith('will') && k.length > 4)
17
+ return { base: k.slice(4, 5).toLowerCase() + k.slice(5), type: 'will' };
18
+ if (lc.startsWith('did') && k.length > 3)
19
+ return { base: k.slice(3, 4).toLowerCase() + k.slice(4), type: 'did' };
20
+ if (lc.startsWith('around') && k.length > 6)
21
+ return { base: k.slice(6, 7).toLowerCase() + k.slice(7), type: 'around' };
22
+ return { base: k };
23
+ }
24
+ class FlowInstance extends common_1.FlowEntry {
25
+ deps;
26
+ globalProviders;
27
+ plan;
28
+ FlowClass;
29
+ stages;
30
+ hooks;
31
+ constructor(scope, record, deps, globalProviders) {
32
+ super(scope, record);
33
+ this.deps = [...deps];
34
+ this.globalProviders = globalProviders;
35
+ this.FlowClass = this.record.provide;
36
+ this.ready = this.initialize();
37
+ this.plan = this.record.metadata.plan;
38
+ this.hooks = scope.providers.getHooksRegistry();
39
+ }
40
+ async initialize() {
41
+ const server = this.globalProviders.getActiveServer();
42
+ this.stages = (0, flow_stages_1.collectFlowHookMap)(this.FlowClass);
43
+ const { middleware } = this.metadata;
44
+ if (middleware) {
45
+ const path = typeof middleware.path === 'string' ? middleware.path : '';
46
+ server.registerMiddleware(path, async (request, response, next) => {
47
+ const canActivate = await this.canActivate(request);
48
+ if (!canActivate)
49
+ return next();
50
+ try {
51
+ const result = await this.run({ request, response, next }, new Map());
52
+ if (result)
53
+ return (0, server_validation_1.writeHttpResponse)(response, result);
54
+ }
55
+ catch (e) {
56
+ if (e instanceof common_1.FlowControl) {
57
+ switch (e.type) {
58
+ case 'abort':
59
+ return (0, server_validation_1.writeHttpResponse)(response, { kind: 'text', status: 500, body: 'Aborted' });
60
+ case 'fail':
61
+ return (0, server_validation_1.writeHttpResponse)(response, { kind: 'text', status: 500, body: 'Internal Server Error' });
62
+ case 'handled':
63
+ return;
64
+ case 'next':
65
+ return next();
66
+ case 'respond':
67
+ return (0, server_validation_1.writeHttpResponse)(response, e.output);
68
+ }
69
+ }
70
+ // eslint-disable-next-line no-console
71
+ console.error(e);
72
+ return (0, server_validation_1.writeHttpResponse)(response, {
73
+ kind: 'text',
74
+ status: 500,
75
+ body: 'Internal Server Error',
76
+ });
77
+ }
78
+ return next();
79
+ });
80
+ }
81
+ return Promise.resolve();
82
+ }
83
+ async canActivate(request) {
84
+ if (this.method && request.method !== this.method)
85
+ return false;
86
+ const canActivate = this.metadata.middleware?.canActivate ?? [];
87
+ if (this.FlowClass['canActivate']) {
88
+ canActivate.push(this.FlowClass['canActivate']);
89
+ }
90
+ if (canActivate.length === 0)
91
+ return true;
92
+ const results = await Promise.all(canActivate.map((m) => m(request, this.scope)));
93
+ return results.every((r) => r);
94
+ }
95
+ async run(input, deps) {
96
+ const scope = this.globalProviders.getActiveScope();
97
+ const { FlowClass, plan, name } = this;
98
+ // Clone stages so we can merge injections safely per run.
99
+ const baseStages = this.stages;
100
+ let stages = (0, flow_stages_1.cloneStageMap)(baseStages);
101
+ // Compute next order base after any class-defined entries.
102
+ let orderBase = Math.max(0, ...Object.values(stages).flatMap((list) => list.map((e) => e._order ?? 0))) + 1;
103
+ const initialInjectedHooks = this.hooks.getFlowHooks(name) ?? [];
104
+ let context;
105
+ let contextReady = false;
106
+ const materializeAndMerge = async (newHooks, opts) => {
107
+ if (!newHooks?.length || !contextReady)
108
+ return;
109
+ const metas = [];
110
+ for (const h of newHooks) {
111
+ try {
112
+ metas.push(h.metadata);
113
+ }
114
+ catch (e) {
115
+ // eslint-disable-next-line no-console
116
+ console.warn('[flow] Ignoring injected hook that failed to materialize:', e);
117
+ }
118
+ }
119
+ if (metas.length) {
120
+ const start = opts?.orderStart ?? orderBase;
121
+ (0, flow_stages_1.mergeHookMetasIntoStageMap)(FlowClass, stages, metas, start);
122
+ if (opts?.orderStart === undefined)
123
+ orderBase += metas.length;
124
+ }
125
+ };
126
+ const appendContextHooks = async (hooks) => {
127
+ await materializeAndMerge(hooks);
128
+ };
129
+ // Construct flow instance
130
+ context = new FlowClass(this.metadata, input, scope, appendContextHooks, deps);
131
+ // Now injections can materialize
132
+ contextReady = true;
133
+ // Initial registry hooks should not pre-empt stages; they just get registered
134
+ await materializeAndMerge(initialInjectedHooks, { orderStart: -1_000_000 });
135
+ // Refresh order base to be after everything currently present
136
+ orderBase =
137
+ Math.max(0, ...Object.values(stages).flatMap((list) => list.map((e) => e._order ?? 0))) + 1;
138
+ let responded;
139
+ // Robust list runner (doesn't skip mid-run insertions)
140
+ const runList = async (key, opts) => {
141
+ const getList = () => (stages[key] ?? []);
142
+ const seen = new Set();
143
+ while (true) {
144
+ const list = getList();
145
+ const item = list.find((e) => !seen.has(e));
146
+ if (!item)
147
+ break;
148
+ seen.add(item);
149
+ try {
150
+ await item.method(context);
151
+ }
152
+ catch (e) {
153
+ if (e instanceof common_1.FlowControl) {
154
+ if (e.type === 'respond') {
155
+ if (!opts?.ignoreRespond) {
156
+ responded = e.output;
157
+ return { outcome: 'respond', control: e };
158
+ }
159
+ continue;
160
+ }
161
+ return { outcome: e.type, control: e };
162
+ }
163
+ return { outcome: 'unknown_error', control: e };
164
+ }
165
+ }
166
+ return { outcome: 'ok' };
167
+ };
168
+ // Run exactly one stage in order: will → around → stage → did (did runs once)
169
+ const runOneStage = async (stageName, stopOnRespond) => {
170
+ // 1) willStage
171
+ {
172
+ const res = await runList(WILL(stageName));
173
+ if (res.outcome === 'respond' && stopOnRespond)
174
+ return res;
175
+ if (res.outcome !== 'ok' && res.outcome !== 'respond')
176
+ return res;
177
+ }
178
+ // 2) aroundStage (acts as pre-handlers unless you later add true wrapping)
179
+ {
180
+ const res = await runList(AROUND(stageName));
181
+ if (res.outcome === 'respond' && stopOnRespond)
182
+ return res;
183
+ if (res.outcome !== 'ok' && res.outcome !== 'respond')
184
+ return res;
185
+ }
186
+ // 3) stage
187
+ let bodyOutcome = { outcome: 'ok' };
188
+ {
189
+ const res = await runList(stageName, { ignoreRespond: false });
190
+ bodyOutcome = res;
191
+ if (res.outcome !== 'ok' && res.outcome !== 'respond') {
192
+ // fail/abort/next/handled/unknown → do NOT run did
193
+ // return res;/
194
+ throw res.control;
195
+ }
196
+ }
197
+ // 4) didStage (run once regardless of body respond)
198
+ {
199
+ const res = await runList(DID(stageName), { ignoreRespond: true });
200
+ if (res.outcome !== 'ok' && res.outcome !== 'respond')
201
+ return res;
202
+ }
203
+ if (bodyOutcome.outcome === 'respond')
204
+ return bodyOutcome;
205
+ return { outcome: 'ok' };
206
+ };
207
+ // IMPORTANT: ignore typed stage names in plan arrays.
208
+ // Only base stage names in the plan drive execution; typed hooks run *with* their base.
209
+ const runStageGroup = async (group, stopOnRespond, opts) => {
210
+ if (!group || group.length === 0)
211
+ return { outcome: 'ok' };
212
+ const seenBase = new Set();
213
+ for (const rawKey of group) {
214
+ const { base, type } = parseTypedKey(rawKey);
215
+ if (type) {
216
+ // Soft warning once per typed key occurrence (optional)
217
+ // console.warn(`[flow] Ignoring typed stage "${rawKey}" in plan; hooks will run with base "${base}".`);
218
+ continue; // Do not run typed keys as standalone stages
219
+ }
220
+ if (seenBase.has(base))
221
+ continue;
222
+ seenBase.add(base);
223
+ const res = await runOneStage(base, stopOnRespond);
224
+ if (res.outcome === 'respond') {
225
+ if (stopOnRespond)
226
+ return res;
227
+ // else keep going
228
+ }
229
+ else if (res.outcome !== 'ok') {
230
+ return res.control?.['output'] ?? res.outcome;
231
+ }
232
+ }
233
+ return { outcome: 'ok' };
234
+ };
235
+ const runErrorStage = async () => {
236
+ await runStageGroup(plan.error, false, { ignoreRespond: true });
237
+ };
238
+ const runFinalizeStage = async () => {
239
+ await runStageGroup(plan.finalize, false);
240
+ };
241
+ try {
242
+ // ---------- PRE ----------
243
+ {
244
+ const pre = await runStageGroup(plan.pre, true);
245
+ if (pre.outcome === 'respond') {
246
+ const post = await runStageGroup(plan.post, false);
247
+ if (post.outcome === 'unknown_error' || post.outcome === 'fail') {
248
+ try {
249
+ await runErrorStage();
250
+ }
251
+ finally {
252
+ await runFinalizeStage();
253
+ }
254
+ if (post.outcome === 'fail')
255
+ throw post.control;
256
+ throw post.control;
257
+ }
258
+ if (post.outcome === 'abort' || post.outcome === 'next' || post.outcome === 'handled') {
259
+ await runFinalizeStage();
260
+ throw post.control;
261
+ }
262
+ await runFinalizeStage();
263
+ return responded;
264
+ }
265
+ if (pre.outcome === 'unknown_error' || pre.outcome === 'fail') {
266
+ try {
267
+ await runErrorStage();
268
+ }
269
+ finally {
270
+ await runFinalizeStage();
271
+ }
272
+ if (pre.outcome === 'fail')
273
+ throw pre.control;
274
+ throw pre.control;
275
+ }
276
+ if (pre.outcome === 'abort' || pre.outcome === 'next' || pre.outcome === 'handled') {
277
+ await runFinalizeStage();
278
+ throw pre.control;
279
+ }
280
+ }
281
+ // ---------- EXECUTE ----------
282
+ if (!responded) {
283
+ const exec = await runStageGroup(plan.execute, true);
284
+ if (exec.outcome === 'respond') {
285
+ // continue to post + finalize
286
+ }
287
+ else if (exec.outcome === 'unknown_error' || exec.outcome === 'fail') {
288
+ try {
289
+ await runErrorStage();
290
+ }
291
+ finally {
292
+ await runFinalizeStage();
293
+ }
294
+ if (exec.outcome === 'fail')
295
+ throw exec.control;
296
+ throw exec.control;
297
+ }
298
+ else if (exec.outcome === 'abort' || exec.outcome === 'next' || exec.outcome === 'handled') {
299
+ await runFinalizeStage();
300
+ throw exec.control;
301
+ }
302
+ }
303
+ // ---------- POST ----------
304
+ {
305
+ const post = await runStageGroup(plan.post, false);
306
+ if (post.outcome === 'unknown_error' || post.outcome === 'fail') {
307
+ try {
308
+ await runErrorStage();
309
+ }
310
+ finally {
311
+ await runFinalizeStage();
312
+ }
313
+ if (post.outcome === 'fail')
314
+ throw post.control;
315
+ throw post.control;
316
+ }
317
+ if (post.outcome === 'abort' || post.outcome === 'next' || post.outcome === 'handled') {
318
+ await runFinalizeStage();
319
+ throw post.control;
320
+ }
321
+ }
322
+ // ---------- FINALIZE ----------
323
+ await runFinalizeStage();
324
+ return responded;
325
+ }
326
+ catch (e) {
327
+ throw e;
328
+ }
329
+ }
330
+ }
331
+ exports.FlowInstance = FlowInstance;
332
+ //# sourceMappingURL=flow.instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.instance.js","sourceRoot":"","sources":["../../../src/flows/flow.instance.ts"],"names":[],"mappings":"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","sourcesContent":["// noinspection ExceptionCaughtLocallyJS\n// flows/flow.instance.ts\n\nimport 'reflect-metadata';\nimport {\n FlowControl,\n FlowCtxOf,\n FlowEntry,\n FlowInputOf,\n FlowName,\n FlowOutputOf,\n FlowPlan,\n FlowRecord,\n FlowStagesOf,\n FlowType,\n HookEntry,\n HookMetadata,\n Reference,\n ServerRequest,\n Token,\n Type,\n} from '../common';\nimport ProviderRegistry from '../provider/provider.registry';\nimport {\n collectFlowHookMap,\n StageMap,\n cloneStageMap,\n mergeHookMetasIntoStageMap,\n} from './flow.stages';\nimport {writeHttpResponse} from '../server/server.validation';\nimport {Scope} from '../scope';\nimport HookRegistry from '../hooks/hook.registry';\nimport {rpcError} from \"../transport/transport.error\";\n\ntype StageOutcome =\n | 'ok'\n | 'respond'\n | 'next'\n | 'handled'\n | 'fail'\n | 'abort'\n | 'unknown_error';\n\ninterface StageResult {\n outcome: StageOutcome;\n control?: FlowControl | Error;\n}\n\nconst CAP = (s: string) => (s ? s[0].toUpperCase() + s.slice(1) : s);\nconst WILL = (s: string) => `will${CAP(s)}`;\nconst DID = (s: string) => `did${CAP(s)}`;\nconst AROUND = (s: string) => `around${CAP(s)}`;\n\nfunction parseTypedKey(k: string): { base: string; type?: 'will' | 'did' | 'around' } {\n const lc = k.toLowerCase();\n if (lc.startsWith('will') && k.length > 4) return {base: k.slice(4, 5).toLowerCase() + k.slice(5), type: 'will'};\n if (lc.startsWith('did') && k.length > 3) return {base: k.slice(3, 4).toLowerCase() + k.slice(4), type: 'did'};\n if (lc.startsWith('around') && k.length > 6) return {base: k.slice(6, 7).toLowerCase() + k.slice(7), type: 'around'};\n return {base: k};\n}\n\nexport class FlowInstance<Name extends FlowName> extends FlowEntry<Name> {\n readonly deps: Reference[];\n readonly globalProviders: ProviderRegistry;\n private plan: FlowPlan<never>;\n private FlowClass: FlowType;\n private stages: StageMap<FlowType>;\n private hooks: HookRegistry;\n\n constructor(\n scope: Scope,\n record: FlowRecord,\n deps: Set<Reference>,\n globalProviders: ProviderRegistry,\n ) {\n super(scope, record);\n this.deps = [...deps];\n this.globalProviders = globalProviders;\n this.FlowClass = this.record.provide;\n this.ready = this.initialize();\n this.plan = this.record.metadata.plan;\n this.hooks = scope.providers.getHooksRegistry();\n }\n\n protected async initialize() {\n const server = this.globalProviders.getActiveServer();\n\n this.stages = collectFlowHookMap(this.FlowClass);\n\n const {middleware} = this.metadata;\n if (middleware) {\n const path = typeof middleware.path === 'string' ? middleware.path : '';\n server.registerMiddleware(path, async (request, response, next) => {\n const canActivate = await this.canActivate(request);\n if (!canActivate) return next();\n\n try {\n const result = await this.run(\n {request, response, next} as any,\n new Map(),\n );\n if (result) return writeHttpResponse(response, result);\n } catch (e) {\n if (e instanceof FlowControl) {\n switch (e.type) {\n case 'abort':\n return writeHttpResponse(response, {kind: 'text', status: 500, body: 'Aborted'});\n case 'fail':\n return writeHttpResponse(response, {kind: 'text', status: 500, body: 'Internal Server Error'});\n case 'handled':\n return;\n case 'next':\n return next();\n case 'respond':\n return writeHttpResponse(response, e.output as any);\n }\n }\n // eslint-disable-next-line no-console\n console.error(e);\n return writeHttpResponse(response, {\n kind: 'text',\n status: 500,\n body: 'Internal Server Error',\n });\n }\n\n return next();\n });\n }\n\n return Promise.resolve();\n }\n\n async canActivate(request: ServerRequest): Promise<boolean> {\n if (this.method && request.method !== this.method) return false;\n\n const canActivate = this.metadata.middleware?.canActivate ?? [];\n if ((this.FlowClass as any)['canActivate']) {\n canActivate.push((this.FlowClass as any)['canActivate']);\n }\n if (canActivate.length === 0) return true;\n\n const results = await Promise.all(canActivate.map((m) => m(request, this.scope)));\n return results.every((r) => r);\n }\n\n async run(\n input: FlowInputOf<Name>,\n deps: Map<Token, Type>,\n ): Promise<FlowOutputOf<Name> | undefined> {\n const scope = this.globalProviders.getActiveScope();\n const {FlowClass, plan, name} = this;\n\n // Clone stages so we can merge injections safely per run.\n const baseStages = this.stages;\n let stages: StageMap<any> = cloneStageMap(baseStages);\n\n // Compute next order base after any class-defined entries.\n let orderBase =\n Math.max(\n 0,\n ...Object.values(stages).flatMap((list) => list.map((e: any) => e._order ?? 0)),\n ) + 1;\n\n const initialInjectedHooks =\n (this.hooks.getFlowHooks(name) as HookEntry<\n FlowInputOf<Name>,\n Name,\n FlowStagesOf<Name>,\n FlowCtxOf<Name>\n >[]) ?? [];\n\n let context: any;\n let contextReady = false;\n\n const materializeAndMerge = async (\n newHooks: HookEntry<FlowInputOf<Name>, Name, FlowStagesOf<Name>, FlowCtxOf<Name>>[],\n opts?: { orderStart?: number },\n ) => {\n if (!newHooks?.length || !contextReady) return;\n\n const metas: HookMetadata[] = [];\n for (const h of newHooks) {\n try {\n metas.push(h.metadata);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('[flow] Ignoring injected hook that failed to materialize:', e);\n }\n }\n\n if (metas.length) {\n const start = opts?.orderStart ?? orderBase;\n mergeHookMetasIntoStageMap(FlowClass, stages, metas, start);\n if (opts?.orderStart === undefined) orderBase += metas.length;\n }\n };\n\n const appendContextHooks = async (\n hooks: HookEntry<FlowInputOf<Name>, Name, FlowStagesOf<Name>, FlowCtxOf<Name>>[],\n ) => {\n await materializeAndMerge(hooks);\n };\n\n // Construct flow instance\n context = new FlowClass(this.metadata, input, scope, appendContextHooks, deps);\n\n // Now injections can materialize\n contextReady = true;\n\n // Initial registry hooks should not pre-empt stages; they just get registered\n await materializeAndMerge(initialInjectedHooks, {orderStart: -1_000_000});\n\n // Refresh order base to be after everything currently present\n orderBase =\n Math.max(\n 0,\n ...Object.values(stages).flatMap((list) => list.map((e: any) => e._order ?? 0)),\n ) + 1;\n\n let responded: FlowOutputOf<Name> | undefined;\n\n // Robust list runner (doesn't skip mid-run insertions)\n const runList = async (\n key: string,\n opts?: { ignoreRespond?: boolean },\n ): Promise<StageResult> => {\n const getList = () => ((stages as any)[key] ?? []) as Array<{ method: (ctx: any) => Promise<void> }>;\n const seen = new Set<any>();\n\n while (true) {\n const list = getList();\n const item = list.find((e) => !seen.has(e));\n if (!item) break;\n seen.add(item);\n\n try {\n await item.method(context);\n } catch (e: any) {\n if (e instanceof FlowControl) {\n if (e.type === 'respond') {\n if (!opts?.ignoreRespond) {\n responded = e.output as FlowOutputOf<Name>;\n return {outcome: 'respond', control: e};\n }\n continue;\n }\n return {outcome: e.type, control: e};\n }\n return {outcome: 'unknown_error', control: e as Error};\n }\n }\n return {outcome: 'ok'};\n };\n\n // Run exactly one stage in order: will → around → stage → did (did runs once)\n const runOneStage = async (\n stageName: string,\n stopOnRespond: boolean,\n ): Promise<StageResult> => {\n // 1) willStage\n {\n const res = await runList(WILL(stageName));\n if (res.outcome === 'respond' && stopOnRespond) return res;\n if (res.outcome !== 'ok' && res.outcome !== 'respond') return res;\n }\n\n // 2) aroundStage (acts as pre-handlers unless you later add true wrapping)\n {\n const res = await runList(AROUND(stageName));\n if (res.outcome === 'respond' && stopOnRespond) return res;\n if (res.outcome !== 'ok' && res.outcome !== 'respond') return res;\n }\n\n // 3) stage\n let bodyOutcome: StageResult = {outcome: 'ok'};\n {\n const res = await runList(stageName, {ignoreRespond: false});\n bodyOutcome = res;\n if (res.outcome !== 'ok' && res.outcome !== 'respond') {\n // fail/abort/next/handled/unknown → do NOT run did\n // return res;/\n throw res.control\n }\n }\n\n // 4) didStage (run once regardless of body respond)\n {\n const res = await runList(DID(stageName), {ignoreRespond: true});\n if (res.outcome !== 'ok' && res.outcome !== 'respond') return res;\n }\n\n if (bodyOutcome.outcome === 'respond') return bodyOutcome;\n return {outcome: 'ok'};\n };\n\n // IMPORTANT: ignore typed stage names in plan arrays.\n // Only base stage names in the plan drive execution; typed hooks run *with* their base.\n const runStageGroup = async (\n group: Array<string> | undefined,\n stopOnRespond: boolean,\n opts?: { ignoreRespond?: boolean },\n ): Promise<StageResult> => {\n if (!group || group.length === 0) return {outcome: 'ok'};\n\n const seenBase = new Set<string>();\n for (const rawKey of group) {\n const {base, type} = parseTypedKey(rawKey);\n if (type) {\n // Soft warning once per typed key occurrence (optional)\n // console.warn(`[flow] Ignoring typed stage \"${rawKey}\" in plan; hooks will run with base \"${base}\".`);\n continue; // Do not run typed keys as standalone stages\n }\n if (seenBase.has(base)) continue;\n seenBase.add(base);\n\n const res = await runOneStage(base, stopOnRespond);\n if (res.outcome === 'respond') {\n if (stopOnRespond) return res;\n // else keep going\n } else if (res.outcome !== 'ok') {\n return res.control?.['output'] ?? res.outcome;\n }\n }\n return {outcome: 'ok'};\n };\n\n const runErrorStage = async () => {\n await runStageGroup((plan as any).error, false, {ignoreRespond: true});\n };\n\n const runFinalizeStage = async () => {\n await runStageGroup((plan as any).finalize, false);\n };\n\n try {\n // ---------- PRE ----------\n {\n const pre = await runStageGroup((plan as any).pre, true);\n if (pre.outcome === 'respond') {\n const post = await runStageGroup((plan as any).post, false);\n if (post.outcome === 'unknown_error' || post.outcome === 'fail') {\n try {\n await runErrorStage();\n } finally {\n await runFinalizeStage();\n }\n if (post.outcome === 'fail') throw post.control!;\n throw post.control!;\n }\n if (post.outcome === 'abort' || post.outcome === 'next' || post.outcome === 'handled') {\n await runFinalizeStage();\n throw post.control as FlowControl;\n }\n await runFinalizeStage();\n return responded;\n }\n if (pre.outcome === 'unknown_error' || pre.outcome === 'fail') {\n try {\n await runErrorStage();\n } finally {\n await runFinalizeStage();\n }\n if (pre.outcome === 'fail') throw pre.control!;\n throw pre.control!;\n }\n if (pre.outcome === 'abort' || pre.outcome === 'next' || pre.outcome === 'handled') {\n await runFinalizeStage();\n throw pre.control as FlowControl;\n }\n }\n\n // ---------- EXECUTE ----------\n if (!responded) {\n const exec = await runStageGroup((plan as any).execute, true);\n if (exec.outcome === 'respond') {\n // continue to post + finalize\n } else if (exec.outcome === 'unknown_error' || exec.outcome === 'fail') {\n try {\n await runErrorStage();\n } finally {\n await runFinalizeStage();\n }\n if (exec.outcome === 'fail') throw exec.control!;\n throw exec.control!;\n } else if (exec.outcome === 'abort' || exec.outcome === 'next' || exec.outcome === 'handled') {\n await runFinalizeStage();\n throw exec.control as FlowControl;\n }\n }\n\n // ---------- POST ----------\n {\n const post = await runStageGroup((plan as any).post, false);\n if (post.outcome === 'unknown_error' || post.outcome === 'fail') {\n try {\n await runErrorStage();\n } finally {\n await runFinalizeStage();\n }\n if (post.outcome === 'fail') throw post.control!;\n throw post.control!;\n }\n if (post.outcome === 'abort' || post.outcome === 'next' || post.outcome === 'handled') {\n await runFinalizeStage();\n throw post.control as FlowControl;\n }\n }\n\n // ---------- FINALIZE ----------\n await runFinalizeStage();\n\n return responded;\n } catch (e) {\n throw e;\n }\n }\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import ProviderRegistry from '../provider/provider.registry';
2
+ import { RegistryAbstract, RegistryBuildMapResult } from '../regsitry';
3
+ import { FlowInputOf, FlowName, FlowOutputOf, FlowRecord, FlowType, Token, Type } from '../common';
4
+ import { FlowInstance } from './flow.instance';
5
+ export default class FlowRegistry extends RegistryAbstract<FlowInstance<FlowName>, FlowRecord, FlowType[]> {
6
+ constructor(providers: ProviderRegistry, list: FlowType[]);
7
+ protected buildMap(list: FlowType[]): RegistryBuildMapResult<FlowRecord>;
8
+ protected buildGraph(): void;
9
+ /** Instantiate adapters, run fetch/transform, and populate registries. */
10
+ protected initialize(): Promise<void>;
11
+ private initializeOne;
12
+ registryFlows(rawFlows: FlowType[]): Promise<void>;
13
+ runFlow<Name extends FlowName>(name: Name, input: FlowInputOf<Name>, deps?: Map<Token, Type>): Promise<FlowOutputOf<Name> | undefined>;
14
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const regsitry_1 = require("../regsitry");
4
+ const common_1 = require("../common");
5
+ const flow_utils_1 = require("./flow.utils");
6
+ const token_utils_1 = require("../utils/token.utils");
7
+ const flow_instance_1 = require("./flow.instance");
8
+ class FlowRegistry extends regsitry_1.RegistryAbstract {
9
+ constructor(providers, list) {
10
+ super('FlowRegistry', providers, list);
11
+ }
12
+ buildMap(list) {
13
+ const tokens = new Set();
14
+ const defs = new Map();
15
+ const graph = new Map();
16
+ for (const raw of list) {
17
+ const rec = (0, flow_utils_1.normalizeFlow)(raw);
18
+ const provide = rec.provide;
19
+ tokens.add(provide);
20
+ defs.set(provide, rec);
21
+ graph.set(provide, new Set());
22
+ }
23
+ return { tokens, defs, graph };
24
+ }
25
+ buildGraph() {
26
+ for (const token of this.tokens) {
27
+ const rec = this.defs.get(token);
28
+ const deps = rec.metadata.dependsOn ?? [];
29
+ for (const d of deps) {
30
+ if (d == common_1.ScopeEntry) {
31
+ this.graph.get(token).add(common_1.ScopeEntry);
32
+ }
33
+ else {
34
+ if (!this.providers.get(d)) {
35
+ throw new Error(`Adapter ${(0, token_utils_1.tokenName)(token)} depends on ${(0, token_utils_1.tokenName)(d)}, which is not registered.`);
36
+ }
37
+ this.graph.get(token).add(d);
38
+ }
39
+ }
40
+ }
41
+ }
42
+ /** Instantiate adapters, run fetch/transform, and populate registries. */
43
+ async initialize() {
44
+ const readyArr = [];
45
+ for (const token of this.tokens) {
46
+ const instance = this.initializeOne(token);
47
+ readyArr.push(instance.ready);
48
+ }
49
+ await Promise.all(readyArr);
50
+ }
51
+ initializeOne(token) {
52
+ const rec = this.defs.get(token);
53
+ const deps = this.graph.get(token);
54
+ const instance = new flow_instance_1.FlowInstance(this.providers.getActiveScope(), rec, deps, this.providers);
55
+ this.instances.set(rec.metadata.name, instance);
56
+ return instance;
57
+ }
58
+ async registryFlows(rawFlows) {
59
+ const readyArr = [];
60
+ for (const raw of rawFlows) {
61
+ const rec = (0, flow_utils_1.normalizeFlow)(raw);
62
+ const provide = rec.provide;
63
+ this.tokens.add(provide);
64
+ this.defs.set(provide, rec);
65
+ this.graph.set(provide, new Set());
66
+ readyArr.push(this.initializeOne(provide).ready);
67
+ }
68
+ await Promise.all(readyArr);
69
+ }
70
+ runFlow(name, input, deps) {
71
+ const flow = this.instances.get(name);
72
+ if (!flow) {
73
+ throw new Error(`Flow ${name} is not registered`);
74
+ }
75
+ return flow.run(input, deps ?? new Map());
76
+ }
77
+ }
78
+ exports.default = FlowRegistry;
79
+ //# sourceMappingURL=flow.registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.registry.js","sourceRoot":"","sources":["../../../src/flows/flow.registry.ts"],"names":[],"mappings":"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","sourcesContent":["import ProviderRegistry from '../provider/provider.registry';\nimport { RegistryAbstract, RegistryBuildMapResult } from '../regsitry';\nimport { FlowInputOf, FlowName, FlowOutputOf, FlowRecord, FlowType, ScopeEntry, Token, Type } from '../common';\nimport { normalizeFlow } from './flow.utils';\nimport { tokenName } from '../utils/token.utils';\nimport { FlowInstance } from './flow.instance';\n\nexport default class FlowRegistry extends RegistryAbstract<FlowInstance<FlowName>, FlowRecord, FlowType[]> {\n constructor(providers: ProviderRegistry, list: FlowType[]) {\n super('FlowRegistry', providers, list);\n }\n\n protected override buildMap(list: FlowType[]): RegistryBuildMapResult<FlowRecord> {\n const tokens = new Set<Token>();\n const defs = new Map<Token, FlowRecord>();\n const graph = new Map<Token, Set<Token>>();\n\n for (const raw of list) {\n const rec = normalizeFlow(raw);\n const provide = rec.provide;\n tokens.add(provide);\n defs.set(provide, rec);\n graph.set(provide, new Set());\n }\n\n return { tokens, defs, graph };\n }\n\n\n protected buildGraph() {\n for (const token of this.tokens) {\n const rec = this.defs.get(token)!;\n const deps = rec.metadata.dependsOn ?? [];\n\n for (const d of deps) {\n if (d == ScopeEntry) {\n this.graph.get(token)!.add(ScopeEntry);\n } else {\n if (!this.providers.get(d)) {\n throw new Error(`Adapter ${tokenName(token)} depends on ${tokenName(d)}, which is not registered.`);\n }\n this.graph.get(token)!.add(d);\n }\n }\n }\n }\n\n /** Instantiate adapters, run fetch/transform, and populate registries. */\n protected async initialize(): Promise<void> {\n\n const readyArr: Promise<void>[] = [];\n for (const token of this.tokens) {\n const instance = this.initializeOne(token);\n readyArr.push(instance.ready);\n }\n await Promise.all(readyArr);\n }\n\n private initializeOne(token: Token) {\n const rec = this.defs.get(token)!;\n const deps = this.graph.get(token)!;\n\n const instance = new FlowInstance(this.providers.getActiveScope(), rec, deps, this.providers);\n this.instances.set(rec.metadata.name, instance);\n return instance;\n }\n\n\n async registryFlows(rawFlows: FlowType[]): Promise<void> {\n const readyArr: Promise<void>[] = [];\n for (const raw of rawFlows) {\n const rec = normalizeFlow(raw);\n const provide = rec.provide;\n this.tokens.add(provide);\n this.defs.set(provide, rec);\n this.graph.set(provide, new Set());\n readyArr.push(this.initializeOne(provide).ready);\n }\n await Promise.all(readyArr);\n }\n\n\n runFlow<Name extends FlowName>(name: Name, input: FlowInputOf<Name>, deps?: Map<Token, Type>): Promise<FlowOutputOf<Name> | undefined> {\n const flow = this.instances.get(name);\n if (!flow) {\n throw new Error(`Flow ${name} is not registered`);\n }\n return flow.run(input, deps ?? new Map());\n }\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import { HookMetadata } from '../common';
2
+ export type StageEntry<C> = {
3
+ method: (ctx: C) => Promise<void>;
4
+ _priority: number;
5
+ _order: number;
6
+ };
7
+ export type StageMap<C> = Record<string, StageEntry<C>[]>;
8
+ export declare function sortStageMap<C>(table: StageMap<C>): void;
9
+ export declare function cloneStageMap<C>(table: StageMap<C>): StageMap<C>;
10
+ export declare function resolveStageKey(type: HookMetadata['type'], stage: string): string;
11
+ export declare function collectFlowHookMap<C>(FlowClass: any): StageMap<C>;
12
+ export declare function mergeHookMetasIntoStageMap<C>(FlowClass: any, table: StageMap<C>, metas: HookMetadata[], orderStart?: number): void;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortStageMap = sortStageMap;
4
+ exports.cloneStageMap = cloneStageMap;
5
+ exports.resolveStageKey = resolveStageKey;
6
+ exports.collectFlowHookMap = collectFlowHookMap;
7
+ exports.mergeHookMetasIntoStageMap = mergeHookMetasIntoStageMap;
8
+ const common_1 = require("../common");
9
+ const cap = (s) => (s ? s[0].toUpperCase() + s.slice(1) : s);
10
+ const CACHE = new WeakMap();
11
+ function sortStageMap(table) {
12
+ for (const key of Object.keys(table)) {
13
+ table[key].sort((a, b) => a._priority - b._priority || a._order - b._order);
14
+ }
15
+ }
16
+ function cloneStageMap(table) {
17
+ const out = {};
18
+ for (const [k, v] of Object.entries(table))
19
+ out[k] = v.slice();
20
+ return out;
21
+ }
22
+ function resolveStageKey(type, stage) {
23
+ return type === 'will'
24
+ ? `will${cap(stage)}`
25
+ : type === 'did'
26
+ ? `did${cap(stage)}`
27
+ : type === 'around'
28
+ ? `around${cap(stage)}`
29
+ : stage;
30
+ }
31
+ function collectFlowHookMap(FlowClass) {
32
+ const cached = CACHE.get(FlowClass);
33
+ if (cached)
34
+ return cached;
35
+ const metas = (Reflect.getMetadata(common_1.FrontMcpFlowHookTokens.hooks, FlowClass) ?? []);
36
+ const sorted = metas
37
+ .map((m, i) => ({ m, i }))
38
+ .sort((a, b) => (a.m.priority ?? 0) - (b.m.priority ?? 0) || a.i - b.i)
39
+ .map(x => x.m);
40
+ const table = {};
41
+ let order = 0;
42
+ for (const m of sorted) {
43
+ const resolved = resolveStageKey(m.type, m.stage);
44
+ const entry = {
45
+ _priority: m.priority ?? 0,
46
+ _order: order++,
47
+ method: async (ctx) => {
48
+ const target = m.static ? FlowClass : ctx;
49
+ const impl = typeof m.method === 'function'
50
+ ? m.method
51
+ : target?.[m.method];
52
+ if (typeof impl !== 'function')
53
+ return;
54
+ if (m.filter && !(await m.filter(ctx)))
55
+ return;
56
+ if (m.type === 'around') {
57
+ const next = async () => {
58
+ };
59
+ return m.static ? impl.call(FlowClass, ctx, next) : impl.call(ctx, ctx, next);
60
+ }
61
+ else {
62
+ return m.static ? impl.call(FlowClass, ctx) : impl.call(ctx, ctx);
63
+ }
64
+ },
65
+ };
66
+ (table[resolved] ??= []).push(entry);
67
+ }
68
+ sortStageMap(table);
69
+ CACHE.set(FlowClass, table);
70
+ return table;
71
+ }
72
+ function mergeHookMetasIntoStageMap(FlowClass, table, metas, orderStart = 100_000) {
73
+ let order = orderStart;
74
+ const sorted = metas
75
+ .map((m, i) => ({ m, i }))
76
+ .sort((a, b) => (a.m.priority ?? 0) - (b.m.priority ?? 0) || a.i - b.i)
77
+ .map(x => x.m);
78
+ for (const m of sorted) {
79
+ const resolved = resolveStageKey(m.type, m.stage);
80
+ const entry = {
81
+ _priority: m.priority ?? 0,
82
+ _order: order++,
83
+ method: async (ctx) => {
84
+ const target = m.target;
85
+ if (!target) {
86
+ console.warn(`[flow] Hook target is missing for method ${m.method}`);
87
+ return;
88
+ }
89
+ const impl = typeof m.method === 'function'
90
+ ? m.method
91
+ : target?.[m.method].bind(target);
92
+ if (typeof impl !== 'function')
93
+ return;
94
+ if (m.filter && !(await m.filter(ctx)))
95
+ return;
96
+ if (m.type === 'around') {
97
+ const next = async () => {
98
+ };
99
+ return m.static ? impl.call(target, ctx, next) : impl.call(target, ctx, next);
100
+ }
101
+ else {
102
+ return m.static ? impl.call(target, ctx) : impl.call(target, ctx);
103
+ }
104
+ },
105
+ };
106
+ (table[resolved] ??= []).push(entry);
107
+ }
108
+ sortStageMap(table);
109
+ }
110
+ //# sourceMappingURL=flow.stages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.stages.js","sourceRoot":"","sources":["../../../src/flows/flow.stages.ts"],"names":[],"mappings":"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","sourcesContent":["import {HookMetadata, FrontMcpFlowHookTokens} from '../common';\n\nexport type StageEntry<C> = {\n method: (ctx: C) => Promise<void>;\n _priority: number;\n _order: number;\n};\n\nexport type StageMap<C> = Record<string, StageEntry<C>[]>;\n\nconst cap = (s: string) => (s ? s[0].toUpperCase() + s.slice(1) : s);\n\nconst CACHE: WeakMap<Function, StageMap<any>> = new WeakMap();\n\nexport function sortStageMap<C>(table: StageMap<C>) {\n for (const key of Object.keys(table)) {\n table[key].sort((a, b) => a._priority - b._priority || a._order - b._order);\n }\n}\n\nexport function cloneStageMap<C>(table: StageMap<C>): StageMap<C> {\n const out: StageMap<C> = {};\n for (const [k, v] of Object.entries(table)) out[k] = v.slice();\n return out;\n}\n\nexport function resolveStageKey(type: HookMetadata['type'], stage: string) {\n return type === 'will'\n ? `will${cap(stage)}`\n : type === 'did'\n ? `did${cap(stage)}`\n : type === 'around'\n ? `around${cap(stage)}`\n : stage;\n}\n\nexport function collectFlowHookMap<C>(FlowClass: any): StageMap<C> {\n const cached = CACHE.get(FlowClass as any);\n if (cached) return cached;\n\n const metas = (Reflect.getMetadata(FrontMcpFlowHookTokens.hooks, FlowClass) ?? []) as HookMetadata[];\n\n const sorted = metas\n .map((m, i) => ({m, i}))\n .sort((a, b) => (a.m.priority ?? 0) - (b.m.priority ?? 0) || a.i - b.i)\n .map(x => x.m);\n\n const table: StageMap<C> = {};\n let order = 0;\n\n for (const m of sorted) {\n const resolved = resolveStageKey(m.type, m.stage);\n\n const entry: StageEntry<C> = {\n _priority: m.priority ?? 0,\n _order: order++,\n method: async (ctx: any) => {\n const target = m.static ? (FlowClass as any) : ctx;\n const impl =\n typeof (m as any).method === 'function'\n ? (m as any).method\n : target?.[m.method as keyof typeof target];\n\n if (typeof impl !== 'function') return;\n if (m.filter && !(await m.filter(ctx))) return;\n\n if (m.type === 'around') {\n const next = async () => {\n };\n return m.static ? impl.call(FlowClass, ctx, next) : impl.call(ctx, ctx, next);\n } else {\n return m.static ? impl.call(FlowClass, ctx) : impl.call(ctx, ctx);\n }\n },\n };\n\n (table[resolved] ??= []).push(entry);\n }\n\n sortStageMap(table);\n CACHE.set(FlowClass as any, table);\n return table;\n}\n\nexport function mergeHookMetasIntoStageMap<C>(\n FlowClass: any,\n table: StageMap<C>,\n metas: HookMetadata[],\n orderStart = 100_000,\n) {\n let order = orderStart;\n\n const sorted = metas\n .map((m, i) => ({m, i}))\n .sort((a, b) => (a.m.priority ?? 0) - (b.m.priority ?? 0) || a.i - b.i)\n .map(x => x.m);\n\n for (const m of sorted) {\n const resolved = resolveStageKey(m.type, m.stage);\n\n const entry: StageEntry<C> = {\n _priority: m.priority ?? 0,\n _order: order++,\n method: async (ctx: any) => {\n const target = m.target;\n if (!target) {\n console.warn(`[flow] Hook target is missing for method ${m.method}`);\n return;\n }\n const impl =\n typeof (m as any).method === 'function'\n ? (m as any).method\n : target?.[m.method as keyof typeof target].bind(target);\n\n if (typeof impl !== 'function') return;\n if (m.filter && !(await m.filter(ctx))) return;\n\n if (m.type === 'around') {\n const next = async () => {\n };\n return m.static ? impl.call(target, ctx, next) : impl.call(target, ctx, next);\n } else {\n return m.static ? impl.call(target, ctx) : impl.call(target, ctx);\n }\n },\n };\n\n (table[resolved] ??= []).push(entry);\n }\n\n sortStageMap(table);\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { FlowMetadata, FlowRecord, FlowType, Token } from '../common';
2
+ export declare function collectFlowMetadata(cls: FlowType): FlowMetadata<never>;
3
+ export declare function normalizeFlow(item: FlowType): FlowRecord;
4
+ /**
5
+ * For graph/cycle detection. Returns dependency tokens that should be graphed.
6
+ * - CLASS_TOKEN: deps come from the class constructor
7
+ */
8
+ export declare function flowDiscoveryDeps(rec: FlowRecord): Token[];