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,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A Webhook Signature Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides HMAC-SHA256 signature generation and verification for webhook payloads.
|
|
5
|
+
* Follows the pattern: X-A2A-Signature: t={timestamp},v1={hmac}
|
|
6
|
+
*
|
|
7
|
+
* @module adapters/a2a/notifications/signature
|
|
8
|
+
* @see https://a2a-protocol.org/latest/specification/
|
|
9
|
+
*/
|
|
10
|
+
import { createHmac, timingSafeEqual } from 'crypto';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Constants
|
|
13
|
+
// ============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Header name for A2A webhook signatures
|
|
16
|
+
*/
|
|
17
|
+
export const SIGNATURE_HEADER = 'X-A2A-Signature';
|
|
18
|
+
/**
|
|
19
|
+
* Current signature version
|
|
20
|
+
*/
|
|
21
|
+
export const SIGNATURE_VERSION = 'v1';
|
|
22
|
+
/**
|
|
23
|
+
* Default maximum age for signature validation (5 minutes)
|
|
24
|
+
*/
|
|
25
|
+
export const DEFAULT_MAX_AGE_MS = 5 * 60 * 1000;
|
|
26
|
+
/**
|
|
27
|
+
* Minimum timestamp value to prevent integer overflow attacks
|
|
28
|
+
*/
|
|
29
|
+
export const MIN_TIMESTAMP = 1704067200000; // Jan 1, 2024
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Signature Generation
|
|
32
|
+
// ============================================================================
|
|
33
|
+
/**
|
|
34
|
+
* Generate an HMAC-SHA256 signature for a webhook payload
|
|
35
|
+
*
|
|
36
|
+
* @param payload - The JSON string payload to sign
|
|
37
|
+
* @param secret - The shared secret key
|
|
38
|
+
* @param timestamp - Unix timestamp in milliseconds
|
|
39
|
+
* @returns The hex-encoded HMAC-SHA256 signature
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const signature = generateSignature(
|
|
44
|
+
* JSON.stringify({ event: 'task.completed', taskId: '123' }),
|
|
45
|
+
* 'webhook-secret-key',
|
|
46
|
+
* Date.now()
|
|
47
|
+
* );
|
|
48
|
+
* // Returns: 'a1b2c3d4e5f6...' (64 character hex string)
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export function generateSignature(payload, secret, timestamp) {
|
|
52
|
+
if (!payload) {
|
|
53
|
+
throw new Error('Payload is required for signature generation');
|
|
54
|
+
}
|
|
55
|
+
if (!secret) {
|
|
56
|
+
throw new Error('Secret is required for signature generation');
|
|
57
|
+
}
|
|
58
|
+
if (timestamp < MIN_TIMESTAMP) {
|
|
59
|
+
throw new Error(`Invalid timestamp: must be after ${new Date(MIN_TIMESTAMP).toISOString()}`);
|
|
60
|
+
}
|
|
61
|
+
// Create signed payload: timestamp.payload
|
|
62
|
+
const signedPayload = `${timestamp}.${payload}`;
|
|
63
|
+
// Generate HMAC-SHA256
|
|
64
|
+
const hmac = createHmac('sha256', secret);
|
|
65
|
+
hmac.update(signedPayload, 'utf8');
|
|
66
|
+
return hmac.digest('hex');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate the complete signature header value
|
|
70
|
+
*
|
|
71
|
+
* @param payload - The JSON string payload to sign
|
|
72
|
+
* @param secret - The shared secret key
|
|
73
|
+
* @param timestamp - Optional timestamp (defaults to current time)
|
|
74
|
+
* @returns The complete header value in format: t={timestamp},v1={signature}
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* const headerValue = generateSignatureHeader(
|
|
79
|
+
* JSON.stringify({ event: 'task.completed' }),
|
|
80
|
+
* 'webhook-secret-key'
|
|
81
|
+
* );
|
|
82
|
+
* // Returns: 't=1704067200000,v1=a1b2c3d4e5f6...'
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export function generateSignatureHeader(payload, secret, timestamp) {
|
|
86
|
+
const ts = timestamp ?? Date.now();
|
|
87
|
+
const signature = generateSignature(payload, secret, ts);
|
|
88
|
+
return `t=${ts},${SIGNATURE_VERSION}=${signature}`;
|
|
89
|
+
}
|
|
90
|
+
// ============================================================================
|
|
91
|
+
// Signature Verification
|
|
92
|
+
// ============================================================================
|
|
93
|
+
/**
|
|
94
|
+
* Parse a signature header value into its components
|
|
95
|
+
*
|
|
96
|
+
* @param header - The signature header value
|
|
97
|
+
* @returns Parsed signature components or null if invalid format
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const parsed = parseSignatureHeader('t=1704067200000,v1=abc123...');
|
|
102
|
+
* // Returns: { timestamp: 1704067200000, v1: 'abc123...' }
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
export function parseSignatureHeader(header) {
|
|
106
|
+
if (!header || typeof header !== 'string') {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
const parts = header.split(',');
|
|
110
|
+
let timestamp;
|
|
111
|
+
let v1;
|
|
112
|
+
for (const part of parts) {
|
|
113
|
+
const [key, ...valueParts] = part.split('=');
|
|
114
|
+
const value = valueParts.join('='); // Handle '=' in value
|
|
115
|
+
if (key === 't') {
|
|
116
|
+
timestamp = parseInt(value, 10);
|
|
117
|
+
if (isNaN(timestamp)) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else if (key === 'v1') {
|
|
122
|
+
v1 = value;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (timestamp === undefined || !v1) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
return { timestamp, v1 };
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Verify a webhook signature using timing-safe comparison
|
|
132
|
+
*
|
|
133
|
+
* @param payload - The raw JSON string payload
|
|
134
|
+
* @param signature - The signature header value to verify
|
|
135
|
+
* @param secret - The shared secret key
|
|
136
|
+
* @param maxAge - Maximum age of signature in milliseconds (default: 5 minutes)
|
|
137
|
+
* @returns Verification result with validity status and any errors
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* const result = verifySignature(
|
|
142
|
+
* '{"event":"task.completed"}',
|
|
143
|
+
* 't=1704067200000,v1=abc123...',
|
|
144
|
+
* 'webhook-secret-key'
|
|
145
|
+
* );
|
|
146
|
+
*
|
|
147
|
+
* if (result.valid) {
|
|
148
|
+
* console.log('Signature verified');
|
|
149
|
+
* } else {
|
|
150
|
+
* console.error('Verification failed:', result.error);
|
|
151
|
+
* }
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
export function verifySignature(payload, signature, secret, maxAge = DEFAULT_MAX_AGE_MS) {
|
|
155
|
+
// Parse the signature header
|
|
156
|
+
const parsed = parseSignatureHeader(signature);
|
|
157
|
+
if (!parsed) {
|
|
158
|
+
return {
|
|
159
|
+
valid: false,
|
|
160
|
+
error: 'Invalid signature format: expected t={timestamp},v1={signature}',
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
const { timestamp, v1: providedSignature } = parsed;
|
|
164
|
+
// Check timestamp validity
|
|
165
|
+
if (timestamp < MIN_TIMESTAMP) {
|
|
166
|
+
return {
|
|
167
|
+
valid: false,
|
|
168
|
+
error: `Invalid timestamp: must be after ${new Date(MIN_TIMESTAMP).toISOString()}`,
|
|
169
|
+
timestamp,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
// Check signature age
|
|
173
|
+
const now = Date.now();
|
|
174
|
+
const ageMs = now - timestamp;
|
|
175
|
+
if (ageMs > maxAge) {
|
|
176
|
+
return {
|
|
177
|
+
valid: false,
|
|
178
|
+
error: `Signature expired: age ${ageMs}ms exceeds maximum ${maxAge}ms`,
|
|
179
|
+
timestamp,
|
|
180
|
+
ageMs,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
// Check for future timestamps (allow 1 minute clock skew)
|
|
184
|
+
if (ageMs < -60000) {
|
|
185
|
+
return {
|
|
186
|
+
valid: false,
|
|
187
|
+
error: 'Signature timestamp is too far in the future',
|
|
188
|
+
timestamp,
|
|
189
|
+
ageMs,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// Generate expected signature
|
|
193
|
+
let expectedSignature;
|
|
194
|
+
try {
|
|
195
|
+
expectedSignature = generateSignature(payload, secret, timestamp);
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
return {
|
|
199
|
+
valid: false,
|
|
200
|
+
error: `Failed to generate expected signature: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
201
|
+
timestamp,
|
|
202
|
+
ageMs,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
// Timing-safe comparison to prevent timing attacks
|
|
206
|
+
const providedBuffer = Buffer.from(providedSignature, 'utf8');
|
|
207
|
+
const expectedBuffer = Buffer.from(expectedSignature, 'utf8');
|
|
208
|
+
// Length check (must be same length for timingSafeEqual)
|
|
209
|
+
if (providedBuffer.length !== expectedBuffer.length) {
|
|
210
|
+
return {
|
|
211
|
+
valid: false,
|
|
212
|
+
error: 'Signature mismatch',
|
|
213
|
+
timestamp,
|
|
214
|
+
ageMs,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
const valid = timingSafeEqual(providedBuffer, expectedBuffer);
|
|
218
|
+
if (!valid) {
|
|
219
|
+
return {
|
|
220
|
+
valid: false,
|
|
221
|
+
error: 'Signature mismatch',
|
|
222
|
+
timestamp,
|
|
223
|
+
ageMs,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
valid: true,
|
|
228
|
+
timestamp,
|
|
229
|
+
ageMs,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Simple boolean check for signature validity (convenience wrapper)
|
|
234
|
+
*
|
|
235
|
+
* @param payload - The raw JSON string payload
|
|
236
|
+
* @param signature - The signature header value to verify
|
|
237
|
+
* @param secret - The shared secret key
|
|
238
|
+
* @param maxAge - Maximum age of signature in milliseconds
|
|
239
|
+
* @returns true if signature is valid, false otherwise
|
|
240
|
+
*/
|
|
241
|
+
export function isValidSignature(payload, signature, secret, maxAge) {
|
|
242
|
+
return verifySignature(payload, signature, secret, maxAge).valid;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../../src/adapters/a2a/notifications/signature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A Webhook Subscription Store
|
|
3
|
+
*
|
|
4
|
+
* Manages webhook subscriptions for task notifications with CRUD operations,
|
|
5
|
+
* statistics tracking, and automatic cleanup of expired subscriptions.
|
|
6
|
+
*
|
|
7
|
+
* @module adapters/a2a/notifications/subscription-store
|
|
8
|
+
* @see https://a2a-protocol.org/latest/specification/
|
|
9
|
+
*/
|
|
10
|
+
import type { WebhookConfig, WebhookEvent } from './webhook-service.js';
|
|
11
|
+
/**
|
|
12
|
+
* Webhook subscription status
|
|
13
|
+
*/
|
|
14
|
+
export type SubscriptionStatus = 'active' | 'paused' | 'failed' | 'expired';
|
|
15
|
+
/**
|
|
16
|
+
* Webhook subscription record
|
|
17
|
+
*/
|
|
18
|
+
export interface Subscription {
|
|
19
|
+
/** Unique subscription identifier */
|
|
20
|
+
readonly id: string;
|
|
21
|
+
/** Task ID this subscription is for */
|
|
22
|
+
readonly taskId: string;
|
|
23
|
+
/** Context ID (optional, for multi-turn subscriptions) */
|
|
24
|
+
readonly contextId?: string;
|
|
25
|
+
/** Webhook configuration */
|
|
26
|
+
readonly webhookConfig: WebhookConfig;
|
|
27
|
+
/** Current subscription status */
|
|
28
|
+
status: SubscriptionStatus;
|
|
29
|
+
/** Subscription creation timestamp */
|
|
30
|
+
readonly createdAt: Date;
|
|
31
|
+
/** Last delivery attempt timestamp */
|
|
32
|
+
lastDeliveryAt?: Date;
|
|
33
|
+
/** Last successful delivery timestamp */
|
|
34
|
+
lastSuccessAt?: Date;
|
|
35
|
+
/** Total number of delivery attempts */
|
|
36
|
+
deliveryCount: number;
|
|
37
|
+
/** Number of failed deliveries */
|
|
38
|
+
failureCount: number;
|
|
39
|
+
/** Consecutive failure count (resets on success) */
|
|
40
|
+
consecutiveFailures: number;
|
|
41
|
+
/** Last error message */
|
|
42
|
+
lastError?: string;
|
|
43
|
+
/** Subscription expiration timestamp */
|
|
44
|
+
expiresAt?: Date;
|
|
45
|
+
/** Additional metadata */
|
|
46
|
+
metadata?: Record<string, unknown>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Subscription creation options
|
|
50
|
+
*/
|
|
51
|
+
export interface CreateSubscriptionOptions {
|
|
52
|
+
/** Explicit subscription ID (auto-generated if not provided) */
|
|
53
|
+
id?: string;
|
|
54
|
+
/** Context ID for multi-turn conversations */
|
|
55
|
+
contextId?: string;
|
|
56
|
+
/** Subscription expiration time */
|
|
57
|
+
expiresAt?: Date;
|
|
58
|
+
/** Initial metadata */
|
|
59
|
+
metadata?: Record<string, unknown>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Subscription update options
|
|
63
|
+
*/
|
|
64
|
+
export interface UpdateSubscriptionOptions {
|
|
65
|
+
/** Update status */
|
|
66
|
+
status?: SubscriptionStatus;
|
|
67
|
+
/** Update webhook config */
|
|
68
|
+
webhookConfig?: Partial<WebhookConfig>;
|
|
69
|
+
/** Update last delivery timestamp */
|
|
70
|
+
lastDeliveryAt?: Date;
|
|
71
|
+
/** Update last success timestamp */
|
|
72
|
+
lastSuccessAt?: Date;
|
|
73
|
+
/** Increment delivery count */
|
|
74
|
+
incrementDeliveryCount?: boolean;
|
|
75
|
+
/** Increment failure count */
|
|
76
|
+
incrementFailureCount?: boolean;
|
|
77
|
+
/** Set consecutive failures */
|
|
78
|
+
consecutiveFailures?: number;
|
|
79
|
+
/** Update last error */
|
|
80
|
+
lastError?: string | null;
|
|
81
|
+
/** Update expiration */
|
|
82
|
+
expiresAt?: Date | null;
|
|
83
|
+
/** Merge metadata */
|
|
84
|
+
metadata?: Record<string, unknown>;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Subscription query options
|
|
88
|
+
*/
|
|
89
|
+
export interface SubscriptionQueryOptions {
|
|
90
|
+
/** Filter by task ID */
|
|
91
|
+
taskId?: string;
|
|
92
|
+
/** Filter by context ID */
|
|
93
|
+
contextId?: string;
|
|
94
|
+
/** Filter by status */
|
|
95
|
+
status?: SubscriptionStatus | SubscriptionStatus[];
|
|
96
|
+
/** Filter by event type */
|
|
97
|
+
event?: WebhookEvent;
|
|
98
|
+
/** Maximum results */
|
|
99
|
+
limit?: number;
|
|
100
|
+
/** Pagination offset */
|
|
101
|
+
offset?: number;
|
|
102
|
+
/** Include expired subscriptions */
|
|
103
|
+
includeExpired?: boolean;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Subscription store statistics
|
|
107
|
+
*/
|
|
108
|
+
export interface SubscriptionStats {
|
|
109
|
+
/** Total subscriptions */
|
|
110
|
+
total: number;
|
|
111
|
+
/** Subscriptions by status */
|
|
112
|
+
byStatus: Record<SubscriptionStatus, number>;
|
|
113
|
+
/** Total deliveries attempted */
|
|
114
|
+
totalDeliveries: number;
|
|
115
|
+
/** Total failed deliveries */
|
|
116
|
+
totalFailures: number;
|
|
117
|
+
/** Unique tasks with subscriptions */
|
|
118
|
+
uniqueTasks: number;
|
|
119
|
+
/** Unique contexts with subscriptions */
|
|
120
|
+
uniqueContexts: number;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Store configuration
|
|
124
|
+
*/
|
|
125
|
+
export interface SubscriptionStoreConfig {
|
|
126
|
+
/** Maximum subscriptions per task */
|
|
127
|
+
maxSubscriptionsPerTask?: number;
|
|
128
|
+
/** Maximum total subscriptions */
|
|
129
|
+
maxTotalSubscriptions?: number;
|
|
130
|
+
/** Default subscription TTL in milliseconds */
|
|
131
|
+
defaultTtlMs?: number;
|
|
132
|
+
/** Consecutive failures before marking failed */
|
|
133
|
+
maxConsecutiveFailures?: number;
|
|
134
|
+
/** Enable automatic cleanup of expired/failed subscriptions */
|
|
135
|
+
enableAutoCleanup?: boolean;
|
|
136
|
+
/** Cleanup interval in milliseconds */
|
|
137
|
+
cleanupIntervalMs?: number;
|
|
138
|
+
}
|
|
139
|
+
export declare const DEFAULT_SUBSCRIPTION_STORE_CONFIG: Required<SubscriptionStoreConfig>;
|
|
140
|
+
/**
|
|
141
|
+
* In-memory subscription store with indexing and automatic cleanup
|
|
142
|
+
*/
|
|
143
|
+
export declare class SubscriptionStore {
|
|
144
|
+
private readonly config;
|
|
145
|
+
private readonly subscriptions;
|
|
146
|
+
private readonly taskIndex;
|
|
147
|
+
private readonly contextIndex;
|
|
148
|
+
private readonly statusIndex;
|
|
149
|
+
private cleanupTimer?;
|
|
150
|
+
constructor(config?: SubscriptionStoreConfig);
|
|
151
|
+
/**
|
|
152
|
+
* Create a new subscription
|
|
153
|
+
*/
|
|
154
|
+
create(taskId: string, webhookConfig: WebhookConfig, options?: CreateSubscriptionOptions): Subscription;
|
|
155
|
+
/**
|
|
156
|
+
* Get a subscription by ID
|
|
157
|
+
*/
|
|
158
|
+
get(subscriptionId: string): Subscription | null;
|
|
159
|
+
/**
|
|
160
|
+
* Get a subscription for a specific task (first active one)
|
|
161
|
+
*/
|
|
162
|
+
getForTask(taskId: string): Subscription | null;
|
|
163
|
+
/**
|
|
164
|
+
* Check if a subscription exists
|
|
165
|
+
*/
|
|
166
|
+
has(subscriptionId: string): boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Update a subscription
|
|
169
|
+
*/
|
|
170
|
+
update(subscriptionId: string, updates: UpdateSubscriptionOptions): Subscription | null;
|
|
171
|
+
/**
|
|
172
|
+
* Record a successful delivery
|
|
173
|
+
*/
|
|
174
|
+
recordSuccess(subscriptionId: string): Subscription | null;
|
|
175
|
+
/**
|
|
176
|
+
* Record a failed delivery
|
|
177
|
+
*/
|
|
178
|
+
recordFailure(subscriptionId: string, error: string): Subscription | null;
|
|
179
|
+
/**
|
|
180
|
+
* Delete a subscription
|
|
181
|
+
*/
|
|
182
|
+
delete(subscriptionId: string): boolean;
|
|
183
|
+
/**
|
|
184
|
+
* Delete all subscriptions for a task
|
|
185
|
+
*/
|
|
186
|
+
deleteForTask(taskId: string): number;
|
|
187
|
+
/**
|
|
188
|
+
* List subscriptions for a task
|
|
189
|
+
*/
|
|
190
|
+
listByTask(taskId: string): Subscription[];
|
|
191
|
+
/**
|
|
192
|
+
* List subscriptions for a context
|
|
193
|
+
*/
|
|
194
|
+
listByContext(contextId: string): Subscription[];
|
|
195
|
+
/**
|
|
196
|
+
* List active subscriptions for a task
|
|
197
|
+
*/
|
|
198
|
+
listActiveByTask(taskId: string): Subscription[];
|
|
199
|
+
/**
|
|
200
|
+
* Query subscriptions with filtering
|
|
201
|
+
*/
|
|
202
|
+
query(options?: SubscriptionQueryOptions): Subscription[];
|
|
203
|
+
/**
|
|
204
|
+
* Get all active subscriptions that should receive a specific event
|
|
205
|
+
*/
|
|
206
|
+
getSubscribersForEvent(taskId: string, event: WebhookEvent): Subscription[];
|
|
207
|
+
/**
|
|
208
|
+
* Get subscription statistics
|
|
209
|
+
*/
|
|
210
|
+
getStats(): SubscriptionStats;
|
|
211
|
+
/**
|
|
212
|
+
* Get total subscription count
|
|
213
|
+
*/
|
|
214
|
+
get size(): number;
|
|
215
|
+
/**
|
|
216
|
+
* Clean up expired subscriptions
|
|
217
|
+
*/
|
|
218
|
+
cleanupExpired(): number;
|
|
219
|
+
/**
|
|
220
|
+
* Clean up failed subscriptions
|
|
221
|
+
*/
|
|
222
|
+
cleanupFailed(): number;
|
|
223
|
+
/**
|
|
224
|
+
* Clear all subscriptions
|
|
225
|
+
*/
|
|
226
|
+
clear(): void;
|
|
227
|
+
/**
|
|
228
|
+
* Destroy the store
|
|
229
|
+
*/
|
|
230
|
+
destroy(): void;
|
|
231
|
+
private generateId;
|
|
232
|
+
private addToTaskIndex;
|
|
233
|
+
private removeFromTaskIndex;
|
|
234
|
+
private addToContextIndex;
|
|
235
|
+
private removeFromContextIndex;
|
|
236
|
+
private startCleanupTimer;
|
|
237
|
+
private stopCleanupTimer;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Create a new subscription store
|
|
241
|
+
*/
|
|
242
|
+
export declare function createSubscriptionStore(config?: SubscriptionStoreConfig): SubscriptionStore;
|
|
243
|
+
//# sourceMappingURL=subscription-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription-store.d.ts","sourceRoot":"","sources":["../../../../src/adapters/a2a/notifications/subscription-store.ts"],"names":[],"mappings":"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"}
|