agentic-qe 3.3.4 → 3.4.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 (457) hide show
  1. package/.claude/agents/v3/qe-queen-coordinator.md +332 -166
  2. package/.claude/helpers/statusline-v3.cjs +85 -42
  3. package/.claude/skills/qcsd-ideation-swarm/SKILL.md +7 -4
  4. package/README.md +71 -2
  5. package/package.json +1 -1
  6. package/scripts/cloud-db-config.json +10 -5
  7. package/scripts/merge-v3-to-root.sql +48 -0
  8. package/v3/CHANGELOG.md +156 -0
  9. package/v3/README.md +118 -1
  10. package/v3/assets/agents/v3/qe-queen-coordinator.md +332 -166
  11. package/v3/assets/skills/qcsd-ideation-swarm/SKILL.md +7 -4
  12. package/v3/dist/adapters/a2a/agent-cards/generator.d.ts +153 -0
  13. package/v3/dist/adapters/a2a/agent-cards/generator.d.ts.map +1 -0
  14. package/v3/dist/adapters/a2a/agent-cards/generator.js +478 -0
  15. package/v3/dist/adapters/a2a/agent-cards/generator.js.map +1 -0
  16. package/v3/dist/adapters/a2a/agent-cards/schema.d.ts +274 -0
  17. package/v3/dist/adapters/a2a/agent-cards/schema.d.ts.map +1 -0
  18. package/v3/dist/adapters/a2a/agent-cards/schema.js +135 -0
  19. package/v3/dist/adapters/a2a/agent-cards/schema.js.map +1 -0
  20. package/v3/dist/adapters/a2a/agent-cards/validator.d.ts +514 -0
  21. package/v3/dist/adapters/a2a/agent-cards/validator.d.ts.map +1 -0
  22. package/v3/dist/adapters/a2a/agent-cards/validator.js +555 -0
  23. package/v3/dist/adapters/a2a/agent-cards/validator.js.map +1 -0
  24. package/v3/dist/adapters/a2a/auth/index.d.ts +23 -0
  25. package/v3/dist/adapters/a2a/auth/index.d.ts.map +1 -0
  26. package/v3/dist/adapters/a2a/auth/index.js +85 -0
  27. package/v3/dist/adapters/a2a/auth/index.js.map +1 -0
  28. package/v3/dist/adapters/a2a/auth/jwt-utils.d.ts +215 -0
  29. package/v3/dist/adapters/a2a/auth/jwt-utils.d.ts.map +1 -0
  30. package/v3/dist/adapters/a2a/auth/jwt-utils.js +314 -0
  31. package/v3/dist/adapters/a2a/auth/jwt-utils.js.map +1 -0
  32. package/v3/dist/adapters/a2a/auth/middleware.d.ts +173 -0
  33. package/v3/dist/adapters/a2a/auth/middleware.d.ts.map +1 -0
  34. package/v3/dist/adapters/a2a/auth/middleware.js +300 -0
  35. package/v3/dist/adapters/a2a/auth/middleware.js.map +1 -0
  36. package/v3/dist/adapters/a2a/auth/oauth-provider.d.ts +308 -0
  37. package/v3/dist/adapters/a2a/auth/oauth-provider.d.ts.map +1 -0
  38. package/v3/dist/adapters/a2a/auth/oauth-provider.js +573 -0
  39. package/v3/dist/adapters/a2a/auth/oauth-provider.js.map +1 -0
  40. package/v3/dist/adapters/a2a/auth/routes.d.ts +244 -0
  41. package/v3/dist/adapters/a2a/auth/routes.d.ts.map +1 -0
  42. package/v3/dist/adapters/a2a/auth/routes.js +496 -0
  43. package/v3/dist/adapters/a2a/auth/routes.js.map +1 -0
  44. package/v3/dist/adapters/a2a/auth/scopes.d.ts +219 -0
  45. package/v3/dist/adapters/a2a/auth/scopes.d.ts.map +1 -0
  46. package/v3/dist/adapters/a2a/auth/scopes.js +292 -0
  47. package/v3/dist/adapters/a2a/auth/scopes.js.map +1 -0
  48. package/v3/dist/adapters/a2a/auth/token-store.d.ts +278 -0
  49. package/v3/dist/adapters/a2a/auth/token-store.d.ts.map +1 -0
  50. package/v3/dist/adapters/a2a/auth/token-store.js +453 -0
  51. package/v3/dist/adapters/a2a/auth/token-store.js.map +1 -0
  52. package/v3/dist/adapters/a2a/discovery/agent-health.d.ts +226 -0
  53. package/v3/dist/adapters/a2a/discovery/agent-health.d.ts.map +1 -0
  54. package/v3/dist/adapters/a2a/discovery/agent-health.js +426 -0
  55. package/v3/dist/adapters/a2a/discovery/agent-health.js.map +1 -0
  56. package/v3/dist/adapters/a2a/discovery/discovery-service.d.ts +296 -0
  57. package/v3/dist/adapters/a2a/discovery/discovery-service.d.ts.map +1 -0
  58. package/v3/dist/adapters/a2a/discovery/discovery-service.js +520 -0
  59. package/v3/dist/adapters/a2a/discovery/discovery-service.js.map +1 -0
  60. package/v3/dist/adapters/a2a/discovery/file-watcher.d.ts +166 -0
  61. package/v3/dist/adapters/a2a/discovery/file-watcher.d.ts.map +1 -0
  62. package/v3/dist/adapters/a2a/discovery/file-watcher.js +385 -0
  63. package/v3/dist/adapters/a2a/discovery/file-watcher.js.map +1 -0
  64. package/v3/dist/adapters/a2a/discovery/hot-reload-service.d.ts +226 -0
  65. package/v3/dist/adapters/a2a/discovery/hot-reload-service.d.ts.map +1 -0
  66. package/v3/dist/adapters/a2a/discovery/hot-reload-service.js +433 -0
  67. package/v3/dist/adapters/a2a/discovery/hot-reload-service.js.map +1 -0
  68. package/v3/dist/adapters/a2a/discovery/index.d.ts +18 -0
  69. package/v3/dist/adapters/a2a/discovery/index.d.ts.map +1 -0
  70. package/v3/dist/adapters/a2a/discovery/index.js +54 -0
  71. package/v3/dist/adapters/a2a/discovery/index.js.map +1 -0
  72. package/v3/dist/adapters/a2a/discovery/metrics.d.ts +200 -0
  73. package/v3/dist/adapters/a2a/discovery/metrics.d.ts.map +1 -0
  74. package/v3/dist/adapters/a2a/discovery/metrics.js +371 -0
  75. package/v3/dist/adapters/a2a/discovery/metrics.js.map +1 -0
  76. package/v3/dist/adapters/a2a/discovery/routes.d.ts +184 -0
  77. package/v3/dist/adapters/a2a/discovery/routes.d.ts.map +1 -0
  78. package/v3/dist/adapters/a2a/discovery/routes.js +453 -0
  79. package/v3/dist/adapters/a2a/discovery/routes.js.map +1 -0
  80. package/v3/dist/adapters/a2a/index.d.ts +18 -0
  81. package/v3/dist/adapters/a2a/index.d.ts.map +1 -0
  82. package/v3/dist/adapters/a2a/index.js +139 -0
  83. package/v3/dist/adapters/a2a/index.js.map +1 -0
  84. package/v3/dist/adapters/a2a/jsonrpc/envelope.d.ts +312 -0
  85. package/v3/dist/adapters/a2a/jsonrpc/envelope.d.ts.map +1 -0
  86. package/v3/dist/adapters/a2a/jsonrpc/envelope.js +554 -0
  87. package/v3/dist/adapters/a2a/jsonrpc/envelope.js.map +1 -0
  88. package/v3/dist/adapters/a2a/jsonrpc/errors.d.ts +244 -0
  89. package/v3/dist/adapters/a2a/jsonrpc/errors.d.ts.map +1 -0
  90. package/v3/dist/adapters/a2a/jsonrpc/errors.js +365 -0
  91. package/v3/dist/adapters/a2a/jsonrpc/errors.js.map +1 -0
  92. package/v3/dist/adapters/a2a/jsonrpc/index.d.ts +14 -0
  93. package/v3/dist/adapters/a2a/jsonrpc/index.d.ts.map +1 -0
  94. package/v3/dist/adapters/a2a/jsonrpc/index.js +59 -0
  95. package/v3/dist/adapters/a2a/jsonrpc/index.js.map +1 -0
  96. package/v3/dist/adapters/a2a/jsonrpc/methods.d.ts +400 -0
  97. package/v3/dist/adapters/a2a/jsonrpc/methods.d.ts.map +1 -0
  98. package/v3/dist/adapters/a2a/jsonrpc/methods.js +249 -0
  99. package/v3/dist/adapters/a2a/jsonrpc/methods.js.map +1 -0
  100. package/v3/dist/adapters/a2a/notifications/index.d.ts +60 -0
  101. package/v3/dist/adapters/a2a/notifications/index.d.ts.map +1 -0
  102. package/v3/dist/adapters/a2a/notifications/index.js +99 -0
  103. package/v3/dist/adapters/a2a/notifications/index.js.map +1 -0
  104. package/v3/dist/adapters/a2a/notifications/retry-queue.d.ts +225 -0
  105. package/v3/dist/adapters/a2a/notifications/retry-queue.d.ts.map +1 -0
  106. package/v3/dist/adapters/a2a/notifications/retry-queue.js +449 -0
  107. package/v3/dist/adapters/a2a/notifications/retry-queue.js.map +1 -0
  108. package/v3/dist/adapters/a2a/notifications/signature.d.ts +133 -0
  109. package/v3/dist/adapters/a2a/notifications/signature.d.ts.map +1 -0
  110. package/v3/dist/adapters/a2a/notifications/signature.js +244 -0
  111. package/v3/dist/adapters/a2a/notifications/signature.js.map +1 -0
  112. package/v3/dist/adapters/a2a/notifications/subscription-store.d.ts +243 -0
  113. package/v3/dist/adapters/a2a/notifications/subscription-store.d.ts.map +1 -0
  114. package/v3/dist/adapters/a2a/notifications/subscription-store.js +486 -0
  115. package/v3/dist/adapters/a2a/notifications/subscription-store.js.map +1 -0
  116. package/v3/dist/adapters/a2a/notifications/webhook-service.d.ts +257 -0
  117. package/v3/dist/adapters/a2a/notifications/webhook-service.d.ts.map +1 -0
  118. package/v3/dist/adapters/a2a/notifications/webhook-service.js +542 -0
  119. package/v3/dist/adapters/a2a/notifications/webhook-service.js.map +1 -0
  120. package/v3/dist/adapters/a2a/tasks/index.d.ts +16 -0
  121. package/v3/dist/adapters/a2a/tasks/index.d.ts.map +1 -0
  122. package/v3/dist/adapters/a2a/tasks/index.js +33 -0
  123. package/v3/dist/adapters/a2a/tasks/index.js.map +1 -0
  124. package/v3/dist/adapters/a2a/tasks/task-manager.d.ts +306 -0
  125. package/v3/dist/adapters/a2a/tasks/task-manager.d.ts.map +1 -0
  126. package/v3/dist/adapters/a2a/tasks/task-manager.js +562 -0
  127. package/v3/dist/adapters/a2a/tasks/task-manager.js.map +1 -0
  128. package/v3/dist/adapters/a2a/tasks/task-router.d.ts +270 -0
  129. package/v3/dist/adapters/a2a/tasks/task-router.d.ts.map +1 -0
  130. package/v3/dist/adapters/a2a/tasks/task-router.js +574 -0
  131. package/v3/dist/adapters/a2a/tasks/task-router.js.map +1 -0
  132. package/v3/dist/adapters/a2a/tasks/task-store.d.ts +251 -0
  133. package/v3/dist/adapters/a2a/tasks/task-store.d.ts.map +1 -0
  134. package/v3/dist/adapters/a2a/tasks/task-store.js +468 -0
  135. package/v3/dist/adapters/a2a/tasks/task-store.js.map +1 -0
  136. package/v3/dist/adapters/a2ui/accessibility/aria-attributes.d.ts +294 -0
  137. package/v3/dist/adapters/a2ui/accessibility/aria-attributes.d.ts.map +1 -0
  138. package/v3/dist/adapters/a2ui/accessibility/aria-attributes.js +447 -0
  139. package/v3/dist/adapters/a2ui/accessibility/aria-attributes.js.map +1 -0
  140. package/v3/dist/adapters/a2ui/accessibility/index.d.ts +83 -0
  141. package/v3/dist/adapters/a2ui/accessibility/index.d.ts.map +1 -0
  142. package/v3/dist/adapters/a2ui/accessibility/index.js +155 -0
  143. package/v3/dist/adapters/a2ui/accessibility/index.js.map +1 -0
  144. package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.d.ts +177 -0
  145. package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.d.ts.map +1 -0
  146. package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.js +638 -0
  147. package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.js.map +1 -0
  148. package/v3/dist/adapters/a2ui/accessibility/wcag-validator.d.ts +186 -0
  149. package/v3/dist/adapters/a2ui/accessibility/wcag-validator.d.ts.map +1 -0
  150. package/v3/dist/adapters/a2ui/accessibility/wcag-validator.js +816 -0
  151. package/v3/dist/adapters/a2ui/accessibility/wcag-validator.js.map +1 -0
  152. package/v3/dist/adapters/a2ui/catalog/component-schemas.d.ts +227 -0
  153. package/v3/dist/adapters/a2ui/catalog/component-schemas.d.ts.map +1 -0
  154. package/v3/dist/adapters/a2ui/catalog/component-schemas.js +1090 -0
  155. package/v3/dist/adapters/a2ui/catalog/component-schemas.js.map +1 -0
  156. package/v3/dist/adapters/a2ui/catalog/index.d.ts +55 -0
  157. package/v3/dist/adapters/a2ui/catalog/index.d.ts.map +1 -0
  158. package/v3/dist/adapters/a2ui/catalog/index.js +100 -0
  159. package/v3/dist/adapters/a2ui/catalog/index.js.map +1 -0
  160. package/v3/dist/adapters/a2ui/catalog/qe-catalog.d.ts +456 -0
  161. package/v3/dist/adapters/a2ui/catalog/qe-catalog.d.ts.map +1 -0
  162. package/v3/dist/adapters/a2ui/catalog/qe-catalog.js +413 -0
  163. package/v3/dist/adapters/a2ui/catalog/qe-catalog.js.map +1 -0
  164. package/v3/dist/adapters/a2ui/catalog/standard-catalog.d.ts +581 -0
  165. package/v3/dist/adapters/a2ui/catalog/standard-catalog.d.ts.map +1 -0
  166. package/v3/dist/adapters/a2ui/catalog/standard-catalog.js +409 -0
  167. package/v3/dist/adapters/a2ui/catalog/standard-catalog.js.map +1 -0
  168. package/v3/dist/adapters/a2ui/data/bound-value.d.ts +252 -0
  169. package/v3/dist/adapters/a2ui/data/bound-value.d.ts.map +1 -0
  170. package/v3/dist/adapters/a2ui/data/bound-value.js +403 -0
  171. package/v3/dist/adapters/a2ui/data/bound-value.js.map +1 -0
  172. package/v3/dist/adapters/a2ui/data/index.d.ts +14 -0
  173. package/v3/dist/adapters/a2ui/data/index.d.ts.map +1 -0
  174. package/v3/dist/adapters/a2ui/data/index.js +41 -0
  175. package/v3/dist/adapters/a2ui/data/index.js.map +1 -0
  176. package/v3/dist/adapters/a2ui/data/json-pointer-resolver.d.ts +187 -0
  177. package/v3/dist/adapters/a2ui/data/json-pointer-resolver.d.ts.map +1 -0
  178. package/v3/dist/adapters/a2ui/data/json-pointer-resolver.js +425 -0
  179. package/v3/dist/adapters/a2ui/data/json-pointer-resolver.js.map +1 -0
  180. package/v3/dist/adapters/a2ui/data/reactive-store.d.ts +241 -0
  181. package/v3/dist/adapters/a2ui/data/reactive-store.d.ts.map +1 -0
  182. package/v3/dist/adapters/a2ui/data/reactive-store.js +461 -0
  183. package/v3/dist/adapters/a2ui/data/reactive-store.js.map +1 -0
  184. package/v3/dist/adapters/a2ui/index.d.ts +17 -0
  185. package/v3/dist/adapters/a2ui/index.d.ts.map +1 -0
  186. package/v3/dist/adapters/a2ui/index.js +119 -0
  187. package/v3/dist/adapters/a2ui/index.js.map +1 -0
  188. package/v3/dist/adapters/a2ui/integration/agui-sync.d.ts +259 -0
  189. package/v3/dist/adapters/a2ui/integration/agui-sync.d.ts.map +1 -0
  190. package/v3/dist/adapters/a2ui/integration/agui-sync.js +559 -0
  191. package/v3/dist/adapters/a2ui/integration/agui-sync.js.map +1 -0
  192. package/v3/dist/adapters/a2ui/integration/index.d.ts +11 -0
  193. package/v3/dist/adapters/a2ui/integration/index.d.ts.map +1 -0
  194. package/v3/dist/adapters/a2ui/integration/index.js +23 -0
  195. package/v3/dist/adapters/a2ui/integration/index.js.map +1 -0
  196. package/v3/dist/adapters/a2ui/integration/surface-state-bridge.d.ts +209 -0
  197. package/v3/dist/adapters/a2ui/integration/surface-state-bridge.d.ts.map +1 -0
  198. package/v3/dist/adapters/a2ui/integration/surface-state-bridge.js +545 -0
  199. package/v3/dist/adapters/a2ui/integration/surface-state-bridge.js.map +1 -0
  200. package/v3/dist/adapters/a2ui/renderer/component-builder.d.ts +227 -0
  201. package/v3/dist/adapters/a2ui/renderer/component-builder.d.ts.map +1 -0
  202. package/v3/dist/adapters/a2ui/renderer/component-builder.js +488 -0
  203. package/v3/dist/adapters/a2ui/renderer/component-builder.js.map +1 -0
  204. package/v3/dist/adapters/a2ui/renderer/index.d.ts +16 -0
  205. package/v3/dist/adapters/a2ui/renderer/index.d.ts.map +1 -0
  206. package/v3/dist/adapters/a2ui/renderer/index.js +50 -0
  207. package/v3/dist/adapters/a2ui/renderer/index.js.map +1 -0
  208. package/v3/dist/adapters/a2ui/renderer/message-types.d.ts +299 -0
  209. package/v3/dist/adapters/a2ui/renderer/message-types.d.ts.map +1 -0
  210. package/v3/dist/adapters/a2ui/renderer/message-types.js +187 -0
  211. package/v3/dist/adapters/a2ui/renderer/message-types.js.map +1 -0
  212. package/v3/dist/adapters/a2ui/renderer/surface-generator.d.ts +210 -0
  213. package/v3/dist/adapters/a2ui/renderer/surface-generator.d.ts.map +1 -0
  214. package/v3/dist/adapters/a2ui/renderer/surface-generator.js +586 -0
  215. package/v3/dist/adapters/a2ui/renderer/surface-generator.js.map +1 -0
  216. package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.d.ts +149 -0
  217. package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.d.ts.map +1 -0
  218. package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.js +414 -0
  219. package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.js.map +1 -0
  220. package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.d.ts +95 -0
  221. package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.d.ts.map +1 -0
  222. package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.js +231 -0
  223. package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.js.map +1 -0
  224. package/v3/dist/adapters/a2ui/renderer/templates/index.d.ts +12 -0
  225. package/v3/dist/adapters/a2ui/renderer/templates/index.d.ts.map +1 -0
  226. package/v3/dist/adapters/a2ui/renderer/templates/index.js +16 -0
  227. package/v3/dist/adapters/a2ui/renderer/templates/index.js.map +1 -0
  228. package/v3/dist/adapters/a2ui/renderer/templates/security-surface.d.ts +121 -0
  229. package/v3/dist/adapters/a2ui/renderer/templates/security-surface.d.ts.map +1 -0
  230. package/v3/dist/adapters/a2ui/renderer/templates/security-surface.js +367 -0
  231. package/v3/dist/adapters/a2ui/renderer/templates/security-surface.js.map +1 -0
  232. package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.d.ts +104 -0
  233. package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.d.ts.map +1 -0
  234. package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.js +294 -0
  235. package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.js.map +1 -0
  236. package/v3/dist/adapters/ag-ui/backpressure-handler.d.ts +201 -0
  237. package/v3/dist/adapters/ag-ui/backpressure-handler.d.ts.map +1 -0
  238. package/v3/dist/adapters/ag-ui/backpressure-handler.js +399 -0
  239. package/v3/dist/adapters/ag-ui/backpressure-handler.js.map +1 -0
  240. package/v3/dist/adapters/ag-ui/event-adapter.d.ts +360 -0
  241. package/v3/dist/adapters/ag-ui/event-adapter.d.ts.map +1 -0
  242. package/v3/dist/adapters/ag-ui/event-adapter.js +1083 -0
  243. package/v3/dist/adapters/ag-ui/event-adapter.js.map +1 -0
  244. package/v3/dist/adapters/ag-ui/event-batcher.d.ts +242 -0
  245. package/v3/dist/adapters/ag-ui/event-batcher.d.ts.map +1 -0
  246. package/v3/dist/adapters/ag-ui/event-batcher.js +444 -0
  247. package/v3/dist/adapters/ag-ui/event-batcher.js.map +1 -0
  248. package/v3/dist/adapters/ag-ui/event-types.d.ts +450 -0
  249. package/v3/dist/adapters/ag-ui/event-types.d.ts.map +1 -0
  250. package/v3/dist/adapters/ag-ui/event-types.js +173 -0
  251. package/v3/dist/adapters/ag-ui/event-types.js.map +1 -0
  252. package/v3/dist/adapters/ag-ui/index.d.ts +17 -0
  253. package/v3/dist/adapters/ag-ui/index.d.ts.map +1 -0
  254. package/v3/dist/adapters/ag-ui/index.js +47 -0
  255. package/v3/dist/adapters/ag-ui/index.js.map +1 -0
  256. package/v3/dist/adapters/ag-ui/json-patch-utils.d.ts +136 -0
  257. package/v3/dist/adapters/ag-ui/json-patch-utils.d.ts.map +1 -0
  258. package/v3/dist/adapters/ag-ui/json-patch-utils.js +574 -0
  259. package/v3/dist/adapters/ag-ui/json-patch-utils.js.map +1 -0
  260. package/v3/dist/adapters/ag-ui/json-patch.d.ts +241 -0
  261. package/v3/dist/adapters/ag-ui/json-patch.d.ts.map +1 -0
  262. package/v3/dist/adapters/ag-ui/json-patch.js +726 -0
  263. package/v3/dist/adapters/ag-ui/json-patch.js.map +1 -0
  264. package/v3/dist/adapters/ag-ui/state-delta-cache.d.ts +218 -0
  265. package/v3/dist/adapters/ag-ui/state-delta-cache.d.ts.map +1 -0
  266. package/v3/dist/adapters/ag-ui/state-delta-cache.js +422 -0
  267. package/v3/dist/adapters/ag-ui/state-delta-cache.js.map +1 -0
  268. package/v3/dist/adapters/ag-ui/state-manager.d.ts +249 -0
  269. package/v3/dist/adapters/ag-ui/state-manager.d.ts.map +1 -0
  270. package/v3/dist/adapters/ag-ui/state-manager.js +511 -0
  271. package/v3/dist/adapters/ag-ui/state-manager.js.map +1 -0
  272. package/v3/dist/adapters/ag-ui/stream-controller.d.ts +195 -0
  273. package/v3/dist/adapters/ag-ui/stream-controller.d.ts.map +1 -0
  274. package/v3/dist/adapters/ag-ui/stream-controller.js +481 -0
  275. package/v3/dist/adapters/ag-ui/stream-controller.js.map +1 -0
  276. package/v3/dist/adapters/index.d.ts +4 -0
  277. package/v3/dist/adapters/index.d.ts.map +1 -1
  278. package/v3/dist/adapters/index.js +89 -0
  279. package/v3/dist/adapters/index.js.map +1 -1
  280. package/v3/dist/cli/bundle.js +1507 -425
  281. package/v3/dist/coordination/consensus/providers/claude-provider.js +1 -1
  282. package/v3/dist/coordination/consensus/providers/gemini-provider.js +1 -1
  283. package/v3/dist/coordination/consensus/providers/openai-provider.js +1 -1
  284. package/v3/dist/init/init-wizard.d.ts.map +1 -1
  285. package/v3/dist/init/init-wizard.js +19 -4
  286. package/v3/dist/init/init-wizard.js.map +1 -1
  287. package/v3/dist/init/migration/config-migrator.d.ts.map +1 -1
  288. package/v3/dist/init/migration/config-migrator.js +15 -1
  289. package/v3/dist/init/migration/config-migrator.js.map +1 -1
  290. package/v3/dist/init/phases/05-learning.js +1 -1
  291. package/v3/dist/init/phases/05-learning.js.map +1 -1
  292. package/v3/dist/init/self-configurator.d.ts +7 -0
  293. package/v3/dist/init/self-configurator.d.ts.map +1 -1
  294. package/v3/dist/init/self-configurator.js +23 -27
  295. package/v3/dist/init/self-configurator.js.map +1 -1
  296. package/v3/dist/integrations/ruvector/interfaces.js +1 -1
  297. package/v3/dist/integrations/ruvector/interfaces.js.map +1 -1
  298. package/v3/dist/kernel/index.d.ts +1 -1
  299. package/v3/dist/kernel/index.d.ts.map +1 -1
  300. package/v3/dist/kernel/index.js +3 -1
  301. package/v3/dist/kernel/index.js.map +1 -1
  302. package/v3/dist/kernel/plugin-loader.d.ts.map +1 -1
  303. package/v3/dist/kernel/plugin-loader.js +6 -1
  304. package/v3/dist/kernel/plugin-loader.js.map +1 -1
  305. package/v3/dist/kernel/unified-memory.d.ts +123 -0
  306. package/v3/dist/kernel/unified-memory.d.ts.map +1 -1
  307. package/v3/dist/kernel/unified-memory.js +258 -2
  308. package/v3/dist/kernel/unified-memory.js.map +1 -1
  309. package/v3/dist/learning/qe-unified-memory.js +1 -1
  310. package/v3/dist/learning/qe-unified-memory.js.map +1 -1
  311. package/v3/dist/learning/real-qe-reasoning-bank.js +2 -2
  312. package/v3/dist/learning/real-qe-reasoning-bank.js.map +1 -1
  313. package/v3/dist/learning/sqlite-persistence.d.ts +1 -1
  314. package/v3/dist/learning/sqlite-persistence.js +1 -1
  315. package/v3/dist/learning/sqlite-persistence.js.map +1 -1
  316. package/v3/dist/learning/v2-to-v3-migration.d.ts +2 -2
  317. package/v3/dist/learning/v2-to-v3-migration.d.ts.map +1 -1
  318. package/v3/dist/learning/v2-to-v3-migration.js +2 -2
  319. package/v3/dist/learning/v2-to-v3-migration.js.map +1 -1
  320. package/v3/dist/mcp/bundle.js +63075 -53304
  321. package/v3/dist/mcp/entry.d.ts +5 -0
  322. package/v3/dist/mcp/entry.d.ts.map +1 -1
  323. package/v3/dist/mcp/entry.js +36 -0
  324. package/v3/dist/mcp/entry.js.map +1 -1
  325. package/v3/dist/mcp/http-server.d.ts +95 -0
  326. package/v3/dist/mcp/http-server.d.ts.map +1 -0
  327. package/v3/dist/mcp/http-server.js +833 -0
  328. package/v3/dist/mcp/http-server.js.map +1 -0
  329. package/v3/dist/mcp/protocol-server.d.ts +6 -0
  330. package/v3/dist/mcp/protocol-server.d.ts.map +1 -1
  331. package/v3/dist/mcp/protocol-server.js +40 -0
  332. package/v3/dist/mcp/protocol-server.js.map +1 -1
  333. package/v3/dist/mcp/transport/index.d.ts +25 -3
  334. package/v3/dist/mcp/transport/index.d.ts.map +1 -1
  335. package/v3/dist/mcp/transport/index.js +22 -4
  336. package/v3/dist/mcp/transport/index.js.map +1 -1
  337. package/v3/dist/mcp/transport/sse/connection-manager.d.ts +84 -0
  338. package/v3/dist/mcp/transport/sse/connection-manager.d.ts.map +1 -0
  339. package/v3/dist/mcp/transport/sse/connection-manager.js +271 -0
  340. package/v3/dist/mcp/transport/sse/connection-manager.js.map +1 -0
  341. package/v3/dist/mcp/transport/sse/index.d.ts +10 -0
  342. package/v3/dist/mcp/transport/sse/index.d.ts.map +1 -0
  343. package/v3/dist/mcp/transport/sse/index.js +15 -0
  344. package/v3/dist/mcp/transport/sse/index.js.map +1 -0
  345. package/v3/dist/mcp/transport/sse/sse-transport.d.ts +56 -0
  346. package/v3/dist/mcp/transport/sse/sse-transport.d.ts.map +1 -0
  347. package/v3/dist/mcp/transport/sse/sse-transport.js +381 -0
  348. package/v3/dist/mcp/transport/sse/sse-transport.js.map +1 -0
  349. package/v3/dist/mcp/transport/sse/types.d.ts +237 -0
  350. package/v3/dist/mcp/transport/sse/types.d.ts.map +1 -0
  351. package/v3/dist/mcp/transport/sse/types.js +37 -0
  352. package/v3/dist/mcp/transport/sse/types.js.map +1 -0
  353. package/v3/dist/mcp/transport/websocket/connection-manager.d.ts +143 -0
  354. package/v3/dist/mcp/transport/websocket/connection-manager.d.ts.map +1 -0
  355. package/v3/dist/mcp/transport/websocket/connection-manager.js +522 -0
  356. package/v3/dist/mcp/transport/websocket/connection-manager.js.map +1 -0
  357. package/v3/dist/mcp/transport/websocket/index.d.ts +10 -0
  358. package/v3/dist/mcp/transport/websocket/index.d.ts.map +1 -0
  359. package/v3/dist/mcp/transport/websocket/index.js +19 -0
  360. package/v3/dist/mcp/transport/websocket/index.js.map +1 -0
  361. package/v3/dist/mcp/transport/websocket/types.d.ts +354 -0
  362. package/v3/dist/mcp/transport/websocket/types.d.ts.map +1 -0
  363. package/v3/dist/mcp/transport/websocket/types.js +49 -0
  364. package/v3/dist/mcp/transport/websocket/types.js.map +1 -0
  365. package/v3/dist/mcp/transport/websocket/websocket-transport.d.ts +77 -0
  366. package/v3/dist/mcp/transport/websocket/websocket-transport.d.ts.map +1 -0
  367. package/v3/dist/mcp/transport/websocket/websocket-transport.js +622 -0
  368. package/v3/dist/mcp/transport/websocket/websocket-transport.js.map +1 -0
  369. package/v3/dist/memory/crdt/convergence-tracker.d.ts +59 -0
  370. package/v3/dist/memory/crdt/convergence-tracker.d.ts.map +1 -0
  371. package/v3/dist/memory/crdt/convergence-tracker.js +325 -0
  372. package/v3/dist/memory/crdt/convergence-tracker.js.map +1 -0
  373. package/v3/dist/memory/crdt/crdt-store.d.ts +55 -0
  374. package/v3/dist/memory/crdt/crdt-store.d.ts.map +1 -0
  375. package/v3/dist/memory/crdt/crdt-store.js +582 -0
  376. package/v3/dist/memory/crdt/crdt-store.js.map +1 -0
  377. package/v3/dist/memory/crdt/g-counter.d.ts +47 -0
  378. package/v3/dist/memory/crdt/g-counter.d.ts.map +1 -0
  379. package/v3/dist/memory/crdt/g-counter.js +134 -0
  380. package/v3/dist/memory/crdt/g-counter.js.map +1 -0
  381. package/v3/dist/memory/crdt/index.d.ts +52 -0
  382. package/v3/dist/memory/crdt/index.d.ts.map +1 -0
  383. package/v3/dist/memory/crdt/index.js +66 -0
  384. package/v3/dist/memory/crdt/index.js.map +1 -0
  385. package/v3/dist/memory/crdt/lww-register.d.ts +40 -0
  386. package/v3/dist/memory/crdt/lww-register.d.ts.map +1 -0
  387. package/v3/dist/memory/crdt/lww-register.js +133 -0
  388. package/v3/dist/memory/crdt/lww-register.js.map +1 -0
  389. package/v3/dist/memory/crdt/or-set.d.ts +62 -0
  390. package/v3/dist/memory/crdt/or-set.d.ts.map +1 -0
  391. package/v3/dist/memory/crdt/or-set.js +336 -0
  392. package/v3/dist/memory/crdt/or-set.js.map +1 -0
  393. package/v3/dist/memory/crdt/pn-counter.d.ts +53 -0
  394. package/v3/dist/memory/crdt/pn-counter.d.ts.map +1 -0
  395. package/v3/dist/memory/crdt/pn-counter.js +147 -0
  396. package/v3/dist/memory/crdt/pn-counter.js.map +1 -0
  397. package/v3/dist/memory/crdt/types.d.ts +397 -0
  398. package/v3/dist/memory/crdt/types.d.ts.map +1 -0
  399. package/v3/dist/memory/crdt/types.js +12 -0
  400. package/v3/dist/memory/crdt/types.js.map +1 -0
  401. package/v3/dist/memory/index.d.ts +5 -2
  402. package/v3/dist/memory/index.d.ts.map +1 -1
  403. package/v3/dist/memory/index.js +5 -2
  404. package/v3/dist/memory/index.js.map +1 -1
  405. package/v3/dist/performance/benchmarks.d.ts +215 -0
  406. package/v3/dist/performance/benchmarks.d.ts.map +1 -0
  407. package/v3/dist/performance/benchmarks.js +516 -0
  408. package/v3/dist/performance/benchmarks.js.map +1 -0
  409. package/v3/dist/performance/ci-gates.d.ts +149 -0
  410. package/v3/dist/performance/ci-gates.d.ts.map +1 -0
  411. package/v3/dist/performance/ci-gates.js +425 -0
  412. package/v3/dist/performance/ci-gates.js.map +1 -0
  413. package/v3/dist/performance/index.d.ts +18 -0
  414. package/v3/dist/performance/index.d.ts.map +1 -0
  415. package/v3/dist/performance/index.js +26 -0
  416. package/v3/dist/performance/index.js.map +1 -0
  417. package/v3/dist/performance/optimizer.d.ts +323 -0
  418. package/v3/dist/performance/optimizer.d.ts.map +1 -0
  419. package/v3/dist/performance/optimizer.js +592 -0
  420. package/v3/dist/performance/optimizer.js.map +1 -0
  421. package/v3/dist/performance/profiler.d.ts +195 -0
  422. package/v3/dist/performance/profiler.d.ts.map +1 -0
  423. package/v3/dist/performance/profiler.js +369 -0
  424. package/v3/dist/performance/profiler.js.map +1 -0
  425. package/v3/dist/performance/run-gates.d.ts +23 -0
  426. package/v3/dist/performance/run-gates.d.ts.map +1 -0
  427. package/v3/dist/performance/run-gates.js +122 -0
  428. package/v3/dist/performance/run-gates.js.map +1 -0
  429. package/v3/dist/sync/claude-flow-bridge.d.ts +1 -1
  430. package/v3/dist/sync/claude-flow-bridge.js +1 -1
  431. package/v3/dist/sync/interfaces.d.ts +6 -0
  432. package/v3/dist/sync/interfaces.d.ts.map +1 -1
  433. package/v3/dist/sync/interfaces.js +34 -47
  434. package/v3/dist/sync/interfaces.js.map +1 -1
  435. package/v3/dist/sync/readers/sqlite-reader.d.ts +1 -1
  436. package/v3/dist/sync/readers/sqlite-reader.js +1 -1
  437. package/v3/dist/testing/index.d.ts +6 -0
  438. package/v3/dist/testing/index.d.ts.map +1 -0
  439. package/v3/dist/testing/index.js +7 -0
  440. package/v3/dist/testing/index.js.map +1 -0
  441. package/v3/dist/testing/load/agent-load-tester.d.ts +221 -0
  442. package/v3/dist/testing/load/agent-load-tester.d.ts.map +1 -0
  443. package/v3/dist/testing/load/agent-load-tester.js +566 -0
  444. package/v3/dist/testing/load/agent-load-tester.js.map +1 -0
  445. package/v3/dist/testing/load/bottleneck-analyzer.d.ts +150 -0
  446. package/v3/dist/testing/load/bottleneck-analyzer.d.ts.map +1 -0
  447. package/v3/dist/testing/load/bottleneck-analyzer.js +442 -0
  448. package/v3/dist/testing/load/bottleneck-analyzer.js.map +1 -0
  449. package/v3/dist/testing/load/index.d.ts +17 -0
  450. package/v3/dist/testing/load/index.d.ts.map +1 -0
  451. package/v3/dist/testing/load/index.js +23 -0
  452. package/v3/dist/testing/load/index.js.map +1 -0
  453. package/v3/dist/testing/load/metrics-collector.d.ts +275 -0
  454. package/v3/dist/testing/load/metrics-collector.d.ts.map +1 -0
  455. package/v3/dist/testing/load/metrics-collector.js +475 -0
  456. package/v3/dist/testing/load/metrics-collector.js.map +1 -0
  457. package/v3/package.json +5 -1
@@ -0,0 +1,573 @@
1
+ /**
2
+ * A2A OAuth 2.0 Provider
3
+ *
4
+ * Implements OAuth 2.0 authorization server functionality including:
5
+ * - Authorization Code Flow (with PKCE support)
6
+ * - Client Credentials Flow
7
+ * - Token refresh
8
+ * - Token revocation
9
+ *
10
+ * @module adapters/a2a/auth/oauth-provider
11
+ * @see https://datatracker.ietf.org/doc/html/rfc6749
12
+ * @see https://datatracker.ietf.org/doc/html/rfc7636 (PKCE)
13
+ */
14
+ import { createTokenStore } from './token-store.js';
15
+ import { signAccessToken, verifyJWT, JWTError, } from './jwt-utils.js';
16
+ import { validateScopes, normalizeScopes, DEFAULT_CLIENT_SCOPES, } from './scopes.js';
17
+ /**
18
+ * Default OAuth 2.0 configuration values
19
+ */
20
+ export const DEFAULT_OAUTH2_CONFIG = {
21
+ tokenTTL: 3600,
22
+ refreshTokenTTL: 2592000,
23
+ authorizationCodeTTL: 600,
24
+ requirePKCE: false,
25
+ allowRefreshTokens: true,
26
+ };
27
+ // ============================================================================
28
+ // OAuth 2.0 Error Class
29
+ // ============================================================================
30
+ /**
31
+ * OAuth 2.0 error
32
+ */
33
+ export class OAuth2ProviderError extends Error {
34
+ error;
35
+ errorDescription;
36
+ httpStatus;
37
+ constructor(error, description) {
38
+ super(description || error);
39
+ this.name = 'OAuth2ProviderError';
40
+ this.error = error;
41
+ this.errorDescription = description;
42
+ this.httpStatus = this.getHttpStatus(error);
43
+ if (Error.captureStackTrace) {
44
+ Error.captureStackTrace(this, OAuth2ProviderError);
45
+ }
46
+ }
47
+ getHttpStatus(error) {
48
+ switch (error) {
49
+ case 'invalid_client':
50
+ case 'access_denied':
51
+ return 401;
52
+ case 'unauthorized_client':
53
+ return 403;
54
+ case 'server_error':
55
+ return 500;
56
+ default:
57
+ return 400;
58
+ }
59
+ }
60
+ /**
61
+ * Convert to OAuth 2.0 error response format
62
+ */
63
+ toResponse() {
64
+ const response = {
65
+ error: this.error,
66
+ };
67
+ if (this.errorDescription) {
68
+ return { ...response, error_description: this.errorDescription };
69
+ }
70
+ return response;
71
+ }
72
+ }
73
+ /**
74
+ * OAuth 2.0 Authorization Server Provider
75
+ *
76
+ * Implements OAuth 2.0 token issuance and validation for the A2A protocol.
77
+ */
78
+ export class OAuth2Provider {
79
+ config;
80
+ tokenStore;
81
+ constructor(config) {
82
+ this.config = {
83
+ ...DEFAULT_OAUTH2_CONFIG,
84
+ ...config,
85
+ };
86
+ this.tokenStore = createTokenStore(config.tokenStoreConfig);
87
+ }
88
+ // ============================================================================
89
+ // Client Management
90
+ // ============================================================================
91
+ /**
92
+ * Register a new client
93
+ *
94
+ * @param clientId - The client ID
95
+ * @param credentials - The client credentials
96
+ */
97
+ registerClient(clientId, credentials) {
98
+ this.config.clientCredentials.set(clientId, credentials);
99
+ }
100
+ /**
101
+ * Remove a client
102
+ *
103
+ * @param clientId - The client ID
104
+ * @returns True if the client was removed
105
+ */
106
+ removeClient(clientId) {
107
+ // Revoke all tokens for this client
108
+ this.tokenStore.revokeTokensByClient(clientId);
109
+ return this.config.clientCredentials.delete(clientId);
110
+ }
111
+ /**
112
+ * Validate client credentials
113
+ *
114
+ * @param clientId - The client ID
115
+ * @param clientSecret - The client secret (optional for public clients)
116
+ * @returns True if the credentials are valid
117
+ */
118
+ validateClient(clientId, clientSecret) {
119
+ const credentials = this.config.clientCredentials.get(clientId);
120
+ if (!credentials) {
121
+ return false;
122
+ }
123
+ if (credentials.active === false) {
124
+ return false;
125
+ }
126
+ // Public clients don't need a secret
127
+ if (!credentials.confidential && !clientSecret) {
128
+ return true;
129
+ }
130
+ // Confidential clients need a valid secret
131
+ if (credentials.confidential && !clientSecret) {
132
+ return false;
133
+ }
134
+ // Compare secrets
135
+ // Note: In production, use constant-time comparison and hashed secrets
136
+ return clientSecret === credentials.clientSecret;
137
+ }
138
+ /**
139
+ * Get client credentials
140
+ *
141
+ * @param clientId - The client ID
142
+ * @returns The client credentials or undefined
143
+ */
144
+ getClient(clientId) {
145
+ return this.config.clientCredentials.get(clientId);
146
+ }
147
+ // ============================================================================
148
+ // Authorization Code Flow
149
+ // ============================================================================
150
+ /**
151
+ * Generate an authorization code
152
+ *
153
+ * @param clientId - The client ID
154
+ * @param redirectUri - The redirect URI
155
+ * @param scope - Requested scopes
156
+ * @param state - Optional state parameter
157
+ * @param codeChallenge - PKCE code challenge
158
+ * @param codeChallengeMethod - PKCE method (S256 or plain)
159
+ * @returns The authorization code
160
+ */
161
+ generateAuthorizationCode(clientId, redirectUri, scope, state, codeChallenge, codeChallengeMethod) {
162
+ const credentials = this.config.clientCredentials.get(clientId);
163
+ if (!credentials) {
164
+ throw new OAuth2ProviderError('invalid_client', 'Client not found');
165
+ }
166
+ if (credentials.active === false) {
167
+ throw new OAuth2ProviderError('invalid_client', 'Client is not active');
168
+ }
169
+ // Validate redirect URI
170
+ if (credentials.redirectUris && !credentials.redirectUris.includes(redirectUri)) {
171
+ throw new OAuth2ProviderError('invalid_request', 'Invalid redirect URI');
172
+ }
173
+ // Validate PKCE if required
174
+ if (this.config.requirePKCE && !codeChallenge) {
175
+ throw new OAuth2ProviderError('invalid_request', 'PKCE code challenge required');
176
+ }
177
+ // Validate scopes
178
+ const requestedScopes = normalizeScopes(scope);
179
+ const validScopes = requestedScopes.filter((s) => credentials.allowedScopes.includes(s) || validateScopes([s], credentials.allowedScopes));
180
+ if (validScopes.length === 0) {
181
+ throw new OAuth2ProviderError('invalid_scope', 'No valid scopes requested');
182
+ }
183
+ // Generate authorization code
184
+ const code = this.generateSecureCode();
185
+ const now = Math.floor(Date.now() / 1000);
186
+ const expiresAt = now + this.config.authorizationCodeTTL;
187
+ // Store the authorization code
188
+ this.tokenStore.storeAuthorizationCode(code, {
189
+ clientId,
190
+ scopes: validScopes,
191
+ redirectUri,
192
+ state,
193
+ codeChallenge,
194
+ codeChallengeMethod,
195
+ issuedAt: now,
196
+ expiresAt,
197
+ });
198
+ return {
199
+ code,
200
+ clientId,
201
+ redirectUri,
202
+ scopes: validScopes,
203
+ state,
204
+ expiresAt: new Date(expiresAt * 1000),
205
+ codeChallenge,
206
+ codeChallengeMethod,
207
+ };
208
+ }
209
+ /**
210
+ * Exchange an authorization code for tokens
211
+ *
212
+ * @param code - The authorization code
213
+ * @param clientId - The client ID
214
+ * @param clientSecret - The client secret
215
+ * @param redirectUri - The redirect URI (must match original)
216
+ * @param codeVerifier - PKCE code verifier
217
+ * @returns Token pair
218
+ */
219
+ async exchangeCodeForTokens(code, clientId, clientSecret, redirectUri, codeVerifier) {
220
+ // Validate client
221
+ if (!this.validateClient(clientId, clientSecret)) {
222
+ throw new OAuth2ProviderError('invalid_client', 'Invalid client credentials');
223
+ }
224
+ // Get and consume authorization code
225
+ const authCode = this.tokenStore.consumeAuthorizationCode(code);
226
+ if (!authCode) {
227
+ throw new OAuth2ProviderError('invalid_grant', 'Invalid or expired authorization code');
228
+ }
229
+ // Validate client ID matches
230
+ if (authCode.clientId !== clientId) {
231
+ throw new OAuth2ProviderError('invalid_grant', 'Authorization code was not issued to this client');
232
+ }
233
+ // Validate redirect URI
234
+ if (authCode.redirectUri !== redirectUri) {
235
+ throw new OAuth2ProviderError('invalid_grant', 'Redirect URI does not match');
236
+ }
237
+ // Validate PKCE
238
+ if (authCode.codeChallenge) {
239
+ if (!codeVerifier) {
240
+ throw new OAuth2ProviderError('invalid_grant', 'Code verifier required');
241
+ }
242
+ const isValid = await this.verifyCodeChallenge(codeVerifier, authCode.codeChallenge, authCode.codeChallengeMethod || 'S256');
243
+ if (!isValid) {
244
+ throw new OAuth2ProviderError('invalid_grant', 'Code verifier is invalid');
245
+ }
246
+ }
247
+ // Generate tokens
248
+ return this.generateTokenPair(clientId, authCode.scopes);
249
+ }
250
+ // ============================================================================
251
+ // Client Credentials Flow
252
+ // ============================================================================
253
+ /**
254
+ * Issue tokens using client credentials grant
255
+ *
256
+ * @param clientId - The client ID
257
+ * @param clientSecret - The client secret
258
+ * @param scope - Requested scopes
259
+ * @returns Token pair
260
+ */
261
+ async clientCredentialsGrant(clientId, clientSecret, scope) {
262
+ // Validate client
263
+ if (!this.validateClient(clientId, clientSecret)) {
264
+ throw new OAuth2ProviderError('invalid_client', 'Invalid client credentials');
265
+ }
266
+ const credentials = this.config.clientCredentials.get(clientId);
267
+ // Determine scopes
268
+ let grantedScopes = credentials.allowedScopes;
269
+ if (scope && scope.length > 0) {
270
+ // Validate requested scopes
271
+ const requestedScopes = normalizeScopes(scope);
272
+ const invalidScopes = requestedScopes.filter((s) => !credentials.allowedScopes.includes(s) && !validateScopes([s], credentials.allowedScopes));
273
+ if (invalidScopes.length > 0) {
274
+ throw new OAuth2ProviderError('invalid_scope', `Invalid scopes: ${invalidScopes.join(', ')}`);
275
+ }
276
+ grantedScopes = requestedScopes;
277
+ }
278
+ // Generate tokens
279
+ return this.generateTokenPair(clientId, grantedScopes);
280
+ }
281
+ // ============================================================================
282
+ // Token Refresh
283
+ // ============================================================================
284
+ /**
285
+ * Refresh an access token
286
+ *
287
+ * @param refreshToken - The refresh token
288
+ * @param scope - Optional new scope (must be subset of original)
289
+ * @returns New token pair
290
+ */
291
+ async refreshAccessToken(refreshToken, scope) {
292
+ if (!this.config.allowRefreshTokens) {
293
+ throw new OAuth2ProviderError('unsupported_grant_type', 'Refresh tokens are not supported');
294
+ }
295
+ // Get refresh token claims
296
+ const claims = this.tokenStore.getRefreshTokenClaims(refreshToken);
297
+ if (!claims) {
298
+ throw new OAuth2ProviderError('invalid_grant', 'Invalid or expired refresh token');
299
+ }
300
+ // Determine new scopes
301
+ let grantedScopes = claims.scopes;
302
+ if (scope && scope.length > 0) {
303
+ // New scopes must be a subset of original scopes
304
+ const requestedScopes = normalizeScopes(scope);
305
+ const invalidScopes = requestedScopes.filter((s) => !claims.scopes.includes(s));
306
+ if (invalidScopes.length > 0) {
307
+ throw new OAuth2ProviderError('invalid_scope', 'Cannot request scopes beyond original grant');
308
+ }
309
+ grantedScopes = requestedScopes;
310
+ }
311
+ // Increment refresh token use count
312
+ this.tokenStore.incrementRefreshTokenUseCount(refreshToken);
313
+ // Revoke old refresh token and issue new tokens (rotation)
314
+ this.tokenStore.revokeToken(refreshToken);
315
+ return this.generateTokenPair(claims.clientId, grantedScopes);
316
+ }
317
+ // ============================================================================
318
+ // Token Revocation
319
+ // ============================================================================
320
+ /**
321
+ * Revoke a token
322
+ *
323
+ * @param token - The token to revoke
324
+ * @param tokenTypeHint - Optional hint about token type
325
+ */
326
+ revokeToken(token, tokenTypeHint) {
327
+ this.tokenStore.revokeToken(token);
328
+ }
329
+ /**
330
+ * Revoke all tokens for a client
331
+ *
332
+ * @param clientId - The client ID
333
+ * @returns Number of tokens revoked
334
+ */
335
+ revokeClientTokens(clientId) {
336
+ return this.tokenStore.revokeTokensByClient(clientId);
337
+ }
338
+ // ============================================================================
339
+ // Token Validation
340
+ // ============================================================================
341
+ /**
342
+ * Validate an access token
343
+ *
344
+ * @param token - The access token
345
+ * @param requiredScopes - Required scopes (optional)
346
+ * @returns The token payload if valid
347
+ */
348
+ async validateAccessToken(token, requiredScopes) {
349
+ // Check if revoked
350
+ if (this.tokenStore.isRevoked(token)) {
351
+ throw new OAuth2ProviderError('invalid_grant', 'Token has been revoked');
352
+ }
353
+ try {
354
+ // Verify JWT signature and claims
355
+ const payload = await verifyJWT(token, this.config.signingSecret, {
356
+ issuer: this.config.issuer,
357
+ });
358
+ // Check token type
359
+ if (payload.token_type !== 'access') {
360
+ throw new OAuth2ProviderError('invalid_grant', 'Invalid token type');
361
+ }
362
+ // Check required scopes
363
+ if (requiredScopes && requiredScopes.length > 0) {
364
+ const tokenScopes = payload.scope?.split(' ') || [];
365
+ if (!validateScopes(requiredScopes, tokenScopes)) {
366
+ throw new OAuth2ProviderError('access_denied', 'Insufficient scope');
367
+ }
368
+ }
369
+ return payload;
370
+ }
371
+ catch (error) {
372
+ if (error instanceof JWTError) {
373
+ if (error.code === 'TOKEN_EXPIRED') {
374
+ throw new OAuth2ProviderError('invalid_grant', 'Token has expired');
375
+ }
376
+ throw new OAuth2ProviderError('invalid_grant', 'Invalid token');
377
+ }
378
+ if (error instanceof OAuth2ProviderError) {
379
+ throw error;
380
+ }
381
+ throw new OAuth2ProviderError('server_error', 'Token validation failed');
382
+ }
383
+ }
384
+ /**
385
+ * Introspect a token
386
+ *
387
+ * @param token - The token to introspect
388
+ * @returns Token introspection response
389
+ */
390
+ async introspectToken(token) {
391
+ try {
392
+ const payload = await this.validateAccessToken(token);
393
+ return {
394
+ active: true,
395
+ scope: payload.scope,
396
+ client_id: payload.client_id,
397
+ exp: payload.exp,
398
+ iat: payload.iat,
399
+ sub: payload.sub,
400
+ token_type: 'Bearer',
401
+ };
402
+ }
403
+ catch {
404
+ return { active: false };
405
+ }
406
+ }
407
+ // ============================================================================
408
+ // Token Generation (Private)
409
+ // ============================================================================
410
+ /**
411
+ * Generate a token pair
412
+ */
413
+ async generateTokenPair(clientId, scopes) {
414
+ const now = Math.floor(Date.now() / 1000);
415
+ const accessTokenJti = crypto.randomUUID();
416
+ // Generate access token
417
+ const accessToken = await signAccessToken(clientId, scopes, this.config.signingSecret, {
418
+ issuer: this.config.issuer,
419
+ expiresIn: this.config.tokenTTL,
420
+ jti: accessTokenJti,
421
+ });
422
+ // Store access token
423
+ this.tokenStore.storeAccessToken(accessToken, {
424
+ clientId,
425
+ scopes,
426
+ issuedAt: now,
427
+ expiresAt: now + this.config.tokenTTL,
428
+ jti: accessTokenJti,
429
+ });
430
+ const result = {
431
+ accessToken,
432
+ tokenType: 'Bearer',
433
+ expiresIn: this.config.tokenTTL,
434
+ scope: scopes.join(' '),
435
+ };
436
+ // Generate refresh token if allowed
437
+ if (this.config.allowRefreshTokens) {
438
+ const refreshToken = this.generateSecureCode();
439
+ this.tokenStore.storeRefreshToken(refreshToken, {
440
+ clientId,
441
+ scopes,
442
+ tokenId: crypto.randomUUID(),
443
+ accessTokenJti,
444
+ useCount: 0,
445
+ issuedAt: now,
446
+ expiresAt: now + this.config.refreshTokenTTL,
447
+ });
448
+ return {
449
+ ...result,
450
+ refreshToken,
451
+ refreshExpiresIn: this.config.refreshTokenTTL,
452
+ };
453
+ }
454
+ return result;
455
+ }
456
+ /**
457
+ * Generate a secure random code
458
+ */
459
+ generateSecureCode() {
460
+ // Generate 32 random bytes and encode as base64url
461
+ const bytes = new Uint8Array(32);
462
+ crypto.getRandomValues(bytes);
463
+ return btoa(String.fromCharCode(...bytes))
464
+ .replace(/\+/g, '-')
465
+ .replace(/\//g, '_')
466
+ .replace(/=/g, '');
467
+ }
468
+ /**
469
+ * Verify PKCE code challenge
470
+ */
471
+ async verifyCodeChallenge(codeVerifier, codeChallenge, method) {
472
+ if (method === 'plain') {
473
+ return codeVerifier === codeChallenge;
474
+ }
475
+ // S256: SHA-256 hash of verifier
476
+ const encoder = new TextEncoder();
477
+ const data = encoder.encode(codeVerifier);
478
+ const hash = await crypto.subtle.digest('SHA-256', data);
479
+ const hashArray = new Uint8Array(hash);
480
+ const computed = btoa(String.fromCharCode(...hashArray))
481
+ .replace(/\+/g, '-')
482
+ .replace(/\//g, '_')
483
+ .replace(/=/g, '');
484
+ return computed === codeChallenge;
485
+ }
486
+ // ============================================================================
487
+ // Discovery Metadata
488
+ // ============================================================================
489
+ /**
490
+ * Get OAuth 2.0 authorization server metadata
491
+ *
492
+ * @returns OpenID Connect Discovery metadata
493
+ */
494
+ getMetadata() {
495
+ return {
496
+ issuer: this.config.issuer,
497
+ authorization_endpoint: this.config.authorizationEndpoint,
498
+ token_endpoint: this.config.tokenEndpoint,
499
+ token_endpoint_auth_methods_supported: ['client_secret_basic', 'client_secret_post'],
500
+ grant_types_supported: [
501
+ 'authorization_code',
502
+ 'client_credentials',
503
+ ...(this.config.allowRefreshTokens ? ['refresh_token'] : []),
504
+ ],
505
+ response_types_supported: ['code'],
506
+ scopes_supported: Object.keys(DEFAULT_CLIENT_SCOPES),
507
+ code_challenge_methods_supported: ['S256', 'plain'],
508
+ };
509
+ }
510
+ // ============================================================================
511
+ // Lifecycle
512
+ // ============================================================================
513
+ /**
514
+ * Get provider statistics
515
+ */
516
+ getStats() {
517
+ return {
518
+ tokenStats: this.tokenStore.getStats(),
519
+ clientCount: this.config.clientCredentials.size,
520
+ };
521
+ }
522
+ /**
523
+ * Clean up expired tokens
524
+ */
525
+ cleanup() {
526
+ return this.tokenStore.cleanup();
527
+ }
528
+ /**
529
+ * Destroy the provider
530
+ */
531
+ destroy() {
532
+ this.tokenStore.destroy();
533
+ }
534
+ }
535
+ // ============================================================================
536
+ // Factory Function
537
+ // ============================================================================
538
+ /**
539
+ * Create a new OAuth2Provider instance
540
+ *
541
+ * @param config - Provider configuration
542
+ * @returns A new OAuth2Provider
543
+ */
544
+ export function createOAuth2Provider(config) {
545
+ return new OAuth2Provider(config);
546
+ }
547
+ /**
548
+ * Create a simple OAuth2Provider for testing
549
+ *
550
+ * @param signingSecret - The JWT signing secret
551
+ * @returns A configured OAuth2Provider
552
+ */
553
+ export function createTestOAuth2Provider(signingSecret = 'test-secret') {
554
+ return new OAuth2Provider({
555
+ issuer: 'http://localhost:3000',
556
+ tokenEndpoint: 'http://localhost:3000/oauth/token',
557
+ authorizationEndpoint: 'http://localhost:3000/oauth/authorize',
558
+ clientCredentials: new Map([
559
+ [
560
+ 'test-client',
561
+ {
562
+ clientSecret: 'test-secret',
563
+ name: 'Test Client',
564
+ allowedScopes: ['platform:read', 'agent:read', 'task:read', 'task:create'],
565
+ confidential: true,
566
+ active: true,
567
+ },
568
+ ],
569
+ ]),
570
+ signingSecret,
571
+ });
572
+ }
573
+ //# sourceMappingURL=oauth-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-provider.js","sourceRoot":"","sources":["../../../../src/adapters/a2a/auth/oauth-provider.ts"],"names":[],"mappings":"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"}