@frontmcp/sdk 0.4.1 → 0.5.1

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 +110 -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 +336 -1632
  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 +89 -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 +77 -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 +248 -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 +78 -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 +110 -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 +83 -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 +83 -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 +60 -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 +59 -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 +161 -1112
  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 +51 -474
  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 +95 -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 +138 -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 +922 -207
  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 +80 -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 +82 -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 +82 -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 +47 -145
  452. package/src/transport/mcp-handlers/logging-set-level-request.handler.d.ts +66 -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 +72 -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 +57 -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 +57 -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,18 @@ 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;
83
+ annotations: z.ZodOptional<z.ZodObject<{
84
+ audience: z.ZodOptional<z.ZodArray<z.ZodEnum<{
85
+ user: "user";
86
+ assistant: "assistant";
87
+ }>>>;
88
+ priority: z.ZodOptional<z.ZodNumber>;
89
+ lastModified: z.ZodOptional<z.ZodISODateTime>;
90
+ }, z.core.$strip>>;
62
91
  _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
- }>;
92
+ }, z.core.$strip>;
74
93
  export type ImageOutput = z.output<typeof ImageOutputSchema>;
75
94
  /**
76
95
  * Tool response type audio, will use the AudioContentSchema from MCP types
@@ -78,20 +97,18 @@ export type ImageOutput = z.output<typeof ImageOutputSchema>;
78
97
  type AudioOutputType = 'audio';
79
98
  export declare const AudioOutputSchema: z.ZodObject<{
80
99
  type: z.ZodLiteral<"audio">;
81
- data: z.ZodEffects<z.ZodString, string, string>;
100
+ data: z.ZodString;
82
101
  mimeType: z.ZodString;
102
+ annotations: z.ZodOptional<z.ZodObject<{
103
+ audience: z.ZodOptional<z.ZodArray<z.ZodEnum<{
104
+ user: "user";
105
+ assistant: "assistant";
106
+ }>>>;
107
+ priority: z.ZodOptional<z.ZodNumber>;
108
+ lastModified: z.ZodOptional<z.ZodISODateTime>;
109
+ }, z.core.$strip>>;
83
110
  _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
- }>;
111
+ }, z.core.$strip>;
95
112
  export type AudioOutput = z.output<typeof AudioOutputSchema>;
96
113
  /**
97
114
  * Tool response type resource, will use the EmbeddedResourceSchema from MCP types
@@ -99,130 +116,59 @@ export type AudioOutput = z.output<typeof AudioOutputSchema>;
99
116
  type ResourceOutputType = 'resource';
100
117
  export declare const ResourceOutputSchema: z.ZodObject<{
101
118
  type: z.ZodLiteral<"resource">;
102
- resource: z.ZodUnion<[z.ZodObject<z.objectUtil.extendShape<{
119
+ resource: z.ZodUnion<readonly [z.ZodObject<{
103
120
  uri: z.ZodString;
104
121
  mimeType: z.ZodOptional<z.ZodString>;
105
122
  _meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
106
- }, {
107
123
  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<{
124
+ }, z.core.$strip>, z.ZodObject<{
119
125
  uri: z.ZodString;
120
126
  mimeType: z.ZodOptional<z.ZodString>;
121
127
  _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
- }>]>;
128
+ blob: z.ZodString;
129
+ }, z.core.$strip>]>;
130
+ annotations: z.ZodOptional<z.ZodObject<{
131
+ audience: z.ZodOptional<z.ZodArray<z.ZodEnum<{
132
+ user: "user";
133
+ assistant: "assistant";
134
+ }>>>;
135
+ priority: z.ZodOptional<z.ZodNumber>;
136
+ lastModified: z.ZodOptional<z.ZodISODateTime>;
137
+ }, z.core.$strip>>;
135
138
  _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
- }>;
139
+ }, z.core.$strip>;
165
140
  export type ResourceOutput = z.output<typeof ResourceOutputSchema>;
166
141
  /**
167
142
  * Tool response type resource_link, will use the ResourceLinkSchema from MCP types
168
143
  */
169
144
  type ResourceLinkOutputType = 'resource_link';
170
145
  export declare const ResourceLinkOutputSchema: z.ZodObject<{
171
- name: z.ZodString;
172
- title: z.ZodOptional<z.ZodString>;
173
- } & {
174
146
  uri: z.ZodString;
175
147
  description: z.ZodOptional<z.ZodString>;
176
148
  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
- } & {
149
+ annotations: z.ZodOptional<z.ZodObject<{
150
+ audience: z.ZodOptional<z.ZodArray<z.ZodEnum<{
151
+ user: "user";
152
+ assistant: "assistant";
153
+ }>>>;
154
+ priority: z.ZodOptional<z.ZodNumber>;
155
+ lastModified: z.ZodOptional<z.ZodISODateTime>;
156
+ }, z.core.$strip>>;
157
+ _meta: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
179
158
  icons: z.ZodOptional<z.ZodArray<z.ZodObject<{
180
159
  src: z.ZodString;
181
160
  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
- } & {
161
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
162
+ }, z.core.$strip>>>;
163
+ name: z.ZodString;
164
+ title: z.ZodOptional<z.ZodString>;
193
165
  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
- }>;
166
+ }, z.core.$strip>;
221
167
  export type ResourceLinkOutput = z.output<typeof ResourceLinkOutputSchema>;
222
168
  /**
223
169
  * Tool response type json, ZodRawShape for fast usage
224
170
  */
225
- type StructuredOutputType = z.ZodRawShape | z.ZodObject<any> | z.ZodArray<any> | z.ZodUnion<[ZodObject<any>, ...ZodObject<any>[]]> | z.ZodDiscriminatedUnion<any, any>;
171
+ 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
172
  export type ToolSingleOutputType = PrimitiveOutputType | ImageOutputType | AudioOutputType | ResourceOutputType | ResourceLinkOutputType | StructuredOutputType;
227
173
  /**
228
174
  * Default default tool schema is {}
@@ -255,7 +201,7 @@ export interface ToolMetadata<InSchema = ToolInputType, OutSchema extends ToolOu
255
201
  * Zod schema describing the expected input payload for the tool.
256
202
  * Used for validation and for generating automatic docs/UX.
257
203
  */
258
- rawInputSchema?: JSONSchema7;
204
+ rawInputSchema?: JsonSchema;
259
205
  /**
260
206
  * Zod schema describing the structure of the tool's successful output.
261
207
  */
@@ -272,90 +218,55 @@ export interface ToolMetadata<InSchema = ToolInputType, OutSchema extends ToolOu
272
218
  * Default: false
273
219
  */
274
220
  hideFromDiscovery?: boolean;
221
+ /**
222
+ * Optional usage examples for the tool.
223
+ * These are used by codecall:describe to provide accurate usage examples.
224
+ * If provided, these take precedence over auto-generated examples.
225
+ */
226
+ examples?: ToolExample[];
227
+ ui?: ToolUIConfig<ToolInputOf<InSchema>, ToolOutputOf<OutSchema>>;
275
228
  }
276
229
  export declare const frontMcpToolMetadataSchema: z.ZodObject<{
277
230
  id: z.ZodOptional<z.ZodString>;
278
231
  name: z.ZodString;
279
232
  description: z.ZodOptional<z.ZodString>;
280
- inputSchema: z.ZodType<Object, z.ZodTypeDef, Object>;
233
+ inputSchema: z.ZodCustom<Object, Object>;
281
234
  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">>;
235
+ outputSchema: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEnum<{
236
+ string: "string";
237
+ number: "number";
238
+ boolean: "boolean";
239
+ date: "date";
240
+ }>, z.ZodEnum<{
241
+ image: "image";
242
+ audio: "audio";
243
+ resource: "resource";
244
+ resource_link: "resource_link";
245
+ }>]>, 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<{
246
+ string: "string";
247
+ number: "number";
248
+ boolean: "boolean";
249
+ date: "date";
250
+ }>, z.ZodEnum<{
251
+ image: "image";
252
+ audio: "audio";
253
+ resource: "resource";
254
+ resource_link: "resource_link";
255
+ }>]>, 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>>>>]>>]>>;
256
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
284
257
  annotations: z.ZodOptional<z.ZodObject<{
285
258
  title: z.ZodOptional<z.ZodString>;
286
259
  readOnlyHint: z.ZodOptional<z.ZodBoolean>;
287
260
  destructiveHint: z.ZodOptional<z.ZodBoolean>;
288
261
  idempotentHint: z.ZodOptional<z.ZodBoolean>;
289
262
  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">>>;
263
+ }, z.core.$loose>>;
359
264
  hideFromDiscovery: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
360
- }, z.ZodTypeAny, "passthrough">>;
265
+ examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
266
+ description: z.ZodString;
267
+ input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
268
+ output: z.ZodOptional<z.ZodUnknown>;
269
+ }, z.core.$strip>>>;
270
+ ui: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
271
+ }, z.core.$loose>;
361
272
  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
+ }