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.
- package/.claude/agents/v3/qe-queen-coordinator.md +332 -166
- package/.claude/helpers/statusline-v3.cjs +85 -42
- package/.claude/skills/qcsd-ideation-swarm/SKILL.md +7 -4
- package/README.md +71 -2
- package/package.json +1 -1
- package/scripts/cloud-db-config.json +10 -5
- package/scripts/merge-v3-to-root.sql +48 -0
- package/v3/CHANGELOG.md +156 -0
- package/v3/README.md +118 -1
- package/v3/assets/agents/v3/qe-queen-coordinator.md +332 -166
- package/v3/assets/skills/qcsd-ideation-swarm/SKILL.md +7 -4
- package/v3/dist/adapters/a2a/agent-cards/generator.d.ts +153 -0
- package/v3/dist/adapters/a2a/agent-cards/generator.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/agent-cards/generator.js +478 -0
- package/v3/dist/adapters/a2a/agent-cards/generator.js.map +1 -0
- package/v3/dist/adapters/a2a/agent-cards/schema.d.ts +274 -0
- package/v3/dist/adapters/a2a/agent-cards/schema.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/agent-cards/schema.js +135 -0
- package/v3/dist/adapters/a2a/agent-cards/schema.js.map +1 -0
- package/v3/dist/adapters/a2a/agent-cards/validator.d.ts +514 -0
- package/v3/dist/adapters/a2a/agent-cards/validator.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/agent-cards/validator.js +555 -0
- package/v3/dist/adapters/a2a/agent-cards/validator.js.map +1 -0
- package/v3/dist/adapters/a2a/auth/index.d.ts +23 -0
- package/v3/dist/adapters/a2a/auth/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/auth/index.js +85 -0
- package/v3/dist/adapters/a2a/auth/index.js.map +1 -0
- package/v3/dist/adapters/a2a/auth/jwt-utils.d.ts +215 -0
- package/v3/dist/adapters/a2a/auth/jwt-utils.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/auth/jwt-utils.js +314 -0
- package/v3/dist/adapters/a2a/auth/jwt-utils.js.map +1 -0
- package/v3/dist/adapters/a2a/auth/middleware.d.ts +173 -0
- package/v3/dist/adapters/a2a/auth/middleware.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/auth/middleware.js +300 -0
- package/v3/dist/adapters/a2a/auth/middleware.js.map +1 -0
- package/v3/dist/adapters/a2a/auth/oauth-provider.d.ts +308 -0
- package/v3/dist/adapters/a2a/auth/oauth-provider.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/auth/oauth-provider.js +573 -0
- package/v3/dist/adapters/a2a/auth/oauth-provider.js.map +1 -0
- package/v3/dist/adapters/a2a/auth/routes.d.ts +244 -0
- package/v3/dist/adapters/a2a/auth/routes.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/auth/routes.js +496 -0
- package/v3/dist/adapters/a2a/auth/routes.js.map +1 -0
- package/v3/dist/adapters/a2a/auth/scopes.d.ts +219 -0
- package/v3/dist/adapters/a2a/auth/scopes.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/auth/scopes.js +292 -0
- package/v3/dist/adapters/a2a/auth/scopes.js.map +1 -0
- package/v3/dist/adapters/a2a/auth/token-store.d.ts +278 -0
- package/v3/dist/adapters/a2a/auth/token-store.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/auth/token-store.js +453 -0
- package/v3/dist/adapters/a2a/auth/token-store.js.map +1 -0
- package/v3/dist/adapters/a2a/discovery/agent-health.d.ts +226 -0
- package/v3/dist/adapters/a2a/discovery/agent-health.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/discovery/agent-health.js +426 -0
- package/v3/dist/adapters/a2a/discovery/agent-health.js.map +1 -0
- package/v3/dist/adapters/a2a/discovery/discovery-service.d.ts +296 -0
- package/v3/dist/adapters/a2a/discovery/discovery-service.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/discovery/discovery-service.js +520 -0
- package/v3/dist/adapters/a2a/discovery/discovery-service.js.map +1 -0
- package/v3/dist/adapters/a2a/discovery/file-watcher.d.ts +166 -0
- package/v3/dist/adapters/a2a/discovery/file-watcher.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/discovery/file-watcher.js +385 -0
- package/v3/dist/adapters/a2a/discovery/file-watcher.js.map +1 -0
- package/v3/dist/adapters/a2a/discovery/hot-reload-service.d.ts +226 -0
- package/v3/dist/adapters/a2a/discovery/hot-reload-service.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/discovery/hot-reload-service.js +433 -0
- package/v3/dist/adapters/a2a/discovery/hot-reload-service.js.map +1 -0
- package/v3/dist/adapters/a2a/discovery/index.d.ts +18 -0
- package/v3/dist/adapters/a2a/discovery/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/discovery/index.js +54 -0
- package/v3/dist/adapters/a2a/discovery/index.js.map +1 -0
- package/v3/dist/adapters/a2a/discovery/metrics.d.ts +200 -0
- package/v3/dist/adapters/a2a/discovery/metrics.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/discovery/metrics.js +371 -0
- package/v3/dist/adapters/a2a/discovery/metrics.js.map +1 -0
- package/v3/dist/adapters/a2a/discovery/routes.d.ts +184 -0
- package/v3/dist/adapters/a2a/discovery/routes.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/discovery/routes.js +453 -0
- package/v3/dist/adapters/a2a/discovery/routes.js.map +1 -0
- package/v3/dist/adapters/a2a/index.d.ts +18 -0
- package/v3/dist/adapters/a2a/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/index.js +139 -0
- package/v3/dist/adapters/a2a/index.js.map +1 -0
- package/v3/dist/adapters/a2a/jsonrpc/envelope.d.ts +312 -0
- package/v3/dist/adapters/a2a/jsonrpc/envelope.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/jsonrpc/envelope.js +554 -0
- package/v3/dist/adapters/a2a/jsonrpc/envelope.js.map +1 -0
- package/v3/dist/adapters/a2a/jsonrpc/errors.d.ts +244 -0
- package/v3/dist/adapters/a2a/jsonrpc/errors.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/jsonrpc/errors.js +365 -0
- package/v3/dist/adapters/a2a/jsonrpc/errors.js.map +1 -0
- package/v3/dist/adapters/a2a/jsonrpc/index.d.ts +14 -0
- package/v3/dist/adapters/a2a/jsonrpc/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/jsonrpc/index.js +59 -0
- package/v3/dist/adapters/a2a/jsonrpc/index.js.map +1 -0
- package/v3/dist/adapters/a2a/jsonrpc/methods.d.ts +400 -0
- package/v3/dist/adapters/a2a/jsonrpc/methods.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/jsonrpc/methods.js +249 -0
- package/v3/dist/adapters/a2a/jsonrpc/methods.js.map +1 -0
- package/v3/dist/adapters/a2a/notifications/index.d.ts +60 -0
- package/v3/dist/adapters/a2a/notifications/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/notifications/index.js +99 -0
- package/v3/dist/adapters/a2a/notifications/index.js.map +1 -0
- package/v3/dist/adapters/a2a/notifications/retry-queue.d.ts +225 -0
- package/v3/dist/adapters/a2a/notifications/retry-queue.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/notifications/retry-queue.js +449 -0
- package/v3/dist/adapters/a2a/notifications/retry-queue.js.map +1 -0
- package/v3/dist/adapters/a2a/notifications/signature.d.ts +133 -0
- package/v3/dist/adapters/a2a/notifications/signature.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/notifications/signature.js +244 -0
- package/v3/dist/adapters/a2a/notifications/signature.js.map +1 -0
- package/v3/dist/adapters/a2a/notifications/subscription-store.d.ts +243 -0
- package/v3/dist/adapters/a2a/notifications/subscription-store.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/notifications/subscription-store.js +486 -0
- package/v3/dist/adapters/a2a/notifications/subscription-store.js.map +1 -0
- package/v3/dist/adapters/a2a/notifications/webhook-service.d.ts +257 -0
- package/v3/dist/adapters/a2a/notifications/webhook-service.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/notifications/webhook-service.js +542 -0
- package/v3/dist/adapters/a2a/notifications/webhook-service.js.map +1 -0
- package/v3/dist/adapters/a2a/tasks/index.d.ts +16 -0
- package/v3/dist/adapters/a2a/tasks/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/tasks/index.js +33 -0
- package/v3/dist/adapters/a2a/tasks/index.js.map +1 -0
- package/v3/dist/adapters/a2a/tasks/task-manager.d.ts +306 -0
- package/v3/dist/adapters/a2a/tasks/task-manager.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/tasks/task-manager.js +562 -0
- package/v3/dist/adapters/a2a/tasks/task-manager.js.map +1 -0
- package/v3/dist/adapters/a2a/tasks/task-router.d.ts +270 -0
- package/v3/dist/adapters/a2a/tasks/task-router.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/tasks/task-router.js +574 -0
- package/v3/dist/adapters/a2a/tasks/task-router.js.map +1 -0
- package/v3/dist/adapters/a2a/tasks/task-store.d.ts +251 -0
- package/v3/dist/adapters/a2a/tasks/task-store.d.ts.map +1 -0
- package/v3/dist/adapters/a2a/tasks/task-store.js +468 -0
- package/v3/dist/adapters/a2a/tasks/task-store.js.map +1 -0
- package/v3/dist/adapters/a2ui/accessibility/aria-attributes.d.ts +294 -0
- package/v3/dist/adapters/a2ui/accessibility/aria-attributes.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/accessibility/aria-attributes.js +447 -0
- package/v3/dist/adapters/a2ui/accessibility/aria-attributes.js.map +1 -0
- package/v3/dist/adapters/a2ui/accessibility/index.d.ts +83 -0
- package/v3/dist/adapters/a2ui/accessibility/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/accessibility/index.js +155 -0
- package/v3/dist/adapters/a2ui/accessibility/index.js.map +1 -0
- package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.d.ts +177 -0
- package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.js +638 -0
- package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.js.map +1 -0
- package/v3/dist/adapters/a2ui/accessibility/wcag-validator.d.ts +186 -0
- package/v3/dist/adapters/a2ui/accessibility/wcag-validator.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/accessibility/wcag-validator.js +816 -0
- package/v3/dist/adapters/a2ui/accessibility/wcag-validator.js.map +1 -0
- package/v3/dist/adapters/a2ui/catalog/component-schemas.d.ts +227 -0
- package/v3/dist/adapters/a2ui/catalog/component-schemas.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/catalog/component-schemas.js +1090 -0
- package/v3/dist/adapters/a2ui/catalog/component-schemas.js.map +1 -0
- package/v3/dist/adapters/a2ui/catalog/index.d.ts +55 -0
- package/v3/dist/adapters/a2ui/catalog/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/catalog/index.js +100 -0
- package/v3/dist/adapters/a2ui/catalog/index.js.map +1 -0
- package/v3/dist/adapters/a2ui/catalog/qe-catalog.d.ts +456 -0
- package/v3/dist/adapters/a2ui/catalog/qe-catalog.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/catalog/qe-catalog.js +413 -0
- package/v3/dist/adapters/a2ui/catalog/qe-catalog.js.map +1 -0
- package/v3/dist/adapters/a2ui/catalog/standard-catalog.d.ts +581 -0
- package/v3/dist/adapters/a2ui/catalog/standard-catalog.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/catalog/standard-catalog.js +409 -0
- package/v3/dist/adapters/a2ui/catalog/standard-catalog.js.map +1 -0
- package/v3/dist/adapters/a2ui/data/bound-value.d.ts +252 -0
- package/v3/dist/adapters/a2ui/data/bound-value.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/data/bound-value.js +403 -0
- package/v3/dist/adapters/a2ui/data/bound-value.js.map +1 -0
- package/v3/dist/adapters/a2ui/data/index.d.ts +14 -0
- package/v3/dist/adapters/a2ui/data/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/data/index.js +41 -0
- package/v3/dist/adapters/a2ui/data/index.js.map +1 -0
- package/v3/dist/adapters/a2ui/data/json-pointer-resolver.d.ts +187 -0
- package/v3/dist/adapters/a2ui/data/json-pointer-resolver.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/data/json-pointer-resolver.js +425 -0
- package/v3/dist/adapters/a2ui/data/json-pointer-resolver.js.map +1 -0
- package/v3/dist/adapters/a2ui/data/reactive-store.d.ts +241 -0
- package/v3/dist/adapters/a2ui/data/reactive-store.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/data/reactive-store.js +461 -0
- package/v3/dist/adapters/a2ui/data/reactive-store.js.map +1 -0
- package/v3/dist/adapters/a2ui/index.d.ts +17 -0
- package/v3/dist/adapters/a2ui/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/index.js +119 -0
- package/v3/dist/adapters/a2ui/index.js.map +1 -0
- package/v3/dist/adapters/a2ui/integration/agui-sync.d.ts +259 -0
- package/v3/dist/adapters/a2ui/integration/agui-sync.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/integration/agui-sync.js +559 -0
- package/v3/dist/adapters/a2ui/integration/agui-sync.js.map +1 -0
- package/v3/dist/adapters/a2ui/integration/index.d.ts +11 -0
- package/v3/dist/adapters/a2ui/integration/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/integration/index.js +23 -0
- package/v3/dist/adapters/a2ui/integration/index.js.map +1 -0
- package/v3/dist/adapters/a2ui/integration/surface-state-bridge.d.ts +209 -0
- package/v3/dist/adapters/a2ui/integration/surface-state-bridge.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/integration/surface-state-bridge.js +545 -0
- package/v3/dist/adapters/a2ui/integration/surface-state-bridge.js.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/component-builder.d.ts +227 -0
- package/v3/dist/adapters/a2ui/renderer/component-builder.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/component-builder.js +488 -0
- package/v3/dist/adapters/a2ui/renderer/component-builder.js.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/index.d.ts +16 -0
- package/v3/dist/adapters/a2ui/renderer/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/index.js +50 -0
- package/v3/dist/adapters/a2ui/renderer/index.js.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/message-types.d.ts +299 -0
- package/v3/dist/adapters/a2ui/renderer/message-types.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/message-types.js +187 -0
- package/v3/dist/adapters/a2ui/renderer/message-types.js.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/surface-generator.d.ts +210 -0
- package/v3/dist/adapters/a2ui/renderer/surface-generator.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/surface-generator.js +586 -0
- package/v3/dist/adapters/a2ui/renderer/surface-generator.js.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.d.ts +149 -0
- package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.js +414 -0
- package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.js.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.d.ts +95 -0
- package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.js +231 -0
- package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.js.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/templates/index.d.ts +12 -0
- package/v3/dist/adapters/a2ui/renderer/templates/index.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/templates/index.js +16 -0
- package/v3/dist/adapters/a2ui/renderer/templates/index.js.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/templates/security-surface.d.ts +121 -0
- package/v3/dist/adapters/a2ui/renderer/templates/security-surface.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/templates/security-surface.js +367 -0
- package/v3/dist/adapters/a2ui/renderer/templates/security-surface.js.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.d.ts +104 -0
- package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.d.ts.map +1 -0
- package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.js +294 -0
- package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.js.map +1 -0
- package/v3/dist/adapters/ag-ui/backpressure-handler.d.ts +201 -0
- package/v3/dist/adapters/ag-ui/backpressure-handler.d.ts.map +1 -0
- package/v3/dist/adapters/ag-ui/backpressure-handler.js +399 -0
- package/v3/dist/adapters/ag-ui/backpressure-handler.js.map +1 -0
- package/v3/dist/adapters/ag-ui/event-adapter.d.ts +360 -0
- package/v3/dist/adapters/ag-ui/event-adapter.d.ts.map +1 -0
- package/v3/dist/adapters/ag-ui/event-adapter.js +1083 -0
- package/v3/dist/adapters/ag-ui/event-adapter.js.map +1 -0
- package/v3/dist/adapters/ag-ui/event-batcher.d.ts +242 -0
- package/v3/dist/adapters/ag-ui/event-batcher.d.ts.map +1 -0
- package/v3/dist/adapters/ag-ui/event-batcher.js +444 -0
- package/v3/dist/adapters/ag-ui/event-batcher.js.map +1 -0
- package/v3/dist/adapters/ag-ui/event-types.d.ts +450 -0
- package/v3/dist/adapters/ag-ui/event-types.d.ts.map +1 -0
- package/v3/dist/adapters/ag-ui/event-types.js +173 -0
- package/v3/dist/adapters/ag-ui/event-types.js.map +1 -0
- package/v3/dist/adapters/ag-ui/index.d.ts +17 -0
- package/v3/dist/adapters/ag-ui/index.d.ts.map +1 -0
- package/v3/dist/adapters/ag-ui/index.js +47 -0
- package/v3/dist/adapters/ag-ui/index.js.map +1 -0
- package/v3/dist/adapters/ag-ui/json-patch-utils.d.ts +136 -0
- package/v3/dist/adapters/ag-ui/json-patch-utils.d.ts.map +1 -0
- package/v3/dist/adapters/ag-ui/json-patch-utils.js +574 -0
- package/v3/dist/adapters/ag-ui/json-patch-utils.js.map +1 -0
- package/v3/dist/adapters/ag-ui/json-patch.d.ts +241 -0
- package/v3/dist/adapters/ag-ui/json-patch.d.ts.map +1 -0
- package/v3/dist/adapters/ag-ui/json-patch.js +726 -0
- package/v3/dist/adapters/ag-ui/json-patch.js.map +1 -0
- package/v3/dist/adapters/ag-ui/state-delta-cache.d.ts +218 -0
- package/v3/dist/adapters/ag-ui/state-delta-cache.d.ts.map +1 -0
- package/v3/dist/adapters/ag-ui/state-delta-cache.js +422 -0
- package/v3/dist/adapters/ag-ui/state-delta-cache.js.map +1 -0
- package/v3/dist/adapters/ag-ui/state-manager.d.ts +249 -0
- package/v3/dist/adapters/ag-ui/state-manager.d.ts.map +1 -0
- package/v3/dist/adapters/ag-ui/state-manager.js +511 -0
- package/v3/dist/adapters/ag-ui/state-manager.js.map +1 -0
- package/v3/dist/adapters/ag-ui/stream-controller.d.ts +195 -0
- package/v3/dist/adapters/ag-ui/stream-controller.d.ts.map +1 -0
- package/v3/dist/adapters/ag-ui/stream-controller.js +481 -0
- package/v3/dist/adapters/ag-ui/stream-controller.js.map +1 -0
- package/v3/dist/adapters/index.d.ts +4 -0
- package/v3/dist/adapters/index.d.ts.map +1 -1
- package/v3/dist/adapters/index.js +89 -0
- package/v3/dist/adapters/index.js.map +1 -1
- package/v3/dist/cli/bundle.js +1507 -425
- package/v3/dist/coordination/consensus/providers/claude-provider.js +1 -1
- package/v3/dist/coordination/consensus/providers/gemini-provider.js +1 -1
- package/v3/dist/coordination/consensus/providers/openai-provider.js +1 -1
- package/v3/dist/init/init-wizard.d.ts.map +1 -1
- package/v3/dist/init/init-wizard.js +19 -4
- package/v3/dist/init/init-wizard.js.map +1 -1
- package/v3/dist/init/migration/config-migrator.d.ts.map +1 -1
- package/v3/dist/init/migration/config-migrator.js +15 -1
- package/v3/dist/init/migration/config-migrator.js.map +1 -1
- package/v3/dist/init/phases/05-learning.js +1 -1
- package/v3/dist/init/phases/05-learning.js.map +1 -1
- package/v3/dist/init/self-configurator.d.ts +7 -0
- package/v3/dist/init/self-configurator.d.ts.map +1 -1
- package/v3/dist/init/self-configurator.js +23 -27
- package/v3/dist/init/self-configurator.js.map +1 -1
- package/v3/dist/integrations/ruvector/interfaces.js +1 -1
- package/v3/dist/integrations/ruvector/interfaces.js.map +1 -1
- package/v3/dist/kernel/index.d.ts +1 -1
- package/v3/dist/kernel/index.d.ts.map +1 -1
- package/v3/dist/kernel/index.js +3 -1
- package/v3/dist/kernel/index.js.map +1 -1
- package/v3/dist/kernel/plugin-loader.d.ts.map +1 -1
- package/v3/dist/kernel/plugin-loader.js +6 -1
- package/v3/dist/kernel/plugin-loader.js.map +1 -1
- package/v3/dist/kernel/unified-memory.d.ts +123 -0
- package/v3/dist/kernel/unified-memory.d.ts.map +1 -1
- package/v3/dist/kernel/unified-memory.js +258 -2
- package/v3/dist/kernel/unified-memory.js.map +1 -1
- package/v3/dist/learning/qe-unified-memory.js +1 -1
- package/v3/dist/learning/qe-unified-memory.js.map +1 -1
- package/v3/dist/learning/real-qe-reasoning-bank.js +2 -2
- package/v3/dist/learning/real-qe-reasoning-bank.js.map +1 -1
- package/v3/dist/learning/sqlite-persistence.d.ts +1 -1
- package/v3/dist/learning/sqlite-persistence.js +1 -1
- package/v3/dist/learning/sqlite-persistence.js.map +1 -1
- package/v3/dist/learning/v2-to-v3-migration.d.ts +2 -2
- package/v3/dist/learning/v2-to-v3-migration.d.ts.map +1 -1
- package/v3/dist/learning/v2-to-v3-migration.js +2 -2
- package/v3/dist/learning/v2-to-v3-migration.js.map +1 -1
- package/v3/dist/mcp/bundle.js +63075 -53304
- package/v3/dist/mcp/entry.d.ts +5 -0
- package/v3/dist/mcp/entry.d.ts.map +1 -1
- package/v3/dist/mcp/entry.js +36 -0
- package/v3/dist/mcp/entry.js.map +1 -1
- package/v3/dist/mcp/http-server.d.ts +95 -0
- package/v3/dist/mcp/http-server.d.ts.map +1 -0
- package/v3/dist/mcp/http-server.js +833 -0
- package/v3/dist/mcp/http-server.js.map +1 -0
- package/v3/dist/mcp/protocol-server.d.ts +6 -0
- package/v3/dist/mcp/protocol-server.d.ts.map +1 -1
- package/v3/dist/mcp/protocol-server.js +40 -0
- package/v3/dist/mcp/protocol-server.js.map +1 -1
- package/v3/dist/mcp/transport/index.d.ts +25 -3
- package/v3/dist/mcp/transport/index.d.ts.map +1 -1
- package/v3/dist/mcp/transport/index.js +22 -4
- package/v3/dist/mcp/transport/index.js.map +1 -1
- package/v3/dist/mcp/transport/sse/connection-manager.d.ts +84 -0
- package/v3/dist/mcp/transport/sse/connection-manager.d.ts.map +1 -0
- package/v3/dist/mcp/transport/sse/connection-manager.js +271 -0
- package/v3/dist/mcp/transport/sse/connection-manager.js.map +1 -0
- package/v3/dist/mcp/transport/sse/index.d.ts +10 -0
- package/v3/dist/mcp/transport/sse/index.d.ts.map +1 -0
- package/v3/dist/mcp/transport/sse/index.js +15 -0
- package/v3/dist/mcp/transport/sse/index.js.map +1 -0
- package/v3/dist/mcp/transport/sse/sse-transport.d.ts +56 -0
- package/v3/dist/mcp/transport/sse/sse-transport.d.ts.map +1 -0
- package/v3/dist/mcp/transport/sse/sse-transport.js +381 -0
- package/v3/dist/mcp/transport/sse/sse-transport.js.map +1 -0
- package/v3/dist/mcp/transport/sse/types.d.ts +237 -0
- package/v3/dist/mcp/transport/sse/types.d.ts.map +1 -0
- package/v3/dist/mcp/transport/sse/types.js +37 -0
- package/v3/dist/mcp/transport/sse/types.js.map +1 -0
- package/v3/dist/mcp/transport/websocket/connection-manager.d.ts +143 -0
- package/v3/dist/mcp/transport/websocket/connection-manager.d.ts.map +1 -0
- package/v3/dist/mcp/transport/websocket/connection-manager.js +522 -0
- package/v3/dist/mcp/transport/websocket/connection-manager.js.map +1 -0
- package/v3/dist/mcp/transport/websocket/index.d.ts +10 -0
- package/v3/dist/mcp/transport/websocket/index.d.ts.map +1 -0
- package/v3/dist/mcp/transport/websocket/index.js +19 -0
- package/v3/dist/mcp/transport/websocket/index.js.map +1 -0
- package/v3/dist/mcp/transport/websocket/types.d.ts +354 -0
- package/v3/dist/mcp/transport/websocket/types.d.ts.map +1 -0
- package/v3/dist/mcp/transport/websocket/types.js +49 -0
- package/v3/dist/mcp/transport/websocket/types.js.map +1 -0
- package/v3/dist/mcp/transport/websocket/websocket-transport.d.ts +77 -0
- package/v3/dist/mcp/transport/websocket/websocket-transport.d.ts.map +1 -0
- package/v3/dist/mcp/transport/websocket/websocket-transport.js +622 -0
- package/v3/dist/mcp/transport/websocket/websocket-transport.js.map +1 -0
- package/v3/dist/memory/crdt/convergence-tracker.d.ts +59 -0
- package/v3/dist/memory/crdt/convergence-tracker.d.ts.map +1 -0
- package/v3/dist/memory/crdt/convergence-tracker.js +325 -0
- package/v3/dist/memory/crdt/convergence-tracker.js.map +1 -0
- package/v3/dist/memory/crdt/crdt-store.d.ts +55 -0
- package/v3/dist/memory/crdt/crdt-store.d.ts.map +1 -0
- package/v3/dist/memory/crdt/crdt-store.js +582 -0
- package/v3/dist/memory/crdt/crdt-store.js.map +1 -0
- package/v3/dist/memory/crdt/g-counter.d.ts +47 -0
- package/v3/dist/memory/crdt/g-counter.d.ts.map +1 -0
- package/v3/dist/memory/crdt/g-counter.js +134 -0
- package/v3/dist/memory/crdt/g-counter.js.map +1 -0
- package/v3/dist/memory/crdt/index.d.ts +52 -0
- package/v3/dist/memory/crdt/index.d.ts.map +1 -0
- package/v3/dist/memory/crdt/index.js +66 -0
- package/v3/dist/memory/crdt/index.js.map +1 -0
- package/v3/dist/memory/crdt/lww-register.d.ts +40 -0
- package/v3/dist/memory/crdt/lww-register.d.ts.map +1 -0
- package/v3/dist/memory/crdt/lww-register.js +133 -0
- package/v3/dist/memory/crdt/lww-register.js.map +1 -0
- package/v3/dist/memory/crdt/or-set.d.ts +62 -0
- package/v3/dist/memory/crdt/or-set.d.ts.map +1 -0
- package/v3/dist/memory/crdt/or-set.js +336 -0
- package/v3/dist/memory/crdt/or-set.js.map +1 -0
- package/v3/dist/memory/crdt/pn-counter.d.ts +53 -0
- package/v3/dist/memory/crdt/pn-counter.d.ts.map +1 -0
- package/v3/dist/memory/crdt/pn-counter.js +147 -0
- package/v3/dist/memory/crdt/pn-counter.js.map +1 -0
- package/v3/dist/memory/crdt/types.d.ts +397 -0
- package/v3/dist/memory/crdt/types.d.ts.map +1 -0
- package/v3/dist/memory/crdt/types.js +12 -0
- package/v3/dist/memory/crdt/types.js.map +1 -0
- package/v3/dist/memory/index.d.ts +5 -2
- package/v3/dist/memory/index.d.ts.map +1 -1
- package/v3/dist/memory/index.js +5 -2
- package/v3/dist/memory/index.js.map +1 -1
- package/v3/dist/performance/benchmarks.d.ts +215 -0
- package/v3/dist/performance/benchmarks.d.ts.map +1 -0
- package/v3/dist/performance/benchmarks.js +516 -0
- package/v3/dist/performance/benchmarks.js.map +1 -0
- package/v3/dist/performance/ci-gates.d.ts +149 -0
- package/v3/dist/performance/ci-gates.d.ts.map +1 -0
- package/v3/dist/performance/ci-gates.js +425 -0
- package/v3/dist/performance/ci-gates.js.map +1 -0
- package/v3/dist/performance/index.d.ts +18 -0
- package/v3/dist/performance/index.d.ts.map +1 -0
- package/v3/dist/performance/index.js +26 -0
- package/v3/dist/performance/index.js.map +1 -0
- package/v3/dist/performance/optimizer.d.ts +323 -0
- package/v3/dist/performance/optimizer.d.ts.map +1 -0
- package/v3/dist/performance/optimizer.js +592 -0
- package/v3/dist/performance/optimizer.js.map +1 -0
- package/v3/dist/performance/profiler.d.ts +195 -0
- package/v3/dist/performance/profiler.d.ts.map +1 -0
- package/v3/dist/performance/profiler.js +369 -0
- package/v3/dist/performance/profiler.js.map +1 -0
- package/v3/dist/performance/run-gates.d.ts +23 -0
- package/v3/dist/performance/run-gates.d.ts.map +1 -0
- package/v3/dist/performance/run-gates.js +122 -0
- package/v3/dist/performance/run-gates.js.map +1 -0
- package/v3/dist/sync/claude-flow-bridge.d.ts +1 -1
- package/v3/dist/sync/claude-flow-bridge.js +1 -1
- package/v3/dist/sync/interfaces.d.ts +6 -0
- package/v3/dist/sync/interfaces.d.ts.map +1 -1
- package/v3/dist/sync/interfaces.js +34 -47
- package/v3/dist/sync/interfaces.js.map +1 -1
- package/v3/dist/sync/readers/sqlite-reader.d.ts +1 -1
- package/v3/dist/sync/readers/sqlite-reader.js +1 -1
- package/v3/dist/testing/index.d.ts +6 -0
- package/v3/dist/testing/index.d.ts.map +1 -0
- package/v3/dist/testing/index.js +7 -0
- package/v3/dist/testing/index.js.map +1 -0
- package/v3/dist/testing/load/agent-load-tester.d.ts +221 -0
- package/v3/dist/testing/load/agent-load-tester.d.ts.map +1 -0
- package/v3/dist/testing/load/agent-load-tester.js +566 -0
- package/v3/dist/testing/load/agent-load-tester.js.map +1 -0
- package/v3/dist/testing/load/bottleneck-analyzer.d.ts +150 -0
- package/v3/dist/testing/load/bottleneck-analyzer.d.ts.map +1 -0
- package/v3/dist/testing/load/bottleneck-analyzer.js +442 -0
- package/v3/dist/testing/load/bottleneck-analyzer.js.map +1 -0
- package/v3/dist/testing/load/index.d.ts +17 -0
- package/v3/dist/testing/load/index.d.ts.map +1 -0
- package/v3/dist/testing/load/index.js +23 -0
- package/v3/dist/testing/load/index.js.map +1 -0
- package/v3/dist/testing/load/metrics-collector.d.ts +275 -0
- package/v3/dist/testing/load/metrics-collector.d.ts.map +1 -0
- package/v3/dist/testing/load/metrics-collector.js +475 -0
- package/v3/dist/testing/load/metrics-collector.js.map +1 -0
- package/v3/package.json +5 -1
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A Discovery Routes
|
|
3
|
+
*
|
|
4
|
+
* Express-compatible route handlers for RFC 8615 well-known URI agent discovery.
|
|
5
|
+
* Provides endpoints for platform and individual agent card discovery.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: This module exports handler factories that work with Express or any
|
|
8
|
+
* compatible HTTP framework. Express itself is not bundled - consumers must
|
|
9
|
+
* provide their own Express installation.
|
|
10
|
+
*
|
|
11
|
+
* @module adapters/a2a/discovery/routes
|
|
12
|
+
* @see https://tools.ietf.org/html/rfc8615
|
|
13
|
+
*/
|
|
14
|
+
import { DiscoveryService } from './discovery-service.js';
|
|
15
|
+
/**
|
|
16
|
+
* Minimal HTTP request interface compatible with Express
|
|
17
|
+
*/
|
|
18
|
+
export interface HttpRequest {
|
|
19
|
+
params: Record<string, string>;
|
|
20
|
+
query: Record<string, string | string[] | undefined>;
|
|
21
|
+
headers: Record<string, string | string[] | undefined>;
|
|
22
|
+
header(name: string): string | undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Minimal HTTP response interface compatible with Express
|
|
26
|
+
*/
|
|
27
|
+
export interface HttpResponse {
|
|
28
|
+
status(code: number): HttpResponse;
|
|
29
|
+
json(body: unknown): void;
|
|
30
|
+
setHeader(name: string, value: string | number): void;
|
|
31
|
+
end(): void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Next function for middleware chaining
|
|
35
|
+
*/
|
|
36
|
+
export type NextFunction = (error?: unknown) => void;
|
|
37
|
+
/**
|
|
38
|
+
* HTTP handler function
|
|
39
|
+
*/
|
|
40
|
+
export type HttpHandler = (req: HttpRequest, res: HttpResponse, next?: NextFunction) => void | Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Route configuration options
|
|
43
|
+
*/
|
|
44
|
+
export interface DiscoveryRoutesConfig {
|
|
45
|
+
/** Discovery service instance */
|
|
46
|
+
readonly discoveryService: DiscoveryService;
|
|
47
|
+
/** Authentication middleware for extended cards */
|
|
48
|
+
readonly authMiddleware?: HttpHandler;
|
|
49
|
+
/** Default cache duration in seconds (for Cache-Control header) */
|
|
50
|
+
readonly defaultCacheSeconds?: number;
|
|
51
|
+
/** Enable CORS headers */
|
|
52
|
+
readonly enableCors?: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Authentication middleware type
|
|
56
|
+
*/
|
|
57
|
+
export type AuthMiddleware = HttpHandler;
|
|
58
|
+
/**
|
|
59
|
+
* A2A error response format
|
|
60
|
+
*/
|
|
61
|
+
export interface A2AErrorResponse {
|
|
62
|
+
readonly error: {
|
|
63
|
+
readonly code: number;
|
|
64
|
+
readonly message: string;
|
|
65
|
+
readonly data?: unknown;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Request with authenticated user info
|
|
70
|
+
*/
|
|
71
|
+
export interface AuthenticatedRequest extends HttpRequest {
|
|
72
|
+
user?: {
|
|
73
|
+
id: string;
|
|
74
|
+
scopes?: string[];
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Route definition for Express router setup
|
|
79
|
+
*/
|
|
80
|
+
export interface RouteDefinition {
|
|
81
|
+
readonly method: 'get' | 'post' | 'options';
|
|
82
|
+
readonly path: string;
|
|
83
|
+
readonly handlers: HttpHandler[];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Default route configuration
|
|
87
|
+
*/
|
|
88
|
+
export declare const DEFAULT_ROUTES_CONFIG: {
|
|
89
|
+
readonly defaultCacheSeconds: 3600;
|
|
90
|
+
readonly enableCors: true;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Create an A2A-formatted error response for agent not found
|
|
94
|
+
*/
|
|
95
|
+
export declare function createAgentNotFoundResponse(agentId: string): A2AErrorResponse;
|
|
96
|
+
/**
|
|
97
|
+
* Create an A2A-formatted error response for authentication required
|
|
98
|
+
*/
|
|
99
|
+
export declare function createAuthRequiredResponse(): A2AErrorResponse;
|
|
100
|
+
/**
|
|
101
|
+
* Create an A2A-formatted error response for internal errors
|
|
102
|
+
*/
|
|
103
|
+
export declare function createInternalErrorResponse(message?: string): A2AErrorResponse;
|
|
104
|
+
/**
|
|
105
|
+
* Get route definitions for A2A agent discovery
|
|
106
|
+
*
|
|
107
|
+
* Returns an array of route definitions that can be used to setup routes
|
|
108
|
+
* in Express or any compatible HTTP framework.
|
|
109
|
+
*
|
|
110
|
+
* @param config - Route configuration
|
|
111
|
+
* @returns Array of route definitions
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* const routeDefs = getDiscoveryRouteDefinitions({
|
|
116
|
+
* discoveryService,
|
|
117
|
+
* authMiddleware: verifyToken,
|
|
118
|
+
* });
|
|
119
|
+
*
|
|
120
|
+
* // Setup in Express
|
|
121
|
+
* for (const route of routeDefs) {
|
|
122
|
+
* app[route.method](route.path, ...route.handlers);
|
|
123
|
+
* }
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare function getDiscoveryRouteDefinitions(config: DiscoveryRoutesConfig): RouteDefinition[];
|
|
127
|
+
/**
|
|
128
|
+
* Create Express routes for A2A agent discovery
|
|
129
|
+
*
|
|
130
|
+
* NOTE: This function requires Express to be installed separately.
|
|
131
|
+
* If Express is not available, use getDiscoveryRouteDefinitions() instead.
|
|
132
|
+
*
|
|
133
|
+
* Registers the following endpoints:
|
|
134
|
+
* - GET /.well-known/agent.json - Platform aggregate card
|
|
135
|
+
* - GET /a2a/:agentId/.well-known/agent.json - Individual agent card
|
|
136
|
+
* - GET /a2a/:agentId/.well-known/agent.json?extended=true - Extended agent card (auth required)
|
|
137
|
+
* - GET /a2a/agents - Search/list agents
|
|
138
|
+
* - GET /a2a/agents/:agentId - Alias for individual agent card
|
|
139
|
+
*
|
|
140
|
+
* @param config - Route configuration
|
|
141
|
+
* @returns Express router (requires express to be installed)
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* import express from 'express';
|
|
146
|
+
* import { createDiscoveryRoutes } from '@agentic-qe/v3';
|
|
147
|
+
*
|
|
148
|
+
* const app = express();
|
|
149
|
+
* const routes = createDiscoveryRoutes({
|
|
150
|
+
* discoveryService,
|
|
151
|
+
* authMiddleware: verifyToken,
|
|
152
|
+
* });
|
|
153
|
+
*
|
|
154
|
+
* app.use(routes);
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
export declare function createDiscoveryRoutes(config: DiscoveryRoutesConfig): {
|
|
158
|
+
stack: Array<{
|
|
159
|
+
route?: {
|
|
160
|
+
path?: string;
|
|
161
|
+
};
|
|
162
|
+
}>;
|
|
163
|
+
} & Record<string, unknown>;
|
|
164
|
+
/**
|
|
165
|
+
* Create a standalone platform card handler
|
|
166
|
+
*/
|
|
167
|
+
export declare function createPlatformCardHandler(discoveryService: DiscoveryService, options?: {
|
|
168
|
+
cacheSeconds?: number;
|
|
169
|
+
enableCors?: boolean;
|
|
170
|
+
}): HttpHandler;
|
|
171
|
+
/**
|
|
172
|
+
* Create a standalone agent card handler
|
|
173
|
+
*/
|
|
174
|
+
export declare function createAgentCardHandler(discoveryService: DiscoveryService, options?: {
|
|
175
|
+
cacheSeconds?: number;
|
|
176
|
+
enableCors?: boolean;
|
|
177
|
+
}): HttpHandler;
|
|
178
|
+
/**
|
|
179
|
+
* Create a standalone extended card handler
|
|
180
|
+
*/
|
|
181
|
+
export declare function createExtendedCardHandler(discoveryService: DiscoveryService, authMiddleware: HttpHandler, options?: {
|
|
182
|
+
enableCors?: boolean;
|
|
183
|
+
}): HttpHandler[];
|
|
184
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../src/adapters/a2a/discovery/routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A Discovery Routes
|
|
3
|
+
*
|
|
4
|
+
* Express-compatible route handlers for RFC 8615 well-known URI agent discovery.
|
|
5
|
+
* Provides endpoints for platform and individual agent card discovery.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: This module exports handler factories that work with Express or any
|
|
8
|
+
* compatible HTTP framework. Express itself is not bundled - consumers must
|
|
9
|
+
* provide their own Express installation.
|
|
10
|
+
*
|
|
11
|
+
* @module adapters/a2a/discovery/routes
|
|
12
|
+
* @see https://tools.ietf.org/html/rfc8615
|
|
13
|
+
*/
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Default Configuration
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Default route configuration
|
|
19
|
+
*/
|
|
20
|
+
export const DEFAULT_ROUTES_CONFIG = {
|
|
21
|
+
defaultCacheSeconds: 3600, // 1 hour
|
|
22
|
+
enableCors: true,
|
|
23
|
+
};
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Error Response Helpers
|
|
26
|
+
// ============================================================================
|
|
27
|
+
/**
|
|
28
|
+
* Create an A2A-formatted error response for agent not found
|
|
29
|
+
*/
|
|
30
|
+
export function createAgentNotFoundResponse(agentId) {
|
|
31
|
+
return {
|
|
32
|
+
error: {
|
|
33
|
+
code: -32001,
|
|
34
|
+
message: 'Agent not found',
|
|
35
|
+
data: { agentId },
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create an A2A-formatted error response for authentication required
|
|
41
|
+
*/
|
|
42
|
+
export function createAuthRequiredResponse() {
|
|
43
|
+
return {
|
|
44
|
+
error: {
|
|
45
|
+
code: -32020,
|
|
46
|
+
message: 'Authentication required for extended agent card',
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create an A2A-formatted error response for internal errors
|
|
52
|
+
*/
|
|
53
|
+
export function createInternalErrorResponse(message) {
|
|
54
|
+
return {
|
|
55
|
+
error: {
|
|
56
|
+
code: -32603,
|
|
57
|
+
message: message ?? 'Internal error',
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// ============================================================================
|
|
62
|
+
// Route Handlers
|
|
63
|
+
// ============================================================================
|
|
64
|
+
/**
|
|
65
|
+
* Create discovery route handlers
|
|
66
|
+
*/
|
|
67
|
+
function createRouteHandlers(config) {
|
|
68
|
+
const { discoveryService, defaultCacheSeconds, enableCors } = config;
|
|
69
|
+
/**
|
|
70
|
+
* Set common response headers
|
|
71
|
+
*/
|
|
72
|
+
function setCommonHeaders(res, etag) {
|
|
73
|
+
res.setHeader('Content-Type', 'application/json');
|
|
74
|
+
res.setHeader('Cache-Control', `public, max-age=${defaultCacheSeconds}`);
|
|
75
|
+
if (etag) {
|
|
76
|
+
res.setHeader('ETag', etag);
|
|
77
|
+
}
|
|
78
|
+
if (enableCors) {
|
|
79
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
80
|
+
res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');
|
|
81
|
+
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Handle conditional GET (If-None-Match)
|
|
86
|
+
*/
|
|
87
|
+
function handleConditionalGet(req, res, currentEtag) {
|
|
88
|
+
const ifNoneMatch = req.header('If-None-Match');
|
|
89
|
+
if (ifNoneMatch && currentEtag && ifNoneMatch === currentEtag) {
|
|
90
|
+
res.status(304).end();
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
/**
|
|
97
|
+
* GET /.well-known/agent.json
|
|
98
|
+
* Returns the aggregate platform card
|
|
99
|
+
*/
|
|
100
|
+
async getPlatformCard(req, res) {
|
|
101
|
+
try {
|
|
102
|
+
// Check conditional GET
|
|
103
|
+
const etag = discoveryService.getPlatformCardEtag();
|
|
104
|
+
if (handleConditionalGet(req, res, etag)) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const card = await discoveryService.getPlatformCard();
|
|
108
|
+
const newEtag = discoveryService.getPlatformCardEtag();
|
|
109
|
+
setCommonHeaders(res, newEtag);
|
|
110
|
+
res.json(card);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
res.status(500).json(createInternalErrorResponse());
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
/**
|
|
117
|
+
* GET /a2a/:agentId/.well-known/agent.json
|
|
118
|
+
* Returns an individual agent card
|
|
119
|
+
*/
|
|
120
|
+
async getAgentCard(req, res) {
|
|
121
|
+
try {
|
|
122
|
+
const { agentId } = req.params;
|
|
123
|
+
const extended = req.query.extended === 'true';
|
|
124
|
+
// If extended is requested, check authentication
|
|
125
|
+
if (extended) {
|
|
126
|
+
const authReq = req;
|
|
127
|
+
if (!authReq.user) {
|
|
128
|
+
res.status(401).json(createAuthRequiredResponse());
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Check conditional GET
|
|
133
|
+
const etag = discoveryService.getAgentCardEtag(agentId);
|
|
134
|
+
if (!extended && handleConditionalGet(req, res, etag)) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
// Get the appropriate card type
|
|
138
|
+
const card = extended
|
|
139
|
+
? await discoveryService.getExtendedAgentCard(agentId)
|
|
140
|
+
: await discoveryService.getAgentCard(agentId);
|
|
141
|
+
if (!card) {
|
|
142
|
+
res.status(404).json(createAgentNotFoundResponse(agentId));
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
// For extended cards, don't cache as aggressively
|
|
146
|
+
if (extended) {
|
|
147
|
+
res.setHeader('Content-Type', 'application/json');
|
|
148
|
+
res.setHeader('Cache-Control', 'private, max-age=60');
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
const newEtag = discoveryService.getAgentCardEtag(agentId);
|
|
152
|
+
setCommonHeaders(res, newEtag);
|
|
153
|
+
}
|
|
154
|
+
res.json(card);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
res.status(500).json(createInternalErrorResponse());
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
/**
|
|
161
|
+
* GET /a2a/agents
|
|
162
|
+
* Search for agents with optional filters
|
|
163
|
+
*/
|
|
164
|
+
async searchAgents(req, res) {
|
|
165
|
+
try {
|
|
166
|
+
const criteria = {
|
|
167
|
+
capability: req.query.capability,
|
|
168
|
+
skill: req.query.skill,
|
|
169
|
+
tag: req.query.tag,
|
|
170
|
+
domain: req.query.domain,
|
|
171
|
+
streaming: req.query.streaming !== undefined
|
|
172
|
+
? req.query.streaming === 'true'
|
|
173
|
+
: undefined,
|
|
174
|
+
limit: req.query.limit ? parseInt(req.query.limit, 10) : undefined,
|
|
175
|
+
};
|
|
176
|
+
const result = await discoveryService.search(criteria);
|
|
177
|
+
setCommonHeaders(res);
|
|
178
|
+
res.json({
|
|
179
|
+
agents: result.agents.map((a) => ({
|
|
180
|
+
name: a.name,
|
|
181
|
+
description: a.description,
|
|
182
|
+
url: a.url,
|
|
183
|
+
version: a.version,
|
|
184
|
+
skills: a.skills.map((s) => s.id),
|
|
185
|
+
})),
|
|
186
|
+
total: result.total,
|
|
187
|
+
criteria: result.criteria,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
res.status(500).json(createInternalErrorResponse());
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
/**
|
|
195
|
+
* GET /a2a/agents/:agentId
|
|
196
|
+
* Alias for individual agent card (without .well-known path)
|
|
197
|
+
*/
|
|
198
|
+
async getAgentCardAlias(req, res) {
|
|
199
|
+
return this.getAgentCard(req, res);
|
|
200
|
+
},
|
|
201
|
+
/**
|
|
202
|
+
* OPTIONS handler for CORS preflight
|
|
203
|
+
*/
|
|
204
|
+
handleOptions(req, res) {
|
|
205
|
+
if (enableCors) {
|
|
206
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
207
|
+
res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');
|
|
208
|
+
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
|
|
209
|
+
res.setHeader('Access-Control-Max-Age', '86400');
|
|
210
|
+
}
|
|
211
|
+
res.status(204).end();
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
// ============================================================================
|
|
216
|
+
// Middleware Helpers
|
|
217
|
+
// ============================================================================
|
|
218
|
+
/**
|
|
219
|
+
* Default auth middleware (no-op)
|
|
220
|
+
*/
|
|
221
|
+
function defaultAuthMiddleware(req, res, next) {
|
|
222
|
+
if (next)
|
|
223
|
+
next();
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Conditional authentication middleware
|
|
227
|
+
*
|
|
228
|
+
* Only applies auth middleware if extended=true query parameter is present
|
|
229
|
+
*/
|
|
230
|
+
function createConditionalAuth(authMiddleware) {
|
|
231
|
+
return (req, res, next) => {
|
|
232
|
+
if (req.query.extended === 'true' && authMiddleware) {
|
|
233
|
+
authMiddleware(req, res, next);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
if (next)
|
|
237
|
+
next();
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
// ============================================================================
|
|
242
|
+
// Route Factory (Framework-agnostic)
|
|
243
|
+
// ============================================================================
|
|
244
|
+
/**
|
|
245
|
+
* Get route definitions for A2A agent discovery
|
|
246
|
+
*
|
|
247
|
+
* Returns an array of route definitions that can be used to setup routes
|
|
248
|
+
* in Express or any compatible HTTP framework.
|
|
249
|
+
*
|
|
250
|
+
* @param config - Route configuration
|
|
251
|
+
* @returns Array of route definitions
|
|
252
|
+
*
|
|
253
|
+
* @example
|
|
254
|
+
* ```typescript
|
|
255
|
+
* const routeDefs = getDiscoveryRouteDefinitions({
|
|
256
|
+
* discoveryService,
|
|
257
|
+
* authMiddleware: verifyToken,
|
|
258
|
+
* });
|
|
259
|
+
*
|
|
260
|
+
* // Setup in Express
|
|
261
|
+
* for (const route of routeDefs) {
|
|
262
|
+
* app[route.method](route.path, ...route.handlers);
|
|
263
|
+
* }
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
export function getDiscoveryRouteDefinitions(config) {
|
|
267
|
+
const fullConfig = {
|
|
268
|
+
authMiddleware: config.authMiddleware ?? defaultAuthMiddleware,
|
|
269
|
+
...DEFAULT_ROUTES_CONFIG,
|
|
270
|
+
...config,
|
|
271
|
+
};
|
|
272
|
+
const handlers = createRouteHandlers(fullConfig);
|
|
273
|
+
const conditionalAuth = createConditionalAuth(fullConfig.authMiddleware);
|
|
274
|
+
return [
|
|
275
|
+
// CORS preflight
|
|
276
|
+
{
|
|
277
|
+
method: 'options',
|
|
278
|
+
path: '/.well-known/agent.json',
|
|
279
|
+
handlers: [handlers.handleOptions.bind(handlers)],
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
method: 'options',
|
|
283
|
+
path: '/a2a/:agentId/.well-known/agent.json',
|
|
284
|
+
handlers: [handlers.handleOptions.bind(handlers)],
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
method: 'options',
|
|
288
|
+
path: '/a2a/agents',
|
|
289
|
+
handlers: [handlers.handleOptions.bind(handlers)],
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
method: 'options',
|
|
293
|
+
path: '/a2a/agents/:agentId',
|
|
294
|
+
handlers: [handlers.handleOptions.bind(handlers)],
|
|
295
|
+
},
|
|
296
|
+
// Platform card
|
|
297
|
+
{
|
|
298
|
+
method: 'get',
|
|
299
|
+
path: '/.well-known/agent.json',
|
|
300
|
+
handlers: [handlers.getPlatformCard.bind(handlers)],
|
|
301
|
+
},
|
|
302
|
+
// Individual agent card (with optional extended)
|
|
303
|
+
{
|
|
304
|
+
method: 'get',
|
|
305
|
+
path: '/a2a/:agentId/.well-known/agent.json',
|
|
306
|
+
handlers: [conditionalAuth, handlers.getAgentCard.bind(handlers)],
|
|
307
|
+
},
|
|
308
|
+
// Search agents
|
|
309
|
+
{
|
|
310
|
+
method: 'get',
|
|
311
|
+
path: '/a2a/agents',
|
|
312
|
+
handlers: [handlers.searchAgents.bind(handlers)],
|
|
313
|
+
},
|
|
314
|
+
// Alias for agent card
|
|
315
|
+
{
|
|
316
|
+
method: 'get',
|
|
317
|
+
path: '/a2a/agents/:agentId',
|
|
318
|
+
handlers: [conditionalAuth, handlers.getAgentCardAlias.bind(handlers)],
|
|
319
|
+
},
|
|
320
|
+
];
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Create Express routes for A2A agent discovery
|
|
324
|
+
*
|
|
325
|
+
* NOTE: This function requires Express to be installed separately.
|
|
326
|
+
* If Express is not available, use getDiscoveryRouteDefinitions() instead.
|
|
327
|
+
*
|
|
328
|
+
* Registers the following endpoints:
|
|
329
|
+
* - GET /.well-known/agent.json - Platform aggregate card
|
|
330
|
+
* - GET /a2a/:agentId/.well-known/agent.json - Individual agent card
|
|
331
|
+
* - GET /a2a/:agentId/.well-known/agent.json?extended=true - Extended agent card (auth required)
|
|
332
|
+
* - GET /a2a/agents - Search/list agents
|
|
333
|
+
* - GET /a2a/agents/:agentId - Alias for individual agent card
|
|
334
|
+
*
|
|
335
|
+
* @param config - Route configuration
|
|
336
|
+
* @returns Express router (requires express to be installed)
|
|
337
|
+
*
|
|
338
|
+
* @example
|
|
339
|
+
* ```typescript
|
|
340
|
+
* import express from 'express';
|
|
341
|
+
* import { createDiscoveryRoutes } from '@agentic-qe/v3';
|
|
342
|
+
*
|
|
343
|
+
* const app = express();
|
|
344
|
+
* const routes = createDiscoveryRoutes({
|
|
345
|
+
* discoveryService,
|
|
346
|
+
* authMiddleware: verifyToken,
|
|
347
|
+
* });
|
|
348
|
+
*
|
|
349
|
+
* app.use(routes);
|
|
350
|
+
* ```
|
|
351
|
+
*/
|
|
352
|
+
export function createDiscoveryRoutes(config) {
|
|
353
|
+
// Dynamically import express - this allows the module to be loaded
|
|
354
|
+
// even when express is not installed
|
|
355
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
356
|
+
const express = require('express');
|
|
357
|
+
const router = express.Router();
|
|
358
|
+
const routeDefs = getDiscoveryRouteDefinitions(config);
|
|
359
|
+
for (const route of routeDefs) {
|
|
360
|
+
router[route.method](route.path, ...route.handlers);
|
|
361
|
+
}
|
|
362
|
+
return router;
|
|
363
|
+
}
|
|
364
|
+
// ============================================================================
|
|
365
|
+
// Standalone Route Functions (for custom router setup)
|
|
366
|
+
// ============================================================================
|
|
367
|
+
/**
|
|
368
|
+
* Create a standalone platform card handler
|
|
369
|
+
*/
|
|
370
|
+
export function createPlatformCardHandler(discoveryService, options = {}) {
|
|
371
|
+
const { cacheSeconds = 3600, enableCors = true } = options;
|
|
372
|
+
return async (req, res) => {
|
|
373
|
+
try {
|
|
374
|
+
const card = await discoveryService.getPlatformCard();
|
|
375
|
+
const etag = discoveryService.getPlatformCardEtag();
|
|
376
|
+
res.setHeader('Content-Type', 'application/json');
|
|
377
|
+
res.setHeader('Cache-Control', `public, max-age=${cacheSeconds}`);
|
|
378
|
+
if (etag) {
|
|
379
|
+
res.setHeader('ETag', etag);
|
|
380
|
+
}
|
|
381
|
+
if (enableCors) {
|
|
382
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
383
|
+
}
|
|
384
|
+
res.json(card);
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
res.status(500).json(createInternalErrorResponse());
|
|
388
|
+
}
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Create a standalone agent card handler
|
|
393
|
+
*/
|
|
394
|
+
export function createAgentCardHandler(discoveryService, options = {}) {
|
|
395
|
+
const { cacheSeconds = 3600, enableCors = true } = options;
|
|
396
|
+
return async (req, res) => {
|
|
397
|
+
try {
|
|
398
|
+
const { agentId } = req.params;
|
|
399
|
+
const card = await discoveryService.getAgentCard(agentId);
|
|
400
|
+
if (!card) {
|
|
401
|
+
res.status(404).json(createAgentNotFoundResponse(agentId));
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
const etag = discoveryService.getAgentCardEtag(agentId);
|
|
405
|
+
res.setHeader('Content-Type', 'application/json');
|
|
406
|
+
res.setHeader('Cache-Control', `public, max-age=${cacheSeconds}`);
|
|
407
|
+
if (etag) {
|
|
408
|
+
res.setHeader('ETag', etag);
|
|
409
|
+
}
|
|
410
|
+
if (enableCors) {
|
|
411
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
412
|
+
}
|
|
413
|
+
res.json(card);
|
|
414
|
+
}
|
|
415
|
+
catch (error) {
|
|
416
|
+
res.status(500).json(createInternalErrorResponse());
|
|
417
|
+
}
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Create a standalone extended card handler
|
|
422
|
+
*/
|
|
423
|
+
export function createExtendedCardHandler(discoveryService, authMiddleware, options = {}) {
|
|
424
|
+
const { enableCors = true } = options;
|
|
425
|
+
return [
|
|
426
|
+
authMiddleware,
|
|
427
|
+
async (req, res) => {
|
|
428
|
+
try {
|
|
429
|
+
const { agentId } = req.params;
|
|
430
|
+
const authReq = req;
|
|
431
|
+
if (!authReq.user) {
|
|
432
|
+
res.status(401).json(createAuthRequiredResponse());
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
const card = await discoveryService.getExtendedAgentCard(agentId);
|
|
436
|
+
if (!card) {
|
|
437
|
+
res.status(404).json(createAgentNotFoundResponse(agentId));
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
440
|
+
res.setHeader('Content-Type', 'application/json');
|
|
441
|
+
res.setHeader('Cache-Control', 'private, max-age=60');
|
|
442
|
+
if (enableCors) {
|
|
443
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
444
|
+
}
|
|
445
|
+
res.json(card);
|
|
446
|
+
}
|
|
447
|
+
catch (error) {
|
|
448
|
+
res.status(500).json(createInternalErrorResponse());
|
|
449
|
+
}
|
|
450
|
+
},
|
|
451
|
+
];
|
|
452
|
+
}
|
|
453
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../src/adapters/a2a/discovery/routes.ts"],"names":[],"mappings":"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"}
|