@frontmcp/sdk 0.4.1 → 0.5.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 (558) hide show
  1. package/README.md +30 -18
  2. package/package.json +20 -5
  3. package/src/app/app.registry.d.ts +3 -2
  4. package/src/app/app.registry.js +3 -1
  5. package/src/app/app.registry.js.map +1 -1
  6. package/src/app/instances/app.local.instance.js +2 -2
  7. package/src/app/instances/app.local.instance.js.map +1 -1
  8. package/src/auth/auth.registry.d.ts +34 -2
  9. package/src/auth/auth.registry.js +162 -24
  10. package/src/auth/auth.registry.js.map +1 -1
  11. package/src/auth/auth.utils.js +8 -9
  12. package/src/auth/auth.utils.js.map +1 -1
  13. package/src/auth/authorization/authorization.class.d.ts +125 -0
  14. package/src/auth/authorization/authorization.class.js +224 -0
  15. package/src/auth/authorization/authorization.class.js.map +1 -0
  16. package/src/auth/authorization/authorization.types.d.ts +300 -0
  17. package/src/auth/authorization/authorization.types.js +79 -0
  18. package/src/auth/authorization/authorization.types.js.map +1 -0
  19. package/src/auth/authorization/index.d.ts +5 -0
  20. package/src/auth/authorization/index.js +19 -0
  21. package/src/auth/authorization/index.js.map +1 -0
  22. package/src/auth/authorization/orchestrated.authorization.d.ts +242 -0
  23. package/src/auth/authorization/orchestrated.authorization.js +306 -0
  24. package/src/auth/authorization/orchestrated.authorization.js.map +1 -0
  25. package/src/auth/authorization/public.authorization.d.ts +91 -0
  26. package/src/auth/authorization/public.authorization.js +132 -0
  27. package/src/auth/authorization/public.authorization.js.map +1 -0
  28. package/src/auth/authorization/transparent.authorization.d.ts +130 -0
  29. package/src/auth/authorization/transparent.authorization.js +147 -0
  30. package/src/auth/authorization/transparent.authorization.js.map +1 -0
  31. package/src/auth/consent/consent.types.d.ts +111 -0
  32. package/src/auth/consent/consent.types.js +119 -0
  33. package/src/auth/consent/consent.types.js.map +1 -0
  34. package/src/auth/consent/index.d.ts +1 -0
  35. package/src/auth/consent/index.js +13 -0
  36. package/src/auth/consent/index.js.map +1 -0
  37. package/src/auth/detection/auth-provider-detection.d.ts +84 -0
  38. package/src/auth/detection/auth-provider-detection.js +230 -0
  39. package/src/auth/detection/auth-provider-detection.js.map +1 -0
  40. package/src/auth/detection/index.d.ts +1 -0
  41. package/src/auth/detection/index.js +15 -0
  42. package/src/auth/detection/index.js.map +1 -0
  43. package/src/auth/flows/auth.verify.flow.d.ts +110 -0
  44. package/src/auth/flows/auth.verify.flow.js +379 -0
  45. package/src/auth/flows/auth.verify.flow.js.map +1 -0
  46. package/src/auth/flows/oauth.authorize.flow.d.ts +118 -164
  47. package/src/auth/flows/oauth.authorize.flow.js +701 -33
  48. package/src/auth/flows/oauth.authorize.flow.js.map +1 -1
  49. package/src/auth/flows/oauth.callback.flow.d.ts +117 -0
  50. package/src/auth/flows/oauth.callback.flow.js +357 -0
  51. package/src/auth/flows/oauth.callback.flow.js.map +1 -0
  52. package/src/auth/flows/oauth.register.flow.d.ts +32 -125
  53. package/src/auth/flows/oauth.token.flow.d.ts +52 -154
  54. package/src/auth/flows/oauth.token.flow.js +193 -55
  55. package/src/auth/flows/oauth.token.flow.js.map +1 -1
  56. package/src/auth/flows/session.verify.flow.d.ts +66 -321
  57. package/src/auth/flows/session.verify.flow.js +107 -18
  58. package/src/auth/flows/session.verify.flow.js.map +1 -1
  59. package/src/auth/flows/well-known.jwks.flow.d.ts +34 -205
  60. package/src/auth/flows/well-known.jwks.flow.js +15 -8
  61. package/src/auth/flows/well-known.jwks.flow.js.map +1 -1
  62. package/src/auth/flows/well-known.oauth-authorization-server.flow.d.ts +48 -223
  63. package/src/auth/flows/well-known.oauth-authorization-server.flow.js +2 -3
  64. package/src/auth/flows/well-known.oauth-authorization-server.flow.js.map +1 -1
  65. package/src/auth/flows/well-known.prm.flow.d.ts +19 -120
  66. package/src/auth/flows/well-known.prm.flow.js +3 -4
  67. package/src/auth/flows/well-known.prm.flow.js.map +1 -1
  68. package/src/auth/instances/instance.local-primary-auth.d.ts +91 -4
  69. package/src/auth/instances/instance.local-primary-auth.js +236 -6
  70. package/src/auth/instances/instance.local-primary-auth.js.map +1 -1
  71. package/src/auth/instances/instance.remote-primary-auth.d.ts +4 -3
  72. package/src/auth/instances/instance.remote-primary-auth.js +2 -2
  73. package/src/auth/instances/instance.remote-primary-auth.js.map +1 -1
  74. package/src/auth/session/authorization-vault.d.ts +611 -0
  75. package/src/auth/session/authorization-vault.js +817 -0
  76. package/src/auth/session/authorization-vault.js.map +1 -0
  77. package/src/auth/session/authorization.store.d.ts +301 -0
  78. package/src/auth/session/authorization.store.js +323 -0
  79. package/src/auth/session/authorization.store.js.map +1 -0
  80. package/src/auth/session/encrypted-authorization-vault.d.ts +181 -0
  81. package/src/auth/session/encrypted-authorization-vault.js +493 -0
  82. package/src/auth/session/encrypted-authorization-vault.js.map +1 -0
  83. package/src/auth/session/index.d.ts +4 -4
  84. package/src/auth/session/index.js +11 -7
  85. package/src/auth/session/index.js.map +1 -1
  86. package/src/auth/session/session.schema.d.ts +1 -1
  87. package/src/auth/session/session.service.d.ts +1 -1
  88. package/src/auth/session/transport-session.manager.d.ts +101 -0
  89. package/src/auth/session/transport-session.manager.js +300 -0
  90. package/src/auth/session/transport-session.manager.js.map +1 -0
  91. package/src/auth/session/transport-session.types.d.ts +457 -0
  92. package/src/auth/session/transport-session.types.js +110 -0
  93. package/src/auth/session/transport-session.types.js.map +1 -0
  94. package/src/auth/session/utils/session-id.utils.d.ts +14 -2
  95. package/src/auth/session/utils/session-id.utils.js +68 -19
  96. package/src/auth/session/utils/session-id.utils.js.map +1 -1
  97. package/src/auth/session/vault-encryption.d.ts +189 -0
  98. package/src/auth/session/vault-encryption.js +263 -0
  99. package/src/auth/session/vault-encryption.js.map +1 -0
  100. package/src/auth/ui/base-layout.d.ts +188 -0
  101. package/src/auth/ui/base-layout.js +292 -0
  102. package/src/auth/ui/base-layout.js.map +1 -0
  103. package/src/auth/ui/htmx-templates.d.ts +135 -0
  104. package/src/auth/ui/htmx-templates.js +433 -0
  105. package/src/auth/ui/htmx-templates.js.map +1 -0
  106. package/src/auth/ui/index.d.ts +11 -0
  107. package/src/auth/ui/index.js +35 -0
  108. package/src/auth/ui/index.js.map +1 -0
  109. package/src/auth/utils/audience.validator.d.ts +129 -0
  110. package/src/auth/utils/audience.validator.js +196 -0
  111. package/src/auth/utils/audience.validator.js.map +1 -0
  112. package/src/auth/utils/index.d.ts +2 -0
  113. package/src/auth/utils/index.js +7 -0
  114. package/src/auth/utils/index.js.map +1 -0
  115. package/src/auth/utils/www-authenticate.utils.d.ts +97 -0
  116. package/src/auth/utils/www-authenticate.utils.js +183 -0
  117. package/src/auth/utils/www-authenticate.utils.js.map +1 -0
  118. package/src/common/common.schema.d.ts +2 -16
  119. package/src/common/constants.d.ts +3 -0
  120. package/src/common/constants.js +6 -1
  121. package/src/common/constants.js.map +1 -1
  122. package/src/common/decorators/decorator-utils.d.ts +131 -0
  123. package/src/common/decorators/decorator-utils.js +195 -0
  124. package/src/common/decorators/decorator-utils.js.map +1 -0
  125. package/src/common/decorators/front-mcp.decorator.js +3 -2
  126. package/src/common/decorators/front-mcp.decorator.js.map +1 -1
  127. package/src/common/decorators/hook.decorator.d.ts +58 -2
  128. package/src/common/decorators/hook.decorator.js +127 -17
  129. package/src/common/decorators/hook.decorator.js.map +1 -1
  130. package/src/common/decorators/plugin.decorator.d.ts +1 -1
  131. package/src/common/decorators/plugin.decorator.js +11 -10
  132. package/src/common/decorators/plugin.decorator.js.map +1 -1
  133. package/src/common/decorators/resource.decorator.d.ts +32 -3
  134. package/src/common/decorators/resource.decorator.js +46 -4
  135. package/src/common/decorators/resource.decorator.js.map +1 -1
  136. package/src/common/decorators/tool.decorator.d.ts +54 -5
  137. package/src/common/decorators/tool.decorator.js.map +1 -1
  138. package/src/common/dynamic/dynamic.plugin.d.ts +22 -11
  139. package/src/common/dynamic/dynamic.plugin.js +7 -1
  140. package/src/common/dynamic/dynamic.plugin.js.map +1 -1
  141. package/src/common/entries/prompt.entry.d.ts +46 -2
  142. package/src/common/entries/prompt.entry.js +10 -0
  143. package/src/common/entries/prompt.entry.js.map +1 -1
  144. package/src/common/entries/resource.entry.d.ts +69 -6
  145. package/src/common/entries/resource.entry.js +27 -3
  146. package/src/common/entries/resource.entry.js.map +1 -1
  147. package/src/common/entries/scope.entry.d.ts +5 -1
  148. package/src/common/entries/scope.entry.js +3 -3
  149. package/src/common/entries/scope.entry.js.map +1 -1
  150. package/src/common/flow/flow.utils.d.ts +56 -0
  151. package/src/common/flow/flow.utils.js +96 -0
  152. package/src/common/flow/flow.utils.js.map +1 -0
  153. package/src/common/index.d.ts +2 -2
  154. package/src/common/index.js +2 -2
  155. package/src/common/index.js.map +1 -1
  156. package/src/common/interfaces/execution-context.interface.d.ts +59 -0
  157. package/src/common/interfaces/execution-context.interface.js +81 -0
  158. package/src/common/interfaces/execution-context.interface.js.map +1 -0
  159. package/src/common/interfaces/flow.interface.d.ts +1 -1
  160. package/src/common/interfaces/flow.interface.js.map +1 -1
  161. package/src/common/interfaces/index.d.ts +1 -0
  162. package/src/common/interfaces/index.js +1 -0
  163. package/src/common/interfaces/index.js.map +1 -1
  164. package/src/common/interfaces/internal/primary-auth-provider.interface.d.ts +17 -2
  165. package/src/common/interfaces/internal/primary-auth-provider.interface.js +52 -4
  166. package/src/common/interfaces/internal/primary-auth-provider.interface.js.map +1 -1
  167. package/src/common/interfaces/internal/registry.interface.d.ts +16 -2
  168. package/src/common/interfaces/internal/registry.interface.js.map +1 -1
  169. package/src/common/interfaces/plugin.interface.js.map +1 -1
  170. package/src/common/interfaces/prompt.interface.d.ts +53 -4
  171. package/src/common/interfaces/prompt.interface.js +78 -0
  172. package/src/common/interfaces/prompt.interface.js.map +1 -1
  173. package/src/common/interfaces/resource.interface.d.ts +47 -17
  174. package/src/common/interfaces/resource.interface.js +53 -0
  175. package/src/common/interfaces/resource.interface.js.map +1 -1
  176. package/src/common/interfaces/tool.interface.d.ts +39 -22
  177. package/src/common/interfaces/tool.interface.js +61 -34
  178. package/src/common/interfaces/tool.interface.js.map +1 -1
  179. package/src/common/metadata/adapter.metadata.d.ts +1 -9
  180. package/src/common/metadata/app.metadata.d.ts +425 -730
  181. package/src/common/metadata/auth-provider.metadata.d.ts +2 -12
  182. package/src/common/metadata/flow.metadata.d.ts +10 -25
  183. package/src/common/metadata/front-mcp.metadata.d.ts +602 -1023
  184. package/src/common/metadata/front-mcp.metadata.js +6 -4
  185. package/src/common/metadata/front-mcp.metadata.js.map +1 -1
  186. package/src/common/metadata/hook.metadata.d.ts +1 -1
  187. package/src/common/metadata/hook.metadata.js.map +1 -1
  188. package/src/common/metadata/index.d.ts +1 -0
  189. package/src/common/metadata/index.js +1 -0
  190. package/src/common/metadata/index.js.map +1 -1
  191. package/src/common/metadata/logger.metadata.d.ts +1 -9
  192. package/src/common/metadata/plugin.metadata.d.ts +8 -30
  193. package/src/common/metadata/prompt.metadata.d.ts +4 -161
  194. package/src/common/metadata/provider.metadata.d.ts +2 -12
  195. package/src/common/metadata/resource.metadata.d.ts +6 -98
  196. package/src/common/metadata/resource.metadata.js +15 -6
  197. package/src/common/metadata/resource.metadata.js.map +1 -1
  198. package/src/common/metadata/tool-ui.metadata.d.ts +10 -0
  199. package/src/common/metadata/tool-ui.metadata.js +12 -0
  200. package/src/common/metadata/tool-ui.metadata.js.map +1 -0
  201. package/src/common/metadata/tool.metadata.d.ts +78 -199
  202. package/src/common/metadata/tool.metadata.js +11 -14
  203. package/src/common/metadata/tool.metadata.js.map +1 -1
  204. package/src/common/providers/base-config.provider.d.ts +84 -0
  205. package/src/common/providers/base-config.provider.js +128 -0
  206. package/src/common/providers/base-config.provider.js.map +1 -0
  207. package/src/common/records/plugin.record.d.ts +5 -6
  208. package/src/common/records/plugin.record.js.map +1 -1
  209. package/src/common/records/prompt.record.js.map +1 -1
  210. package/src/common/records/resource.record.d.ts +17 -1
  211. package/src/common/records/resource.record.js +12 -6
  212. package/src/common/records/resource.record.js.map +1 -1
  213. package/src/common/records/tool.record.js.map +1 -1
  214. package/src/common/schemas/annotated-class.schema.d.ts +9 -9
  215. package/src/common/schemas/annotated-class.schema.js +92 -27
  216. package/src/common/schemas/annotated-class.schema.js.map +1 -1
  217. package/src/common/schemas/http-input.schema.d.ts +6 -30
  218. package/src/common/schemas/http-output.schema.d.ts +326 -1630
  219. package/src/common/schemas/http-output.schema.js +39 -1
  220. package/src/common/schemas/http-output.schema.js.map +1 -1
  221. package/src/common/tokens/front-mcp.tokens.js +4 -1
  222. package/src/common/tokens/front-mcp.tokens.js.map +1 -1
  223. package/src/common/tokens/resource.tokens.d.ts +2 -0
  224. package/src/common/tokens/resource.tokens.js +4 -1
  225. package/src/common/tokens/resource.tokens.js.map +1 -1
  226. package/src/common/tokens/tool.tokens.d.ts +2 -0
  227. package/src/common/tokens/tool.tokens.js +2 -0
  228. package/src/common/tokens/tool.tokens.js.map +1 -1
  229. package/src/common/types/auth/jwt.types.d.ts +5 -31
  230. package/src/common/types/auth/session.types.d.ts +97 -192
  231. package/src/common/types/auth/session.types.js +24 -11
  232. package/src/common/types/auth/session.types.js.map +1 -1
  233. package/src/common/types/options/auth.options.d.ts +1013 -490
  234. package/src/common/types/options/auth.options.js +554 -36
  235. package/src/common/types/options/auth.options.js.map +1 -1
  236. package/src/common/types/options/http.options.d.ts +1 -9
  237. package/src/common/types/options/logging.options.d.ts +7 -13
  238. package/src/common/types/options/logging.options.js +4 -0
  239. package/src/common/types/options/logging.options.js.map +1 -1
  240. package/src/common/types/options/server-info.options.d.ts +3 -31
  241. package/src/common/types/options/session.options.d.ts +90 -10
  242. package/src/common/types/options/session.options.js +26 -3
  243. package/src/common/types/options/session.options.js.map +1 -1
  244. package/src/common/utils/decide-request-intent.utils.d.ts +8 -46
  245. package/src/common/utils/decide-request-intent.utils.js +88 -23
  246. package/src/common/utils/decide-request-intent.utils.js.map +1 -1
  247. package/src/completion/flows/complete.flow.d.ts +74 -0
  248. package/src/completion/flows/complete.flow.js +199 -0
  249. package/src/completion/flows/complete.flow.js.map +1 -0
  250. package/src/errors/authorization-required.error.d.ts +189 -0
  251. package/src/errors/authorization-required.error.js +274 -0
  252. package/src/errors/authorization-required.error.js.map +1 -0
  253. package/src/errors/index.d.ts +2 -1
  254. package/src/errors/index.js +17 -1
  255. package/src/errors/index.js.map +1 -1
  256. package/src/errors/mcp.error.d.ts +101 -1
  257. package/src/errors/mcp.error.js +147 -2
  258. package/src/errors/mcp.error.js.map +1 -1
  259. package/src/flows/flow.instance.js +4 -3
  260. package/src/flows/flow.instance.js.map +1 -1
  261. package/src/flows/flow.registry.js.map +1 -1
  262. package/src/flows/flow.stages.js +14 -11
  263. package/src/flows/flow.stages.js.map +1 -1
  264. package/src/front-mcp/front-mcp.providers.d.ts +464 -102
  265. package/src/front-mcp/front-mcp.providers.js +3 -5
  266. package/src/front-mcp/front-mcp.providers.js.map +1 -1
  267. package/src/hooks/hook.instance.d.ts +1 -1
  268. package/src/hooks/hook.instance.js +5 -2
  269. package/src/hooks/hook.instance.js.map +1 -1
  270. package/src/hooks/hook.registry.js +7 -5
  271. package/src/hooks/hook.registry.js.map +1 -1
  272. package/src/index.d.ts +28 -9
  273. package/src/index.js +5 -1
  274. package/src/index.js.map +1 -1
  275. package/src/logger/instances/instance.logger.js +3 -2
  276. package/src/logger/instances/instance.logger.js.map +1 -1
  277. package/src/logger/logger.registry.js +7 -2
  278. package/src/logger/logger.registry.js.map +1 -1
  279. package/src/logging/flows/set-level.flow.d.ts +62 -0
  280. package/src/logging/flows/set-level.flow.js +108 -0
  281. package/src/logging/flows/set-level.flow.js.map +1 -0
  282. package/src/mcp-apps/csp.d.ts +111 -0
  283. package/src/mcp-apps/csp.js +267 -0
  284. package/src/mcp-apps/csp.js.map +1 -0
  285. package/src/mcp-apps/index.d.ts +23 -0
  286. package/src/mcp-apps/index.js +91 -0
  287. package/src/mcp-apps/index.js.map +1 -0
  288. package/src/mcp-apps/schemas.d.ts +403 -0
  289. package/src/mcp-apps/schemas.js +345 -0
  290. package/src/mcp-apps/schemas.js.map +1 -0
  291. package/src/mcp-apps/template.d.ts +94 -0
  292. package/src/mcp-apps/template.js +419 -0
  293. package/src/mcp-apps/template.js.map +1 -0
  294. package/src/mcp-apps/types.d.ts +323 -0
  295. package/src/mcp-apps/types.js +59 -0
  296. package/src/mcp-apps/types.js.map +1 -0
  297. package/src/notification/index.d.ts +1 -0
  298. package/src/notification/index.js +13 -0
  299. package/src/notification/index.js.map +1 -0
  300. package/src/notification/notification.service.d.ts +378 -0
  301. package/src/notification/notification.service.js +727 -0
  302. package/src/notification/notification.service.js.map +1 -0
  303. package/src/plugin/plugin.registry.js +12 -9
  304. package/src/plugin/plugin.registry.js.map +1 -1
  305. package/src/prompt/flows/get-prompt.flow.d.ts +153 -0
  306. package/src/prompt/flows/get-prompt.flow.js +214 -0
  307. package/src/prompt/flows/get-prompt.flow.js.map +1 -0
  308. package/src/prompt/flows/prompts-list.flow.d.ts +67 -0
  309. package/src/prompt/flows/prompts-list.flow.js +176 -0
  310. package/src/prompt/flows/prompts-list.flow.js.map +1 -0
  311. package/src/prompt/index.d.ts +7 -0
  312. package/src/prompt/index.js +17 -0
  313. package/src/prompt/index.js.map +1 -0
  314. package/src/prompt/prompt.events.d.ts +17 -0
  315. package/src/prompt/prompt.events.js +25 -0
  316. package/src/prompt/prompt.events.js.map +1 -0
  317. package/src/prompt/prompt.instance.d.ts +30 -0
  318. package/src/prompt/prompt.instance.js +120 -0
  319. package/src/prompt/prompt.instance.js.map +1 -0
  320. package/src/prompt/prompt.registry.d.ts +79 -12
  321. package/src/prompt/prompt.registry.js +360 -15
  322. package/src/prompt/prompt.registry.js.map +1 -1
  323. package/src/prompt/prompt.types.d.ts +26 -0
  324. package/src/prompt/prompt.types.js +11 -0
  325. package/src/prompt/prompt.types.js.map +1 -0
  326. package/src/prompt/prompt.utils.d.ts +26 -0
  327. package/src/prompt/prompt.utils.js +136 -0
  328. package/src/prompt/prompt.utils.js.map +1 -0
  329. package/src/provider/provider.registry.d.ts +12 -5
  330. package/src/provider/provider.registry.js +30 -138
  331. package/src/provider/provider.registry.js.map +1 -1
  332. package/src/regsitry/registry.base.d.ts +1 -1
  333. package/src/regsitry/registry.base.js.map +1 -1
  334. package/src/resource/flows/read-resource.flow.d.ts +91 -0
  335. package/src/resource/flows/read-resource.flow.js +270 -0
  336. package/src/resource/flows/read-resource.flow.js.map +1 -0
  337. package/src/resource/flows/resource-templates-list.flow.d.ts +64 -0
  338. package/src/resource/flows/resource-templates-list.flow.js +191 -0
  339. package/src/resource/flows/resource-templates-list.flow.js.map +1 -0
  340. package/src/resource/flows/resources-list.flow.d.ts +64 -0
  341. package/src/resource/flows/resources-list.flow.js +196 -0
  342. package/src/resource/flows/resources-list.flow.js.map +1 -0
  343. package/src/resource/flows/subscribe-resource.flow.d.ts +45 -0
  344. package/src/resource/flows/subscribe-resource.flow.js +123 -0
  345. package/src/resource/flows/subscribe-resource.flow.js.map +1 -0
  346. package/src/resource/flows/unsubscribe-resource.flow.d.ts +44 -0
  347. package/src/resource/flows/unsubscribe-resource.flow.js +107 -0
  348. package/src/resource/flows/unsubscribe-resource.flow.js.map +1 -0
  349. package/src/resource/index.d.ts +8 -0
  350. package/src/resource/index.js +20 -0
  351. package/src/resource/index.js.map +1 -0
  352. package/src/resource/resource.events.d.ts +24 -0
  353. package/src/resource/resource.events.js +17 -0
  354. package/src/resource/resource.events.js.map +1 -0
  355. package/src/resource/resource.instance.d.ts +35 -0
  356. package/src/resource/resource.instance.js +163 -0
  357. package/src/resource/resource.instance.js.map +1 -0
  358. package/src/resource/resource.registry.d.ts +106 -12
  359. package/src/resource/resource.registry.js +449 -13
  360. package/src/resource/resource.registry.js.map +1 -1
  361. package/src/resource/resource.types.d.ts +35 -0
  362. package/src/resource/resource.types.js +11 -0
  363. package/src/resource/resource.types.js.map +1 -0
  364. package/src/resource/resource.utils.d.ts +30 -0
  365. package/src/resource/resource.utils.js +151 -0
  366. package/src/resource/resource.utils.js.map +1 -0
  367. package/src/scope/flows/http.request.flow.d.ts +48 -330
  368. package/src/scope/flows/http.request.flow.js +306 -78
  369. package/src/scope/flows/http.request.flow.js.map +1 -1
  370. package/src/scope/scope.instance.d.ts +12 -0
  371. package/src/scope/scope.instance.js +145 -15
  372. package/src/scope/scope.instance.js.map +1 -1
  373. package/src/tool/flows/call-tool.flow.d.ts +64 -1110
  374. package/src/tool/flows/call-tool.flow.js +303 -15
  375. package/src/tool/flows/call-tool.flow.js.map +1 -1
  376. package/src/tool/flows/tools-list.flow.d.ts +32 -473
  377. package/src/tool/flows/tools-list.flow.js +121 -40
  378. package/src/tool/flows/tools-list.flow.js.map +1 -1
  379. package/src/tool/tool.events.d.ts +8 -1
  380. package/src/tool/tool.events.js.map +1 -1
  381. package/src/tool/tool.instance.d.ts +3 -1
  382. package/src/tool/tool.instance.js +17 -3
  383. package/src/tool/tool.instance.js.map +1 -1
  384. package/src/tool/tool.registry.d.ts +7 -1
  385. package/src/tool/tool.registry.js +26 -10
  386. package/src/tool/tool.registry.js.map +1 -1
  387. package/src/tool/tool.types.d.ts +4 -4
  388. package/src/tool/tool.types.js.map +1 -1
  389. package/src/tool/tool.utils.d.ts +3 -12
  390. package/src/tool/tool.utils.js +39 -193
  391. package/src/tool/tool.utils.js.map +1 -1
  392. package/src/tool/ui/index.d.ts +22 -0
  393. package/src/tool/ui/index.js +63 -0
  394. package/src/tool/ui/index.js.map +1 -0
  395. package/src/tool/ui/platform-adapters.d.ts +10 -0
  396. package/src/tool/ui/platform-adapters.js +18 -0
  397. package/src/tool/ui/platform-adapters.js.map +1 -0
  398. package/src/tool/ui/template-helpers.d.ts +46 -0
  399. package/src/tool/ui/template-helpers.js +112 -0
  400. package/src/tool/ui/template-helpers.js.map +1 -0
  401. package/src/tool/ui/ui-resource-template.d.ts +34 -0
  402. package/src/tool/ui/ui-resource-template.js +64 -0
  403. package/src/tool/ui/ui-resource-template.js.map +1 -0
  404. package/src/tool/ui/ui-resource.handler.d.ts +74 -0
  405. package/src/tool/ui/ui-resource.handler.js +129 -0
  406. package/src/tool/ui/ui-resource.handler.js.map +1 -0
  407. package/src/transport/adapters/transport.local.adapter.d.ts +2 -2
  408. package/src/transport/adapters/transport.local.adapter.js +28 -7
  409. package/src/transport/adapters/transport.local.adapter.js.map +1 -1
  410. package/src/transport/adapters/transport.sse.adapter.d.ts +2 -2
  411. package/src/transport/adapters/transport.sse.adapter.js +4 -3
  412. package/src/transport/adapters/transport.sse.adapter.js.map +1 -1
  413. package/src/transport/adapters/transport.streamable-http.adapter.d.ts +10 -3
  414. package/src/transport/adapters/transport.streamable-http.adapter.js +54 -8
  415. package/src/transport/adapters/transport.streamable-http.adapter.js.map +1 -1
  416. package/src/transport/flows/handle.sse.flow.d.ts +29 -63
  417. package/src/transport/flows/handle.sse.flow.js +78 -10
  418. package/src/transport/flows/handle.sse.flow.js.map +1 -1
  419. package/src/transport/flows/handle.stateless-http.flow.d.ts +29 -0
  420. package/src/transport/flows/handle.stateless-http.flow.js +102 -0
  421. package/src/transport/flows/handle.stateless-http.flow.js.map +1 -0
  422. package/src/transport/flows/handle.streamable-http.flow.d.ts +32 -64
  423. package/src/transport/flows/handle.streamable-http.flow.js +158 -26
  424. package/src/transport/flows/handle.streamable-http.flow.js.map +1 -1
  425. package/src/transport/legacy/legacy.sse.tranporter.d.ts +9 -0
  426. package/src/transport/legacy/legacy.sse.tranporter.js +17 -2
  427. package/src/transport/legacy/legacy.sse.tranporter.js.map +1 -1
  428. package/src/transport/mcp-handlers/call-tool-request.handler.js +27 -1
  429. package/src/transport/mcp-handlers/call-tool-request.handler.js.map +1 -1
  430. package/src/transport/mcp-handlers/complete-request.handler.d.ts +69 -0
  431. package/src/transport/mcp-handlers/complete-request.handler.js +11 -0
  432. package/src/transport/mcp-handlers/complete-request.handler.js.map +1 -0
  433. package/src/transport/mcp-handlers/get-prompt-request.handler.d.ts +87 -0
  434. package/src/transport/mcp-handlers/get-prompt-request.handler.js +11 -0
  435. package/src/transport/mcp-handlers/get-prompt-request.handler.js.map +1 -0
  436. package/src/transport/mcp-handlers/index.d.ts +517 -208
  437. package/src/transport/mcp-handlers/index.js +39 -2
  438. package/src/transport/mcp-handlers/index.js.map +1 -1
  439. package/src/transport/mcp-handlers/initialize-request.handler.d.ts +1 -1
  440. package/src/transport/mcp-handlers/initialize-request.handler.js +73 -7
  441. package/src/transport/mcp-handlers/initialize-request.handler.js.map +1 -1
  442. package/src/transport/mcp-handlers/list-prompts-request.handler.d.ts +54 -0
  443. package/src/transport/mcp-handlers/list-prompts-request.handler.js +11 -0
  444. package/src/transport/mcp-handlers/list-prompts-request.handler.js.map +1 -0
  445. package/src/transport/mcp-handlers/list-resource-templates-request.handler.d.ts +51 -0
  446. package/src/transport/mcp-handlers/list-resource-templates-request.handler.js +12 -0
  447. package/src/transport/mcp-handlers/list-resource-templates-request.handler.js.map +1 -0
  448. package/src/transport/mcp-handlers/list-resources-request.handler.d.ts +51 -0
  449. package/src/transport/mcp-handlers/list-resources-request.handler.js +12 -0
  450. package/src/transport/mcp-handlers/list-resources-request.handler.js.map +1 -0
  451. package/src/transport/mcp-handlers/list-tools-request.handler.d.ts +19 -146
  452. package/src/transport/mcp-handlers/logging-set-level-request.handler.d.ts +46 -0
  453. package/src/transport/mcp-handlers/logging-set-level-request.handler.js +34 -0
  454. package/src/transport/mcp-handlers/logging-set-level-request.handler.js.map +1 -0
  455. package/src/transport/mcp-handlers/mcp-handlers.types.d.ts +3 -7
  456. package/src/transport/mcp-handlers/mcp-handlers.types.js.map +1 -1
  457. package/src/transport/mcp-handlers/read-resource-request.handler.d.ts +46 -0
  458. package/src/transport/mcp-handlers/read-resource-request.handler.js +12 -0
  459. package/src/transport/mcp-handlers/read-resource-request.handler.js.map +1 -0
  460. package/src/transport/mcp-handlers/roots-list-changed-notification.handler.d.ts +11 -0
  461. package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js +26 -0
  462. package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js.map +1 -0
  463. package/src/transport/mcp-handlers/subscribe-request.handler.d.ts +37 -0
  464. package/src/transport/mcp-handlers/subscribe-request.handler.js +34 -0
  465. package/src/transport/mcp-handlers/subscribe-request.handler.js.map +1 -0
  466. package/src/transport/mcp-handlers/unsubscribe-request.handler.d.ts +37 -0
  467. package/src/transport/mcp-handlers/unsubscribe-request.handler.js +34 -0
  468. package/src/transport/mcp-handlers/unsubscribe-request.handler.js.map +1 -0
  469. package/src/transport/transport.local.js +7 -2
  470. package/src/transport/transport.local.js.map +1 -1
  471. package/src/transport/transport.registry.d.ts +30 -0
  472. package/src/transport/transport.registry.js +84 -1
  473. package/src/transport/transport.registry.js.map +1 -1
  474. package/src/transport/transport.types.d.ts +3 -3
  475. package/src/transport/transport.types.js.map +1 -1
  476. package/src/utils/content.utils.d.ts +48 -0
  477. package/src/utils/content.utils.js +194 -0
  478. package/src/utils/content.utils.js.map +1 -0
  479. package/src/utils/index.d.ts +8 -0
  480. package/src/utils/index.js +55 -0
  481. package/src/utils/index.js.map +1 -0
  482. package/src/utils/lineage.utils.d.ts +40 -0
  483. package/src/utils/lineage.utils.js +82 -0
  484. package/src/utils/lineage.utils.js.map +1 -0
  485. package/src/utils/naming.utils.d.ts +46 -0
  486. package/src/utils/naming.utils.js +136 -0
  487. package/src/utils/naming.utils.js.map +1 -0
  488. package/src/utils/types.utils.d.ts +2 -2
  489. package/src/utils/types.utils.js.map +1 -1
  490. package/src/utils/uri-template.utils.d.ts +57 -0
  491. package/src/utils/uri-template.utils.js +113 -0
  492. package/src/utils/uri-template.utils.js.map +1 -0
  493. package/src/utils/uri-validation.utils.d.ts +40 -0
  494. package/src/utils/uri-validation.utils.js +76 -0
  495. package/src/utils/uri-validation.utils.js.map +1 -0
  496. package/src/__test-utils__/fixtures/hook.fixtures.d.ts +0 -46
  497. package/src/__test-utils__/fixtures/hook.fixtures.js +0 -114
  498. package/src/__test-utils__/fixtures/hook.fixtures.js.map +0 -1
  499. package/src/__test-utils__/fixtures/index.d.ts +0 -7
  500. package/src/__test-utils__/fixtures/index.js +0 -11
  501. package/src/__test-utils__/fixtures/index.js.map +0 -1
  502. package/src/__test-utils__/fixtures/plugin.fixtures.d.ts +0 -46
  503. package/src/__test-utils__/fixtures/plugin.fixtures.js +0 -127
  504. package/src/__test-utils__/fixtures/plugin.fixtures.js.map +0 -1
  505. package/src/__test-utils__/fixtures/provider.fixtures.d.ts +0 -69
  506. package/src/__test-utils__/fixtures/provider.fixtures.js +0 -131
  507. package/src/__test-utils__/fixtures/provider.fixtures.js.map +0 -1
  508. package/src/__test-utils__/fixtures/scope.fixtures.d.ts +0 -14
  509. package/src/__test-utils__/fixtures/scope.fixtures.js +0 -59
  510. package/src/__test-utils__/fixtures/scope.fixtures.js.map +0 -1
  511. package/src/__test-utils__/fixtures/tool.fixtures.d.ts +0 -36
  512. package/src/__test-utils__/fixtures/tool.fixtures.js +0 -91
  513. package/src/__test-utils__/fixtures/tool.fixtures.js.map +0 -1
  514. package/src/__test-utils__/helpers/assertion.helpers.d.ts +0 -45
  515. package/src/__test-utils__/helpers/assertion.helpers.js +0 -153
  516. package/src/__test-utils__/helpers/assertion.helpers.js.map +0 -1
  517. package/src/__test-utils__/helpers/async.helpers.d.ts +0 -48
  518. package/src/__test-utils__/helpers/async.helpers.js +0 -112
  519. package/src/__test-utils__/helpers/async.helpers.js.map +0 -1
  520. package/src/__test-utils__/helpers/index.d.ts +0 -6
  521. package/src/__test-utils__/helpers/index.js +0 -10
  522. package/src/__test-utils__/helpers/index.js.map +0 -1
  523. package/src/__test-utils__/helpers/setup.helpers.d.ts +0 -54
  524. package/src/__test-utils__/helpers/setup.helpers.js +0 -106
  525. package/src/__test-utils__/helpers/setup.helpers.js.map +0 -1
  526. package/src/__test-utils__/index.d.ts +0 -9
  527. package/src/__test-utils__/index.js +0 -14
  528. package/src/__test-utils__/index.js.map +0 -1
  529. package/src/__test-utils__/mocks/flow-instance.mock.d.ts +0 -50
  530. package/src/__test-utils__/mocks/flow-instance.mock.js +0 -72
  531. package/src/__test-utils__/mocks/flow-instance.mock.js.map +0 -1
  532. package/src/__test-utils__/mocks/hook-registry.mock.d.ts +0 -25
  533. package/src/__test-utils__/mocks/hook-registry.mock.js +0 -65
  534. package/src/__test-utils__/mocks/hook-registry.mock.js.map +0 -1
  535. package/src/__test-utils__/mocks/index.d.ts +0 -8
  536. package/src/__test-utils__/mocks/index.js +0 -12
  537. package/src/__test-utils__/mocks/index.js.map +0 -1
  538. package/src/__test-utils__/mocks/plugin-registry.mock.d.ts +0 -43
  539. package/src/__test-utils__/mocks/plugin-registry.mock.js +0 -70
  540. package/src/__test-utils__/mocks/plugin-registry.mock.js.map +0 -1
  541. package/src/__test-utils__/mocks/provider-registry.mock.d.ts +0 -39
  542. package/src/__test-utils__/mocks/provider-registry.mock.js +0 -72
  543. package/src/__test-utils__/mocks/provider-registry.mock.js.map +0 -1
  544. package/src/__test-utils__/mocks/tool-registry.mock.d.ts +0 -43
  545. package/src/__test-utils__/mocks/tool-registry.mock.js +0 -79
  546. package/src/__test-utils__/mocks/tool-registry.mock.js.map +0 -1
  547. package/src/auth/path.utils.d.ts +0 -20
  548. package/src/auth/path.utils.js +0 -71
  549. package/src/auth/path.utils.js.map +0 -1
  550. package/src/common/decorators-old/async-with.decorator.d.ts +0 -10
  551. package/src/common/decorators-old/async-with.decorator.js +0 -24
  552. package/src/common/decorators-old/async-with.decorator.js.map +0 -1
  553. package/src/common/decorators-old/auth-hook.decorator.d.ts +0 -14
  554. package/src/common/decorators-old/auth-hook.decorator.js +0 -27
  555. package/src/common/decorators-old/auth-hook.decorator.js.map +0 -1
  556. package/src/common/decorators-old/session-hook.decorator.d.ts +0 -14
  557. package/src/common/decorators-old/session-hook.decorator.js +0 -27
  558. package/src/common/decorators-old/session-hook.decorator.js.map +0 -1
@@ -1,5 +1,9 @@
1
- import { z, ZodObject } from 'zod';
2
- import type { JSONSchema7 } from 'json-schema';
1
+ import { z } from 'zod';
2
+ import type { JSONSchema } from 'zod/v4/core';
3
+ /** JSON Schema type from Zod v4 */
4
+ type JsonSchema = JSONSchema.JSONSchema;
5
+ import { ToolUIConfig } from './tool-ui.metadata';
6
+ import { ToolInputOf, ToolOutputOf } from '../decorators';
3
7
  declare global {
4
8
  /**
5
9
  * Declarative metadata extends to the an McpTool decorator.
@@ -7,6 +11,23 @@ declare global {
7
11
  interface ExtendFrontMcpToolMetadata {
8
12
  }
9
13
  }
14
+ /**
15
+ * Example input/output pair for a tool, used in documentation and describe output.
16
+ */
17
+ export interface ToolExample {
18
+ /**
19
+ * Description of what this example demonstrates.
20
+ */
21
+ description: string;
22
+ /**
23
+ * Example input values for the tool.
24
+ */
25
+ input: Record<string, unknown>;
26
+ /**
27
+ * Optional expected output for the example.
28
+ */
29
+ output?: unknown;
30
+ }
10
31
  export interface ToolAnnotations {
11
32
  [x: string]: unknown;
12
33
  /**
@@ -57,20 +78,10 @@ type PrimitiveOutputType = 'string' | 'number' | 'date' | 'boolean' | z.ZodStrin
57
78
  type ImageOutputType = 'image';
58
79
  export declare const ImageOutputSchema: z.ZodObject<{
59
80
  type: z.ZodLiteral<"image">;
60
- data: z.ZodEffects<z.ZodString, string, string>;
81
+ data: z.ZodString;
61
82
  mimeType: z.ZodString;
62
83
  _meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
63
- }, "strip", z.ZodTypeAny, {
64
- type: "image";
65
- data: string;
66
- mimeType: string;
67
- _meta?: Record<string, unknown> | undefined;
68
- }, {
69
- type: "image";
70
- data: string;
71
- mimeType: string;
72
- _meta?: Record<string, unknown> | undefined;
73
- }>;
84
+ }, z.core.$strip>;
74
85
  export type ImageOutput = z.output<typeof ImageOutputSchema>;
75
86
  /**
76
87
  * Tool response type audio, will use the AudioContentSchema from MCP types
@@ -78,20 +89,10 @@ export type ImageOutput = z.output<typeof ImageOutputSchema>;
78
89
  type AudioOutputType = 'audio';
79
90
  export declare const AudioOutputSchema: z.ZodObject<{
80
91
  type: z.ZodLiteral<"audio">;
81
- data: z.ZodEffects<z.ZodString, string, string>;
92
+ data: z.ZodString;
82
93
  mimeType: z.ZodString;
83
94
  _meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
84
- }, "strip", z.ZodTypeAny, {
85
- type: "audio";
86
- data: string;
87
- mimeType: string;
88
- _meta?: Record<string, unknown> | undefined;
89
- }, {
90
- type: "audio";
91
- data: string;
92
- mimeType: string;
93
- _meta?: Record<string, unknown> | undefined;
94
- }>;
95
+ }, z.core.$strip>;
95
96
  export type AudioOutput = z.output<typeof AudioOutputSchema>;
96
97
  /**
97
98
  * Tool response type resource, will use the EmbeddedResourceSchema from MCP types
@@ -99,130 +100,43 @@ export type AudioOutput = z.output<typeof AudioOutputSchema>;
99
100
  type ResourceOutputType = 'resource';
100
101
  export declare const ResourceOutputSchema: z.ZodObject<{
101
102
  type: z.ZodLiteral<"resource">;
102
- resource: z.ZodUnion<[z.ZodObject<z.objectUtil.extendShape<{
103
+ resource: z.ZodUnion<readonly [z.ZodObject<{
103
104
  uri: z.ZodString;
104
105
  mimeType: z.ZodOptional<z.ZodString>;
105
106
  _meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
106
- }, {
107
107
  text: z.ZodString;
108
- }>, "strip", z.ZodTypeAny, {
109
- uri: string;
110
- text: string;
111
- _meta?: Record<string, unknown> | undefined;
112
- mimeType?: string | undefined;
113
- }, {
114
- uri: string;
115
- text: string;
116
- _meta?: Record<string, unknown> | undefined;
117
- mimeType?: string | undefined;
118
- }>, z.ZodObject<z.objectUtil.extendShape<{
108
+ }, z.core.$strip>, z.ZodObject<{
119
109
  uri: z.ZodString;
120
110
  mimeType: z.ZodOptional<z.ZodString>;
121
111
  _meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
122
- }, {
123
- blob: z.ZodEffects<z.ZodString, string, string>;
124
- }>, "strip", z.ZodTypeAny, {
125
- uri: string;
126
- blob: string;
127
- _meta?: Record<string, unknown> | undefined;
128
- mimeType?: string | undefined;
129
- }, {
130
- uri: string;
131
- blob: string;
132
- _meta?: Record<string, unknown> | undefined;
133
- mimeType?: string | undefined;
134
- }>]>;
112
+ blob: z.ZodString;
113
+ }, z.core.$strip>]>;
135
114
  _meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
136
- }, "strip", z.ZodTypeAny, {
137
- type: "resource";
138
- resource: {
139
- uri: string;
140
- text: string;
141
- _meta?: Record<string, unknown> | undefined;
142
- mimeType?: string | undefined;
143
- } | {
144
- uri: string;
145
- blob: string;
146
- _meta?: Record<string, unknown> | undefined;
147
- mimeType?: string | undefined;
148
- };
149
- _meta?: Record<string, unknown> | undefined;
150
- }, {
151
- type: "resource";
152
- resource: {
153
- uri: string;
154
- text: string;
155
- _meta?: Record<string, unknown> | undefined;
156
- mimeType?: string | undefined;
157
- } | {
158
- uri: string;
159
- blob: string;
160
- _meta?: Record<string, unknown> | undefined;
161
- mimeType?: string | undefined;
162
- };
163
- _meta?: Record<string, unknown> | undefined;
164
- }>;
115
+ }, z.core.$strip>;
165
116
  export type ResourceOutput = z.output<typeof ResourceOutputSchema>;
166
117
  /**
167
118
  * Tool response type resource_link, will use the ResourceLinkSchema from MCP types
168
119
  */
169
120
  type ResourceLinkOutputType = 'resource_link';
170
121
  export declare const ResourceLinkOutputSchema: z.ZodObject<{
171
- name: z.ZodString;
172
- title: z.ZodOptional<z.ZodString>;
173
- } & {
174
122
  uri: z.ZodString;
175
123
  description: z.ZodOptional<z.ZodString>;
176
124
  mimeType: z.ZodOptional<z.ZodString>;
177
- _meta: z.ZodOptional<z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>>;
178
- } & {
125
+ _meta: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
179
126
  icons: z.ZodOptional<z.ZodArray<z.ZodObject<{
180
127
  src: z.ZodString;
181
128
  mimeType: z.ZodOptional<z.ZodString>;
182
- sizes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
183
- }, "strip", z.ZodTypeAny, {
184
- src: string;
185
- mimeType?: string | undefined;
186
- sizes?: string[] | undefined;
187
- }, {
188
- src: string;
189
- mimeType?: string | undefined;
190
- sizes?: string[] | undefined;
191
- }>, "many">>;
192
- } & {
129
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
130
+ }, z.core.$strip>>>;
131
+ name: z.ZodString;
132
+ title: z.ZodOptional<z.ZodString>;
193
133
  type: z.ZodLiteral<"resource_link">;
194
- }, "strip", z.ZodTypeAny, {
195
- type: "resource_link";
196
- name: string;
197
- uri: string;
198
- _meta?: z.objectOutputType<{}, z.ZodTypeAny, "passthrough"> | undefined;
199
- mimeType?: string | undefined;
200
- icons?: {
201
- src: string;
202
- mimeType?: string | undefined;
203
- sizes?: string[] | undefined;
204
- }[] | undefined;
205
- title?: string | undefined;
206
- description?: string | undefined;
207
- }, {
208
- type: "resource_link";
209
- name: string;
210
- uri: string;
211
- _meta?: z.objectInputType<{}, z.ZodTypeAny, "passthrough"> | undefined;
212
- mimeType?: string | undefined;
213
- icons?: {
214
- src: string;
215
- mimeType?: string | undefined;
216
- sizes?: string[] | undefined;
217
- }[] | undefined;
218
- title?: string | undefined;
219
- description?: string | undefined;
220
- }>;
134
+ }, z.core.$strip>;
221
135
  export type ResourceLinkOutput = z.output<typeof ResourceLinkOutputSchema>;
222
136
  /**
223
137
  * Tool response type json, ZodRawShape for fast usage
224
138
  */
225
- type StructuredOutputType = z.ZodRawShape | z.ZodObject<any> | z.ZodArray<any> | z.ZodUnion<[ZodObject<any>, ...ZodObject<any>[]]> | z.ZodDiscriminatedUnion<any, any>;
139
+ type StructuredOutputType = z.ZodRawShape | z.ZodObject<any> | z.ZodArray<z.ZodType> | z.ZodUnion<[z.ZodObject<any>, ...z.ZodObject<any>[]]> | z.ZodDiscriminatedUnion<z.ZodObject<any>[]>;
226
140
  export type ToolSingleOutputType = PrimitiveOutputType | ImageOutputType | AudioOutputType | ResourceOutputType | ResourceLinkOutputType | StructuredOutputType;
227
141
  /**
228
142
  * Default default tool schema is {}
@@ -255,7 +169,7 @@ export interface ToolMetadata<InSchema = ToolInputType, OutSchema extends ToolOu
255
169
  * Zod schema describing the expected input payload for the tool.
256
170
  * Used for validation and for generating automatic docs/UX.
257
171
  */
258
- rawInputSchema?: JSONSchema7;
172
+ rawInputSchema?: JsonSchema;
259
173
  /**
260
174
  * Zod schema describing the structure of the tool's successful output.
261
175
  */
@@ -272,90 +186,55 @@ export interface ToolMetadata<InSchema = ToolInputType, OutSchema extends ToolOu
272
186
  * Default: false
273
187
  */
274
188
  hideFromDiscovery?: boolean;
189
+ /**
190
+ * Optional usage examples for the tool.
191
+ * These are used by codecall:describe to provide accurate usage examples.
192
+ * If provided, these take precedence over auto-generated examples.
193
+ */
194
+ examples?: ToolExample[];
195
+ ui?: ToolUIConfig<ToolInputOf<InSchema>, ToolOutputOf<OutSchema>>;
275
196
  }
276
197
  export declare const frontMcpToolMetadataSchema: z.ZodObject<{
277
198
  id: z.ZodOptional<z.ZodString>;
278
199
  name: z.ZodString;
279
200
  description: z.ZodOptional<z.ZodString>;
280
- inputSchema: z.ZodType<Object, z.ZodTypeDef, Object>;
201
+ inputSchema: z.ZodCustom<Object, Object>;
281
202
  rawInputSchema: z.ZodOptional<z.ZodAny>;
282
- outputSchema: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodEnum<["string", "number", "date", "boolean"]>, z.ZodEnum<["image", "audio", "resource", "resource_link"]>]>, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>, z.ZodRecord<z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>>]>, z.ZodArray<z.ZodUnion<[z.ZodUnion<[z.ZodEnum<["string", "number", "date", "boolean"]>, z.ZodEnum<["image", "audio", "resource", "resource_link"]>]>, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>, z.ZodRecord<z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>>]>, "many">]>>;
283
- tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
203
+ outputSchema: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEnum<{
204
+ string: "string";
205
+ number: "number";
206
+ boolean: "boolean";
207
+ date: "date";
208
+ }>, z.ZodEnum<{
209
+ image: "image";
210
+ audio: "audio";
211
+ resource: "resource";
212
+ resource_link: "resource_link";
213
+ }>]>, z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>, z.ZodRecord<z.ZodString, z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEnum<{
214
+ string: "string";
215
+ number: "number";
216
+ boolean: "boolean";
217
+ date: "date";
218
+ }>, z.ZodEnum<{
219
+ image: "image";
220
+ audio: "audio";
221
+ resource: "resource";
222
+ resource_link: "resource_link";
223
+ }>]>, z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>, z.ZodRecord<z.ZodString, z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>>]>>]>>;
224
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
284
225
  annotations: z.ZodOptional<z.ZodObject<{
285
226
  title: z.ZodOptional<z.ZodString>;
286
227
  readOnlyHint: z.ZodOptional<z.ZodBoolean>;
287
228
  destructiveHint: z.ZodOptional<z.ZodBoolean>;
288
229
  idempotentHint: z.ZodOptional<z.ZodBoolean>;
289
230
  openWorldHint: z.ZodOptional<z.ZodBoolean>;
290
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
291
- title: z.ZodOptional<z.ZodString>;
292
- readOnlyHint: z.ZodOptional<z.ZodBoolean>;
293
- destructiveHint: z.ZodOptional<z.ZodBoolean>;
294
- idempotentHint: z.ZodOptional<z.ZodBoolean>;
295
- openWorldHint: z.ZodOptional<z.ZodBoolean>;
296
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
297
- title: z.ZodOptional<z.ZodString>;
298
- readOnlyHint: z.ZodOptional<z.ZodBoolean>;
299
- destructiveHint: z.ZodOptional<z.ZodBoolean>;
300
- idempotentHint: z.ZodOptional<z.ZodBoolean>;
301
- openWorldHint: z.ZodOptional<z.ZodBoolean>;
302
- }, z.ZodTypeAny, "passthrough">>>;
303
- hideFromDiscovery: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
304
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
305
- id: z.ZodOptional<z.ZodString>;
306
- name: z.ZodString;
307
- description: z.ZodOptional<z.ZodString>;
308
- inputSchema: z.ZodType<Object, z.ZodTypeDef, Object>;
309
- rawInputSchema: z.ZodOptional<z.ZodAny>;
310
- outputSchema: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodEnum<["string", "number", "date", "boolean"]>, z.ZodEnum<["image", "audio", "resource", "resource_link"]>]>, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>, z.ZodRecord<z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>>]>, z.ZodArray<z.ZodUnion<[z.ZodUnion<[z.ZodEnum<["string", "number", "date", "boolean"]>, z.ZodEnum<["image", "audio", "resource", "resource_link"]>]>, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>, z.ZodRecord<z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>>]>, "many">]>>;
311
- tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
312
- annotations: z.ZodOptional<z.ZodObject<{
313
- title: z.ZodOptional<z.ZodString>;
314
- readOnlyHint: z.ZodOptional<z.ZodBoolean>;
315
- destructiveHint: z.ZodOptional<z.ZodBoolean>;
316
- idempotentHint: z.ZodOptional<z.ZodBoolean>;
317
- openWorldHint: z.ZodOptional<z.ZodBoolean>;
318
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
319
- title: z.ZodOptional<z.ZodString>;
320
- readOnlyHint: z.ZodOptional<z.ZodBoolean>;
321
- destructiveHint: z.ZodOptional<z.ZodBoolean>;
322
- idempotentHint: z.ZodOptional<z.ZodBoolean>;
323
- openWorldHint: z.ZodOptional<z.ZodBoolean>;
324
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
325
- title: z.ZodOptional<z.ZodString>;
326
- readOnlyHint: z.ZodOptional<z.ZodBoolean>;
327
- destructiveHint: z.ZodOptional<z.ZodBoolean>;
328
- idempotentHint: z.ZodOptional<z.ZodBoolean>;
329
- openWorldHint: z.ZodOptional<z.ZodBoolean>;
330
- }, z.ZodTypeAny, "passthrough">>>;
331
- hideFromDiscovery: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
332
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
333
- id: z.ZodOptional<z.ZodString>;
334
- name: z.ZodString;
335
- description: z.ZodOptional<z.ZodString>;
336
- inputSchema: z.ZodType<Object, z.ZodTypeDef, Object>;
337
- rawInputSchema: z.ZodOptional<z.ZodAny>;
338
- outputSchema: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodEnum<["string", "number", "date", "boolean"]>, z.ZodEnum<["image", "audio", "resource", "resource_link"]>]>, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>, z.ZodRecord<z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>>]>, z.ZodArray<z.ZodUnion<[z.ZodUnion<[z.ZodEnum<["string", "number", "date", "boolean"]>, z.ZodEnum<["image", "audio", "resource", "resource_link"]>]>, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>, z.ZodRecord<z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>>]>, "many">]>>;
339
- tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
340
- annotations: z.ZodOptional<z.ZodObject<{
341
- title: z.ZodOptional<z.ZodString>;
342
- readOnlyHint: z.ZodOptional<z.ZodBoolean>;
343
- destructiveHint: z.ZodOptional<z.ZodBoolean>;
344
- idempotentHint: z.ZodOptional<z.ZodBoolean>;
345
- openWorldHint: z.ZodOptional<z.ZodBoolean>;
346
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
347
- title: z.ZodOptional<z.ZodString>;
348
- readOnlyHint: z.ZodOptional<z.ZodBoolean>;
349
- destructiveHint: z.ZodOptional<z.ZodBoolean>;
350
- idempotentHint: z.ZodOptional<z.ZodBoolean>;
351
- openWorldHint: z.ZodOptional<z.ZodBoolean>;
352
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
353
- title: z.ZodOptional<z.ZodString>;
354
- readOnlyHint: z.ZodOptional<z.ZodBoolean>;
355
- destructiveHint: z.ZodOptional<z.ZodBoolean>;
356
- idempotentHint: z.ZodOptional<z.ZodBoolean>;
357
- openWorldHint: z.ZodOptional<z.ZodBoolean>;
358
- }, z.ZodTypeAny, "passthrough">>>;
231
+ }, z.core.$loose>>;
359
232
  hideFromDiscovery: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
360
- }, z.ZodTypeAny, "passthrough">>;
233
+ examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
234
+ description: z.ZodString;
235
+ input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
236
+ output: z.ZodOptional<z.ZodUnknown>;
237
+ }, z.core.$strip>>>;
238
+ ui: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
239
+ }, z.core.$loose>;
361
240
  export {};
@@ -24,24 +24,19 @@ exports.ResourceLinkOutputSchema = types_js_1.ResourceLinkSchema;
24
24
  */
25
25
  const primitiveOutputLiteralSchema = zod_1.z.enum(['string', 'number', 'date', 'boolean']);
26
26
  const specialOutputLiteralSchema = zod_1.z.enum(['image', 'audio', 'resource', 'resource_link']);
27
- const outputLiteralSchema = zod_1.z.union([
28
- primitiveOutputLiteralSchema,
29
- specialOutputLiteralSchema,
30
- ]);
27
+ const outputLiteralSchema = zod_1.z.union([primitiveOutputLiteralSchema, specialOutputLiteralSchema]);
31
28
  // Any Zod schema instance (object, array, union, etc.)
32
29
  const zodSchemaInstanceSchema = zod_1.z.instanceof(zod_1.z.ZodType);
33
30
  // Raw shape: { field: z.string(), ... }
34
- const zodRawShapeSchema = zod_1.z.record(zodSchemaInstanceSchema);
35
- const toolSingleOutputSchema = zod_1.z.union([
36
- outputLiteralSchema,
37
- zodSchemaInstanceSchema,
38
- zodRawShapeSchema,
39
- ]);
31
+ const zodRawShapeSchema = zod_1.z.record(zod_1.z.string(), zodSchemaInstanceSchema);
32
+ const toolSingleOutputSchema = zod_1.z.union([outputLiteralSchema, zodSchemaInstanceSchema, zodRawShapeSchema]);
40
33
  // ToolOutputType = ToolSingleOutputType | ToolSingleOutputType[]
41
- const toolOutputSchema = zod_1.z.union([
42
- toolSingleOutputSchema,
43
- zod_1.z.array(toolSingleOutputSchema),
44
- ]);
34
+ const toolOutputSchema = zod_1.z.union([toolSingleOutputSchema, zod_1.z.array(toolSingleOutputSchema)]);
35
+ const toolExampleSchema = zod_1.z.object({
36
+ description: zod_1.z.string(),
37
+ input: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()),
38
+ output: zod_1.z.unknown().optional(),
39
+ });
45
40
  exports.frontMcpToolMetadataSchema = zod_1.z
46
41
  .object({
47
42
  id: zod_1.z.string().optional(),
@@ -53,6 +48,8 @@ exports.frontMcpToolMetadataSchema = zod_1.z
53
48
  tags: zod_1.z.array(zod_1.z.string().min(1)).optional(),
54
49
  annotations: mcpToolAnnotationsSchema.optional(),
55
50
  hideFromDiscovery: zod_1.z.boolean().optional().default(false),
51
+ examples: zod_1.z.array(toolExampleSchema).optional(),
52
+ ui: zod_1.z.looseObject({}).optional(),
56
53
  })
57
54
  .passthrough();
58
55
  //# sourceMappingURL=tool.metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool.metadata.js","sourceRoot":"","sources":["../../../../src/common/metadata/tool.metadata.ts"],"names":[],"mappings":";;;AAAA,6BAAmC;AAGnC,iEAK4C;AAmD5C,MAAM,wBAAwB,GAAG,OAAC;KAC/B,MAAM,CAAC;IACN,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,eAAe,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACC,CAAC;KACxC,WAAW,EAAE,CAAC;AAmBJ,QAAA,iBAAiB,GAAG,6BAAkB,CAAC;AAOvC,QAAA,iBAAiB,GAAG,6BAAkB,CAAC;AAOvC,QAAA,oBAAoB,GAAG,iCAAsB,CAAC;AAO9C,QAAA,wBAAwB,GAAG,6BAAkB,CAAC;AAkF3D;;;;;GAKG;AAEH,MAAM,4BAA4B,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACrF,MAAM,0BAA0B,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;AAE3F,MAAM,mBAAmB,GAAG,OAAC,CAAC,KAAK,CAAC;IAClC,4BAA4B;IAC5B,0BAA0B;CAC3B,CAAC,CAAC;AAEH,uDAAuD;AACvD,MAAM,uBAAuB,GAAG,OAAC,CAAC,UAAU,CAAC,OAAC,CAAC,OAAO,CAAC,CAAC;AAExD,wCAAwC;AACxC,MAAM,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAE5D,MAAM,sBAAsB,GAAG,OAAC,CAAC,KAAK,CAAC;IACrC,mBAAmB;IACnB,uBAAuB;IACvB,iBAAiB;CAClB,CAAC,CAAC;AAEH,iEAAiE;AACjE,MAAM,gBAAgB,GAAG,OAAC,CAAC,KAAK,CAAC;IAC/B,sBAAsB;IACtB,OAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;CAChC,CAAC,CAAC;AACU,QAAA,0BAA0B,GAAG,OAAC;KACxC,MAAM,CAAC;IACN,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,OAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACjC,cAAc,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACzC,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IAChD,iBAAiB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACO,CAAC;KACjE,WAAW,EAAE,CAAC","sourcesContent":["import { z, ZodObject } from 'zod';\nimport { RawZodShape } from '../types';\nimport type { JSONSchema7 } from 'json-schema';\nimport {\n ImageContentSchema,\n AudioContentSchema,\n ResourceLinkSchema,\n EmbeddedResourceSchema,\n} from '@modelcontextprotocol/sdk/types.js';\n\ndeclare global {\n /**\n * Declarative metadata extends to the an McpTool decorator.\n */\n interface ExtendFrontMcpToolMetadata {}\n}\n\nexport interface ToolAnnotations {\n [x: string]: unknown;\n\n /**\n * A human-readable title for the tool.\n */\n title?: string;\n /**\n * If true, the tool does not modify its environment.\n *\n * Default: false\n */\n readOnlyHint?: boolean;\n /**\n * If true, the tool may perform destructive updates to its environment.\n * If false, the tool performs only additive updates.\n *\n * (This property is meaningful only when `readOnlyHint == false`)\n *\n * Default: true\n */\n destructiveHint?: boolean;\n /**\n * If true, calling the tool repeatedly with the same arguments\n * will have no additional effect on the its environment.\n *\n * (This property is meaningful only when `readOnlyHint == false`)\n *\n * Default: false\n */\n idempotentHint?: boolean;\n /**\n * If true, this tool may interact with an \"open world\" of external\n * entities. If false, the tool's domain of interaction is closed.\n * For example, the world of a web search tool is open, whereas that\n * of a memory tool is not.\n *\n * Default: true\n */\n openWorldHint?: boolean;\n}\n\nconst mcpToolAnnotationsSchema = z\n .object({\n title: z.string().optional(),\n readOnlyHint: z.boolean().optional(),\n destructiveHint: z.boolean().optional(),\n idempotentHint: z.boolean().optional(),\n openWorldHint: z.boolean().optional(),\n } satisfies RawZodShape<ToolAnnotations>)\n .passthrough();\n\n/**\n * Tool response type text: include if outputSchema is zod primitive types\n */\ntype PrimitiveOutputType =\n | 'string'\n | 'number'\n | 'date'\n | 'boolean'\n | z.ZodString\n | z.ZodNumber\n | z.ZodBoolean\n | z.ZodBigInt\n | z.ZodDate;\n/**\n * Tool response type image, will use the ImageContentSchema from MCP types\n */\ntype ImageOutputType = 'image';\nexport const ImageOutputSchema = ImageContentSchema;\nexport type ImageOutput = z.output<typeof ImageOutputSchema>;\n\n/**\n * Tool response type audio, will use the AudioContentSchema from MCP types\n */\ntype AudioOutputType = 'audio';\nexport const AudioOutputSchema = AudioContentSchema;\nexport type AudioOutput = z.output<typeof AudioOutputSchema>;\n\n/**\n * Tool response type resource, will use the EmbeddedResourceSchema from MCP types\n */\ntype ResourceOutputType = 'resource';\nexport const ResourceOutputSchema = EmbeddedResourceSchema;\nexport type ResourceOutput = z.output<typeof ResourceOutputSchema>;\n\n/**\n * Tool response type resource_link, will use the ResourceLinkSchema from MCP types\n */\ntype ResourceLinkOutputType = 'resource_link';\nexport const ResourceLinkOutputSchema = ResourceLinkSchema;\nexport type ResourceLinkOutput = z.output<typeof ResourceLinkOutputSchema>;\n\n/**\n * Tool response type json, ZodRawShape for fast usage\n */\ntype StructuredOutputType =\n | z.ZodRawShape\n | z.ZodObject<any>\n | z.ZodArray<any>\n | z.ZodUnion<[ZodObject<any>, ...ZodObject<any>[]]>\n | z.ZodDiscriminatedUnion<any, any>;\n\nexport type ToolSingleOutputType =\n | PrimitiveOutputType\n | ImageOutputType\n | AudioOutputType\n | ResourceOutputType\n | ResourceLinkOutputType\n | StructuredOutputType;\n\n/**\n * Default default tool schema is {}\n */\nexport type ToolOutputType = ToolSingleOutputType | ToolSingleOutputType[] | undefined;\nexport type ToolInputType = z.ZodRawShape;\n\n/**\n * Declarative metadata describing what an McpTool contributes.\n */\nexport interface ToolMetadata<InSchema = ToolInputType, OutSchema extends ToolOutputType = ToolOutputType>\n extends ExtendFrontMcpToolMetadata {\n /**\n * Optional unique identifier for the tool.\n * If omitted, a consumer may derive an ID from the class or file name.\n */\n id?: string;\n\n /**\n * Human‑readable name of the tool, used in UIs, logs, and discovery.\n */\n name: string;\n\n /**\n * Short summary describing what the tool does and when to use it.\n */\n description?: string;\n\n /**\n * Zod schema describing the expected input payload for the tool.\n * Used for validation and for generating automatic docs/UX.\n */\n inputSchema: InSchema;\n /**\n * Zod schema describing the expected input payload for the tool.\n * Used for validation and for generating automatic docs/UX.\n */\n rawInputSchema?: JSONSchema7;\n\n /**\n * Zod schema describing the structure of the tool's successful output.\n */\n outputSchema?: OutSchema;\n\n /**\n * Optional list of tags/labels that categorize the tool for discovery and filtering.\n */\n tags?: string[];\n\n annotations?: ToolAnnotations;\n\n /**\n * If true, the tool will not be shown in the tool/list action results.\n * this method can still be called directly with tool/call even if hidden.\n * use case: tools that are intended to be private or internal. (usually for testing / private apis)\n * Default: false\n */\n hideFromDiscovery?: boolean;\n}\n\n\n\n/**\n * Runtime schema for ToolSingleOutputType:\n * - literals ('string', 'image', ...)\n * - any Zod schema (ZodObject, ZodArray, etc.)\n * - raw shapes (Record<string, ZodTypeAny>)\n */\n\nconst primitiveOutputLiteralSchema = z.enum(['string', 'number', 'date', 'boolean']);\nconst specialOutputLiteralSchema = z.enum(['image', 'audio', 'resource', 'resource_link']);\n\nconst outputLiteralSchema = z.union([\n primitiveOutputLiteralSchema,\n specialOutputLiteralSchema,\n]);\n\n// Any Zod schema instance (object, array, union, etc.)\nconst zodSchemaInstanceSchema = z.instanceof(z.ZodType);\n\n// Raw shape: { field: z.string(), ... }\nconst zodRawShapeSchema = z.record(zodSchemaInstanceSchema);\n\nconst toolSingleOutputSchema = z.union([\n outputLiteralSchema,\n zodSchemaInstanceSchema,\n zodRawShapeSchema,\n]);\n\n// ToolOutputType = ToolSingleOutputType | ToolSingleOutputType[]\nconst toolOutputSchema = z.union([\n toolSingleOutputSchema,\n z.array(toolSingleOutputSchema),\n]);\nexport const frontMcpToolMetadataSchema = z\n .object({\n id: z.string().optional(),\n name: z.string().min(1),\n description: z.string().optional(),\n inputSchema: z.instanceof(Object),\n rawInputSchema: z.any().optional(),\n outputSchema: toolOutputSchema.optional(),\n tags: z.array(z.string().min(1)).optional(),\n annotations: mcpToolAnnotationsSchema.optional(),\n hideFromDiscovery: z.boolean().optional().default(false),\n } satisfies RawZodShape<ToolMetadata, ExtendFrontMcpToolMetadata>)\n .passthrough();\n"]}
1
+ {"version":3,"file":"tool.metadata.js","sourceRoot":"","sources":["../../../../src/common/metadata/tool.metadata.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAMxB,iEAK4C;AAyE5C,MAAM,wBAAwB,GAAG,OAAC;KAC/B,MAAM,CAAC;IACN,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,eAAe,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACC,CAAC;KACxC,WAAW,EAAE,CAAC;AAmBJ,QAAA,iBAAiB,GAAG,6BAAkB,CAAC;AAOvC,QAAA,iBAAiB,GAAG,6BAAkB,CAAC;AAOvC,QAAA,oBAAoB,GAAG,iCAAsB,CAAC;AAO9C,QAAA,wBAAwB,GAAG,6BAAkB,CAAC;AAyF3D;;;;;GAKG;AAEH,MAAM,4BAA4B,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACrF,MAAM,0BAA0B,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;AAE3F,MAAM,mBAAmB,GAAG,OAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,0BAA0B,CAAC,CAAC,CAAC;AAEhG,uDAAuD;AACvD,MAAM,uBAAuB,GAAG,OAAC,CAAC,UAAU,CAAC,OAAC,CAAC,OAAO,CAAC,CAAC;AAExD,wCAAwC;AACxC,MAAM,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC;AAExE,MAAM,sBAAsB,GAAG,OAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAE1G,iEAAiE;AACjE,MAAM,gBAAgB,GAAG,OAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,EAAE,OAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAC5F,MAAM,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACjC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC;IACxC,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAAG,OAAC;KACxC,MAAM,CAAC;IACN,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,OAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACjC,cAAc,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACzC,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IAChD,iBAAiB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACxD,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;IAC/C,EAAE,EAAE,OAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC+B,CAAC;KACjE,WAAW,EAAE,CAAC","sourcesContent":["import { z } from 'zod';\nimport { RawZodShape } from '../types';\nimport type { JSONSchema } from 'zod/v4/core';\n\n/** JSON Schema type from Zod v4 */\ntype JsonSchema = JSONSchema.JSONSchema;\nimport {\n ImageContentSchema,\n AudioContentSchema,\n ResourceLinkSchema,\n EmbeddedResourceSchema,\n} from '@modelcontextprotocol/sdk/types.js';\nimport { ToolUIConfig } from './tool-ui.metadata';\nimport { ToolInputOf, ToolOutputOf } from '../decorators';\n\ndeclare global {\n /**\n * Declarative metadata extends to the an McpTool decorator.\n */\n interface ExtendFrontMcpToolMetadata {}\n}\n\n/**\n * Example input/output pair for a tool, used in documentation and describe output.\n */\nexport interface ToolExample {\n /**\n * Description of what this example demonstrates.\n */\n description: string;\n\n /**\n * Example input values for the tool.\n */\n input: Record<string, unknown>;\n\n /**\n * Optional expected output for the example.\n */\n output?: unknown;\n}\n\nexport interface ToolAnnotations {\n [x: string]: unknown;\n\n /**\n * A human-readable title for the tool.\n */\n title?: string;\n /**\n * If true, the tool does not modify its environment.\n *\n * Default: false\n */\n readOnlyHint?: boolean;\n /**\n * If true, the tool may perform destructive updates to its environment.\n * If false, the tool performs only additive updates.\n *\n * (This property is meaningful only when `readOnlyHint == false`)\n *\n * Default: true\n */\n destructiveHint?: boolean;\n /**\n * If true, calling the tool repeatedly with the same arguments\n * will have no additional effect on the its environment.\n *\n * (This property is meaningful only when `readOnlyHint == false`)\n *\n * Default: false\n */\n idempotentHint?: boolean;\n /**\n * If true, this tool may interact with an \"open world\" of external\n * entities. If false, the tool's domain of interaction is closed.\n * For example, the world of a web search tool is open, whereas that\n * of a memory tool is not.\n *\n * Default: true\n */\n openWorldHint?: boolean;\n}\n\nconst mcpToolAnnotationsSchema = z\n .object({\n title: z.string().optional(),\n readOnlyHint: z.boolean().optional(),\n destructiveHint: z.boolean().optional(),\n idempotentHint: z.boolean().optional(),\n openWorldHint: z.boolean().optional(),\n } satisfies RawZodShape<ToolAnnotations>)\n .passthrough();\n\n/**\n * Tool response type text: include if outputSchema is zod primitive types\n */\ntype PrimitiveOutputType =\n | 'string'\n | 'number'\n | 'date'\n | 'boolean'\n | z.ZodString\n | z.ZodNumber\n | z.ZodBoolean\n | z.ZodBigInt\n | z.ZodDate;\n/**\n * Tool response type image, will use the ImageContentSchema from MCP types\n */\ntype ImageOutputType = 'image';\nexport const ImageOutputSchema = ImageContentSchema;\nexport type ImageOutput = z.output<typeof ImageOutputSchema>;\n\n/**\n * Tool response type audio, will use the AudioContentSchema from MCP types\n */\ntype AudioOutputType = 'audio';\nexport const AudioOutputSchema = AudioContentSchema;\nexport type AudioOutput = z.output<typeof AudioOutputSchema>;\n\n/**\n * Tool response type resource, will use the EmbeddedResourceSchema from MCP types\n */\ntype ResourceOutputType = 'resource';\nexport const ResourceOutputSchema = EmbeddedResourceSchema;\nexport type ResourceOutput = z.output<typeof ResourceOutputSchema>;\n\n/**\n * Tool response type resource_link, will use the ResourceLinkSchema from MCP types\n */\ntype ResourceLinkOutputType = 'resource_link';\nexport const ResourceLinkOutputSchema = ResourceLinkSchema;\nexport type ResourceLinkOutput = z.output<typeof ResourceLinkOutputSchema>;\n\n/**\n * Tool response type json, ZodRawShape for fast usage\n */\ntype StructuredOutputType =\n | z.ZodRawShape\n | z.ZodObject<any>\n | z.ZodArray<z.ZodType>\n | z.ZodUnion<[z.ZodObject<any>, ...z.ZodObject<any>[]]>\n | z.ZodDiscriminatedUnion<z.ZodObject<any>[]>;\n\nexport type ToolSingleOutputType =\n | PrimitiveOutputType\n | ImageOutputType\n | AudioOutputType\n | ResourceOutputType\n | ResourceLinkOutputType\n | StructuredOutputType;\n\n/**\n * Default default tool schema is {}\n */\nexport type ToolOutputType = ToolSingleOutputType | ToolSingleOutputType[] | undefined;\nexport type ToolInputType = z.ZodRawShape;\n\n/**\n * Declarative metadata describing what an McpTool contributes.\n */\nexport interface ToolMetadata<InSchema = ToolInputType, OutSchema extends ToolOutputType = ToolOutputType>\n extends ExtendFrontMcpToolMetadata {\n /**\n * Optional unique identifier for the tool.\n * If omitted, a consumer may derive an ID from the class or file name.\n */\n id?: string;\n\n /**\n * Human‑readable name of the tool, used in UIs, logs, and discovery.\n */\n name: string;\n\n /**\n * Short summary describing what the tool does and when to use it.\n */\n description?: string;\n\n /**\n * Zod schema describing the expected input payload for the tool.\n * Used for validation and for generating automatic docs/UX.\n */\n inputSchema: InSchema;\n /**\n * Zod schema describing the expected input payload for the tool.\n * Used for validation and for generating automatic docs/UX.\n */\n rawInputSchema?: JsonSchema;\n\n /**\n * Zod schema describing the structure of the tool's successful output.\n */\n outputSchema?: OutSchema;\n\n /**\n * Optional list of tags/labels that categorize the tool for discovery and filtering.\n */\n tags?: string[];\n\n annotations?: ToolAnnotations;\n\n /**\n * If true, the tool will not be shown in the tool/list action results.\n * this method can still be called directly with tool/call even if hidden.\n * use case: tools that are intended to be private or internal. (usually for testing / private apis)\n * Default: false\n */\n hideFromDiscovery?: boolean;\n\n /**\n * Optional usage examples for the tool.\n * These are used by codecall:describe to provide accurate usage examples.\n * If provided, these take precedence over auto-generated examples.\n */\n examples?: ToolExample[];\n\n ui?: ToolUIConfig<ToolInputOf<InSchema>, ToolOutputOf<OutSchema>>;\n}\n\n/**\n * Runtime schema for ToolSingleOutputType:\n * - literals ('string', 'image', ...)\n * - any Zod schema (ZodObject, ZodArray, etc.)\n * - raw shapes (Record<string, ZodTypeAny>)\n */\n\nconst primitiveOutputLiteralSchema = z.enum(['string', 'number', 'date', 'boolean']);\nconst specialOutputLiteralSchema = z.enum(['image', 'audio', 'resource', 'resource_link']);\n\nconst outputLiteralSchema = z.union([primitiveOutputLiteralSchema, specialOutputLiteralSchema]);\n\n// Any Zod schema instance (object, array, union, etc.)\nconst zodSchemaInstanceSchema = z.instanceof(z.ZodType);\n\n// Raw shape: { field: z.string(), ... }\nconst zodRawShapeSchema = z.record(z.string(), zodSchemaInstanceSchema);\n\nconst toolSingleOutputSchema = z.union([outputLiteralSchema, zodSchemaInstanceSchema, zodRawShapeSchema]);\n\n// ToolOutputType = ToolSingleOutputType | ToolSingleOutputType[]\nconst toolOutputSchema = z.union([toolSingleOutputSchema, z.array(toolSingleOutputSchema)]);\nconst toolExampleSchema = z.object({\n description: z.string(),\n input: z.record(z.string(), z.unknown()),\n output: z.unknown().optional(),\n});\n\nexport const frontMcpToolMetadataSchema = z\n .object({\n id: z.string().optional(),\n name: z.string().min(1),\n description: z.string().optional(),\n inputSchema: z.instanceof(Object),\n rawInputSchema: z.any().optional(),\n outputSchema: toolOutputSchema.optional(),\n tags: z.array(z.string().min(1)).optional(),\n annotations: mcpToolAnnotationsSchema.optional(),\n hideFromDiscovery: z.boolean().optional().default(false),\n examples: z.array(toolExampleSchema).optional(),\n ui: z.looseObject({}).optional(),\n } satisfies RawZodShape<ToolMetadata, ExtendFrontMcpToolMetadata>)\n .passthrough();\n"]}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Type-safe dotted path builder for nested object access
3
+ * Examples: 'vm.preset', 'embedding.strategy', 'directCalls.enabled'
4
+ */
5
+ export type DottedPath<T, Prefix extends string = ''> = T extends object ? {
6
+ [K in keyof T & string]: T[K] extends object ? `${Prefix}${K}` | DottedPath<T[K], `${Prefix}${K}.`> : `${Prefix}${K}`;
7
+ }[keyof T & string] : never;
8
+ /**
9
+ * Get the type at a dotted path
10
+ */
11
+ export type PathValue<T, P extends string> = P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? PathValue<T[Key], Rest> : never : P extends keyof T ? T[P] : never;
12
+ /**
13
+ * Base configuration provider with type-safe path lookup and convict-like API
14
+ */
15
+ export declare abstract class BaseConfig<TConfig extends object> {
16
+ protected readonly config: TConfig;
17
+ constructor(config: TConfig);
18
+ /**
19
+ * Get the complete configuration object
20
+ */
21
+ getAll(): TConfig;
22
+ /**
23
+ * Get a value using dotted path notation (convict-like)
24
+ * @example
25
+ * config.get('vm.preset') // returns 'secure'
26
+ * config.get('embedding.strategy') // returns 'tfidf'
27
+ * config.get('directCalls.enabled') // returns true
28
+ * config.get('vm.timeout', 5000) // returns value or 5000 if undefined
29
+ */
30
+ get<P extends DottedPath<TConfig>>(path: P): PathValue<TConfig, P>;
31
+ get<P extends DottedPath<TConfig>>(path: P, defaultValue: PathValue<TConfig, P>): PathValue<TConfig, P>;
32
+ /**
33
+ * Check if a path exists in the configuration
34
+ * @example
35
+ * config.has('vm.preset') // returns true
36
+ * config.has('nonexistent.path') // returns false
37
+ */
38
+ has(path: string): boolean;
39
+ /**
40
+ * Get a value with a default fallback
41
+ * @example
42
+ * config.getOrDefault('vm.timeout', 5000)
43
+ */
44
+ getOrDefault<P extends DottedPath<TConfig>>(path: P, defaultValue: PathValue<TConfig, P>): PathValue<TConfig, P>;
45
+ /**
46
+ * Get a required value (throws if undefined)
47
+ * @example
48
+ * config.getRequired('vm.preset')
49
+ * config.getOrThrow('vm.preset')
50
+ */
51
+ getRequired<P extends DottedPath<TConfig>>(path: P): PathValue<TConfig, P>;
52
+ /**
53
+ * Alias for getRequired - Get a required value (throws if undefined)
54
+ * @example
55
+ * config.getOrThrow('vm.preset')
56
+ */
57
+ getOrThrow<P extends DottedPath<TConfig>>(path: P): PathValue<TConfig, P>;
58
+ /**
59
+ * Get a nested object at a path
60
+ * @example
61
+ * config.getSection('vm') // returns entire vm config
62
+ */
63
+ getSection<K extends keyof TConfig>(section: K): TConfig[K];
64
+ /**
65
+ * Check if the configuration matches a specific value at a path
66
+ * @example
67
+ * config.matches('vm.preset', 'secure') // returns true/false
68
+ */
69
+ matches<P extends DottedPath<TConfig>>(path: P, value: PathValue<TConfig, P>): boolean;
70
+ /**
71
+ * Get multiple values at once
72
+ * @example
73
+ * config.getMany(['vm.preset', 'embedding.strategy', 'topK'])
74
+ */
75
+ getMany<P extends DottedPath<TConfig>>(paths: P[]): Record<P, PathValue<TConfig, P>>;
76
+ /**
77
+ * Convert configuration to JSON
78
+ */
79
+ toJSON(): TConfig;
80
+ /**
81
+ * Convert configuration to string
82
+ */
83
+ toString(): string;
84
+ }
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ // file: libs/sdk/src/common/providers/base-config.provider.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BaseConfig = void 0;
5
+ /**
6
+ * Base configuration provider with type-safe path lookup and convict-like API
7
+ */
8
+ class BaseConfig {
9
+ config;
10
+ constructor(config) {
11
+ this.config = config;
12
+ }
13
+ /**
14
+ * Get the complete configuration object
15
+ */
16
+ getAll() {
17
+ return this.config;
18
+ }
19
+ get(path, defaultValue) {
20
+ const keys = path.split('.');
21
+ let result = this.config;
22
+ for (const key of keys) {
23
+ if (result && typeof result === 'object' && key in result) {
24
+ result = result[key];
25
+ }
26
+ else {
27
+ return defaultValue !== undefined ? defaultValue : undefined;
28
+ }
29
+ }
30
+ const value = result;
31
+ return value !== undefined
32
+ ? value
33
+ : defaultValue !== undefined
34
+ ? defaultValue
35
+ : undefined;
36
+ }
37
+ /**
38
+ * Check if a path exists in the configuration
39
+ * @example
40
+ * config.has('vm.preset') // returns true
41
+ * config.has('nonexistent.path') // returns false
42
+ */
43
+ has(path) {
44
+ const keys = path.split('.');
45
+ let result = this.config;
46
+ for (const key of keys) {
47
+ if (result && typeof result === 'object' && key in result) {
48
+ result = result[key];
49
+ }
50
+ else {
51
+ return false;
52
+ }
53
+ }
54
+ return result !== undefined;
55
+ }
56
+ /**
57
+ * Get a value with a default fallback
58
+ * @example
59
+ * config.getOrDefault('vm.timeout', 5000)
60
+ */
61
+ getOrDefault(path, defaultValue) {
62
+ const value = this.get(path);
63
+ return value !== undefined ? value : defaultValue;
64
+ }
65
+ /**
66
+ * Get a required value (throws if undefined)
67
+ * @example
68
+ * config.getRequired('vm.preset')
69
+ * config.getOrThrow('vm.preset')
70
+ */
71
+ getRequired(path) {
72
+ const value = this.get(path);
73
+ if (value === undefined) {
74
+ throw new Error(`Required configuration path "${path}" is undefined`);
75
+ }
76
+ return value;
77
+ }
78
+ /**
79
+ * Alias for getRequired - Get a required value (throws if undefined)
80
+ * @example
81
+ * config.getOrThrow('vm.preset')
82
+ */
83
+ getOrThrow(path) {
84
+ return this.getRequired(path);
85
+ }
86
+ /**
87
+ * Get a nested object at a path
88
+ * @example
89
+ * config.getSection('vm') // returns entire vm config
90
+ */
91
+ getSection(section) {
92
+ return this.config[section];
93
+ }
94
+ /**
95
+ * Check if the configuration matches a specific value at a path
96
+ * @example
97
+ * config.matches('vm.preset', 'secure') // returns true/false
98
+ */
99
+ matches(path, value) {
100
+ return this.get(path) === value;
101
+ }
102
+ /**
103
+ * Get multiple values at once
104
+ * @example
105
+ * config.getMany(['vm.preset', 'embedding.strategy', 'topK'])
106
+ */
107
+ getMany(paths) {
108
+ const result = {};
109
+ for (const path of paths) {
110
+ result[path] = this.get(path);
111
+ }
112
+ return result;
113
+ }
114
+ /**
115
+ * Convert configuration to JSON
116
+ */
117
+ toJSON() {
118
+ return this.config;
119
+ }
120
+ /**
121
+ * Convert configuration to string
122
+ */
123
+ toString() {
124
+ return JSON.stringify(this.config, null, 2);
125
+ }
126
+ }
127
+ exports.BaseConfig = BaseConfig;
128
+ //# sourceMappingURL=base-config.provider.js.map