@adonis-agora/agent 0.61.0 → 0.63.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 (664) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +12 -7
  3. package/dist/configure.d.ts +7 -5
  4. package/dist/configure.d.ts.map +1 -1
  5. package/dist/configure.js +7 -5
  6. package/dist/configure.js.map +1 -1
  7. package/dist/providers/a2a_provider.d.ts +14 -0
  8. package/dist/providers/a2a_provider.d.ts.map +1 -0
  9. package/dist/providers/a2a_provider.js +136 -0
  10. package/dist/providers/a2a_provider.js.map +1 -0
  11. package/dist/providers/agent_provider.d.ts.map +1 -1
  12. package/dist/providers/agent_provider.js +81 -25
  13. package/dist/providers/agent_provider.js.map +1 -1
  14. package/dist/providers/mcp_provider.d.ts +3 -0
  15. package/dist/providers/mcp_provider.d.ts.map +1 -1
  16. package/dist/providers/mcp_provider.js +147 -62
  17. package/dist/providers/mcp_provider.js.map +1 -1
  18. package/dist/src/a2a/auth.d.ts +67 -0
  19. package/dist/src/a2a/auth.d.ts.map +1 -0
  20. package/dist/src/a2a/auth.js +47 -0
  21. package/dist/src/a2a/auth.js.map +1 -0
  22. package/dist/src/a2a/define_config.d.ts +74 -0
  23. package/dist/src/a2a/define_config.d.ts.map +1 -0
  24. package/dist/src/a2a/define_config.js +5 -0
  25. package/dist/src/a2a/define_config.js.map +1 -0
  26. package/dist/src/a2a/gate.d.ts +23 -0
  27. package/dist/src/a2a/gate.d.ts.map +1 -0
  28. package/dist/src/a2a/gate.js +56 -0
  29. package/dist/src/a2a/gate.js.map +1 -0
  30. package/dist/src/a2a/handler.d.ts +65 -0
  31. package/dist/src/a2a/handler.d.ts.map +1 -0
  32. package/dist/src/a2a/handler.js +322 -0
  33. package/dist/src/a2a/handler.js.map +1 -0
  34. package/dist/src/a2a/index.d.ts +15 -0
  35. package/dist/src/a2a/index.d.ts.map +1 -0
  36. package/dist/src/a2a/index.js +9 -0
  37. package/dist/src/a2a/index.js.map +1 -0
  38. package/dist/src/a2a/permission-tool.d.ts +17 -0
  39. package/dist/src/a2a/permission-tool.d.ts.map +1 -0
  40. package/dist/src/a2a/permission-tool.js +70 -0
  41. package/dist/src/a2a/permission-tool.js.map +1 -0
  42. package/dist/src/a2a/protocol.d.ts +100 -0
  43. package/dist/src/a2a/protocol.d.ts.map +1 -0
  44. package/dist/src/a2a/protocol.js +106 -0
  45. package/dist/src/a2a/protocol.js.map +1 -0
  46. package/dist/src/a2a/runtime.d.ts +6 -0
  47. package/dist/src/a2a/runtime.d.ts.map +1 -0
  48. package/dist/src/a2a/runtime.js +13 -0
  49. package/dist/src/a2a/runtime.js.map +1 -0
  50. package/dist/src/a2a/server_middleware.d.ts +13 -0
  51. package/dist/src/a2a/server_middleware.d.ts.map +1 -0
  52. package/dist/src/a2a/server_middleware.js +18 -0
  53. package/dist/src/a2a/server_middleware.js.map +1 -0
  54. package/dist/src/a2a/store.d.ts +79 -0
  55. package/dist/src/a2a/store.d.ts.map +1 -0
  56. package/dist/src/a2a/store.js +151 -0
  57. package/dist/src/a2a/store.js.map +1 -0
  58. package/dist/src/a2a/turn.d.ts +80 -0
  59. package/dist/src/a2a/turn.d.ts.map +1 -0
  60. package/dist/src/a2a/turn.js +211 -0
  61. package/dist/src/a2a/turn.js.map +1 -0
  62. package/dist/src/action-proposal-executor.d.ts +3 -0
  63. package/dist/src/action-proposal-executor.d.ts.map +1 -1
  64. package/dist/src/action-proposal-executor.js +10 -0
  65. package/dist/src/action-proposal-executor.js.map +1 -1
  66. package/dist/src/action-proposal-service.d.ts +7 -2
  67. package/dist/src/action-proposal-service.d.ts.map +1 -1
  68. package/dist/src/action-proposal-service.js +21 -16
  69. package/dist/src/action-proposal-service.js.map +1 -1
  70. package/dist/src/action-proposal-text.d.ts +42 -3
  71. package/dist/src/action-proposal-text.d.ts.map +1 -1
  72. package/dist/src/action-proposal-text.js +80 -12
  73. package/dist/src/action-proposal-text.js.map +1 -1
  74. package/dist/src/action-proposal-worker.d.ts +2 -1
  75. package/dist/src/action-proposal-worker.d.ts.map +1 -1
  76. package/dist/src/action-proposal-worker.js +9 -2
  77. package/dist/src/action-proposal-worker.js.map +1 -1
  78. package/dist/src/actor-resolver.d.ts +12 -4
  79. package/dist/src/actor-resolver.d.ts.map +1 -1
  80. package/dist/src/actor-resolver.js +24 -7
  81. package/dist/src/actor-resolver.js.map +1 -1
  82. package/dist/src/ag-ui/adapter.d.ts.map +1 -1
  83. package/dist/src/ag-ui/adapter.js +115 -17
  84. package/dist/src/ag-ui/adapter.js.map +1 -1
  85. package/dist/src/ag-ui/core/encoder.d.ts +106 -0
  86. package/dist/src/ag-ui/core/encoder.d.ts.map +1 -0
  87. package/dist/src/ag-ui/core/encoder.js +534 -0
  88. package/dist/src/ag-ui/core/encoder.js.map +1 -0
  89. package/dist/src/ag-ui/core/index.d.ts +12 -0
  90. package/dist/src/ag-ui/core/index.d.ts.map +1 -0
  91. package/dist/src/ag-ui/core/index.js +12 -0
  92. package/dist/src/ag-ui/core/index.js.map +1 -0
  93. package/dist/src/ag-ui/core/input.d.ts +92 -0
  94. package/dist/src/ag-ui/core/input.d.ts.map +1 -0
  95. package/dist/src/ag-ui/core/input.js +246 -0
  96. package/dist/src/ag-ui/core/input.js.map +1 -0
  97. package/dist/src/ag-ui/core/interrupt-id.d.ts +31 -0
  98. package/dist/src/ag-ui/core/interrupt-id.d.ts.map +1 -0
  99. package/dist/src/ag-ui/core/interrupt-id.js +48 -0
  100. package/dist/src/ag-ui/core/interrupt-id.js.map +1 -0
  101. package/dist/src/ag-ui/{proposal-decision.d.ts → core/proposal-decision.d.ts} +1 -1
  102. package/dist/src/ag-ui/core/proposal-decision.d.ts.map +1 -0
  103. package/dist/src/ag-ui/{proposal-decision.js → core/proposal-decision.js} +3 -6
  104. package/dist/src/ag-ui/core/proposal-decision.js.map +1 -0
  105. package/dist/src/ag-ui/core/stream.d.ts +49 -0
  106. package/dist/src/ag-ui/core/stream.d.ts.map +1 -0
  107. package/dist/src/ag-ui/core/stream.js +90 -0
  108. package/dist/src/ag-ui/core/stream.js.map +1 -0
  109. package/dist/src/ag-ui/core/types.d.ts +249 -0
  110. package/dist/src/ag-ui/core/types.d.ts.map +1 -0
  111. package/dist/src/ag-ui/core/types.js +35 -0
  112. package/dist/src/ag-ui/core/types.js.map +1 -0
  113. package/dist/src/ag-ui/encoder.d.ts +3 -4
  114. package/dist/src/ag-ui/encoder.d.ts.map +1 -1
  115. package/dist/src/ag-ui/encoder.js +10 -11
  116. package/dist/src/ag-ui/encoder.js.map +1 -1
  117. package/dist/src/ag-ui/frames.d.ts +8 -5
  118. package/dist/src/ag-ui/frames.d.ts.map +1 -1
  119. package/dist/src/ag-ui/frames.js +21 -7
  120. package/dist/src/ag-ui/frames.js.map +1 -1
  121. package/dist/src/ag-ui/index.d.ts +3 -5
  122. package/dist/src/ag-ui/index.d.ts.map +1 -1
  123. package/dist/src/ag-ui/index.js +3 -5
  124. package/dist/src/ag-ui/index.js.map +1 -1
  125. package/dist/src/ag-ui/stream.d.ts +3 -4
  126. package/dist/src/ag-ui/stream.d.ts.map +1 -1
  127. package/dist/src/ag-ui/stream.js +4 -5
  128. package/dist/src/ag-ui/stream.js.map +1 -1
  129. package/dist/src/agent-deps-factory.d.ts +3 -0
  130. package/dist/src/agent-deps-factory.d.ts.map +1 -1
  131. package/dist/src/agent-deps-factory.js +3 -0
  132. package/dist/src/agent-deps-factory.js.map +1 -1
  133. package/dist/src/agent-deps.d.ts +3 -0
  134. package/dist/src/agent-deps.d.ts.map +1 -1
  135. package/dist/src/agent-deps.js.map +1 -1
  136. package/dist/src/agent-loop.d.ts +4 -3
  137. package/dist/src/agent-loop.d.ts.map +1 -1
  138. package/dist/src/agent-loop.js +50 -25
  139. package/dist/src/agent-loop.js.map +1 -1
  140. package/dist/src/agent-service.d.ts +46 -4
  141. package/dist/src/agent-service.d.ts.map +1 -1
  142. package/dist/src/agent-service.js +87 -11
  143. package/dist/src/agent-service.js.map +1 -1
  144. package/dist/src/ai-sdk/ai-sdk-model.js +4 -1
  145. package/dist/src/ai-sdk/ai-sdk-model.js.map +1 -1
  146. package/dist/src/ai-tool-ref.d.ts +4 -0
  147. package/dist/src/ai-tool-ref.d.ts.map +1 -1
  148. package/dist/src/ai-tool-ref.js +10 -14
  149. package/dist/src/ai-tool-ref.js.map +1 -1
  150. package/dist/src/attachment-limits.d.ts +10 -0
  151. package/dist/src/attachment-limits.d.ts.map +1 -0
  152. package/dist/src/attachment-limits.js +13 -0
  153. package/dist/src/attachment-limits.js.map +1 -0
  154. package/dist/src/channels/adapters/evolution_api.d.ts +49 -0
  155. package/dist/src/channels/adapters/evolution_api.d.ts.map +1 -0
  156. package/dist/src/channels/adapters/evolution_api.js +241 -0
  157. package/dist/src/channels/adapters/evolution_api.js.map +1 -0
  158. package/dist/src/channels/adapters/telegram.d.ts +34 -0
  159. package/dist/src/channels/adapters/telegram.d.ts.map +1 -0
  160. package/dist/src/channels/adapters/telegram.js +196 -0
  161. package/dist/src/channels/adapters/telegram.js.map +1 -0
  162. package/dist/src/channels/adapters/whatsapp_cloud.d.ts +31 -0
  163. package/dist/src/channels/adapters/whatsapp_cloud.d.ts.map +1 -0
  164. package/dist/src/channels/adapters/whatsapp_cloud.js +177 -0
  165. package/dist/src/channels/adapters/whatsapp_cloud.js.map +1 -0
  166. package/dist/src/channels/handler.d.ts +167 -0
  167. package/dist/src/channels/handler.d.ts.map +1 -0
  168. package/dist/src/channels/handler.js +569 -0
  169. package/dist/src/channels/handler.js.map +1 -0
  170. package/dist/src/channels/http.d.ts +45 -0
  171. package/dist/src/channels/http.d.ts.map +1 -0
  172. package/dist/src/channels/http.js +147 -0
  173. package/dist/src/channels/http.js.map +1 -0
  174. package/dist/src/channels/index.d.ts +16 -0
  175. package/dist/src/channels/index.d.ts.map +1 -0
  176. package/dist/src/channels/index.js +15 -0
  177. package/dist/src/channels/index.js.map +1 -0
  178. package/dist/src/channels/markdown.d.ts +12 -0
  179. package/dist/src/channels/markdown.d.ts.map +1 -0
  180. package/dist/src/channels/markdown.js +120 -0
  181. package/dist/src/channels/markdown.js.map +1 -0
  182. package/dist/src/channels/questions.d.ts +43 -0
  183. package/dist/src/channels/questions.d.ts.map +1 -0
  184. package/dist/src/channels/questions.js +90 -0
  185. package/dist/src/channels/questions.js.map +1 -0
  186. package/dist/src/channels/split.d.ts +8 -0
  187. package/dist/src/channels/split.d.ts.map +1 -0
  188. package/dist/src/channels/split.js +45 -0
  189. package/dist/src/channels/split.js.map +1 -0
  190. package/dist/src/channels/store.d.ts +78 -0
  191. package/dist/src/channels/store.d.ts.map +1 -0
  192. package/dist/src/channels/store.js +151 -0
  193. package/dist/src/channels/store.js.map +1 -0
  194. package/dist/src/channels/types.d.ts +138 -0
  195. package/dist/src/channels/types.d.ts.map +1 -0
  196. package/dist/src/channels/types.js +7 -0
  197. package/dist/src/channels/types.js.map +1 -0
  198. package/dist/src/chat-queue-service.d.ts.map +1 -1
  199. package/dist/src/chat-queue-service.js +2 -0
  200. package/dist/src/chat-queue-service.js.map +1 -1
  201. package/dist/src/define_config.d.ts +61 -12
  202. package/dist/src/define_config.d.ts.map +1 -1
  203. package/dist/src/define_config.js.map +1 -1
  204. package/dist/src/engine.d.ts +77 -0
  205. package/dist/src/engine.d.ts.map +1 -0
  206. package/dist/src/engine.js +27 -0
  207. package/dist/src/engine.js.map +1 -0
  208. package/dist/src/genui/builtins.d.ts +73 -3
  209. package/dist/src/genui/builtins.d.ts.map +1 -1
  210. package/dist/src/genui/builtins.js +357 -3
  211. package/dist/src/genui/builtins.js.map +1 -1
  212. package/dist/src/genui/capabilities.d.ts +24 -0
  213. package/dist/src/genui/capabilities.d.ts.map +1 -0
  214. package/dist/src/genui/capabilities.js +81 -0
  215. package/dist/src/genui/capabilities.js.map +1 -0
  216. package/dist/src/genui/catalog.d.ts +86 -0
  217. package/dist/src/genui/catalog.d.ts.map +1 -0
  218. package/dist/src/genui/catalog.js +96 -0
  219. package/dist/src/genui/catalog.js.map +1 -0
  220. package/dist/src/genui/factory.d.ts +7 -14
  221. package/dist/src/genui/factory.d.ts.map +1 -1
  222. package/dist/src/genui/factory.js.map +1 -1
  223. package/dist/src/genui/index.d.ts +4 -12
  224. package/dist/src/genui/index.d.ts.map +1 -1
  225. package/dist/src/genui/index.js +5 -18
  226. package/dist/src/genui/index.js.map +1 -1
  227. package/dist/src/genui/public.d.ts +9 -0
  228. package/dist/src/genui/public.d.ts.map +1 -0
  229. package/dist/src/genui/public.js +9 -0
  230. package/dist/src/genui/public.js.map +1 -0
  231. package/dist/src/genui/registry.d.ts +65 -0
  232. package/dist/src/genui/registry.d.ts.map +1 -0
  233. package/dist/src/genui/registry.js +151 -0
  234. package/dist/src/genui/registry.js.map +1 -0
  235. package/dist/src/genui/schema.d.ts +71 -0
  236. package/dist/src/genui/schema.d.ts.map +1 -0
  237. package/dist/src/genui/schema.js +304 -0
  238. package/dist/src/genui/schema.js.map +1 -0
  239. package/dist/src/genui/text.d.ts +36 -0
  240. package/dist/src/genui/text.d.ts.map +1 -0
  241. package/dist/src/genui/text.js +157 -0
  242. package/dist/src/genui/text.js.map +1 -0
  243. package/dist/src/genui/tools.d.ts +92 -0
  244. package/dist/src/genui/tools.d.ts.map +1 -0
  245. package/dist/src/genui/tools.js +291 -0
  246. package/dist/src/genui/tools.js.map +1 -0
  247. package/dist/src/genui/tree.d.ts +56 -0
  248. package/dist/src/genui/tree.d.ts.map +1 -0
  249. package/dist/src/genui/tree.js +188 -0
  250. package/dist/src/genui/tree.js.map +1 -0
  251. package/dist/src/index.d.ts +6 -3
  252. package/dist/src/index.d.ts.map +1 -1
  253. package/dist/src/index.js +4 -2
  254. package/dist/src/index.js.map +1 -1
  255. package/dist/src/mcp/auth.d.ts +17 -1
  256. package/dist/src/mcp/auth.d.ts.map +1 -1
  257. package/dist/src/mcp/auth.js +14 -3
  258. package/dist/src/mcp/auth.js.map +1 -1
  259. package/dist/src/mcp/define_config.d.ts +81 -2
  260. package/dist/src/mcp/define_config.d.ts.map +1 -1
  261. package/dist/src/mcp/define_config.js.map +1 -1
  262. package/dist/src/mcp/index.d.ts +1 -1
  263. package/dist/src/mcp/index.d.ts.map +1 -1
  264. package/dist/src/mcp/index.js.map +1 -1
  265. package/dist/src/mcp/oauth-resource.d.ts +9 -0
  266. package/dist/src/mcp/oauth-resource.d.ts.map +1 -0
  267. package/dist/src/mcp/oauth-resource.js +16 -0
  268. package/dist/src/mcp/oauth-resource.js.map +1 -0
  269. package/dist/src/mcp/server.d.ts +5 -0
  270. package/dist/src/mcp/server.d.ts.map +1 -1
  271. package/dist/src/mcp/server.js +48 -16
  272. package/dist/src/mcp/server.js.map +1 -1
  273. package/dist/src/negotiated-tool-ui.d.ts.map +1 -1
  274. package/dist/src/negotiated-tool-ui.js +12 -8
  275. package/dist/src/negotiated-tool-ui.js.map +1 -1
  276. package/dist/src/opencode/client.d.ts +202 -0
  277. package/dist/src/opencode/client.d.ts.map +1 -0
  278. package/dist/src/opencode/client.js +2 -0
  279. package/dist/src/opencode/client.js.map +1 -0
  280. package/dist/src/opencode/durable/index.d.ts +33 -0
  281. package/dist/src/opencode/durable/index.d.ts.map +1 -0
  282. package/dist/src/opencode/durable/index.js +38 -0
  283. package/dist/src/opencode/durable/index.js.map +1 -0
  284. package/dist/src/opencode/durable/runner.d.ts +36 -0
  285. package/dist/src/opencode/durable/runner.d.ts.map +1 -0
  286. package/dist/src/opencode/durable/runner.js +88 -0
  287. package/dist/src/opencode/durable/runner.js.map +1 -0
  288. package/dist/src/opencode/durable/workflow.d.ts +40 -0
  289. package/dist/src/opencode/durable/workflow.d.ts.map +1 -0
  290. package/dist/src/opencode/durable/workflow.js +106 -0
  291. package/dist/src/opencode/durable/workflow.js.map +1 -0
  292. package/dist/src/opencode/engine.d.ts +48 -0
  293. package/dist/src/opencode/engine.d.ts.map +1 -0
  294. package/dist/src/opencode/engine.js +98 -0
  295. package/dist/src/opencode/engine.js.map +1 -0
  296. package/dist/src/opencode/event-hub.d.ts +23 -0
  297. package/dist/src/opencode/event-hub.d.ts.map +1 -0
  298. package/dist/src/opencode/event-hub.js +99 -0
  299. package/dist/src/opencode/event-hub.js.map +1 -0
  300. package/dist/src/opencode/forms.d.ts +19 -0
  301. package/dist/src/opencode/forms.d.ts.map +1 -0
  302. package/dist/src/opencode/forms.js +82 -0
  303. package/dist/src/opencode/forms.js.map +1 -0
  304. package/dist/src/opencode/host.d.ts +179 -0
  305. package/dist/src/opencode/host.d.ts.map +1 -0
  306. package/dist/src/opencode/host.js +34 -0
  307. package/dist/src/opencode/host.js.map +1 -0
  308. package/dist/src/opencode/index.d.ts +15 -0
  309. package/dist/src/opencode/index.d.ts.map +1 -0
  310. package/dist/src/opencode/index.js +9 -0
  311. package/dist/src/opencode/index.js.map +1 -0
  312. package/dist/src/opencode/log.d.ts +9 -0
  313. package/dist/src/opencode/log.d.ts.map +1 -0
  314. package/dist/src/opencode/log.js +15 -0
  315. package/dist/src/opencode/log.js.map +1 -0
  316. package/dist/src/opencode/mcp.d.ts +60 -0
  317. package/dist/src/opencode/mcp.d.ts.map +1 -0
  318. package/dist/src/opencode/mcp.js +258 -0
  319. package/dist/src/opencode/mcp.js.map +1 -0
  320. package/dist/src/opencode/runner.d.ts +40 -0
  321. package/dist/src/opencode/runner.d.ts.map +1 -0
  322. package/dist/src/opencode/runner.js +125 -0
  323. package/dist/src/opencode/runner.js.map +1 -0
  324. package/dist/src/opencode/turn.d.ts +167 -0
  325. package/dist/src/opencode/turn.d.ts.map +1 -0
  326. package/dist/src/opencode/turn.js +761 -0
  327. package/dist/src/opencode/turn.js.map +1 -0
  328. package/dist/src/opencode/turns.d.ts +247 -0
  329. package/dist/src/opencode/turns.d.ts.map +1 -0
  330. package/dist/src/opencode/turns.js +867 -0
  331. package/dist/src/opencode/turns.js.map +1 -0
  332. package/dist/src/personas.d.ts.map +1 -1
  333. package/dist/src/personas.js +4 -1
  334. package/dist/src/personas.js.map +1 -1
  335. package/dist/src/react/ag-ui.d.ts +4 -2
  336. package/dist/src/react/ag-ui.d.ts.map +1 -1
  337. package/dist/src/react/ag-ui.js +2 -2
  338. package/dist/src/react/ag-ui.js.map +1 -1
  339. package/dist/src/react/client.d.ts +1 -1
  340. package/dist/src/react/client.d.ts.map +1 -1
  341. package/dist/src/react/client.js +1 -1
  342. package/dist/src/react/client.js.map +1 -1
  343. package/dist/src/react/core/ag-ui-backend.d.ts +109 -0
  344. package/dist/src/react/core/ag-ui-backend.d.ts.map +1 -0
  345. package/dist/src/react/core/ag-ui-backend.js +574 -0
  346. package/dist/src/react/core/ag-ui-backend.js.map +1 -0
  347. package/dist/src/react/core/agent-chat-transport.d.ts +187 -0
  348. package/dist/src/react/core/agent-chat-transport.d.ts.map +1 -0
  349. package/dist/src/react/core/agent-chat-transport.js +817 -0
  350. package/dist/src/react/core/agent-chat-transport.js.map +1 -0
  351. package/dist/src/react/core/approvals/countdown.d.ts +22 -0
  352. package/dist/src/react/core/approvals/countdown.d.ts.map +1 -0
  353. package/dist/src/react/core/approvals/countdown.js +39 -0
  354. package/dist/src/react/core/approvals/countdown.js.map +1 -0
  355. package/dist/src/react/core/approvals/proposals.d.ts +15 -0
  356. package/dist/src/react/core/approvals/proposals.d.ts.map +1 -0
  357. package/dist/src/react/core/approvals/proposals.js +82 -0
  358. package/dist/src/react/core/approvals/proposals.js.map +1 -0
  359. package/dist/src/react/core/approvals/use-action-proposals.d.ts +10 -0
  360. package/dist/src/react/core/approvals/use-action-proposals.d.ts.map +1 -0
  361. package/dist/src/react/core/approvals/use-action-proposals.js +86 -0
  362. package/dist/src/react/core/approvals/use-action-proposals.js.map +1 -0
  363. package/dist/src/react/core/attachments/files.d.ts +39 -0
  364. package/dist/src/react/core/attachments/files.d.ts.map +1 -0
  365. package/dist/src/react/core/attachments/files.js +89 -0
  366. package/dist/src/react/core/attachments/files.js.map +1 -0
  367. package/dist/src/react/core/attachments/use-attachments.d.ts +106 -0
  368. package/dist/src/react/core/attachments/use-attachments.d.ts.map +1 -0
  369. package/dist/src/react/core/attachments/use-attachments.js +217 -0
  370. package/dist/src/react/core/attachments/use-attachments.js.map +1 -0
  371. package/dist/src/react/core/backend.d.ts +245 -0
  372. package/dist/src/react/core/backend.d.ts.map +1 -0
  373. package/dist/src/react/core/backend.js +21 -0
  374. package/dist/src/react/core/backend.js.map +1 -0
  375. package/dist/src/react/core/background-runs.d.ts +32 -0
  376. package/dist/src/react/core/background-runs.d.ts.map +1 -0
  377. package/dist/src/react/core/background-runs.js +47 -0
  378. package/dist/src/react/core/background-runs.js.map +1 -0
  379. package/dist/src/react/core/catalog/use-agents.d.ts +31 -0
  380. package/dist/src/react/core/catalog/use-agents.d.ts.map +1 -0
  381. package/dist/src/react/core/catalog/use-agents.js +28 -0
  382. package/dist/src/react/core/catalog/use-agents.js.map +1 -0
  383. package/dist/src/react/core/catalog/use-models.d.ts +41 -0
  384. package/dist/src/react/core/catalog/use-models.d.ts.map +1 -0
  385. package/dist/src/react/core/catalog/use-models.js +35 -0
  386. package/dist/src/react/core/catalog/use-models.js.map +1 -0
  387. package/dist/src/react/core/catalog/use-resource.d.ts +12 -0
  388. package/dist/src/react/core/catalog/use-resource.d.ts.map +1 -0
  389. package/dist/src/react/core/catalog/use-resource.js +41 -0
  390. package/dist/src/react/core/catalog/use-resource.js.map +1 -0
  391. package/dist/src/react/core/client-wire.d.ts +14 -0
  392. package/dist/src/react/core/client-wire.d.ts.map +1 -0
  393. package/dist/src/react/core/client-wire.js +2 -0
  394. package/dist/src/react/core/client-wire.js.map +1 -0
  395. package/dist/src/react/core/client.d.ts +222 -0
  396. package/dist/src/react/core/client.d.ts.map +1 -0
  397. package/dist/src/react/core/client.js +435 -0
  398. package/dist/src/react/core/client.js.map +1 -0
  399. package/dist/src/react/core/components/ambient-ui.d.ts +22 -0
  400. package/dist/src/react/core/components/ambient-ui.d.ts.map +1 -0
  401. package/dist/src/react/core/components/ambient-ui.js +30 -0
  402. package/dist/src/react/core/components/ambient-ui.js.map +1 -0
  403. package/dist/src/react/core/components/chat-input.d.ts +44 -0
  404. package/dist/src/react/core/components/chat-input.d.ts.map +1 -0
  405. package/dist/src/react/core/components/chat-input.js +69 -0
  406. package/dist/src/react/core/components/chat-input.js.map +1 -0
  407. package/dist/src/react/core/components/index.d.ts +7 -0
  408. package/dist/src/react/core/components/index.d.ts.map +1 -0
  409. package/dist/src/react/core/components/index.js +7 -0
  410. package/dist/src/react/core/components/index.js.map +1 -0
  411. package/dist/src/react/core/components/message-item.d.ts +101 -0
  412. package/dist/src/react/core/components/message-item.d.ts.map +1 -0
  413. package/dist/src/react/core/components/message-item.js +118 -0
  414. package/dist/src/react/core/components/message-item.js.map +1 -0
  415. package/dist/src/react/core/components/message-list.d.ts +85 -0
  416. package/dist/src/react/core/components/message-list.d.ts.map +1 -0
  417. package/dist/src/react/core/components/message-list.js +45 -0
  418. package/dist/src/react/core/components/message-list.js.map +1 -0
  419. package/dist/src/react/core/components/speech-languages.d.ts +22 -0
  420. package/dist/src/react/core/components/speech-languages.d.ts.map +1 -0
  421. package/dist/src/react/core/components/speech-languages.js +38 -0
  422. package/dist/src/react/core/components/speech-languages.js.map +1 -0
  423. package/dist/src/react/core/components/use-speech-recognition.d.ts +19 -0
  424. package/dist/src/react/core/components/use-speech-recognition.d.ts.map +1 -0
  425. package/dist/src/react/core/components/use-speech-recognition.js +92 -0
  426. package/dist/src/react/core/components/use-speech-recognition.js.map +1 -0
  427. package/dist/src/react/core/composer/index.d.ts +4 -0
  428. package/dist/src/react/core/composer/index.d.ts.map +1 -0
  429. package/dist/src/react/core/composer/index.js +4 -0
  430. package/dist/src/react/core/composer/index.js.map +1 -0
  431. package/dist/src/react/core/composer/model.d.ts +83 -0
  432. package/dist/src/react/core/composer/model.d.ts.map +1 -0
  433. package/dist/src/react/core/composer/model.js +53 -0
  434. package/dist/src/react/core/composer/model.js.map +1 -0
  435. package/dist/src/react/core/composer/skills-source.d.ts +29 -0
  436. package/dist/src/react/core/composer/skills-source.d.ts.map +1 -0
  437. package/dist/src/react/core/composer/skills-source.js +61 -0
  438. package/dist/src/react/core/composer/skills-source.js.map +1 -0
  439. package/dist/src/react/core/composer/use-composer-autocomplete.d.ts +78 -0
  440. package/dist/src/react/core/composer/use-composer-autocomplete.d.ts.map +1 -0
  441. package/dist/src/react/core/composer/use-composer-autocomplete.js +244 -0
  442. package/dist/src/react/core/composer/use-composer-autocomplete.js.map +1 -0
  443. package/dist/src/react/core/config/use-agent-config.d.ts +21 -0
  444. package/dist/src/react/core/config/use-agent-config.d.ts.map +1 -0
  445. package/dist/src/react/core/config/use-agent-config.js +57 -0
  446. package/dist/src/react/core/config/use-agent-config.js.map +1 -0
  447. package/dist/src/react/core/elicitation/answers.d.ts +22 -0
  448. package/dist/src/react/core/elicitation/answers.d.ts.map +1 -0
  449. package/dist/src/react/core/elicitation/answers.js +65 -0
  450. package/dist/src/react/core/elicitation/answers.js.map +1 -0
  451. package/dist/src/react/core/feedback/use-message-feedback.d.ts +32 -0
  452. package/dist/src/react/core/feedback/use-message-feedback.d.ts.map +1 -0
  453. package/dist/src/react/core/feedback/use-message-feedback.js +106 -0
  454. package/dist/src/react/core/feedback/use-message-feedback.js.map +1 -0
  455. package/dist/src/react/core/genui/generative-ui.d.ts +76 -0
  456. package/dist/src/react/core/genui/generative-ui.d.ts.map +1 -0
  457. package/dist/src/react/core/genui/generative-ui.js +210 -0
  458. package/dist/src/react/core/genui/generative-ui.js.map +1 -0
  459. package/dist/src/react/core/genui/index.d.ts +5 -0
  460. package/dist/src/react/core/genui/index.d.ts.map +1 -0
  461. package/dist/src/react/core/genui/index.js +5 -0
  462. package/dist/src/react/core/genui/index.js.map +1 -0
  463. package/dist/src/react/core/genui/json-render.d.ts +54 -0
  464. package/dist/src/react/core/genui/json-render.d.ts.map +1 -0
  465. package/dist/src/react/core/genui/json-render.js +64 -0
  466. package/dist/src/react/core/genui/json-render.js.map +1 -0
  467. package/dist/src/react/core/genui/playwright.d.ts +12 -0
  468. package/dist/src/react/core/genui/playwright.d.ts.map +1 -0
  469. package/dist/src/react/core/genui/playwright.js +141 -0
  470. package/dist/src/react/core/genui/playwright.js.map +1 -0
  471. package/dist/src/react/core/genui/react-registry.d.ts +22 -0
  472. package/dist/src/react/core/genui/react-registry.d.ts.map +1 -0
  473. package/dist/src/react/core/genui/react-registry.js +72 -0
  474. package/dist/src/react/core/genui/react-registry.js.map +1 -0
  475. package/dist/src/react/core/genui/server.d.ts +32 -0
  476. package/dist/src/react/core/genui/server.d.ts.map +1 -0
  477. package/dist/src/react/core/genui/server.js +66 -0
  478. package/dist/src/react/core/genui/server.js.map +1 -0
  479. package/dist/src/react/core/genui/types.d.ts +98 -0
  480. package/dist/src/react/core/genui/types.d.ts.map +1 -0
  481. package/dist/src/react/core/genui/types.js +3 -0
  482. package/dist/src/react/core/genui/types.js.map +1 -0
  483. package/dist/src/react/core/genui/use-generative-ui.d.ts +42 -0
  484. package/dist/src/react/core/genui/use-generative-ui.d.ts.map +1 -0
  485. package/dist/src/react/core/genui/use-generative-ui.js +186 -0
  486. package/dist/src/react/core/genui/use-generative-ui.js.map +1 -0
  487. package/dist/src/react/core/http-error.d.ts +33 -0
  488. package/dist/src/react/core/http-error.d.ts.map +1 -0
  489. package/dist/src/react/core/http-error.js +47 -0
  490. package/dist/src/react/core/http-error.js.map +1 -0
  491. package/dist/src/react/core/index.d.ts +35 -0
  492. package/dist/src/react/core/index.d.ts.map +1 -0
  493. package/dist/src/react/core/index.js +34 -0
  494. package/dist/src/react/core/index.js.map +1 -0
  495. package/dist/src/react/core/markdown/agent-markdown.d.ts +39 -0
  496. package/dist/src/react/core/markdown/agent-markdown.d.ts.map +1 -0
  497. package/dist/src/react/core/markdown/agent-markdown.js +22 -0
  498. package/dist/src/react/core/markdown/agent-markdown.js.map +1 -0
  499. package/dist/src/react/core/markdown/index.d.ts +2 -0
  500. package/dist/src/react/core/markdown/index.d.ts.map +1 -0
  501. package/dist/src/react/core/markdown/index.js +2 -0
  502. package/dist/src/react/core/markdown/index.js.map +1 -0
  503. package/dist/src/react/core/media/index.d.ts +64 -0
  504. package/dist/src/react/core/media/index.d.ts.map +1 -0
  505. package/dist/src/react/core/media/index.js +135 -0
  506. package/dist/src/react/core/media/index.js.map +1 -0
  507. package/dist/src/react/core/media/tus.d.ts +13 -0
  508. package/dist/src/react/core/media/tus.d.ts.map +1 -0
  509. package/dist/src/react/core/media/tus.js +59 -0
  510. package/dist/src/react/core/media/tus.js.map +1 -0
  511. package/dist/src/react/core/presentation/phrasing.d.ts +25 -0
  512. package/dist/src/react/core/presentation/phrasing.d.ts.map +1 -0
  513. package/dist/src/react/core/presentation/phrasing.js +58 -0
  514. package/dist/src/react/core/presentation/phrasing.js.map +1 -0
  515. package/dist/src/react/core/presentation/result-view.d.ts +43 -0
  516. package/dist/src/react/core/presentation/result-view.d.ts.map +1 -0
  517. package/dist/src/react/core/presentation/result-view.js +90 -0
  518. package/dist/src/react/core/presentation/result-view.js.map +1 -0
  519. package/dist/src/react/core/presentation/tool-activity.d.ts +106 -0
  520. package/dist/src/react/core/presentation/tool-activity.d.ts.map +1 -0
  521. package/dist/src/react/core/presentation/tool-activity.js +165 -0
  522. package/dist/src/react/core/presentation/tool-activity.js.map +1 -0
  523. package/dist/src/react/core/presentation/use-tool-catalog.d.ts +39 -0
  524. package/dist/src/react/core/presentation/use-tool-catalog.d.ts.map +1 -0
  525. package/dist/src/react/core/presentation/use-tool-catalog.js +77 -0
  526. package/dist/src/react/core/presentation/use-tool-catalog.js.map +1 -0
  527. package/dist/src/react/core/provider.d.ts +68 -0
  528. package/dist/src/react/core/provider.d.ts.map +1 -0
  529. package/dist/src/react/core/provider.js +61 -0
  530. package/dist/src/react/core/provider.js.map +1 -0
  531. package/dist/src/react/core/queue/model.d.ts +73 -0
  532. package/dist/src/react/core/queue/model.d.ts.map +1 -0
  533. package/dist/src/react/core/queue/model.js +2 -0
  534. package/dist/src/react/core/queue/model.js.map +1 -0
  535. package/dist/src/react/core/quota/use-quota.d.ts +35 -0
  536. package/dist/src/react/core/quota/use-quota.d.ts.map +1 -0
  537. package/dist/src/react/core/quota/use-quota.js +47 -0
  538. package/dist/src/react/core/quota/use-quota.js.map +1 -0
  539. package/dist/src/react/core/reasoning/timing.d.ts +38 -0
  540. package/dist/src/react/core/reasoning/timing.d.ts.map +1 -0
  541. package/dist/src/react/core/reasoning/timing.js +73 -0
  542. package/dist/src/react/core/reasoning/timing.js.map +1 -0
  543. package/dist/src/react/core/run-errors.d.ts +37 -0
  544. package/dist/src/react/core/run-errors.d.ts.map +1 -0
  545. package/dist/src/react/core/run-errors.js +37 -0
  546. package/dist/src/react/core/run-errors.js.map +1 -0
  547. package/dist/src/react/core/stored-message-to-ui-message.d.ts +4 -0
  548. package/dist/src/react/core/stored-message-to-ui-message.d.ts.map +1 -0
  549. package/dist/src/react/core/stored-message-to-ui-message.js +216 -0
  550. package/dist/src/react/core/stored-message-to-ui-message.js.map +1 -0
  551. package/dist/src/react/core/stored-thread-to-ui-messages.d.ts +82 -0
  552. package/dist/src/react/core/stored-thread-to-ui-messages.d.ts.map +1 -0
  553. package/dist/src/react/core/stored-thread-to-ui-messages.js +116 -0
  554. package/dist/src/react/core/stored-thread-to-ui-messages.js.map +1 -0
  555. package/dist/src/react/core/threads/threads-events.d.ts +22 -0
  556. package/dist/src/react/core/threads/threads-events.d.ts.map +1 -0
  557. package/dist/src/react/core/threads/threads-events.js +21 -0
  558. package/dist/src/react/core/threads/threads-events.js.map +1 -0
  559. package/dist/src/react/core/threads/use-threads.d.ts +31 -0
  560. package/dist/src/react/core/threads/use-threads.d.ts.map +1 -0
  561. package/dist/src/react/core/threads/use-threads.js +81 -0
  562. package/dist/src/react/core/threads/use-threads.js.map +1 -0
  563. package/dist/src/react/core/transcript/index.d.ts +4 -0
  564. package/dist/src/react/core/transcript/index.d.ts.map +1 -0
  565. package/dist/src/react/core/transcript/index.js +4 -0
  566. package/dist/src/react/core/transcript/index.js.map +1 -0
  567. package/dist/src/react/core/transcript/model.d.ts +399 -0
  568. package/dist/src/react/core/transcript/model.d.ts.map +1 -0
  569. package/dist/src/react/core/transcript/model.js +725 -0
  570. package/dist/src/react/core/transcript/model.js.map +1 -0
  571. package/dist/src/react/core/transcript/use-chat-transcript.d.ts +254 -0
  572. package/dist/src/react/core/transcript/use-chat-transcript.d.ts.map +1 -0
  573. package/dist/src/react/core/transcript/use-chat-transcript.js +572 -0
  574. package/dist/src/react/core/transcript/use-chat-transcript.js.map +1 -0
  575. package/dist/src/react/core/transcript/use-stick-to-bottom.d.ts +33 -0
  576. package/dist/src/react/core/transcript/use-stick-to-bottom.d.ts.map +1 -0
  577. package/dist/src/react/core/transcript/use-stick-to-bottom.js +48 -0
  578. package/dist/src/react/core/transcript/use-stick-to-bottom.js.map +1 -0
  579. package/dist/src/react/core/use-agent-chat.d.ts +341 -0
  580. package/dist/src/react/core/use-agent-chat.d.ts.map +1 -0
  581. package/dist/src/react/core/use-agent-chat.js +1118 -0
  582. package/dist/src/react/core/use-agent-chat.js.map +1 -0
  583. package/dist/src/react/genui/index.d.ts +1 -7
  584. package/dist/src/react/genui/index.d.ts.map +1 -1
  585. package/dist/src/react/genui/index.js +1 -7
  586. package/dist/src/react/genui/index.js.map +1 -1
  587. package/dist/src/react/genui/json-render.d.ts +1 -5
  588. package/dist/src/react/genui/json-render.d.ts.map +1 -1
  589. package/dist/src/react/genui/json-render.js +1 -5
  590. package/dist/src/react/genui/json-render.js.map +1 -1
  591. package/dist/src/react/genui/server.d.ts +2 -0
  592. package/dist/src/react/genui/server.d.ts.map +1 -0
  593. package/dist/src/react/genui/server.js +2 -0
  594. package/dist/src/react/genui/server.js.map +1 -0
  595. package/dist/src/react/genui/server_playwright.d.ts +2 -0
  596. package/dist/src/react/genui/server_playwright.d.ts.map +1 -0
  597. package/dist/src/react/genui/server_playwright.js +2 -0
  598. package/dist/src/react/genui/server_playwright.js.map +1 -0
  599. package/dist/src/react/index.d.ts +5 -7
  600. package/dist/src/react/index.d.ts.map +1 -1
  601. package/dist/src/react/index.js +5 -7
  602. package/dist/src/react/index.js.map +1 -1
  603. package/dist/src/react/markdown.d.ts +1 -6
  604. package/dist/src/react/markdown.d.ts.map +1 -1
  605. package/dist/src/react/markdown.js +1 -6
  606. package/dist/src/react/markdown.js.map +1 -1
  607. package/dist/src/react/media.d.ts +1 -17
  608. package/dist/src/react/media.d.ts.map +1 -1
  609. package/dist/src/react/media.js +1 -17
  610. package/dist/src/react/media.js.map +1 -1
  611. package/dist/src/refusal.d.ts +3 -0
  612. package/dist/src/refusal.d.ts.map +1 -0
  613. package/dist/src/refusal.js +3 -0
  614. package/dist/src/refusal.js.map +1 -0
  615. package/dist/src/spi/agent-runner.d.ts +6 -0
  616. package/dist/src/spi/agent-runner.d.ts.map +1 -1
  617. package/dist/src/spi/chat-queue.d.ts +4 -1
  618. package/dist/src/spi/chat-queue.d.ts.map +1 -1
  619. package/dist/src/spi/chat-queue.js.map +1 -1
  620. package/dist/src/spi/protocol-adapter.d.ts +3 -3
  621. package/dist/src/spi/roles-policy.d.ts +7 -0
  622. package/dist/src/spi/roles-policy.d.ts.map +1 -1
  623. package/dist/src/spi/tool.d.ts +18 -3
  624. package/dist/src/spi/tool.d.ts.map +1 -1
  625. package/dist/src/stores/lucid-schema.d.ts +24 -6
  626. package/dist/src/stores/lucid-schema.d.ts.map +1 -1
  627. package/dist/src/stores/lucid-schema.js +49 -6
  628. package/dist/src/stores/lucid-schema.js.map +1 -1
  629. package/dist/src/stores/lucid.d.ts +2 -0
  630. package/dist/src/stores/lucid.d.ts.map +1 -1
  631. package/dist/src/stores/lucid.js +7 -0
  632. package/dist/src/stores/lucid.js.map +1 -1
  633. package/dist/src/testing/chat-queue-store-contract.d.ts.map +1 -1
  634. package/dist/src/testing/chat-queue-store-contract.js +4 -0
  635. package/dist/src/testing/chat-queue-store-contract.js.map +1 -1
  636. package/dist/src/testing/in-memory-store.d.ts.map +1 -1
  637. package/dist/src/testing/in-memory-store.js +1 -0
  638. package/dist/src/testing/in-memory-store.js.map +1 -1
  639. package/dist/src/tool-discovery.d.ts +1 -1
  640. package/dist/src/tool-discovery.d.ts.map +1 -1
  641. package/dist/src/tool-discovery.js +5 -1
  642. package/dist/src/tool-discovery.js.map +1 -1
  643. package/dist/src/tool-registry.d.ts +3 -0
  644. package/dist/src/tool-registry.d.ts.map +1 -1
  645. package/dist/src/tool-registry.js +15 -3
  646. package/dist/src/tool-registry.js.map +1 -1
  647. package/dist/src/tool-result-presentation.d.ts +12 -0
  648. package/dist/src/tool-result-presentation.d.ts.map +1 -0
  649. package/dist/src/tool-result-presentation.js +44 -0
  650. package/dist/src/tool-result-presentation.js.map +1 -0
  651. package/dist/src/types.d.ts +20 -0
  652. package/dist/src/types.d.ts.map +1 -1
  653. package/dist/src/ui-capabilities.d.ts +1 -8
  654. package/dist/src/ui-capabilities.d.ts.map +1 -1
  655. package/dist/src/ui-capabilities.js +3 -24
  656. package/dist/src/ui-capabilities.js.map +1 -1
  657. package/package.json +128 -22
  658. package/skills/agent-governance/SKILL.md +12 -4
  659. package/skills/agent-personas-agents/SKILL.md +2 -1
  660. package/skills/agent-setup/SKILL.md +73 -14
  661. package/skills/agent-testing/SKILL.md +22 -0
  662. package/skills/agent-tools/SKILL.md +57 -9
  663. package/dist/src/ag-ui/proposal-decision.d.ts.map +0 -1
  664. package/dist/src/ag-ui/proposal-decision.js.map +0 -1
@@ -4,7 +4,8 @@ import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
4
4
  import { DefaultToolAuthorizer } from '../src/authorizer.js';
5
5
  import { actorFromAuthInfo } from '../src/mcp/actor.js';
6
6
  import { McpAuthError, resolveMcpAuth } from '../src/mcp/auth.js';
7
- import { normalizeMcpPath, protectedResourceMetadata, protectedResourceMetadataUrl, publicOrigin, wwwAuthenticateChallenge, } from '../src/mcp/discovery.js';
7
+ import { mcpResourceUrl, normalizeMcpPath, protectedResourceMetadata, protectedResourceMetadataUrl, publicOrigin, wwwAuthenticateChallenge, } from '../src/mcp/discovery.js';
8
+ import { registerOAuthResource } from '../src/mcp/oauth-resource.js';
8
9
  import { createMcpServer } from '../src/mcp/server.js';
9
10
  import { ToolRegistry } from '../src/tool-registry.js';
10
11
  /**
@@ -15,6 +16,9 @@ import { ToolRegistry } from '../src/tool-registry.js';
15
16
  * - `GET /.well-known/oauth-protected-resource{path}` — RFC 9728 protected-resource metadata, mounted
16
17
  * only when `auth.oauth` is set, so MCP clients can discover how to authenticate.
17
18
  *
19
+ * …once for the top-level config and once per entry of `endpoints`: each is a protected resource of
20
+ * its own, with its registry, auth, sessions and metadata.
21
+ *
18
22
  * A refused request answers `401` (or `403` for an {@link McpAuthError} with that status) with a
19
23
  * `WWW-Authenticate: Bearer …` challenge; with OAuth it carries `resource_metadata`, which is what makes
20
24
  * an MCP client discover the authorization server and open the login. URLs are built from
@@ -27,10 +31,8 @@ import { ToolRegistry } from '../src/tool-registry.js';
27
31
  */
28
32
  export default class McpProvider {
29
33
  app;
30
- /** Live session transports, keyed by MCP session id (per-provider in-memory state). */
31
- #transports = new Map();
32
- /** The mounted route prefix, normalized (no leading/trailing slashes). */
33
- #path = 'mcp';
34
+ /** Every mounted endpoint — the top-level one first. */
35
+ #endpoints = [];
34
36
  /** `config.publicUrl` reduced to its origin; `undefined` → derive it from each request. */
35
37
  #publicOrigin;
36
38
  constructor(app) {
@@ -38,37 +40,85 @@ export default class McpProvider {
38
40
  }
39
41
  async boot() {
40
42
  const config = this.app.config.get('mcp', {});
41
- const registry = await this.app.container.make(ToolRegistry);
42
43
  const defaultRoles = config.defaultRoles ?? ['ADMIN'];
43
44
  const authorizer = config.authorizer ??
44
45
  new DefaultToolAuthorizer(defaultRoles, { emptyRoles: config.emptyRoles ?? 'allow' });
45
- const auth = config.auth !== undefined ? await resolveMcpAuth(config.auth, { app: this.app }) : undefined;
46
+ const ctx = { app: this.app };
47
+ const auth = config.auth !== undefined ? await resolveMcpAuth(config.auth, ctx) : undefined;
46
48
  this.#publicOrigin =
47
49
  config.publicUrl !== undefined ? publicOrigin(config.publicUrl) : undefined;
48
- // The actor fallback for open/dev mode (no `auth`): a fixed identity, or fail-closed (reject).
49
- const openActor = config.actor;
50
- const router = await this.app.container.make('router');
51
- const path = normalizeMcpPath(config.path);
52
- this.#path = path;
53
- const route = `/${path}`;
54
- router.post(route, (ctx) => this.#handlePost(ctx, config, registry, authorizer, auth, openActor));
55
- router.get(route, (ctx) => this.#handleGet(ctx, auth, openActor));
56
- router.delete(route, (ctx) => this.#handleDelete(ctx, auth, openActor));
57
- if (auth?.oauth) {
58
- const oauth = auth.oauth;
59
- const metadataPath = `/.well-known/oauth-protected-resource/${path}`;
60
- router.get(metadataPath, async (ctx) => {
61
- // `oauth` may be lazy (authkit needs a fully booted app to resolve) — resolve it on request.
62
- const meta = typeof oauth === 'function' ? await oauth() : oauth;
63
- // Public and user-free; MCP clients running in a browser fetch it cross-origin.
64
- ctx.response.header('access-control-allow-origin', '*');
65
- return ctx.response.json(protectedResourceMetadata(meta, this.#origin(ctx), path));
50
+ const base = {
51
+ path: normalizeMcpPath(config.path),
52
+ name: config.name,
53
+ version: config.version,
54
+ ...(config.instructions !== undefined ? { instructions: config.instructions } : {}),
55
+ registry: await this.app.container.make(ToolRegistry),
56
+ authorizer,
57
+ auth,
58
+ // The actor fallback for open/dev mode (no `auth`): a fixed identity, or fail-closed (reject).
59
+ openActor: config.actor,
60
+ ...(config.allowedTools !== undefined ? { allowedTools: config.allowedTools } : {}),
61
+ ...(config.actions !== undefined ? { actions: config.actions } : {}),
62
+ ...(config.describeTool !== undefined ? { describeTool: config.describeTool } : {}),
63
+ stateless: config.stateless === true,
64
+ metadataRouteName: 'mcp.oauth_protected_resource',
65
+ transports: new Map(),
66
+ };
67
+ this.#endpoints.push(base);
68
+ for (const extra of config.endpoints ?? []) {
69
+ const path = normalizeMcpPath(extra.path);
70
+ this.#endpoints.push({
71
+ ...base,
72
+ path,
73
+ name: extra.name ?? base.name,
74
+ ...(extra.instructions !== undefined ? { instructions: extra.instructions } : {}),
75
+ registry: extra.registry ? await extra.registry(ctx) : base.registry,
76
+ auth: extra.auth !== undefined ? await resolveMcpAuth(extra.auth, ctx) : base.auth,
77
+ ...(extra.allowedTools !== undefined ? { allowedTools: extra.allowedTools } : {}),
78
+ ...(extra.actions !== undefined ? { actions: extra.actions } : {}),
79
+ ...(extra.describeTool !== undefined ? { describeTool: extra.describeTool } : {}),
80
+ metadataRouteName: extra.metadataRouteName ?? `mcp.${path.split('/').join('.')}.oauth_protected_resource`,
81
+ transports: new Map(),
66
82
  });
67
83
  }
84
+ const router = await this.app.container.make('router');
85
+ const middleware = config.middleware ?? [];
86
+ for (const endpoint of this.#endpoints) {
87
+ const route = `/${endpoint.path}`;
88
+ const routes = [
89
+ router.post(route, (c) => this.#handlePost(c, endpoint)),
90
+ router.get(route, (c) => endpoint.stateless ? this.#methodNotAllowed(c, endpoint) : this.#handleGet(c, endpoint)),
91
+ router.delete(route, (c) => endpoint.stateless
92
+ ? this.#methodNotAllowed(c, endpoint)
93
+ : this.#handleDelete(c, endpoint)),
94
+ ];
95
+ if (middleware.length > 0)
96
+ for (const r of routes)
97
+ r.use(middleware);
98
+ const oauth = endpoint.auth?.oauth;
99
+ if (oauth) {
100
+ // Announce this server to the authorization server in the same process (authkit's `mcp`):
101
+ // tokens it issues for this URL are then bound to it, with no URL repeated in its config.
102
+ registerOAuthResource(this.#publicOrigin !== undefined
103
+ ? { url: mcpResourceUrl(this.#publicOrigin, endpoint.path) }
104
+ : { path: `/${endpoint.path}` });
105
+ router
106
+ .get(`/.well-known/oauth-protected-resource/${endpoint.path}`, async (c) => {
107
+ // `oauth` may be lazy (authkit needs a fully booted app to resolve) — resolve it on request.
108
+ const meta = typeof oauth === 'function' ? await oauth() : oauth;
109
+ // Public and user-free; MCP clients running in a browser fetch it cross-origin.
110
+ c.response.header('access-control-allow-origin', '*');
111
+ return c.response.json(protectedResourceMetadata(meta, this.#origin(c), endpoint.path));
112
+ })
113
+ .as(endpoint.metadataRouteName);
114
+ }
115
+ }
68
116
  }
69
117
  async shutdown() {
70
- await Promise.all([...this.#transports.values()].map((transport) => transport.close()));
71
- this.#transports.clear();
118
+ const transports = this.#endpoints.flatMap((endpoint) => [...endpoint.transports.values()]);
119
+ await Promise.all(transports.map((transport) => transport.close()));
120
+ for (const endpoint of this.#endpoints)
121
+ endpoint.transports.clear();
72
122
  }
73
123
  // ── auth helpers ──────────────────────────────────────────────────────────
74
124
  /** The public origin: `config.publicUrl` when set, else the request's own protocol and `Host`. */
@@ -79,17 +129,17 @@ export default class McpProvider {
79
129
  /**
80
130
  * Refuse the request with `status` and the RFC 6750 / RFC 9728 challenge. `hadToken` picks the error
81
131
  * code (no token → none, per RFC 6750 §3.1); `resource_metadata` is added when the auth exposes OAuth.
82
- * `auth` is `undefined` on the fail-closed open-mode path, which still gets a bare `Bearer` challenge.
132
+ * With no auth (the fail-closed open-mode path) it is still a bare `Bearer` challenge.
83
133
  */
84
- #refuse(ctx, auth, status, message, hadToken) {
134
+ #refuse(ctx, endpoint, status, message, hadToken) {
85
135
  const challenge = wwwAuthenticateChallenge({
86
136
  ...(status === 403
87
137
  ? { error: 'insufficient_scope' }
88
138
  : hadToken
89
139
  ? { error: 'invalid_token' }
90
140
  : {}),
91
- ...(auth?.oauth !== undefined
92
- ? { resourceMetadataUrl: protectedResourceMetadataUrl(this.#origin(ctx), this.#path) }
141
+ ...(endpoint.auth?.oauth !== undefined
142
+ ? { resourceMetadataUrl: protectedResourceMetadataUrl(this.#origin(ctx), endpoint.path) }
93
143
  : {}),
94
144
  });
95
145
  ctx.response.header('WWW-Authenticate', challenge);
@@ -97,46 +147,74 @@ export default class McpProvider {
97
147
  return null;
98
148
  }
99
149
  /**
100
- * Verify the request's `Authorization: Bearer` token against the configured auth, or fall back to the
101
- * open-mode `actor`. Returns the `AuthInfo` to attach to the transport, or `null` once it has replied
102
- * 401/403.
150
+ * Verify the request's `Authorization: Bearer` token against the endpoint's auth, or fall back to
151
+ * the open-mode `actor`. Returns the `AuthInfo` to attach to the transport, or `null` once it has
152
+ * replied 401/403.
103
153
  */
104
- async #authenticate(ctx, auth, openActor) {
154
+ async #authenticate(ctx, endpoint) {
105
155
  const header = ctx.request.header('authorization');
106
156
  const token = /^Bearer\s/i.test(header ?? '') ? header?.slice(7).trim() : undefined;
157
+ const auth = endpoint.auth;
107
158
  if (auth !== undefined) {
108
159
  if (!token) {
109
- return this.#refuse(ctx, auth, 401, 'missing bearer token', false);
160
+ return this.#refuse(ctx, endpoint, 401, 'missing bearer token', false);
110
161
  }
111
162
  try {
112
- return await auth.verify(token);
163
+ return await auth.verify(token, {
164
+ resource: mcpResourceUrl(this.#origin(ctx), endpoint.path),
165
+ });
113
166
  }
114
167
  catch (error) {
115
168
  const status = error instanceof McpAuthError ? error.status : 401;
116
169
  const message = error instanceof Error ? error.message : 'unauthorized';
117
- return this.#refuse(ctx, auth, status, message, true);
170
+ return this.#refuse(ctx, endpoint, status, message, true);
118
171
  }
119
172
  }
120
- if (openActor !== undefined) {
121
- return { token: '', clientId: '', scopes: [], extra: { actor: openActor } };
173
+ if (endpoint.openActor !== undefined) {
174
+ return { token: '', clientId: '', scopes: [], extra: { actor: endpoint.openActor } };
122
175
  }
123
- return this.#refuse(ctx, undefined, 401, 'unauthorized: no auth configured and no fallback actor', false);
176
+ return this.#refuse(ctx, endpoint, 401, 'unauthorized: no auth configured and no fallback actor', false);
124
177
  }
125
178
  // ── route handlers ────────────────────────────────────────────────────────
126
- async #handlePost(ctx, config, registry, authorizer, auth, openActor) {
179
+ #newServer(endpoint) {
180
+ return createMcpServer({
181
+ name: endpoint.name,
182
+ version: endpoint.version,
183
+ ...(endpoint.instructions !== undefined ? { instructions: endpoint.instructions } : {}),
184
+ registry: endpoint.registry,
185
+ policy: endpoint.authorizer,
186
+ ...(endpoint.allowedTools !== undefined ? { allowedTools: endpoint.allowedTools } : {}),
187
+ ...(endpoint.actions !== undefined ? { actions: endpoint.actions } : {}),
188
+ ...(endpoint.describeTool !== undefined ? { describeTool: endpoint.describeTool } : {}),
189
+ actorFromAuth: actorFromAuthInfo,
190
+ });
191
+ }
192
+ async #handlePost(ctx, endpoint) {
127
193
  const req = ctx.request.request;
128
194
  const res = ctx.response.response;
129
195
  const body = ctx.request.all();
130
196
  const sessionId = ctx.request.header('mcp-session-id');
131
- const authInfo = await this.#authenticate(ctx, auth, openActor);
197
+ const authInfo = await this.#authenticate(ctx, endpoint);
132
198
  if (authInfo === null)
133
199
  return;
134
200
  req.auth = authInfo;
135
201
  try {
136
202
  let transport;
137
- if (sessionId && this.#transports.has(sessionId)) {
203
+ if (endpoint.stateless) {
204
+ // No session: this request gets its own transport and server, closed once answered — and a
205
+ // plain JSON answer, since there is no stream to keep open.
206
+ const stateless = new StreamableHTTPServerTransport({ enableJsonResponse: true });
207
+ const server = this.#newServer(endpoint);
208
+ res.on('close', () => {
209
+ void stateless.close();
210
+ void server.close();
211
+ });
212
+ await server.connect(stateless);
213
+ await stateless.handleRequest(req, res, body);
214
+ }
215
+ else if (sessionId && endpoint.transports.has(sessionId)) {
138
216
  // Session resume — reuse the existing transport (already connected to its own server).
139
- transport = this.#transports.get(sessionId);
217
+ transport = endpoint.transports.get(sessionId);
140
218
  await transport.handleRequest(req, res, body);
141
219
  }
142
220
  else if (!sessionId && isInitializeRequest(body)) {
@@ -145,23 +223,16 @@ export default class McpProvider {
145
223
  sessionIdGenerator: () => randomUUID(),
146
224
  onsessioninitialized: (sid) => {
147
225
  if (transport)
148
- this.#transports.set(sid, transport);
226
+ endpoint.transports.set(sid, transport);
149
227
  },
150
228
  });
151
229
  transport.onclose = () => {
152
230
  const sid = transport?.sessionId;
153
- if (sid && this.#transports.get(sid) === transport) {
154
- this.#transports.delete(sid);
231
+ if (sid && endpoint.transports.get(sid) === transport) {
232
+ endpoint.transports.delete(sid);
155
233
  }
156
234
  };
157
- const server = createMcpServer({
158
- name: config.name,
159
- version: config.version,
160
- registry,
161
- policy: authorizer,
162
- ...(config.allowedTools !== undefined ? { allowedTools: config.allowedTools } : {}),
163
- actorFromAuth: actorFromAuthInfo,
164
- });
235
+ const server = this.#newServer(endpoint);
165
236
  await server.connect(transport);
166
237
  await transport.handleRequest(req, res, body);
167
238
  }
@@ -191,15 +262,15 @@ export default class McpProvider {
191
262
  }
192
263
  await this.#awaitFinish(res);
193
264
  }
194
- async #handleGet(ctx, auth, openActor) {
265
+ async #handleGet(ctx, endpoint) {
195
266
  const req = ctx.request.request;
196
267
  const res = ctx.response.response;
197
268
  const sessionId = ctx.request.header('mcp-session-id');
198
- const authInfo = await this.#authenticate(ctx, auth, openActor);
269
+ const authInfo = await this.#authenticate(ctx, endpoint);
199
270
  if (authInfo === null)
200
271
  return;
201
272
  req.auth = authInfo;
202
- const transport = sessionId ? this.#transports.get(sessionId) : undefined;
273
+ const transport = sessionId ? endpoint.transports.get(sessionId) : undefined;
203
274
  if (transport === undefined) {
204
275
  res.statusCode = 400;
205
276
  res.end('Invalid or missing session ID');
@@ -209,15 +280,15 @@ export default class McpProvider {
209
280
  await transport.handleRequest(req, res);
210
281
  await this.#awaitFinish(res);
211
282
  }
212
- async #handleDelete(ctx, auth, openActor) {
283
+ async #handleDelete(ctx, endpoint) {
213
284
  const req = ctx.request.request;
214
285
  const res = ctx.response.response;
215
286
  const sessionId = ctx.request.header('mcp-session-id');
216
- const authInfo = await this.#authenticate(ctx, auth, openActor);
287
+ const authInfo = await this.#authenticate(ctx, endpoint);
217
288
  if (authInfo === null)
218
289
  return;
219
290
  req.auth = authInfo;
220
- const transport = sessionId ? this.#transports.get(sessionId) : undefined;
291
+ const transport = sessionId ? endpoint.transports.get(sessionId) : undefined;
221
292
  if (transport === undefined) {
222
293
  res.statusCode = 400;
223
294
  res.end('Invalid or missing session ID');
@@ -227,6 +298,20 @@ export default class McpProvider {
227
298
  await transport.handleRequest(req, res);
228
299
  await this.#awaitFinish(res);
229
300
  }
301
+ /**
302
+ * Stateless mode has no SSE stream to open and no session to close (MCP Streamable HTTP §2.2).
303
+ * Authenticated first: an unauthenticated caller gets the 401 that starts its login, not a 405.
304
+ */
305
+ async #methodNotAllowed(ctx, endpoint) {
306
+ if ((await this.#authenticate(ctx, endpoint)) === null)
307
+ return;
308
+ ctx.response.header('allow', 'POST');
309
+ return ctx.response.status(405).json({
310
+ jsonrpc: '2.0',
311
+ error: { code: -32000, message: 'Method not allowed: this MCP server is stateless.' },
312
+ id: null,
313
+ });
314
+ }
230
315
  /** Resolve only when the raw response is finished so Adonis doesn't try to handle the response again. */
231
316
  #awaitFinish(res) {
232
317
  return new Promise((resolve) => {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp_provider.js","sourceRoot":"","sources":["../../providers/mcp_provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp_provider.js","sourceRoot":"","sources":["../../providers/mcp_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAEnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,4BAA4B,EAC5B,YAAY,EACZ,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IAMR,GAAG;IALzB,wDAAwD;IAC/C,UAAU,GAAe,EAAE,CAAC;IACrC,2FAA2F;IAC3F,aAAa,CAAqB;IAElC,YAAsB,GAAuB;mBAAvB,GAAG;IAAuB,CAAC;IAEjD,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAY,KAAK,EAAE,EAAe,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,UAAU,GACd,MAAM,CAAC,UAAU;YACjB,IAAI,qBAAqB,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC,CAAC;QACxF,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,IAAI,CAAC,aAAa;YAChB,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9E,MAAM,IAAI,GAAa;YACrB,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;YACnC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,QAAQ,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;YACrD,UAAU;YACV,IAAI;YACJ,+FAA+F;YAC/F,SAAS,EAAE,MAAM,CAAC,KAAK;YACvB,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,SAAS,EAAE,MAAM,CAAC,SAAS,KAAK,IAAI;YACpC,iBAAiB,EAAE,8BAA8B;YACjD,UAAU,EAAE,IAAI,GAAG,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnB,GAAG,IAAI;gBACP,IAAI;gBACJ,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;gBAC7B,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjF,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACpE,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;gBAClF,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjF,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjF,iBAAiB,EACf,KAAK,CAAC,iBAAiB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B;gBACxF,UAAU,EAAE,IAAI,GAAG,EAAE;aACtB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG;gBACb,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACrE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAc,EAAE,EAAE,CACnC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CACxF;gBACD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAc,EAAE,EAAE,CACtC,QAAQ,CAAC,SAAS;oBAChB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC;oBACrC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CACpC;aACF,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,MAAM,CAAC,IAAI,MAAM;oBAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAErE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;YACnC,IAAI,KAAK,EAAE,CAAC;gBACV,0FAA0F;gBAC1F,0FAA0F;gBAC1F,qBAAqB,CACnB,IAAI,CAAC,aAAa,KAAK,SAAS;oBAC9B,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAC5D,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAClC,CAAC;gBACF,MAAM;qBACH,GAAG,CAAC,yCAAyC,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAc,EAAE,EAAE;oBACtF,6FAA6F;oBAC7F,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;oBACjE,gFAAgF;oBAChF,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;oBACtD,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1F,CAAC,CAAC;qBACD,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5F,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU;YAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACtE,CAAC;IAED,6EAA6E;IAE7E,kGAAkG;IAClG,OAAO,CAAC,GAAgB;QACtB,OAAO,CACL,IAAI,CAAC,aAAa;YAClB,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,WAAW,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,OAAO,CACL,GAAgB,EAChB,QAAkB,EAClB,MAAiB,EACjB,OAAe,EACf,QAAiB;QAEjB,MAAM,SAAS,GAAG,wBAAwB,CAAC;YACzC,GAAG,CAAC,MAAM,KAAK,GAAG;gBAChB,CAAC,CAAC,EAAE,KAAK,EAAE,oBAA6B,EAAE;gBAC1C,CAAC,CAAC,QAAQ;oBACR,CAAC,CAAC,EAAE,KAAK,EAAE,eAAwB,EAAE;oBACrC,CAAC,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS;gBACpC,CAAC,CAAC,EAAE,mBAAmB,EAAE,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACzF,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACnD,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,GAAgB,EAAE,QAAkB;QACtD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;oBAC9B,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC;iBAC3D,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;gBAClE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;gBACxE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;QACvF,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CACjB,GAAG,EACH,QAAQ,EACR,GAAG,EACH,wDAAwD,EACxD,KAAK,CACN,CAAC;IACJ,CAAC;IAED,6EAA6E;IAE7E,UAAU,CAAC,QAAkB;QAC3B,OAAO,eAAe,CAAC;YACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,MAAM,EAAE,QAAQ,CAAC,UAAU;YAC3B,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,aAAa,EAAE,iBAAiB;SACjC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAgB,EAAE,QAAkB;QACpD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAgD,CAAC;QACzE,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO;QAC9B,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;QAEpB,IAAI,CAAC;YACH,IAAI,SAAoD,CAAC;YACzD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACvB,2FAA2F;gBAC3F,4DAA4D;gBAC5D,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACzC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBACnB,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;oBACvB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;gBACtB,CAAC,CAAC,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAsB,CAAC,CAAC;gBAC7C,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3D,uFAAuF;gBACvF,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBAChD,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,CAAC,SAAS,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,8FAA8F;gBAC9F,SAAS,GAAG,IAAI,6BAA6B,CAAC;oBAC5C,kBAAkB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;oBACtC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;wBAC5B,IAAI,SAAS;4BAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBACzD,CAAC;iBACF,CAAC,CAAC;gBACH,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;oBACvB,MAAM,GAAG,GAAG,SAAS,EAAE,SAAS,CAAC;oBACjC,IAAI,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;wBACtD,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC,CAAC;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACzC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAsB,CAAC,CAAC;gBAC7C,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAClD,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;oBACb,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,kCAAkC,EAAE;oBACpE,EAAE,EAAE,IAAI;iBACT,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAClD,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;oBACb,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,CAAC,KAAK;wBACZ,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;qBACnE;oBACD,EAAE,EAAE,IAAI;iBACT,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAgB,EAAE,QAAkB;QACnD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAgD,CAAC;QACzE,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO;QAC9B,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;QAEpB,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAgB,EAAE,QAAkB;QACtD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAgD,CAAC;QACzE,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO;QAC9B,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;QAEpB,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,GAAgB,EAAE,QAAkB;QAC1D,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,IAAI;YAAE,OAAO;QAC/D,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,mDAAmD,EAAE;YACrF,EAAE,EAAE,IAAI;SACT,CAAC,CAAC;IACL,CAAC;IAED,yGAAyG;IACzG,YAAY,CAAC,GAAmB;QAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAClC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,67 @@
1
+ import type { HttpContext } from '@adonisjs/core/http';
2
+ import type { ApplicationService } from '@adonisjs/core/types';
3
+ /**
4
+ * Who is calling an A2A endpoint: a personal agent (identified by its `issuer`) speaking for one of
5
+ * ITS users (`sub`, opaque) — and, when the user delegated, the account here it may act on.
6
+ */
7
+ export interface A2aCaller {
8
+ /** The personal agent's issuer — stable, and its OAuth `client_id`. */
9
+ issuer: string;
10
+ /** The personal agent's user. NOT an account here. */
11
+ sub: string;
12
+ /** Display name of the personal agent. */
13
+ name: string;
14
+ /** Present when the request carried a valid delegation token. */
15
+ delegation: {
16
+ accountId: string;
17
+ scopes: string[];
18
+ grantId: string;
19
+ } | null;
20
+ }
21
+ /** What a receipt records about a turn served under delegation. */
22
+ export interface A2aReceiptInput {
23
+ scopesUsed: string[];
24
+ actions: {
25
+ tool: string;
26
+ argsHash?: string;
27
+ }[];
28
+ }
29
+ /**
30
+ * How the A2A surface authenticates callers and speaks the delegation half of the protocol. The
31
+ * built-in driver is {@link authKitPersonalAgents} (`@adonis-agora/authkit-server`); anything
32
+ * implementing this works.
33
+ */
34
+ export interface A2aAuth {
35
+ /**
36
+ * Verify the request. On failure, write the response (a bare `401` with the challenge) and return
37
+ * `null`. Called BEFORE the body is read.
38
+ */
39
+ authenticate(ctx: HttpContext): Promise<A2aCaller | null>;
40
+ /** The `securitySchemes` + `securityRequirements` of the Agent Card served at `interfaceUrl`. */
41
+ cardSecurity(ctx: HttpContext, interfaceUrl: string): Promise<Record<string, unknown>>;
42
+ /**
43
+ * The metadata of a step-up task asking the user for `missingScopes` (PACT §5.5), or `null` when
44
+ * this deployment has no delegation to step up into.
45
+ */
46
+ stepUp(ctx: HttpContext, missingScopes: string[]): Promise<Record<string, unknown> | null>;
47
+ /** The metadata carrying a signed receipt for a reply served under delegation (PACT §5.6). */
48
+ receipt(ctx: HttpContext, input: A2aReceiptInput): Promise<Record<string, unknown>>;
49
+ /** Scopes a user can delegate, `id → description` — what the agent may ask for. Empty = none. */
50
+ delegableScopes(): Promise<Record<string, string>>;
51
+ }
52
+ /** Runtime context an {@link A2aAuthFactory} gets at boot. */
53
+ export interface A2aAuthContext {
54
+ app: ApplicationService;
55
+ }
56
+ export type A2aAuthFactory = (ctx: A2aAuthContext) => A2aAuth | Promise<A2aAuth>;
57
+ export declare function resolveA2aAuth(auth: A2aAuth | A2aAuthFactory, ctx: A2aAuthContext): Promise<A2aAuth>;
58
+ /**
59
+ * Requires `@adonis-agora/authkit-server` 0.76 or later (its personal agents). Loaded lazily, like
60
+ * the MCP `authKitAuth` driver, so it is not a declared peer.
61
+ *
62
+ * Authenticate A2A callers with AuthKit's personal agents (`personalAgents` in `config/authkit.ts`):
63
+ * the agent's signed JWT, the delegation token beside it, the Agent Card security block, step-up
64
+ * links and signed receipts — all from `@adonis-agora/authkit-server`, loaded lazily.
65
+ */
66
+ export declare function authKitPersonalAgents(): A2aAuthFactory;
67
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/a2a/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,UAAU,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7E;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChD;AAED;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC1D,iGAAiG;IACjG,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvF;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3F,8FAA8F;IAC9F,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpF,iGAAiG;IACjG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,kBAAkB,CAAC;CACzB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEjF,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,GAAG,cAAc,EAC9B,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,OAAO,CAAC,CAElB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,IAAI,cAAc,CAoCtD"}
@@ -0,0 +1,47 @@
1
+ export async function resolveA2aAuth(auth, ctx) {
2
+ return typeof auth === 'function' ? auth(ctx) : auth;
3
+ }
4
+ /**
5
+ * Requires `@adonis-agora/authkit-server` 0.76 or later (its personal agents). Loaded lazily, like
6
+ * the MCP `authKitAuth` driver, so it is not a declared peer.
7
+ *
8
+ * Authenticate A2A callers with AuthKit's personal agents (`personalAgents` in `config/authkit.ts`):
9
+ * the agent's signed JWT, the delegation token beside it, the Agent Card security block, step-up
10
+ * links and signed receipts — all from `@adonis-agora/authkit-server`, loaded lazily.
11
+ */
12
+ export function authKitPersonalAgents() {
13
+ return async ({ app }) => {
14
+ const authkit = (await import('@adonis-agora/authkit-server'));
15
+ const middleware = authkit.personalAgentAuth();
16
+ const delegableScopes = async () => {
17
+ const service = (await app.container.make('authkit.server'));
18
+ return { ...(service.config.personalAgents?.delegation?.scopes ?? {}) };
19
+ };
20
+ return {
21
+ async authenticate(ctx) {
22
+ let passed = false;
23
+ await middleware(ctx, async () => {
24
+ passed = true;
25
+ });
26
+ const caller = passed ? authkit.personalAgentOf(ctx) : null;
27
+ return caller
28
+ ? {
29
+ issuer: caller.issuer,
30
+ sub: caller.sub,
31
+ name: caller.name,
32
+ delegation: caller.delegation,
33
+ }
34
+ : null;
35
+ },
36
+ cardSecurity: (ctx, interfaceUrl) => authkit.personalAgentSecurity(ctx, { interfaceUrl }),
37
+ async stepUp(ctx, missingScopes) {
38
+ if (Object.keys(await delegableScopes()).length === 0)
39
+ return null;
40
+ return authkit.personalAgentStepUp(ctx, missingScopes);
41
+ },
42
+ receipt: (ctx, input) => authkit.personalAgentReceipt(ctx, input),
43
+ delegableScopes,
44
+ };
45
+ };
46
+ }
47
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/a2a/auth.ts"],"names":[],"mappings":"AAuDA,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAA8B,EAC9B,GAAmB;IAEnB,OAAO,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAyBD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACvB,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAC3B,8BAAwC,CACzC,CAAgC,CAAC;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,eAAe,GAAG,KAAK,IAAqC,EAAE;YAClE,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAyB,CAAC,CAAuB,CAAC;YAC5F,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC,CAAC;QAEF,OAAO;YACL,KAAK,CAAC,YAAY,CAAC,GAAG;gBACpB,IAAI,MAAM,GAAG,KAAK,CAAC;gBACnB,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;oBAC/B,MAAM,GAAG,IAAI,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5D,OAAO,MAAM;oBACX,CAAC,CAAC;wBACE,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,GAAG,EAAE,MAAM,CAAC,GAAG;wBACf,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,UAAU,EAAE,MAAM,CAAC,UAAU;qBAC9B;oBACH,CAAC,CAAC,IAAI,CAAC;YACX,CAAC;YACD,YAAY,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,CAAC;YACzF,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa;gBAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACnE,OAAO,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC;YACjE,eAAe;SAChB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { ApplicationService } from '@adonisjs/core/types';
2
+ import type { Actor } from '../types.js';
3
+ import type { A2aAuth, A2aAuthFactory, A2aCaller } from './auth.js';
4
+ import type { A2aCardInput } from './handler.js';
5
+ import type { A2aStore } from './store.js';
6
+ import type { A2aActionPolicy, A2aTurnService } from './turn.js';
7
+ /** One agent exposed over A2A, keyed by its public id (the `{brand}` in `/a2a/{brand}`). */
8
+ export interface A2aAgentConfig {
9
+ /** The registered agent that answers. Default: the key. */
10
+ agent?: string;
11
+ /** What the Agent Card says about it. */
12
+ card: A2aCardInput;
13
+ }
14
+ /**
15
+ * Shape of `config/a2a.ts`. Exposes registered agents to personal agents over A2A 1.0 (HTTP+JSON),
16
+ * the transport of PACT (https://openpactprotocol.org):
17
+ *
18
+ * ```ts
19
+ * import { defineA2aConfig, authKitPersonalAgents } from '@adonis-agora/agent/a2a'
20
+ *
21
+ * export default defineA2aConfig({
22
+ * baseUrl: 'https://acme.com',
23
+ * auth: authKitPersonalAgents(),
24
+ * agents: {
25
+ * support: { card: { name: 'Acme Support', description: 'Orders and returns.' } },
26
+ * },
27
+ * })
28
+ * ```
29
+ */
30
+ export interface A2aConfig {
31
+ /** Mount prefix. Default `'a2a'` → `/a2a/{agent}/…`. */
32
+ path?: string;
33
+ /**
34
+ * Public origin of this app, for the interface URL on each Agent Card. Set it in production — the
35
+ * fallback (the request's own Host) is whatever the caller sent.
36
+ */
37
+ baseUrl?: string;
38
+ agents: Record<string, A2aAgentConfig>;
39
+ /** Also serve this agent's card at `/.well-known/agent-card.json` (PACT §2.1). */
40
+ rootCard?: string;
41
+ /** How callers authenticate — `authKitPersonalAgents()`, or your own {@link A2aAuth}. */
42
+ auth: A2aAuth | A2aAuthFactory;
43
+ /**
44
+ * Where conversation ownership and `messageId` replies live. Default `'lucid'` (tables created on
45
+ * first use, `CREATE TABLE IF NOT EXISTS`); `'memory'` for a single process; or your own store.
46
+ */
47
+ store?: 'lucid' | 'memory' | A2aStore;
48
+ /** Lucid connection for the `'lucid'` store. Default: the primary. */
49
+ connection?: string;
50
+ /** What happens to `action` calls that park for approval. Default `'approve-delegated'`. */
51
+ actions?: A2aActionPolicy;
52
+ /** Give up on a turn after this many ms (`INTERNAL`). Default 120 000. */
53
+ timeoutMs?: number;
54
+ /** Largest accepted request body, in bytes. Default 1 MiB. */
55
+ maxBodyBytes?: number;
56
+ /**
57
+ * What runs a turn. Default: the agent provider's `AgentService`. An app with its own runtime
58
+ * (a `runAgentLoop` built per request) passes an adapter — or a factory resolved on first use.
59
+ */
60
+ service?: A2aTurnService | ((ctx: {
61
+ app: ApplicationService;
62
+ }) => A2aTurnService | Promise<A2aTurnService>);
63
+ /** Roles of the actor a turn runs as. Default: `personal_agent` plus the delegated scopes. */
64
+ roles?: (caller: A2aCaller) => string[];
65
+ /**
66
+ * Map the caller to the actor your tools expect — e.g. an app whose actor is a PROFILE, not the
67
+ * account. Gets the default actor (account id under delegation, `pa:<hash>` without; the roles
68
+ * above). `personal_agent` is added back whatever this returns.
69
+ */
70
+ actor?: (caller: A2aCaller, defaults: Actor) => Actor | Promise<Actor>;
71
+ }
72
+ /** Identity helper giving `config/a2a.ts` full type-checking. */
73
+ export declare function defineA2aConfig(config: A2aConfig): A2aConfig;
74
+ //# sourceMappingURL=define_config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../../src/a2a/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,4FAA4F;AAC5F,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,SAAS;IACxB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC;IAC/B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EACJ,cAAc,GACd,CAAC,CAAC,GAAG,EAAE;QAAE,GAAG,EAAE,kBAAkB,CAAA;KAAE,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACrF,8FAA8F;IAC9F,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,EAAE,CAAC;IACxC;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,KAAK,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CACxE;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAE5D"}
@@ -0,0 +1,5 @@
1
+ /** Identity helper giving `config/a2a.ts` full type-checking. */
2
+ export function defineA2aConfig(config) {
3
+ return config;
4
+ }
5
+ //# sourceMappingURL=define_config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../../src/a2a/define_config.ts"],"names":[],"mappings":"AA0EA,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type ScopeResolver } from '../skills.js';
2
+ import type { RolesPolicy } from '../spi/roles-policy.js';
3
+ /** The role a delegated scope becomes. Namespaced, so a scope can never pose as an app role. */
4
+ export declare const SCOPE_ROLE_PREFIX = "scope:";
5
+ export declare function scopeRole(scope: string): string;
6
+ /**
7
+ * Wrap a {@link RolesPolicy} so personal agents reach only what was written for them.
8
+ *
9
+ * An A2A actor carries {@link PERSONAL_AGENT_ROLE}, plus one {@link scopeRole} per delegated scope.
10
+ * For it, a tool must DECLARE one of those roles, and the wrapped policy must agree too. A tool with
11
+ * no `roles` is unreachable: under the default policy "no roles" means "anyone", and an app's
12
+ * existing tools were never written with an outside caller in mind. Every other actor is decided by
13
+ * the wrapped policy alone, unchanged.
14
+ */
15
+ export declare function personalAgentGate(inner: RolesPolicy): RolesPolicy;
16
+ /**
17
+ * Wrap the {@link ScopeResolver} of memory or skills so a personal agent resolves NO scope. Under
18
+ * delegation its actor id is the account's — without this it would read the account's memories
19
+ * (and its tenant's) and could write new ones, a standing instruction to the user's own assistant.
20
+ * Built-ins like `remember` come from config, not the registry, so the tool gate never sees them.
21
+ */
22
+ export declare function personalAgentScopes(inner: ScopeResolver | undefined): ScopeResolver;
23
+ //# sourceMappingURL=gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../../src/a2a/gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAI1D,gGAAgG;AAChG,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAwBjE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,aAAa,CAKnF"}