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,422 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Delta Cache for AG-UI Protocol
|
|
3
|
+
*
|
|
4
|
+
* Pre-computes and caches JSON Patch deltas for common state transitions
|
|
5
|
+
* to reduce latency in AG-UI state synchronization.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - LRU cache with configurable size limit
|
|
9
|
+
* - Pre-computed deltas for common agent state transitions
|
|
10
|
+
* - Cache warming on initialization
|
|
11
|
+
* - Fallback to on-demand computation for cache misses
|
|
12
|
+
* - Cache hit/miss metrics for monitoring
|
|
13
|
+
*
|
|
14
|
+
* @module adapters/ag-ui/state-delta-cache
|
|
15
|
+
*/
|
|
16
|
+
import { createHash } from 'crypto';
|
|
17
|
+
import { computeDiff, deepEqual } from './json-patch.js';
|
|
18
|
+
/**
|
|
19
|
+
* Default configuration values
|
|
20
|
+
*/
|
|
21
|
+
const DEFAULT_CONFIG = {
|
|
22
|
+
maxSize: 1000,
|
|
23
|
+
warmOnInit: true,
|
|
24
|
+
diffConfig: {},
|
|
25
|
+
ttl: 0, // 0 means unlimited
|
|
26
|
+
agentStatusPath: '/agent/status',
|
|
27
|
+
progressPath: '/progress/percent',
|
|
28
|
+
toolStatusPath: '/tool/status',
|
|
29
|
+
};
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Pre-computed Transition Definitions
|
|
32
|
+
// ============================================================================
|
|
33
|
+
/**
|
|
34
|
+
* Agent status transitions
|
|
35
|
+
*/
|
|
36
|
+
const AGENT_STATUS_TRANSITIONS = [
|
|
37
|
+
['idle', 'running'],
|
|
38
|
+
['running', 'completed'],
|
|
39
|
+
['running', 'error'],
|
|
40
|
+
['running', 'cancelled'],
|
|
41
|
+
['completed', 'idle'],
|
|
42
|
+
['error', 'idle'],
|
|
43
|
+
['cancelled', 'idle'],
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* Progress milestone transitions
|
|
47
|
+
*/
|
|
48
|
+
const PROGRESS_TRANSITIONS = [
|
|
49
|
+
[0, 25],
|
|
50
|
+
[25, 50],
|
|
51
|
+
[50, 75],
|
|
52
|
+
[75, 100],
|
|
53
|
+
[0, 50],
|
|
54
|
+
[50, 100],
|
|
55
|
+
[0, 100],
|
|
56
|
+
];
|
|
57
|
+
/**
|
|
58
|
+
* Tool execution status transitions
|
|
59
|
+
*/
|
|
60
|
+
const TOOL_STATUS_TRANSITIONS = [
|
|
61
|
+
['pending', 'executing'],
|
|
62
|
+
['executing', 'success'],
|
|
63
|
+
['executing', 'failure'],
|
|
64
|
+
['success', 'pending'],
|
|
65
|
+
['failure', 'pending'],
|
|
66
|
+
];
|
|
67
|
+
// ============================================================================
|
|
68
|
+
// State Delta Cache Implementation
|
|
69
|
+
// ============================================================================
|
|
70
|
+
/**
|
|
71
|
+
* LRU Cache for pre-computed state deltas
|
|
72
|
+
*
|
|
73
|
+
* Reduces latency by caching common state transitions and using
|
|
74
|
+
* pre-computed deltas instead of computing on-demand.
|
|
75
|
+
*/
|
|
76
|
+
export class StateDeltaCache {
|
|
77
|
+
config;
|
|
78
|
+
cache;
|
|
79
|
+
preComputedKeys;
|
|
80
|
+
// Metrics
|
|
81
|
+
hits = 0;
|
|
82
|
+
misses = 0;
|
|
83
|
+
evictions = 0;
|
|
84
|
+
constructor(config = {}) {
|
|
85
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
86
|
+
this.cache = new Map();
|
|
87
|
+
this.preComputedKeys = new Set();
|
|
88
|
+
if (this.config.warmOnInit) {
|
|
89
|
+
this.warmCache();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// ============================================================================
|
|
93
|
+
// Cache Operations
|
|
94
|
+
// ============================================================================
|
|
95
|
+
/**
|
|
96
|
+
* Get delta from cache or compute on-demand
|
|
97
|
+
*
|
|
98
|
+
* @param fromState - Source state
|
|
99
|
+
* @param toState - Target state
|
|
100
|
+
* @returns JSON Patch operations to transform fromState to toState
|
|
101
|
+
*/
|
|
102
|
+
getDelta(fromState, toState) {
|
|
103
|
+
const key = this.computeCacheKey(fromState, toState);
|
|
104
|
+
// Check cache
|
|
105
|
+
const cached = this.cache.get(key);
|
|
106
|
+
if (cached && !this.isExpired(cached)) {
|
|
107
|
+
this.hits++;
|
|
108
|
+
cached.lastAccessedAt = Date.now();
|
|
109
|
+
cached.accessCount++;
|
|
110
|
+
// Move to end for LRU (delete and re-add)
|
|
111
|
+
this.cache.delete(key);
|
|
112
|
+
this.cache.set(key, cached);
|
|
113
|
+
return cached.delta;
|
|
114
|
+
}
|
|
115
|
+
// Cache miss - compute delta
|
|
116
|
+
this.misses++;
|
|
117
|
+
const delta = computeDiff(fromState, toState, this.config.diffConfig);
|
|
118
|
+
// Store in cache
|
|
119
|
+
this.setDelta(key, delta);
|
|
120
|
+
return delta;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Check if a delta is cached for the given states
|
|
124
|
+
*/
|
|
125
|
+
has(fromState, toState) {
|
|
126
|
+
const key = this.computeCacheKey(fromState, toState);
|
|
127
|
+
const cached = this.cache.get(key);
|
|
128
|
+
return cached !== undefined && !this.isExpired(cached);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Pre-compute and store a delta in the cache
|
|
132
|
+
*/
|
|
133
|
+
precompute(fromState, toState) {
|
|
134
|
+
const key = this.computeCacheKey(fromState, toState);
|
|
135
|
+
const delta = computeDiff(fromState, toState, this.config.diffConfig);
|
|
136
|
+
this.setDelta(key, delta);
|
|
137
|
+
this.preComputedKeys.add(key);
|
|
138
|
+
return delta;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Invalidate a specific cache entry
|
|
142
|
+
*/
|
|
143
|
+
invalidate(fromState, toState) {
|
|
144
|
+
const key = this.computeCacheKey(fromState, toState);
|
|
145
|
+
const deleted = this.cache.delete(key);
|
|
146
|
+
if (deleted) {
|
|
147
|
+
this.preComputedKeys.delete(key);
|
|
148
|
+
}
|
|
149
|
+
return deleted;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Invalidate all entries matching a path prefix
|
|
153
|
+
*/
|
|
154
|
+
invalidateByPath(pathPrefix) {
|
|
155
|
+
let count = 0;
|
|
156
|
+
// We need to track entries by path, but our key is a hash
|
|
157
|
+
// This is a limitation - for now, we clear the entire cache
|
|
158
|
+
// In production, we'd maintain a secondary index by path
|
|
159
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
160
|
+
// Check if any delta operation targets the given path
|
|
161
|
+
const matchesPath = entry.delta.some((op) => op.path === pathPrefix ||
|
|
162
|
+
op.path.startsWith(pathPrefix + '/'));
|
|
163
|
+
if (matchesPath) {
|
|
164
|
+
this.cache.delete(key);
|
|
165
|
+
this.preComputedKeys.delete(key);
|
|
166
|
+
count++;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return count;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Clear all cache entries
|
|
173
|
+
*/
|
|
174
|
+
clear() {
|
|
175
|
+
this.cache.clear();
|
|
176
|
+
this.preComputedKeys.clear();
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Reset metrics
|
|
180
|
+
*/
|
|
181
|
+
resetMetrics() {
|
|
182
|
+
this.hits = 0;
|
|
183
|
+
this.misses = 0;
|
|
184
|
+
this.evictions = 0;
|
|
185
|
+
}
|
|
186
|
+
// ============================================================================
|
|
187
|
+
// Cache Warming
|
|
188
|
+
// ============================================================================
|
|
189
|
+
/**
|
|
190
|
+
* Warm the cache with pre-computed common transitions
|
|
191
|
+
*/
|
|
192
|
+
warmCache() {
|
|
193
|
+
// Agent status transitions
|
|
194
|
+
for (const [from, to] of AGENT_STATUS_TRANSITIONS) {
|
|
195
|
+
this.precomputePathTransition(this.config.agentStatusPath, from, to, 'agent-status');
|
|
196
|
+
}
|
|
197
|
+
// Progress transitions
|
|
198
|
+
for (const [from, to] of PROGRESS_TRANSITIONS) {
|
|
199
|
+
this.precomputePathTransition(this.config.progressPath, from, to, 'progress');
|
|
200
|
+
}
|
|
201
|
+
// Tool status transitions
|
|
202
|
+
for (const [from, to] of TOOL_STATUS_TRANSITIONS) {
|
|
203
|
+
this.precomputePathTransition(this.config.toolStatusPath, from, to, 'tool-execution');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Pre-compute transition for a specific path
|
|
208
|
+
*/
|
|
209
|
+
precomputePathTransition(path, fromValue, toValue, _category) {
|
|
210
|
+
const pathParts = this.parseJsonPointerPath(path);
|
|
211
|
+
const fromState = this.buildStateFromPath(pathParts, fromValue);
|
|
212
|
+
const toState = this.buildStateFromPath(pathParts, toValue);
|
|
213
|
+
this.precompute(fromState, toState);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Parse a JSON Pointer path into segments
|
|
217
|
+
*/
|
|
218
|
+
parseJsonPointerPath(path) {
|
|
219
|
+
if (path === '' || path === '/')
|
|
220
|
+
return [];
|
|
221
|
+
if (!path.startsWith('/')) {
|
|
222
|
+
throw new Error(`Invalid JSON Pointer: ${path}`);
|
|
223
|
+
}
|
|
224
|
+
return path.slice(1).split('/');
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Build a state object from path segments and value
|
|
228
|
+
*/
|
|
229
|
+
buildStateFromPath(pathParts, value) {
|
|
230
|
+
if (pathParts.length === 0) {
|
|
231
|
+
return typeof value === 'object' && value !== null
|
|
232
|
+
? value
|
|
233
|
+
: {};
|
|
234
|
+
}
|
|
235
|
+
const result = {};
|
|
236
|
+
let current = result;
|
|
237
|
+
for (let i = 0; i < pathParts.length - 1; i++) {
|
|
238
|
+
current[pathParts[i]] = {};
|
|
239
|
+
current = current[pathParts[i]];
|
|
240
|
+
}
|
|
241
|
+
current[pathParts[pathParts.length - 1]] = value;
|
|
242
|
+
return result;
|
|
243
|
+
}
|
|
244
|
+
// ============================================================================
|
|
245
|
+
// Custom Pre-computation
|
|
246
|
+
// ============================================================================
|
|
247
|
+
/**
|
|
248
|
+
* Pre-compute a status transition at a custom path
|
|
249
|
+
*/
|
|
250
|
+
precomputeStatusTransition(path, fromStatus, toStatus) {
|
|
251
|
+
const pathParts = this.parseJsonPointerPath(path);
|
|
252
|
+
const fromState = this.buildStateFromPath(pathParts, fromStatus);
|
|
253
|
+
const toState = this.buildStateFromPath(pathParts, toStatus);
|
|
254
|
+
return this.precompute(fromState, toState);
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Pre-compute a progress transition at a custom path
|
|
258
|
+
*/
|
|
259
|
+
precomputeProgressTransition(path, fromPercent, toPercent) {
|
|
260
|
+
const pathParts = this.parseJsonPointerPath(path);
|
|
261
|
+
const fromState = this.buildStateFromPath(pathParts, fromPercent);
|
|
262
|
+
const toState = this.buildStateFromPath(pathParts, toPercent);
|
|
263
|
+
return this.precompute(fromState, toState);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Pre-compute all transitions between a set of values at a path
|
|
267
|
+
*/
|
|
268
|
+
precomputeAllTransitions(path, values) {
|
|
269
|
+
let count = 0;
|
|
270
|
+
const pathParts = this.parseJsonPointerPath(path);
|
|
271
|
+
for (let i = 0; i < values.length; i++) {
|
|
272
|
+
for (let j = 0; j < values.length; j++) {
|
|
273
|
+
if (i !== j) {
|
|
274
|
+
const fromState = this.buildStateFromPath(pathParts, values[i]);
|
|
275
|
+
const toState = this.buildStateFromPath(pathParts, values[j]);
|
|
276
|
+
// Only add if not already equal
|
|
277
|
+
if (!deepEqual(fromState, toState)) {
|
|
278
|
+
this.precompute(fromState, toState);
|
|
279
|
+
count++;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return count;
|
|
285
|
+
}
|
|
286
|
+
// ============================================================================
|
|
287
|
+
// Metrics
|
|
288
|
+
// ============================================================================
|
|
289
|
+
/**
|
|
290
|
+
* Get current cache metrics
|
|
291
|
+
*/
|
|
292
|
+
getMetrics() {
|
|
293
|
+
const total = this.hits + this.misses;
|
|
294
|
+
return {
|
|
295
|
+
hits: this.hits,
|
|
296
|
+
misses: this.misses,
|
|
297
|
+
size: this.cache.size,
|
|
298
|
+
maxSize: this.config.maxSize,
|
|
299
|
+
hitRate: total > 0 ? (this.hits / total) * 100 : 0,
|
|
300
|
+
evictions: this.evictions,
|
|
301
|
+
preComputedEntries: this.preComputedKeys.size,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Get cache size
|
|
306
|
+
*/
|
|
307
|
+
get size() {
|
|
308
|
+
return this.cache.size;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Get maximum cache size
|
|
312
|
+
*/
|
|
313
|
+
get maxSize() {
|
|
314
|
+
return this.config.maxSize;
|
|
315
|
+
}
|
|
316
|
+
// ============================================================================
|
|
317
|
+
// Internal Methods
|
|
318
|
+
// ============================================================================
|
|
319
|
+
/**
|
|
320
|
+
* Compute cache key from two states
|
|
321
|
+
* Uses SHA-256 hash of JSON-stringified states
|
|
322
|
+
*/
|
|
323
|
+
computeCacheKey(fromState, toState) {
|
|
324
|
+
const fromHash = this.hashState(fromState);
|
|
325
|
+
const toHash = this.hashState(toState);
|
|
326
|
+
return `${fromHash}:${toHash}`;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Hash a state object for cache key
|
|
330
|
+
*/
|
|
331
|
+
hashState(state) {
|
|
332
|
+
// Ensure consistent key ordering by sorting
|
|
333
|
+
const serialized = JSON.stringify(state, Object.keys(state).sort());
|
|
334
|
+
return createHash('sha256').update(serialized).digest('hex').substring(0, 16);
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Set a delta in the cache with LRU eviction
|
|
338
|
+
*/
|
|
339
|
+
setDelta(key, delta) {
|
|
340
|
+
// Evict if at capacity (LRU)
|
|
341
|
+
while (this.cache.size >= this.config.maxSize) {
|
|
342
|
+
this.evictLRU();
|
|
343
|
+
}
|
|
344
|
+
const now = Date.now();
|
|
345
|
+
this.cache.set(key, {
|
|
346
|
+
delta,
|
|
347
|
+
createdAt: now,
|
|
348
|
+
lastAccessedAt: now,
|
|
349
|
+
accessCount: 0,
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Evict the least recently used entry
|
|
354
|
+
*/
|
|
355
|
+
evictLRU() {
|
|
356
|
+
// Map maintains insertion order, but we need LRU by access time
|
|
357
|
+
let oldestKey = null;
|
|
358
|
+
let oldestTime = Infinity;
|
|
359
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
360
|
+
// Prefer evicting non-precomputed entries first
|
|
361
|
+
const isPrecomputed = this.preComputedKeys.has(key);
|
|
362
|
+
if (!isPrecomputed && entry.lastAccessedAt < oldestTime) {
|
|
363
|
+
oldestTime = entry.lastAccessedAt;
|
|
364
|
+
oldestKey = key;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
// If all entries are pre-computed, evict oldest pre-computed
|
|
368
|
+
if (oldestKey === null) {
|
|
369
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
370
|
+
if (entry.lastAccessedAt < oldestTime) {
|
|
371
|
+
oldestTime = entry.lastAccessedAt;
|
|
372
|
+
oldestKey = key;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
if (oldestKey !== null) {
|
|
377
|
+
this.cache.delete(oldestKey);
|
|
378
|
+
this.preComputedKeys.delete(oldestKey);
|
|
379
|
+
this.evictions++;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Check if a cache entry is expired
|
|
384
|
+
*/
|
|
385
|
+
isExpired(entry) {
|
|
386
|
+
if (this.config.ttl <= 0) {
|
|
387
|
+
return false; // No TTL
|
|
388
|
+
}
|
|
389
|
+
return Date.now() - entry.createdAt > this.config.ttl;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
// ============================================================================
|
|
393
|
+
// Factory Function
|
|
394
|
+
// ============================================================================
|
|
395
|
+
/**
|
|
396
|
+
* Create a new StateDeltaCache instance
|
|
397
|
+
*/
|
|
398
|
+
export function createStateDeltaCache(config = {}) {
|
|
399
|
+
return new StateDeltaCache(config);
|
|
400
|
+
}
|
|
401
|
+
// ============================================================================
|
|
402
|
+
// Utilities
|
|
403
|
+
// ============================================================================
|
|
404
|
+
/**
|
|
405
|
+
* Get all pre-defined agent status values
|
|
406
|
+
*/
|
|
407
|
+
export function getAgentStatusValues() {
|
|
408
|
+
return ['idle', 'running', 'completed', 'error', 'cancelled'];
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Get all pre-defined progress milestones
|
|
412
|
+
*/
|
|
413
|
+
export function getProgressMilestones() {
|
|
414
|
+
return [0, 25, 50, 75, 100];
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Get all pre-defined tool status values
|
|
418
|
+
*/
|
|
419
|
+
export function getToolStatusValues() {
|
|
420
|
+
return ['pending', 'executing', 'success', 'failure'];
|
|
421
|
+
}
|
|
422
|
+
//# sourceMappingURL=state-delta-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-delta-cache.js","sourceRoot":"","sources":["../../../src/adapters/ag-ui/state-delta-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AG-UI State Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages agent state for AG-UI STATE_SNAPSHOT and STATE_DELTA synchronization.
|
|
5
|
+
* Provides atomic state updates with automatic delta computation.
|
|
6
|
+
*
|
|
7
|
+
* @module adapters/ag-ui/state-manager
|
|
8
|
+
*/
|
|
9
|
+
import { EventEmitter } from 'events';
|
|
10
|
+
import type { JsonPatchOperation } from './event-types.js';
|
|
11
|
+
import { type PatchResult, type DiffConfig } from './json-patch.js';
|
|
12
|
+
import { StateDeltaCache, type StateDeltaCacheConfig } from './state-delta-cache.js';
|
|
13
|
+
/**
|
|
14
|
+
* State manager configuration
|
|
15
|
+
*/
|
|
16
|
+
export interface StateManagerConfig {
|
|
17
|
+
/** Initial state */
|
|
18
|
+
initialState?: Record<string, unknown>;
|
|
19
|
+
/** Whether to auto-increment version on state changes */
|
|
20
|
+
autoVersion?: boolean;
|
|
21
|
+
/** Maximum state history to retain (for rollback) */
|
|
22
|
+
maxHistory?: number;
|
|
23
|
+
/** Whether to emit events on state changes */
|
|
24
|
+
emitEvents?: boolean;
|
|
25
|
+
/** Custom ID generator */
|
|
26
|
+
idGenerator?: () => string;
|
|
27
|
+
/** Custom timestamp generator */
|
|
28
|
+
timestampGenerator?: () => string;
|
|
29
|
+
/** Diff configuration */
|
|
30
|
+
diffConfig?: DiffConfig;
|
|
31
|
+
/** Enable delta caching for optimized diff computation */
|
|
32
|
+
enableCache?: boolean;
|
|
33
|
+
/** Delta cache configuration */
|
|
34
|
+
cacheConfig?: StateDeltaCacheConfig;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* State change event payload
|
|
38
|
+
*/
|
|
39
|
+
export interface StateChangeEvent {
|
|
40
|
+
/** Change type */
|
|
41
|
+
type: 'snapshot' | 'delta';
|
|
42
|
+
/** Current version */
|
|
43
|
+
version: number;
|
|
44
|
+
/** Previous version (for delta) */
|
|
45
|
+
previousVersion?: number;
|
|
46
|
+
/** Delta operations (for delta type) */
|
|
47
|
+
delta?: JsonPatchOperation[];
|
|
48
|
+
/** Full state (for snapshot type) */
|
|
49
|
+
state?: Record<string, unknown>;
|
|
50
|
+
/** Timestamp of change */
|
|
51
|
+
timestamp: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* State history entry
|
|
55
|
+
*/
|
|
56
|
+
export interface StateHistoryEntry {
|
|
57
|
+
/** State version */
|
|
58
|
+
version: number;
|
|
59
|
+
/** State snapshot */
|
|
60
|
+
state: Record<string, unknown>;
|
|
61
|
+
/** Timestamp */
|
|
62
|
+
timestamp: string;
|
|
63
|
+
/** Delta from previous state */
|
|
64
|
+
deltaFromPrevious?: JsonPatchOperation[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* AG-UI State Manager
|
|
68
|
+
*
|
|
69
|
+
* Manages bidirectional state synchronization between agent and UI
|
|
70
|
+
* using STATE_SNAPSHOT and STATE_DELTA events.
|
|
71
|
+
*/
|
|
72
|
+
export declare class StateManager extends EventEmitter {
|
|
73
|
+
private config;
|
|
74
|
+
private state;
|
|
75
|
+
private version;
|
|
76
|
+
private history;
|
|
77
|
+
private lastSnapshotVersion;
|
|
78
|
+
private connectionId;
|
|
79
|
+
private readonly deltaCache;
|
|
80
|
+
constructor(config?: StateManagerConfig);
|
|
81
|
+
/**
|
|
82
|
+
* Get the current state as a snapshot
|
|
83
|
+
*/
|
|
84
|
+
getSnapshot(): Record<string, unknown>;
|
|
85
|
+
/**
|
|
86
|
+
* Get the current state version
|
|
87
|
+
*/
|
|
88
|
+
getVersion(): number;
|
|
89
|
+
/**
|
|
90
|
+
* Generate a STATE_SNAPSHOT event payload
|
|
91
|
+
*/
|
|
92
|
+
generateSnapshotEvent(): {
|
|
93
|
+
type: 'STATE_SNAPSHOT';
|
|
94
|
+
state: Record<string, unknown>;
|
|
95
|
+
version: number;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Check if a snapshot should be sent (e.g., on reconnection)
|
|
99
|
+
*/
|
|
100
|
+
shouldSendSnapshot(clientVersion?: number): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Get the current state (readonly reference)
|
|
103
|
+
*/
|
|
104
|
+
getState(): Readonly<Record<string, unknown>>;
|
|
105
|
+
/**
|
|
106
|
+
* Set the entire state, computing delta from current state
|
|
107
|
+
* Uses delta cache for optimized computation of common transitions
|
|
108
|
+
* Returns the delta operations
|
|
109
|
+
*/
|
|
110
|
+
setState(newState: Record<string, unknown>): JsonPatchOperation[];
|
|
111
|
+
/**
|
|
112
|
+
* Update a specific path in the state
|
|
113
|
+
*/
|
|
114
|
+
updatePath(path: string, value: unknown): JsonPatchOperation[];
|
|
115
|
+
/**
|
|
116
|
+
* Remove a value at a specific path
|
|
117
|
+
*/
|
|
118
|
+
removePath(path: string): JsonPatchOperation[];
|
|
119
|
+
/**
|
|
120
|
+
* Merge an object into the state at a specific path
|
|
121
|
+
*/
|
|
122
|
+
mergePath(path: string, value: Record<string, unknown>): JsonPatchOperation[];
|
|
123
|
+
/**
|
|
124
|
+
* Compute delta between current state and provided state
|
|
125
|
+
* Uses delta cache for optimized computation if enabled
|
|
126
|
+
*/
|
|
127
|
+
computeDelta(oldState: Record<string, unknown>, newState: Record<string, unknown>): JsonPatchOperation[];
|
|
128
|
+
/**
|
|
129
|
+
* Apply a delta (JSON Patch) to the current state
|
|
130
|
+
* Atomic operation with rollback on error
|
|
131
|
+
*/
|
|
132
|
+
applyDelta(delta: JsonPatchOperation[]): JsonPatchOperation[];
|
|
133
|
+
/**
|
|
134
|
+
* Generate a STATE_DELTA event payload for the given delta
|
|
135
|
+
*/
|
|
136
|
+
generateDeltaEvent(delta: JsonPatchOperation[]): {
|
|
137
|
+
type: 'STATE_DELTA';
|
|
138
|
+
delta: JsonPatchOperation[];
|
|
139
|
+
version: number;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Apply patch from external source (e.g., client updates)
|
|
143
|
+
* Returns PatchResult for error handling
|
|
144
|
+
*/
|
|
145
|
+
applyExternalPatch(patch: JsonPatchOperation[]): PatchResult;
|
|
146
|
+
/**
|
|
147
|
+
* Get state history
|
|
148
|
+
*/
|
|
149
|
+
getHistory(): readonly StateHistoryEntry[];
|
|
150
|
+
/**
|
|
151
|
+
* Get state at a specific version
|
|
152
|
+
*/
|
|
153
|
+
getStateAtVersion(version: number): Record<string, unknown> | undefined;
|
|
154
|
+
/**
|
|
155
|
+
* Rollback to a previous version
|
|
156
|
+
*/
|
|
157
|
+
rollback(targetVersion: number): JsonPatchOperation[];
|
|
158
|
+
/**
|
|
159
|
+
* Add entry to history with size limit enforcement
|
|
160
|
+
*/
|
|
161
|
+
private addToHistory;
|
|
162
|
+
/**
|
|
163
|
+
* Handle new connection (emit snapshot)
|
|
164
|
+
*/
|
|
165
|
+
onConnection(connectionId: string): {
|
|
166
|
+
type: 'STATE_SNAPSHOT';
|
|
167
|
+
state: Record<string, unknown>;
|
|
168
|
+
version: number;
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Handle reconnection (emit snapshot if needed)
|
|
172
|
+
*/
|
|
173
|
+
onReconnection(connectionId: string, lastKnownVersion?: number): {
|
|
174
|
+
type: 'STATE_SNAPSHOT';
|
|
175
|
+
state: Record<string, unknown>;
|
|
176
|
+
version: number;
|
|
177
|
+
} | null;
|
|
178
|
+
/**
|
|
179
|
+
* Handle disconnection
|
|
180
|
+
*/
|
|
181
|
+
onDisconnection(connectionId: string): void;
|
|
182
|
+
/**
|
|
183
|
+
* Get current connection ID
|
|
184
|
+
*/
|
|
185
|
+
getConnectionId(): string | null;
|
|
186
|
+
/**
|
|
187
|
+
* Get value at a specific path
|
|
188
|
+
*/
|
|
189
|
+
getValue<T = unknown>(path: string): T | undefined;
|
|
190
|
+
/**
|
|
191
|
+
* Check if path exists in state
|
|
192
|
+
*/
|
|
193
|
+
hasPath(path: string): boolean;
|
|
194
|
+
/**
|
|
195
|
+
* Check if current state equals the provided state
|
|
196
|
+
*/
|
|
197
|
+
equals(otherState: Record<string, unknown>): boolean;
|
|
198
|
+
/**
|
|
199
|
+
* Reset state to initial state
|
|
200
|
+
*/
|
|
201
|
+
reset(): JsonPatchOperation[];
|
|
202
|
+
/**
|
|
203
|
+
* Clear all state
|
|
204
|
+
*/
|
|
205
|
+
clear(): JsonPatchOperation[];
|
|
206
|
+
/**
|
|
207
|
+
* Clear history only (keep current state)
|
|
208
|
+
*/
|
|
209
|
+
clearHistory(): void;
|
|
210
|
+
/**
|
|
211
|
+
* Get the delta cache instance (if enabled)
|
|
212
|
+
*/
|
|
213
|
+
getDeltaCache(): StateDeltaCache | null;
|
|
214
|
+
/**
|
|
215
|
+
* Check if delta caching is enabled
|
|
216
|
+
*/
|
|
217
|
+
isCacheEnabled(): boolean;
|
|
218
|
+
/**
|
|
219
|
+
* Get cache metrics (if cache is enabled)
|
|
220
|
+
*/
|
|
221
|
+
getCacheMetrics(): {
|
|
222
|
+
hits: number;
|
|
223
|
+
misses: number;
|
|
224
|
+
size: number;
|
|
225
|
+
maxSize: number;
|
|
226
|
+
hitRate: number;
|
|
227
|
+
evictions: number;
|
|
228
|
+
preComputedEntries: number;
|
|
229
|
+
} | null;
|
|
230
|
+
/**
|
|
231
|
+
* Pre-compute delta for a specific state transition
|
|
232
|
+
* Useful for warming cache with known common transitions
|
|
233
|
+
*/
|
|
234
|
+
precomputeTransition(fromState: Record<string, unknown>, toState: Record<string, unknown>): JsonPatchOperation[] | null;
|
|
235
|
+
/**
|
|
236
|
+
* Warm cache with common agent state transitions
|
|
237
|
+
*/
|
|
238
|
+
warmCache(): void;
|
|
239
|
+
/**
|
|
240
|
+
* Clear the delta cache
|
|
241
|
+
*/
|
|
242
|
+
clearCache(): void;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Create a new StateManager instance
|
|
246
|
+
*/
|
|
247
|
+
export declare function createStateManager(config?: StateManagerConfig): StateManager;
|
|
248
|
+
export type { PatchResult, DiffConfig };
|
|
249
|
+
//# sourceMappingURL=state-manager.d.ts.map
|