agentic-qe 3.3.5 → 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/helpers/statusline-v3.cjs +47 -0
- package/.claude/skills/qcsd-ideation-swarm/SKILL.md +7 -4
- package/README.md +69 -0
- package/package.json +1 -1
- package/v3/CHANGELOG.md +91 -0
- package/v3/README.md +117 -0
- 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 +1213 -137
- package/v3/dist/init/init-wizard.d.ts.map +1 -1
- package/v3/dist/init/init-wizard.js +16 -1
- 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/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/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 +97 -0
- package/v3/dist/kernel/unified-memory.d.ts.map +1 -1
- package/v3/dist/kernel/unified-memory.js +204 -0
- package/v3/dist/kernel/unified-memory.js.map +1 -1
- package/v3/dist/mcp/bundle.js +104754 -95005
- 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/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,1083 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AG-UI Event Adapter
|
|
3
|
+
*
|
|
4
|
+
* Maps AQE v3 events to AG-UI Protocol 1.0 event taxonomy.
|
|
5
|
+
* Supports bidirectional event ID mapping and multi-agent scenarios.
|
|
6
|
+
*
|
|
7
|
+
* @module adapters/ag-ui/event-adapter
|
|
8
|
+
*/
|
|
9
|
+
import { EventEmitter } from 'events';
|
|
10
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
11
|
+
import { isAQEToolProgress, isAQEToolResult, isAQEAgentStarted, isAQEAgentCompleted, isAQEAgentError, isAQEDomainEvent, } from './event-types.js';
|
|
12
|
+
import { createEventBatcher, } from './event-batcher.js';
|
|
13
|
+
/**
|
|
14
|
+
* Default configuration values
|
|
15
|
+
*/
|
|
16
|
+
const DEFAULT_CONFIG = {
|
|
17
|
+
defaultThreadId: 'default',
|
|
18
|
+
emitRawForUnknown: true,
|
|
19
|
+
trackMessageState: true,
|
|
20
|
+
trackActivityState: true,
|
|
21
|
+
eventIdGenerator: () => uuidv4(),
|
|
22
|
+
timestampGenerator: () => new Date().toISOString(),
|
|
23
|
+
validateEvents: true,
|
|
24
|
+
maxBufferSize: 1000,
|
|
25
|
+
enableBatching: true,
|
|
26
|
+
batcherConfig: {},
|
|
27
|
+
};
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Event Adapter Implementation
|
|
30
|
+
// ============================================================================
|
|
31
|
+
/**
|
|
32
|
+
* AG-UI Event Adapter
|
|
33
|
+
*
|
|
34
|
+
* Adapts AQE v3 events to AG-UI Protocol 1.0 event format.
|
|
35
|
+
* Emits events via EventEmitter pattern for streaming support.
|
|
36
|
+
*/
|
|
37
|
+
export class EventAdapter extends EventEmitter {
|
|
38
|
+
config;
|
|
39
|
+
// ID Mapping (bidirectional)
|
|
40
|
+
aqeToAgui = new Map();
|
|
41
|
+
aguiToAqe = new Map();
|
|
42
|
+
idMappings = [];
|
|
43
|
+
// Run tracking
|
|
44
|
+
activeRuns = new Map();
|
|
45
|
+
currentRunId = null;
|
|
46
|
+
// Message tracking
|
|
47
|
+
messageStates = new Map();
|
|
48
|
+
// Tool call tracking
|
|
49
|
+
toolCallStates = new Map();
|
|
50
|
+
// Activity tracking
|
|
51
|
+
activities = [];
|
|
52
|
+
// Event buffer for streaming
|
|
53
|
+
eventBuffer = [];
|
|
54
|
+
// Step progress tracking (for ToolProgress -> STEP events)
|
|
55
|
+
stepProgress = new Map();
|
|
56
|
+
// Event batcher for reduced network overhead
|
|
57
|
+
eventBatcher;
|
|
58
|
+
constructor(config = {}) {
|
|
59
|
+
super();
|
|
60
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
61
|
+
// Initialize event batcher for batched event emission
|
|
62
|
+
if (this.config.enableBatching) {
|
|
63
|
+
this.eventBatcher = createEventBatcher({
|
|
64
|
+
...this.config.batcherConfig,
|
|
65
|
+
onFlush: (batch) => this.handleBatchFlush(batch),
|
|
66
|
+
});
|
|
67
|
+
// Forward batcher events
|
|
68
|
+
this.eventBatcher.on('batch', (batch) => {
|
|
69
|
+
this.emit('batch', batch);
|
|
70
|
+
});
|
|
71
|
+
this.eventBatcher.on('single', (event) => {
|
|
72
|
+
this.emit('single', event);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.eventBatcher = null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Handle batch flush - emit batch to consumers
|
|
81
|
+
*/
|
|
82
|
+
handleBatchFlush(batch) {
|
|
83
|
+
// Emit the entire batch for consumers that support batching
|
|
84
|
+
this.emit('batchFlush', batch);
|
|
85
|
+
// Also emit individual events for backward compatibility
|
|
86
|
+
for (const event of batch.events) {
|
|
87
|
+
this.emit('event', event);
|
|
88
|
+
this.emit(event.type, event);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// ============================================================================
|
|
92
|
+
// Main Adaptation Method
|
|
93
|
+
// ============================================================================
|
|
94
|
+
/**
|
|
95
|
+
* Adapt an AQE event to AG-UI events
|
|
96
|
+
*
|
|
97
|
+
* @param event - Source AQE event
|
|
98
|
+
* @returns Array of AG-UI events (may be empty or multiple)
|
|
99
|
+
*/
|
|
100
|
+
adapt(event) {
|
|
101
|
+
const events = [];
|
|
102
|
+
try {
|
|
103
|
+
if (isAQEToolProgress(event)) {
|
|
104
|
+
events.push(...this.adaptToolProgress(event));
|
|
105
|
+
}
|
|
106
|
+
else if (isAQEToolResult(event)) {
|
|
107
|
+
events.push(...this.adaptToolResult(event));
|
|
108
|
+
}
|
|
109
|
+
else if (isAQEAgentStarted(event)) {
|
|
110
|
+
events.push(...this.adaptAgentStarted(event));
|
|
111
|
+
}
|
|
112
|
+
else if (isAQEAgentCompleted(event)) {
|
|
113
|
+
events.push(...this.adaptAgentCompleted(event));
|
|
114
|
+
}
|
|
115
|
+
else if (isAQEAgentError(event)) {
|
|
116
|
+
events.push(...this.adaptAgentError(event));
|
|
117
|
+
}
|
|
118
|
+
else if (isAQEDomainEvent(event)) {
|
|
119
|
+
events.push(...this.adaptDomainEvent(event));
|
|
120
|
+
}
|
|
121
|
+
else if (this.config.emitRawForUnknown) {
|
|
122
|
+
events.push(this.createRawEvent(event));
|
|
123
|
+
}
|
|
124
|
+
// Validate and emit events
|
|
125
|
+
for (const aguiEvent of events) {
|
|
126
|
+
if (this.config.validateEvents) {
|
|
127
|
+
this.validateEvent(aguiEvent);
|
|
128
|
+
}
|
|
129
|
+
this.emitEvent(aguiEvent);
|
|
130
|
+
this.bufferEvent(aguiEvent);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
this.emit('error', error);
|
|
135
|
+
}
|
|
136
|
+
return events;
|
|
137
|
+
}
|
|
138
|
+
// ============================================================================
|
|
139
|
+
// Adaptation Methods by Event Type
|
|
140
|
+
// ============================================================================
|
|
141
|
+
/**
|
|
142
|
+
* Adapt ToolProgress to STEP_STARTED / TEXT_MESSAGE_CONTENT
|
|
143
|
+
*/
|
|
144
|
+
adaptToolProgress(event) {
|
|
145
|
+
const events = [];
|
|
146
|
+
const runId = this.currentRunId ?? this.createOrGetRunId();
|
|
147
|
+
const stepId = event.stepId ?? this.generateId();
|
|
148
|
+
// Check if this is a new step or continuation
|
|
149
|
+
const existingProgress = this.stepProgress.get(stepId);
|
|
150
|
+
const isNewStep = existingProgress === undefined;
|
|
151
|
+
if (isNewStep) {
|
|
152
|
+
// Emit STEP_STARTED for new steps
|
|
153
|
+
const stepStarted = {
|
|
154
|
+
type: 'STEP_STARTED',
|
|
155
|
+
eventId: this.generateEventId(),
|
|
156
|
+
timestamp: this.generateTimestamp(),
|
|
157
|
+
runId,
|
|
158
|
+
stepId,
|
|
159
|
+
name: event.toolName ?? 'Processing',
|
|
160
|
+
metadata: {
|
|
161
|
+
initialProgress: event.percent,
|
|
162
|
+
message: event.message,
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
events.push(stepStarted);
|
|
166
|
+
// Track step in active run
|
|
167
|
+
const runContext = this.activeRuns.get(runId);
|
|
168
|
+
if (runContext) {
|
|
169
|
+
runContext.activeSteps.add(stepId);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Update progress tracking
|
|
173
|
+
this.stepProgress.set(stepId, event.percent);
|
|
174
|
+
// Emit TEXT_MESSAGE_CONTENT for progress updates
|
|
175
|
+
const messageId = this.getOrCreateMessageId(stepId);
|
|
176
|
+
const contentEvent = {
|
|
177
|
+
type: 'TEXT_MESSAGE_CONTENT',
|
|
178
|
+
eventId: this.generateEventId(),
|
|
179
|
+
timestamp: this.generateTimestamp(),
|
|
180
|
+
messageId,
|
|
181
|
+
delta: event.message,
|
|
182
|
+
};
|
|
183
|
+
events.push(contentEvent);
|
|
184
|
+
// Emit STEP_FINISHED if 100% complete
|
|
185
|
+
if (event.percent >= 100) {
|
|
186
|
+
const stepFinished = {
|
|
187
|
+
type: 'STEP_FINISHED',
|
|
188
|
+
eventId: this.generateEventId(),
|
|
189
|
+
timestamp: this.generateTimestamp(),
|
|
190
|
+
runId,
|
|
191
|
+
stepId,
|
|
192
|
+
result: { message: event.message, percent: event.percent },
|
|
193
|
+
};
|
|
194
|
+
events.push(stepFinished);
|
|
195
|
+
// Clean up tracking
|
|
196
|
+
this.stepProgress.delete(stepId);
|
|
197
|
+
const runContext = this.activeRuns.get(runId);
|
|
198
|
+
if (runContext) {
|
|
199
|
+
runContext.activeSteps.delete(stepId);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return events;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Adapt ToolResult to TOOL_CALL_RESULT
|
|
206
|
+
*/
|
|
207
|
+
adaptToolResult(event) {
|
|
208
|
+
const events = [];
|
|
209
|
+
const toolCallId = event.metadata?.requestId ?? this.generateId();
|
|
210
|
+
const messageId = this.generateId();
|
|
211
|
+
// Create TOOL_CALL_RESULT
|
|
212
|
+
const resultEvent = {
|
|
213
|
+
type: 'TOOL_CALL_RESULT',
|
|
214
|
+
eventId: this.generateEventId(),
|
|
215
|
+
timestamp: this.generateTimestamp(),
|
|
216
|
+
runId: this.currentRunId ?? undefined,
|
|
217
|
+
toolCallId,
|
|
218
|
+
messageId,
|
|
219
|
+
content: JSON.stringify(event.data ?? {}),
|
|
220
|
+
success: event.success,
|
|
221
|
+
error: event.error,
|
|
222
|
+
};
|
|
223
|
+
events.push(resultEvent);
|
|
224
|
+
// Update tool call state
|
|
225
|
+
const toolCallState = this.toolCallStates.get(toolCallId);
|
|
226
|
+
if (toolCallState) {
|
|
227
|
+
toolCallState.complete = true;
|
|
228
|
+
toolCallState.result = resultEvent.content;
|
|
229
|
+
}
|
|
230
|
+
// Store ID mapping
|
|
231
|
+
if (event.metadata?.requestId) {
|
|
232
|
+
this.storeIdMapping(event.metadata.requestId, toolCallId, 'tool_call');
|
|
233
|
+
}
|
|
234
|
+
return events;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Adapt AgentStarted to RUN_STARTED
|
|
238
|
+
*/
|
|
239
|
+
adaptAgentStarted(event) {
|
|
240
|
+
const runId = this.generateId();
|
|
241
|
+
const threadId = this.config.defaultThreadId;
|
|
242
|
+
// Create run context
|
|
243
|
+
const runContext = {
|
|
244
|
+
runId,
|
|
245
|
+
threadId,
|
|
246
|
+
startedAt: event.timestamp,
|
|
247
|
+
agentId: event.agentId,
|
|
248
|
+
domain: event.domain,
|
|
249
|
+
activeSteps: new Set(),
|
|
250
|
+
activeMessages: new Set(),
|
|
251
|
+
activeToolCalls: new Set(),
|
|
252
|
+
};
|
|
253
|
+
this.activeRuns.set(runId, runContext);
|
|
254
|
+
this.currentRunId = runId;
|
|
255
|
+
// Store ID mapping
|
|
256
|
+
this.storeIdMapping(event.agentId, runId, 'run');
|
|
257
|
+
// Create RUN_STARTED event
|
|
258
|
+
const runStarted = {
|
|
259
|
+
type: 'RUN_STARTED',
|
|
260
|
+
eventId: this.generateEventId(),
|
|
261
|
+
timestamp: this.generateTimestamp(),
|
|
262
|
+
threadId,
|
|
263
|
+
runId,
|
|
264
|
+
input: event.task,
|
|
265
|
+
metadata: {
|
|
266
|
+
agentId: event.agentId,
|
|
267
|
+
domain: event.domain,
|
|
268
|
+
},
|
|
269
|
+
};
|
|
270
|
+
return [runStarted];
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Adapt AgentCompleted to RUN_FINISHED
|
|
274
|
+
*/
|
|
275
|
+
adaptAgentCompleted(event) {
|
|
276
|
+
const runId = this.getAguiId(event.agentId) ?? this.currentRunId ?? this.generateId();
|
|
277
|
+
// Create RUN_FINISHED event
|
|
278
|
+
const runFinished = {
|
|
279
|
+
type: 'RUN_FINISHED',
|
|
280
|
+
eventId: this.generateEventId(),
|
|
281
|
+
timestamp: this.generateTimestamp(),
|
|
282
|
+
runId,
|
|
283
|
+
outcome: 'success',
|
|
284
|
+
result: event.result,
|
|
285
|
+
};
|
|
286
|
+
// Clean up run context
|
|
287
|
+
this.activeRuns.delete(runId);
|
|
288
|
+
if (this.currentRunId === runId) {
|
|
289
|
+
this.currentRunId = null;
|
|
290
|
+
}
|
|
291
|
+
return [runFinished];
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Adapt AgentError to RUN_ERROR
|
|
295
|
+
*/
|
|
296
|
+
adaptAgentError(event) {
|
|
297
|
+
const runId = this.getAguiId(event.agentId) ?? this.currentRunId ?? this.generateId();
|
|
298
|
+
// Create RUN_ERROR event
|
|
299
|
+
const runError = {
|
|
300
|
+
type: 'RUN_ERROR',
|
|
301
|
+
eventId: this.generateEventId(),
|
|
302
|
+
timestamp: this.generateTimestamp(),
|
|
303
|
+
runId,
|
|
304
|
+
message: event.error,
|
|
305
|
+
code: event.code ?? 'AGENT_ERROR',
|
|
306
|
+
recoverable: event.recoverable,
|
|
307
|
+
};
|
|
308
|
+
// Clean up run context
|
|
309
|
+
this.activeRuns.delete(runId);
|
|
310
|
+
if (this.currentRunId === runId) {
|
|
311
|
+
this.currentRunId = null;
|
|
312
|
+
}
|
|
313
|
+
return [runError];
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Adapt DomainEvent to appropriate AG-UI events
|
|
317
|
+
*/
|
|
318
|
+
adaptDomainEvent(event) {
|
|
319
|
+
const events = [];
|
|
320
|
+
// Map domain event types to AG-UI events
|
|
321
|
+
const eventType = event.type.toLowerCase();
|
|
322
|
+
if (eventType.includes('started') || eventType.includes('running')) {
|
|
323
|
+
// Map to STEP_STARTED
|
|
324
|
+
const stepId = event.id;
|
|
325
|
+
const stepStarted = {
|
|
326
|
+
type: 'STEP_STARTED',
|
|
327
|
+
eventId: this.generateEventId(),
|
|
328
|
+
timestamp: this.generateTimestamp(),
|
|
329
|
+
runId: this.currentRunId ?? this.createOrGetRunId(),
|
|
330
|
+
stepId,
|
|
331
|
+
name: event.type,
|
|
332
|
+
metadata: event.payload,
|
|
333
|
+
};
|
|
334
|
+
events.push(stepStarted);
|
|
335
|
+
this.storeIdMapping(event.id, stepId, 'step');
|
|
336
|
+
}
|
|
337
|
+
else if (eventType.includes('completed') || eventType.includes('finished')) {
|
|
338
|
+
// Map to STEP_FINISHED
|
|
339
|
+
const stepId = this.getAguiId(event.id) ?? event.id;
|
|
340
|
+
const stepFinished = {
|
|
341
|
+
type: 'STEP_FINISHED',
|
|
342
|
+
eventId: this.generateEventId(),
|
|
343
|
+
timestamp: this.generateTimestamp(),
|
|
344
|
+
runId: this.currentRunId ?? this.config.defaultThreadId,
|
|
345
|
+
stepId,
|
|
346
|
+
result: event.payload,
|
|
347
|
+
};
|
|
348
|
+
events.push(stepFinished);
|
|
349
|
+
}
|
|
350
|
+
else if (eventType.includes('error') || eventType.includes('failed')) {
|
|
351
|
+
// Map to RUN_ERROR if no active run, otherwise STEP_FINISHED with error
|
|
352
|
+
if (this.currentRunId) {
|
|
353
|
+
const stepId = this.getAguiId(event.id) ?? event.id;
|
|
354
|
+
const stepFinished = {
|
|
355
|
+
type: 'STEP_FINISHED',
|
|
356
|
+
eventId: this.generateEventId(),
|
|
357
|
+
timestamp: this.generateTimestamp(),
|
|
358
|
+
runId: this.currentRunId,
|
|
359
|
+
stepId,
|
|
360
|
+
result: { error: event.payload },
|
|
361
|
+
};
|
|
362
|
+
events.push(stepFinished);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
// Default: emit as CUSTOM event
|
|
367
|
+
const customEvent = {
|
|
368
|
+
type: 'CUSTOM',
|
|
369
|
+
eventId: this.generateEventId(),
|
|
370
|
+
timestamp: this.generateTimestamp(),
|
|
371
|
+
runId: this.currentRunId ?? undefined,
|
|
372
|
+
name: event.type,
|
|
373
|
+
value: event.payload,
|
|
374
|
+
};
|
|
375
|
+
events.push(customEvent);
|
|
376
|
+
}
|
|
377
|
+
return events;
|
|
378
|
+
}
|
|
379
|
+
// ============================================================================
|
|
380
|
+
// Direct Event Emission Methods
|
|
381
|
+
// ============================================================================
|
|
382
|
+
/**
|
|
383
|
+
* Emit RUN_STARTED event directly
|
|
384
|
+
*/
|
|
385
|
+
emitRunStarted(threadId, runId, input) {
|
|
386
|
+
const id = runId ?? this.generateId();
|
|
387
|
+
// Create run context
|
|
388
|
+
const runContext = {
|
|
389
|
+
runId: id,
|
|
390
|
+
threadId,
|
|
391
|
+
startedAt: this.generateTimestamp(),
|
|
392
|
+
activeSteps: new Set(),
|
|
393
|
+
activeMessages: new Set(),
|
|
394
|
+
activeToolCalls: new Set(),
|
|
395
|
+
};
|
|
396
|
+
this.activeRuns.set(id, runContext);
|
|
397
|
+
this.currentRunId = id;
|
|
398
|
+
const event = {
|
|
399
|
+
type: 'RUN_STARTED',
|
|
400
|
+
eventId: this.generateEventId(),
|
|
401
|
+
timestamp: this.generateTimestamp(),
|
|
402
|
+
threadId,
|
|
403
|
+
runId: id,
|
|
404
|
+
input,
|
|
405
|
+
};
|
|
406
|
+
this.emitEvent(event);
|
|
407
|
+
this.bufferEvent(event);
|
|
408
|
+
return event;
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Emit RUN_FINISHED event directly
|
|
412
|
+
*/
|
|
413
|
+
emitRunFinished(runId, outcome = 'success', result) {
|
|
414
|
+
const event = {
|
|
415
|
+
type: 'RUN_FINISHED',
|
|
416
|
+
eventId: this.generateEventId(),
|
|
417
|
+
timestamp: this.generateTimestamp(),
|
|
418
|
+
runId,
|
|
419
|
+
outcome,
|
|
420
|
+
result,
|
|
421
|
+
};
|
|
422
|
+
// Clean up
|
|
423
|
+
this.activeRuns.delete(runId);
|
|
424
|
+
if (this.currentRunId === runId) {
|
|
425
|
+
this.currentRunId = null;
|
|
426
|
+
}
|
|
427
|
+
this.emitEvent(event);
|
|
428
|
+
this.bufferEvent(event);
|
|
429
|
+
return event;
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Emit RUN_ERROR event directly
|
|
433
|
+
*/
|
|
434
|
+
emitRunError(runId, message, code, recoverable = false) {
|
|
435
|
+
const event = {
|
|
436
|
+
type: 'RUN_ERROR',
|
|
437
|
+
eventId: this.generateEventId(),
|
|
438
|
+
timestamp: this.generateTimestamp(),
|
|
439
|
+
runId,
|
|
440
|
+
message,
|
|
441
|
+
code,
|
|
442
|
+
recoverable,
|
|
443
|
+
};
|
|
444
|
+
// Clean up
|
|
445
|
+
this.activeRuns.delete(runId);
|
|
446
|
+
if (this.currentRunId === runId) {
|
|
447
|
+
this.currentRunId = null;
|
|
448
|
+
}
|
|
449
|
+
this.emitEvent(event);
|
|
450
|
+
this.bufferEvent(event);
|
|
451
|
+
return event;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Emit STEP_STARTED event directly
|
|
455
|
+
*/
|
|
456
|
+
emitStepStarted(stepId, name, runId) {
|
|
457
|
+
const rid = runId ?? this.currentRunId ?? this.createOrGetRunId();
|
|
458
|
+
const event = {
|
|
459
|
+
type: 'STEP_STARTED',
|
|
460
|
+
eventId: this.generateEventId(),
|
|
461
|
+
timestamp: this.generateTimestamp(),
|
|
462
|
+
runId: rid,
|
|
463
|
+
stepId,
|
|
464
|
+
name,
|
|
465
|
+
};
|
|
466
|
+
// Track in run context
|
|
467
|
+
const runContext = this.activeRuns.get(rid);
|
|
468
|
+
if (runContext) {
|
|
469
|
+
runContext.activeSteps.add(stepId);
|
|
470
|
+
}
|
|
471
|
+
this.emitEvent(event);
|
|
472
|
+
this.bufferEvent(event);
|
|
473
|
+
return event;
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Emit STEP_FINISHED event directly
|
|
477
|
+
*/
|
|
478
|
+
emitStepFinished(stepId, result, runId) {
|
|
479
|
+
const rid = runId ?? this.currentRunId ?? this.config.defaultThreadId;
|
|
480
|
+
const event = {
|
|
481
|
+
type: 'STEP_FINISHED',
|
|
482
|
+
eventId: this.generateEventId(),
|
|
483
|
+
timestamp: this.generateTimestamp(),
|
|
484
|
+
runId: rid,
|
|
485
|
+
stepId,
|
|
486
|
+
result,
|
|
487
|
+
};
|
|
488
|
+
// Remove from run context
|
|
489
|
+
const runContext = this.activeRuns.get(rid);
|
|
490
|
+
if (runContext) {
|
|
491
|
+
runContext.activeSteps.delete(stepId);
|
|
492
|
+
}
|
|
493
|
+
this.emitEvent(event);
|
|
494
|
+
this.bufferEvent(event);
|
|
495
|
+
return event;
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Emit TEXT_MESSAGE_START event directly
|
|
499
|
+
*/
|
|
500
|
+
emitTextMessageStart(messageId, role = 'assistant') {
|
|
501
|
+
const event = {
|
|
502
|
+
type: 'TEXT_MESSAGE_START',
|
|
503
|
+
eventId: this.generateEventId(),
|
|
504
|
+
timestamp: this.generateTimestamp(),
|
|
505
|
+
runId: this.currentRunId ?? undefined,
|
|
506
|
+
messageId,
|
|
507
|
+
role,
|
|
508
|
+
};
|
|
509
|
+
// Track message state
|
|
510
|
+
if (this.config.trackMessageState) {
|
|
511
|
+
this.messageStates.set(messageId, {
|
|
512
|
+
messageId,
|
|
513
|
+
content: '',
|
|
514
|
+
role,
|
|
515
|
+
startedAt: event.timestamp,
|
|
516
|
+
complete: false,
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
this.emitEvent(event);
|
|
520
|
+
this.bufferEvent(event);
|
|
521
|
+
return event;
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Emit TEXT_MESSAGE_CONTENT event directly
|
|
525
|
+
*/
|
|
526
|
+
emitTextMessageContent(messageId, delta) {
|
|
527
|
+
const event = {
|
|
528
|
+
type: 'TEXT_MESSAGE_CONTENT',
|
|
529
|
+
eventId: this.generateEventId(),
|
|
530
|
+
timestamp: this.generateTimestamp(),
|
|
531
|
+
messageId,
|
|
532
|
+
delta,
|
|
533
|
+
};
|
|
534
|
+
// Update message state
|
|
535
|
+
if (this.config.trackMessageState) {
|
|
536
|
+
const state = this.messageStates.get(messageId);
|
|
537
|
+
if (state) {
|
|
538
|
+
state.content += delta;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
this.emitEvent(event);
|
|
542
|
+
this.bufferEvent(event);
|
|
543
|
+
return event;
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Emit TEXT_MESSAGE_END event directly
|
|
547
|
+
*/
|
|
548
|
+
emitTextMessageEnd(messageId) {
|
|
549
|
+
// Get accumulated content
|
|
550
|
+
const state = this.messageStates.get(messageId);
|
|
551
|
+
const content = state?.content;
|
|
552
|
+
const event = {
|
|
553
|
+
type: 'TEXT_MESSAGE_END',
|
|
554
|
+
eventId: this.generateEventId(),
|
|
555
|
+
timestamp: this.generateTimestamp(),
|
|
556
|
+
messageId,
|
|
557
|
+
content,
|
|
558
|
+
};
|
|
559
|
+
// Update message state
|
|
560
|
+
if (state) {
|
|
561
|
+
state.complete = true;
|
|
562
|
+
}
|
|
563
|
+
this.emitEvent(event);
|
|
564
|
+
this.bufferEvent(event);
|
|
565
|
+
return event;
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Emit TOOL_CALL_START event directly
|
|
569
|
+
*/
|
|
570
|
+
emitToolCallStart(toolCallId, toolCallName, parentMessageId) {
|
|
571
|
+
const event = {
|
|
572
|
+
type: 'TOOL_CALL_START',
|
|
573
|
+
eventId: this.generateEventId(),
|
|
574
|
+
timestamp: this.generateTimestamp(),
|
|
575
|
+
runId: this.currentRunId ?? undefined,
|
|
576
|
+
toolCallId,
|
|
577
|
+
toolCallName,
|
|
578
|
+
parentMessageId,
|
|
579
|
+
};
|
|
580
|
+
// Track tool call state
|
|
581
|
+
this.toolCallStates.set(toolCallId, {
|
|
582
|
+
toolCallId,
|
|
583
|
+
toolName: toolCallName,
|
|
584
|
+
argsJson: '',
|
|
585
|
+
startedAt: event.timestamp,
|
|
586
|
+
complete: false,
|
|
587
|
+
});
|
|
588
|
+
// Track in run context
|
|
589
|
+
const runContext = this.activeRuns.get(this.currentRunId ?? '');
|
|
590
|
+
if (runContext) {
|
|
591
|
+
runContext.activeToolCalls.add(toolCallId);
|
|
592
|
+
}
|
|
593
|
+
this.emitEvent(event);
|
|
594
|
+
this.bufferEvent(event);
|
|
595
|
+
return event;
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* Emit TOOL_CALL_ARGS event directly
|
|
599
|
+
*/
|
|
600
|
+
emitToolCallArgs(toolCallId, delta) {
|
|
601
|
+
const event = {
|
|
602
|
+
type: 'TOOL_CALL_ARGS',
|
|
603
|
+
eventId: this.generateEventId(),
|
|
604
|
+
timestamp: this.generateTimestamp(),
|
|
605
|
+
toolCallId,
|
|
606
|
+
delta,
|
|
607
|
+
};
|
|
608
|
+
// Update tool call state
|
|
609
|
+
const state = this.toolCallStates.get(toolCallId);
|
|
610
|
+
if (state) {
|
|
611
|
+
state.argsJson += delta;
|
|
612
|
+
}
|
|
613
|
+
this.emitEvent(event);
|
|
614
|
+
this.bufferEvent(event);
|
|
615
|
+
return event;
|
|
616
|
+
}
|
|
617
|
+
/**
|
|
618
|
+
* Emit TOOL_CALL_END event directly
|
|
619
|
+
*/
|
|
620
|
+
emitToolCallEnd(toolCallId) {
|
|
621
|
+
// Get accumulated args
|
|
622
|
+
const state = this.toolCallStates.get(toolCallId);
|
|
623
|
+
let args;
|
|
624
|
+
if (state) {
|
|
625
|
+
try {
|
|
626
|
+
args = JSON.parse(state.argsJson);
|
|
627
|
+
state.args = args;
|
|
628
|
+
}
|
|
629
|
+
catch {
|
|
630
|
+
// Invalid JSON, leave args undefined
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
const event = {
|
|
634
|
+
type: 'TOOL_CALL_END',
|
|
635
|
+
eventId: this.generateEventId(),
|
|
636
|
+
timestamp: this.generateTimestamp(),
|
|
637
|
+
toolCallId,
|
|
638
|
+
args,
|
|
639
|
+
};
|
|
640
|
+
this.emitEvent(event);
|
|
641
|
+
this.bufferEvent(event);
|
|
642
|
+
return event;
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Emit TOOL_CALL_RESULT event directly
|
|
646
|
+
*/
|
|
647
|
+
emitToolCallResult(toolCallId, content, messageId, success = true) {
|
|
648
|
+
const mid = messageId ?? this.generateId();
|
|
649
|
+
const event = {
|
|
650
|
+
type: 'TOOL_CALL_RESULT',
|
|
651
|
+
eventId: this.generateEventId(),
|
|
652
|
+
timestamp: this.generateTimestamp(),
|
|
653
|
+
toolCallId,
|
|
654
|
+
messageId: mid,
|
|
655
|
+
content,
|
|
656
|
+
success,
|
|
657
|
+
};
|
|
658
|
+
// Update tool call state
|
|
659
|
+
const state = this.toolCallStates.get(toolCallId);
|
|
660
|
+
if (state) {
|
|
661
|
+
state.complete = true;
|
|
662
|
+
state.result = content;
|
|
663
|
+
}
|
|
664
|
+
// Remove from run context
|
|
665
|
+
const runContext = this.activeRuns.get(this.currentRunId ?? '');
|
|
666
|
+
if (runContext) {
|
|
667
|
+
runContext.activeToolCalls.delete(toolCallId);
|
|
668
|
+
}
|
|
669
|
+
this.emitEvent(event);
|
|
670
|
+
this.bufferEvent(event);
|
|
671
|
+
return event;
|
|
672
|
+
}
|
|
673
|
+
/**
|
|
674
|
+
* Emit STATE_SNAPSHOT event directly
|
|
675
|
+
*/
|
|
676
|
+
emitStateSnapshot(state, version) {
|
|
677
|
+
const event = {
|
|
678
|
+
type: 'STATE_SNAPSHOT',
|
|
679
|
+
eventId: this.generateEventId(),
|
|
680
|
+
timestamp: this.generateTimestamp(),
|
|
681
|
+
runId: this.currentRunId ?? undefined,
|
|
682
|
+
state,
|
|
683
|
+
version,
|
|
684
|
+
};
|
|
685
|
+
this.emitEvent(event);
|
|
686
|
+
this.bufferEvent(event);
|
|
687
|
+
return event;
|
|
688
|
+
}
|
|
689
|
+
/**
|
|
690
|
+
* Emit STATE_DELTA event directly
|
|
691
|
+
*/
|
|
692
|
+
emitStateDelta(delta, version) {
|
|
693
|
+
const event = {
|
|
694
|
+
type: 'STATE_DELTA',
|
|
695
|
+
eventId: this.generateEventId(),
|
|
696
|
+
timestamp: this.generateTimestamp(),
|
|
697
|
+
runId: this.currentRunId ?? undefined,
|
|
698
|
+
delta,
|
|
699
|
+
version,
|
|
700
|
+
};
|
|
701
|
+
this.emitEvent(event);
|
|
702
|
+
this.bufferEvent(event);
|
|
703
|
+
return event;
|
|
704
|
+
}
|
|
705
|
+
/**
|
|
706
|
+
* Emit MESSAGES_SNAPSHOT event directly
|
|
707
|
+
*/
|
|
708
|
+
emitMessagesSnapshot(messages) {
|
|
709
|
+
const event = {
|
|
710
|
+
type: 'MESSAGES_SNAPSHOT',
|
|
711
|
+
eventId: this.generateEventId(),
|
|
712
|
+
timestamp: this.generateTimestamp(),
|
|
713
|
+
runId: this.currentRunId ?? undefined,
|
|
714
|
+
messages,
|
|
715
|
+
};
|
|
716
|
+
this.emitEvent(event);
|
|
717
|
+
this.bufferEvent(event);
|
|
718
|
+
return event;
|
|
719
|
+
}
|
|
720
|
+
/**
|
|
721
|
+
* Emit ACTIVITY_SNAPSHOT event directly
|
|
722
|
+
*/
|
|
723
|
+
emitActivitySnapshot(activity, replace = false) {
|
|
724
|
+
const event = {
|
|
725
|
+
type: 'ACTIVITY_SNAPSHOT',
|
|
726
|
+
eventId: this.generateEventId(),
|
|
727
|
+
timestamp: this.generateTimestamp(),
|
|
728
|
+
runId: this.currentRunId ?? undefined,
|
|
729
|
+
activity,
|
|
730
|
+
replace,
|
|
731
|
+
};
|
|
732
|
+
// Update activity tracking
|
|
733
|
+
if (this.config.trackActivityState) {
|
|
734
|
+
if (replace) {
|
|
735
|
+
this.activities = [...activity];
|
|
736
|
+
}
|
|
737
|
+
else {
|
|
738
|
+
this.activities.push(...activity);
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
this.emitEvent(event);
|
|
742
|
+
this.bufferEvent(event);
|
|
743
|
+
return event;
|
|
744
|
+
}
|
|
745
|
+
/**
|
|
746
|
+
* Emit ACTIVITY_DELTA event directly
|
|
747
|
+
*/
|
|
748
|
+
emitActivityDelta(delta) {
|
|
749
|
+
const event = {
|
|
750
|
+
type: 'ACTIVITY_DELTA',
|
|
751
|
+
eventId: this.generateEventId(),
|
|
752
|
+
timestamp: this.generateTimestamp(),
|
|
753
|
+
runId: this.currentRunId ?? undefined,
|
|
754
|
+
delta,
|
|
755
|
+
};
|
|
756
|
+
this.emitEvent(event);
|
|
757
|
+
this.bufferEvent(event);
|
|
758
|
+
return event;
|
|
759
|
+
}
|
|
760
|
+
/**
|
|
761
|
+
* Emit RAW event directly
|
|
762
|
+
*/
|
|
763
|
+
emitRaw(rawEvent, source) {
|
|
764
|
+
const event = {
|
|
765
|
+
type: 'RAW',
|
|
766
|
+
eventId: this.generateEventId(),
|
|
767
|
+
timestamp: this.generateTimestamp(),
|
|
768
|
+
runId: this.currentRunId ?? undefined,
|
|
769
|
+
event: rawEvent,
|
|
770
|
+
source,
|
|
771
|
+
};
|
|
772
|
+
this.emitEvent(event);
|
|
773
|
+
this.bufferEvent(event);
|
|
774
|
+
return event;
|
|
775
|
+
}
|
|
776
|
+
/**
|
|
777
|
+
* Emit CUSTOM event directly
|
|
778
|
+
*/
|
|
779
|
+
emitCustom(name, value) {
|
|
780
|
+
const event = {
|
|
781
|
+
type: 'CUSTOM',
|
|
782
|
+
eventId: this.generateEventId(),
|
|
783
|
+
timestamp: this.generateTimestamp(),
|
|
784
|
+
runId: this.currentRunId ?? undefined,
|
|
785
|
+
name,
|
|
786
|
+
value,
|
|
787
|
+
};
|
|
788
|
+
this.emitEvent(event);
|
|
789
|
+
this.bufferEvent(event);
|
|
790
|
+
return event;
|
|
791
|
+
}
|
|
792
|
+
// ============================================================================
|
|
793
|
+
// ID Mapping Methods
|
|
794
|
+
// ============================================================================
|
|
795
|
+
/**
|
|
796
|
+
* Get AG-UI ID for an AQE ID
|
|
797
|
+
*/
|
|
798
|
+
getAguiId(aqeId) {
|
|
799
|
+
return this.aqeToAgui.get(aqeId);
|
|
800
|
+
}
|
|
801
|
+
/**
|
|
802
|
+
* Get AQE ID for an AG-UI ID
|
|
803
|
+
*/
|
|
804
|
+
getAqeId(aguiId) {
|
|
805
|
+
return this.aguiToAqe.get(aguiId);
|
|
806
|
+
}
|
|
807
|
+
/**
|
|
808
|
+
* Get all ID mappings
|
|
809
|
+
*/
|
|
810
|
+
getIdMappings() {
|
|
811
|
+
return [...this.idMappings];
|
|
812
|
+
}
|
|
813
|
+
/**
|
|
814
|
+
* Store bidirectional ID mapping
|
|
815
|
+
*/
|
|
816
|
+
storeIdMapping(aqeId, aguiId, eventType) {
|
|
817
|
+
this.aqeToAgui.set(aqeId, aguiId);
|
|
818
|
+
this.aguiToAqe.set(aguiId, aqeId);
|
|
819
|
+
this.idMappings.push({
|
|
820
|
+
aqeId,
|
|
821
|
+
aguiId,
|
|
822
|
+
createdAt: this.generateTimestamp(),
|
|
823
|
+
eventType,
|
|
824
|
+
});
|
|
825
|
+
}
|
|
826
|
+
// ============================================================================
|
|
827
|
+
// State Accessors
|
|
828
|
+
// ============================================================================
|
|
829
|
+
/**
|
|
830
|
+
* Get current run ID
|
|
831
|
+
*/
|
|
832
|
+
getCurrentRunId() {
|
|
833
|
+
return this.currentRunId;
|
|
834
|
+
}
|
|
835
|
+
/**
|
|
836
|
+
* Get active runs
|
|
837
|
+
*/
|
|
838
|
+
getActiveRuns() {
|
|
839
|
+
return new Map(this.activeRuns);
|
|
840
|
+
}
|
|
841
|
+
/**
|
|
842
|
+
* Get message state
|
|
843
|
+
*/
|
|
844
|
+
getMessageState(messageId) {
|
|
845
|
+
return this.messageStates.get(messageId);
|
|
846
|
+
}
|
|
847
|
+
/**
|
|
848
|
+
* Get all message states
|
|
849
|
+
*/
|
|
850
|
+
getAllMessageStates() {
|
|
851
|
+
return new Map(this.messageStates);
|
|
852
|
+
}
|
|
853
|
+
/**
|
|
854
|
+
* Get tool call state
|
|
855
|
+
*/
|
|
856
|
+
getToolCallState(toolCallId) {
|
|
857
|
+
return this.toolCallStates.get(toolCallId);
|
|
858
|
+
}
|
|
859
|
+
/**
|
|
860
|
+
* Get all tool call states
|
|
861
|
+
*/
|
|
862
|
+
getAllToolCallStates() {
|
|
863
|
+
return new Map(this.toolCallStates);
|
|
864
|
+
}
|
|
865
|
+
/**
|
|
866
|
+
* Get current activities
|
|
867
|
+
*/
|
|
868
|
+
getActivities() {
|
|
869
|
+
return [...this.activities];
|
|
870
|
+
}
|
|
871
|
+
/**
|
|
872
|
+
* Get buffered events
|
|
873
|
+
*/
|
|
874
|
+
getBufferedEvents() {
|
|
875
|
+
return [...this.eventBuffer];
|
|
876
|
+
}
|
|
877
|
+
/**
|
|
878
|
+
* Clear buffered events
|
|
879
|
+
*/
|
|
880
|
+
clearBuffer() {
|
|
881
|
+
this.eventBuffer = [];
|
|
882
|
+
}
|
|
883
|
+
// ============================================================================
|
|
884
|
+
// Utility Methods
|
|
885
|
+
// ============================================================================
|
|
886
|
+
/**
|
|
887
|
+
* Reset adapter state
|
|
888
|
+
*/
|
|
889
|
+
reset() {
|
|
890
|
+
// Flush any pending batched events before reset
|
|
891
|
+
if (this.eventBatcher) {
|
|
892
|
+
this.eventBatcher.flush('manual');
|
|
893
|
+
this.eventBatcher.resetMetrics();
|
|
894
|
+
}
|
|
895
|
+
this.aqeToAgui.clear();
|
|
896
|
+
this.aguiToAqe.clear();
|
|
897
|
+
this.idMappings = [];
|
|
898
|
+
this.activeRuns.clear();
|
|
899
|
+
this.currentRunId = null;
|
|
900
|
+
this.messageStates.clear();
|
|
901
|
+
this.toolCallStates.clear();
|
|
902
|
+
this.activities = [];
|
|
903
|
+
this.eventBuffer = [];
|
|
904
|
+
this.stepProgress.clear();
|
|
905
|
+
}
|
|
906
|
+
/**
|
|
907
|
+
* Generate unique ID
|
|
908
|
+
*/
|
|
909
|
+
generateId() {
|
|
910
|
+
return this.config.eventIdGenerator();
|
|
911
|
+
}
|
|
912
|
+
/**
|
|
913
|
+
* Generate event ID
|
|
914
|
+
*/
|
|
915
|
+
generateEventId() {
|
|
916
|
+
return `evt_${this.config.eventIdGenerator()}`;
|
|
917
|
+
}
|
|
918
|
+
/**
|
|
919
|
+
* Generate timestamp
|
|
920
|
+
*/
|
|
921
|
+
generateTimestamp() {
|
|
922
|
+
return this.config.timestampGenerator();
|
|
923
|
+
}
|
|
924
|
+
/**
|
|
925
|
+
* Create or get current run ID
|
|
926
|
+
*/
|
|
927
|
+
createOrGetRunId() {
|
|
928
|
+
if (this.currentRunId) {
|
|
929
|
+
return this.currentRunId;
|
|
930
|
+
}
|
|
931
|
+
const runId = this.generateId();
|
|
932
|
+
const threadId = this.config.defaultThreadId;
|
|
933
|
+
const runContext = {
|
|
934
|
+
runId,
|
|
935
|
+
threadId,
|
|
936
|
+
startedAt: this.generateTimestamp(),
|
|
937
|
+
activeSteps: new Set(),
|
|
938
|
+
activeMessages: new Set(),
|
|
939
|
+
activeToolCalls: new Set(),
|
|
940
|
+
};
|
|
941
|
+
this.activeRuns.set(runId, runContext);
|
|
942
|
+
this.currentRunId = runId;
|
|
943
|
+
return runId;
|
|
944
|
+
}
|
|
945
|
+
/**
|
|
946
|
+
* Get or create message ID for a step
|
|
947
|
+
*/
|
|
948
|
+
getOrCreateMessageId(stepId) {
|
|
949
|
+
// Check if we have an active message for this step
|
|
950
|
+
const entries = Array.from(this.messageStates.entries());
|
|
951
|
+
for (const [messageId, state] of entries) {
|
|
952
|
+
if (!state.complete) {
|
|
953
|
+
return messageId;
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
// Create new message
|
|
957
|
+
const messageId = this.generateId();
|
|
958
|
+
if (this.config.trackMessageState) {
|
|
959
|
+
this.messageStates.set(messageId, {
|
|
960
|
+
messageId,
|
|
961
|
+
content: '',
|
|
962
|
+
role: 'assistant',
|
|
963
|
+
startedAt: this.generateTimestamp(),
|
|
964
|
+
complete: false,
|
|
965
|
+
});
|
|
966
|
+
}
|
|
967
|
+
return messageId;
|
|
968
|
+
}
|
|
969
|
+
/**
|
|
970
|
+
* Create RAW event for unknown source event
|
|
971
|
+
*/
|
|
972
|
+
createRawEvent(event) {
|
|
973
|
+
return {
|
|
974
|
+
type: 'RAW',
|
|
975
|
+
eventId: this.generateEventId(),
|
|
976
|
+
timestamp: this.generateTimestamp(),
|
|
977
|
+
runId: this.currentRunId ?? undefined,
|
|
978
|
+
event,
|
|
979
|
+
source: 'aqe',
|
|
980
|
+
};
|
|
981
|
+
}
|
|
982
|
+
/**
|
|
983
|
+
* Emit event via EventEmitter (uses batcher if enabled)
|
|
984
|
+
*/
|
|
985
|
+
emitEvent(event) {
|
|
986
|
+
if (this.eventBatcher) {
|
|
987
|
+
// Use batcher - it will handle batching and emit via handleBatchFlush
|
|
988
|
+
this.eventBatcher.add(event);
|
|
989
|
+
}
|
|
990
|
+
else {
|
|
991
|
+
// Direct emission without batching
|
|
992
|
+
this.emit('event', event);
|
|
993
|
+
this.emit(event.type, event);
|
|
994
|
+
}
|
|
995
|
+
}
|
|
996
|
+
/**
|
|
997
|
+
* Buffer event for streaming
|
|
998
|
+
*/
|
|
999
|
+
bufferEvent(event) {
|
|
1000
|
+
this.eventBuffer.push(event);
|
|
1001
|
+
// Enforce max buffer size
|
|
1002
|
+
if (this.eventBuffer.length > this.config.maxBufferSize) {
|
|
1003
|
+
this.eventBuffer.shift();
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
/**
|
|
1007
|
+
* Validate event structure
|
|
1008
|
+
*/
|
|
1009
|
+
validateEvent(event) {
|
|
1010
|
+
if (!event.type) {
|
|
1011
|
+
throw new Error('Event missing required type field');
|
|
1012
|
+
}
|
|
1013
|
+
if (!event.eventId) {
|
|
1014
|
+
throw new Error('Event missing required eventId field');
|
|
1015
|
+
}
|
|
1016
|
+
if (!event.timestamp) {
|
|
1017
|
+
throw new Error('Event missing required timestamp field');
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
// ============================================================================
|
|
1021
|
+
// Batcher Operations
|
|
1022
|
+
// ============================================================================
|
|
1023
|
+
/**
|
|
1024
|
+
* Get the event batcher instance (if enabled)
|
|
1025
|
+
*/
|
|
1026
|
+
getEventBatcher() {
|
|
1027
|
+
return this.eventBatcher;
|
|
1028
|
+
}
|
|
1029
|
+
/**
|
|
1030
|
+
* Check if event batching is enabled
|
|
1031
|
+
*/
|
|
1032
|
+
isBatchingEnabled() {
|
|
1033
|
+
return this.eventBatcher !== null;
|
|
1034
|
+
}
|
|
1035
|
+
/**
|
|
1036
|
+
* Get batcher metrics (if batching is enabled)
|
|
1037
|
+
*/
|
|
1038
|
+
getBatcherMetrics() {
|
|
1039
|
+
return this.eventBatcher ? this.eventBatcher.getMetrics() : null;
|
|
1040
|
+
}
|
|
1041
|
+
/**
|
|
1042
|
+
* Manually flush any pending batched events
|
|
1043
|
+
*/
|
|
1044
|
+
flushBatcher() {
|
|
1045
|
+
if (this.eventBatcher) {
|
|
1046
|
+
this.eventBatcher.flush('manual');
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
/**
|
|
1050
|
+
* Enable or disable event batching at runtime
|
|
1051
|
+
*/
|
|
1052
|
+
setBatchingEnabled(enabled) {
|
|
1053
|
+
if (this.eventBatcher) {
|
|
1054
|
+
if (enabled) {
|
|
1055
|
+
this.eventBatcher.enable();
|
|
1056
|
+
}
|
|
1057
|
+
else {
|
|
1058
|
+
this.eventBatcher.disable();
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
1062
|
+
/**
|
|
1063
|
+
* Reset batcher metrics
|
|
1064
|
+
*/
|
|
1065
|
+
resetBatcherMetrics() {
|
|
1066
|
+
if (this.eventBatcher) {
|
|
1067
|
+
this.eventBatcher.resetMetrics();
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
// ============================================================================
|
|
1072
|
+
// Factory Function
|
|
1073
|
+
// ============================================================================
|
|
1074
|
+
/**
|
|
1075
|
+
* Create a new EventAdapter instance
|
|
1076
|
+
*
|
|
1077
|
+
* @param config - Optional configuration
|
|
1078
|
+
* @returns EventAdapter instance
|
|
1079
|
+
*/
|
|
1080
|
+
export function createEventAdapter(config = {}) {
|
|
1081
|
+
return new EventAdapter(config);
|
|
1082
|
+
}
|
|
1083
|
+
//# sourceMappingURL=event-adapter.js.map
|