@robota-sdk/agent-core 3.0.0-beta.2 → 3.0.0-beta.21
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/README.md +64 -184
- package/dist/abstracts/abstract-agent.d.ts.map +1 -1
- package/dist/abstracts/abstract-agent.js.map +1 -1
- package/dist/abstracts/abstract-ai-provider.d.ts +8 -7
- package/dist/abstracts/abstract-ai-provider.d.ts.map +1 -1
- package/dist/abstracts/abstract-ai-provider.js +21 -15
- package/dist/abstracts/abstract-ai-provider.js.map +1 -1
- package/dist/abstracts/abstract-executor.d.ts.map +1 -1
- package/dist/abstracts/abstract-executor.js +20 -12
- package/dist/abstracts/abstract-executor.js.map +1 -1
- package/dist/abstracts/abstract-manager.d.ts.map +1 -1
- package/dist/abstracts/abstract-manager.js.map +1 -1
- package/dist/abstracts/abstract-module-events.d.ts +77 -0
- package/dist/abstracts/abstract-module-events.d.ts.map +1 -0
- package/dist/abstracts/abstract-module-events.js +8 -0
- package/dist/abstracts/abstract-module-events.js.map +1 -0
- package/dist/abstracts/abstract-module-types.d.ts +110 -0
- package/dist/abstracts/abstract-module-types.d.ts.map +1 -0
- package/dist/abstracts/abstract-module-types.js +20 -0
- package/dist/abstracts/abstract-module-types.js.map +1 -0
- package/dist/abstracts/abstract-module.d.ts +13 -312
- package/dist/abstracts/abstract-module.d.ts.map +1 -1
- package/dist/abstracts/abstract-module.js +137 -302
- package/dist/abstracts/abstract-module.js.map +1 -1
- package/dist/abstracts/abstract-module.test.d.ts +2 -0
- package/dist/abstracts/abstract-module.test.d.ts.map +1 -0
- package/dist/abstracts/abstract-module.test.js +150 -0
- package/dist/abstracts/abstract-module.test.js.map +1 -0
- package/dist/abstracts/abstract-plugin-types.d.ts +152 -0
- package/dist/abstracts/abstract-plugin-types.d.ts.map +1 -0
- package/dist/abstracts/abstract-plugin-types.js +29 -0
- package/dist/abstracts/abstract-plugin-types.js.map +1 -0
- package/dist/abstracts/abstract-plugin.d.ts +15 -304
- package/dist/abstracts/abstract-plugin.d.ts.map +1 -1
- package/dist/abstracts/abstract-plugin.js +28 -144
- package/dist/abstracts/abstract-plugin.js.map +1 -1
- package/dist/abstracts/abstract-tool.d.ts +1 -1
- package/dist/abstracts/abstract-tool.d.ts.map +1 -1
- package/dist/abstracts/abstract-tool.js +2 -2
- package/dist/abstracts/abstract-tool.js.map +1 -1
- package/dist/abstracts/abstract-workflow-converter.d.ts.map +1 -1
- package/dist/abstracts/abstract-workflow-converter.js +29 -20
- package/dist/abstracts/abstract-workflow-converter.js.map +1 -1
- package/dist/abstracts/abstract-workflow-converter.test.d.ts +2 -0
- package/dist/abstracts/abstract-workflow-converter.test.d.ts.map +1 -0
- package/dist/abstracts/abstract-workflow-converter.test.js +144 -0
- package/dist/abstracts/abstract-workflow-converter.test.js.map +1 -0
- package/dist/abstracts/abstract-workflow-validator-helpers.d.ts +37 -0
- package/dist/abstracts/abstract-workflow-validator-helpers.d.ts.map +1 -0
- package/dist/abstracts/abstract-workflow-validator-helpers.js +147 -0
- package/dist/abstracts/abstract-workflow-validator-helpers.js.map +1 -0
- package/dist/abstracts/abstract-workflow-validator-helpers.test.d.ts +2 -0
- package/dist/abstracts/abstract-workflow-validator-helpers.test.d.ts.map +1 -0
- package/dist/abstracts/abstract-workflow-validator-helpers.test.js +157 -0
- package/dist/abstracts/abstract-workflow-validator-helpers.test.js.map +1 -0
- package/dist/abstracts/abstract-workflow-validator.d.ts +18 -130
- package/dist/abstracts/abstract-workflow-validator.d.ts.map +1 -1
- package/dist/abstracts/abstract-workflow-validator.js +58 -326
- package/dist/abstracts/abstract-workflow-validator.js.map +1 -1
- package/dist/abstracts/abstract-workflow-validator.test.d.ts +2 -0
- package/dist/abstracts/abstract-workflow-validator.test.d.ts.map +1 -0
- package/dist/abstracts/abstract-workflow-validator.test.js +142 -0
- package/dist/abstracts/abstract-workflow-validator.test.js.map +1 -0
- package/dist/abstracts/index.d.ts +1 -0
- package/dist/abstracts/index.d.ts.map +1 -1
- package/dist/abstracts/index.js +3 -2
- package/dist/abstracts/index.js.map +1 -1
- package/dist/agents/constants.d.ts +1 -1
- package/dist/agents/constants.d.ts.map +1 -1
- package/dist/agents/constants.js +1 -1
- package/dist/agents/constants.js.map +1 -1
- package/dist/agents/index.js +1 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/robota.test.js +36 -36
- package/dist/agents/robota.test.js.map +1 -1
- package/dist/browser/index.d.ts +32 -2
- package/dist/browser/index.js +6 -4
- package/dist/context/index.d.ts +4 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +2 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/models.d.ts +27 -0
- package/dist/context/models.d.ts.map +1 -0
- package/dist/context/models.js +76 -0
- package/dist/context/models.js.map +1 -0
- package/dist/context/models.test.d.ts +2 -0
- package/dist/context/models.test.d.ts.map +1 -0
- package/dist/context/models.test.js +51 -0
- package/dist/context/models.test.js.map +1 -0
- package/dist/context/types.d.ts +25 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/types.js +8 -0
- package/dist/context/types.js.map +1 -0
- package/dist/core/robota-config-manager.d.ts +78 -0
- package/dist/core/robota-config-manager.d.ts.map +1 -0
- package/dist/core/robota-config-manager.js +216 -0
- package/dist/core/robota-config-manager.js.map +1 -0
- package/dist/core/robota-execution.d.ts +23 -0
- package/dist/core/robota-execution.d.ts.map +1 -0
- package/dist/core/robota-execution.js +81 -0
- package/dist/core/robota-execution.js.map +1 -0
- package/dist/core/robota-initializer.d.ts +37 -0
- package/dist/core/robota-initializer.d.ts.map +1 -0
- package/dist/core/robota-initializer.js +77 -0
- package/dist/core/robota-initializer.js.map +1 -0
- package/dist/core/robota-lifecycle.d.ts +53 -0
- package/dist/core/robota-lifecycle.d.ts.map +1 -0
- package/dist/core/robota-lifecycle.js +73 -0
- package/dist/core/robota-lifecycle.js.map +1 -0
- package/dist/core/robota-module-manager.d.ts +78 -0
- package/dist/core/robota-module-manager.d.ts.map +1 -0
- package/dist/core/robota-module-manager.js +114 -0
- package/dist/core/robota-module-manager.js.map +1 -0
- package/dist/core/robota-plugin-manager.d.ts +40 -0
- package/dist/core/robota-plugin-manager.d.ts.map +1 -0
- package/dist/core/robota-plugin-manager.js +71 -0
- package/dist/core/robota-plugin-manager.js.map +1 -0
- package/dist/core/robota.d.ts +56 -606
- package/dist/core/robota.d.ts.map +1 -1
- package/dist/core/robota.js +210 -1152
- package/dist/core/robota.js.map +1 -1
- package/dist/core/robota.test.d.ts +2 -0
- package/dist/core/robota.test.d.ts.map +1 -0
- package/dist/core/robota.test.js +353 -0
- package/dist/core/robota.test.js.map +1 -0
- package/dist/event-service/event-service.d.ts +61 -0
- package/dist/event-service/event-service.d.ts.map +1 -0
- package/dist/event-service/event-service.js +120 -0
- package/dist/event-service/event-service.js.map +1 -0
- package/dist/event-service/index.d.ts +6 -0
- package/dist/event-service/index.d.ts.map +1 -0
- package/dist/event-service/index.js +4 -0
- package/dist/event-service/index.js.map +1 -0
- package/dist/event-service/interfaces.d.ts +98 -0
- package/dist/event-service/interfaces.d.ts.map +1 -0
- package/dist/event-service/interfaces.js +8 -0
- package/dist/event-service/interfaces.js.map +1 -0
- package/dist/event-service/task-events.d.ts +6 -0
- package/dist/event-service/task-events.d.ts.map +1 -0
- package/dist/event-service/task-events.js +6 -0
- package/dist/event-service/task-events.js.map +1 -0
- package/dist/event-service/user-events.d.ts +7 -0
- package/dist/event-service/user-events.d.ts.map +1 -0
- package/dist/event-service/user-events.js +6 -0
- package/dist/event-service/user-events.js.map +1 -0
- package/dist/executors/local-executor.d.ts +2 -2
- package/dist/executors/local-executor.d.ts.map +1 -1
- package/dist/executors/local-executor.js +7 -7
- package/dist/executors/local-executor.js.map +1 -1
- package/dist/executors/local-executor.test.js +16 -16
- package/dist/executors/local-executor.test.js.map +1 -1
- package/dist/hooks/hook-runner.d.ts +20 -0
- package/dist/hooks/hook-runner.d.ts.map +1 -0
- package/dist/hooks/hook-runner.js +95 -0
- package/dist/hooks/hook-runner.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/types.d.ts +40 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +5 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +49 -75
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -71
- package/dist/index.js.map +1 -1
- package/dist/interfaces/agent.d.ts +3 -2
- package/dist/interfaces/agent.d.ts.map +1 -1
- package/dist/interfaces/cache.d.ts +64 -0
- package/dist/interfaces/cache.d.ts.map +1 -0
- package/dist/interfaces/cache.js +2 -0
- package/dist/interfaces/cache.js.map +1 -0
- package/dist/interfaces/event-service.d.ts +4 -75
- package/dist/interfaces/event-service.d.ts.map +1 -1
- package/dist/interfaces/executor.d.ts.map +1 -1
- package/dist/interfaces/history-module.d.ts.map +1 -1
- package/dist/interfaces/index.d.ts +12 -9
- package/dist/interfaces/index.d.ts.map +1 -1
- package/dist/interfaces/index.js +2 -1
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/manager.d.ts.map +1 -1
- package/dist/interfaces/media-provider.d.ts +86 -0
- package/dist/interfaces/media-provider.d.ts.map +1 -0
- package/dist/interfaces/media-provider.js +13 -0
- package/dist/interfaces/media-provider.js.map +1 -0
- package/dist/interfaces/messages.d.ts +23 -1
- package/dist/interfaces/messages.d.ts.map +1 -1
- package/dist/interfaces/messages.js.map +1 -1
- package/dist/interfaces/progress-reporting.d.ts.map +1 -1
- package/dist/interfaces/progress-reporting.js +1 -3
- package/dist/interfaces/progress-reporting.js.map +1 -1
- package/dist/interfaces/provider.d.ts +12 -1
- package/dist/interfaces/provider.d.ts.map +1 -1
- package/dist/interfaces/service.d.ts.map +1 -1
- package/dist/interfaces/tool.d.ts +1 -0
- package/dist/interfaces/tool.d.ts.map +1 -1
- package/dist/interfaces/types.d.ts.map +1 -1
- package/dist/interfaces/types.js +6 -6
- package/dist/interfaces/types.js.map +1 -1
- package/dist/interfaces/workflow-converter.d.ts.map +1 -1
- package/dist/interfaces/workflow-validator.d.ts.map +1 -1
- package/dist/interfaces/workflow-validator.js.map +1 -1
- package/dist/managers/agent-factory.d.ts.map +1 -1
- package/dist/managers/agent-factory.js +24 -16
- package/dist/managers/agent-factory.js.map +1 -1
- package/dist/managers/agent-factory.test.js +35 -25
- package/dist/managers/agent-factory.test.js.map +1 -1
- package/dist/managers/agent-templates.d.ts.map +1 -1
- package/dist/managers/agent-templates.js +22 -10
- package/dist/managers/agent-templates.js.map +1 -1
- package/dist/managers/agent-templates.test.d.ts +2 -0
- package/dist/managers/agent-templates.test.d.ts.map +1 -0
- package/dist/managers/agent-templates.test.js +175 -0
- package/dist/managers/agent-templates.test.js.map +1 -0
- package/dist/managers/ai-provider-manager.d.ts.map +1 -1
- package/dist/managers/ai-provider-manager.js +8 -10
- package/dist/managers/ai-provider-manager.js.map +1 -1
- package/dist/managers/ai-provider-manager.test.d.ts +2 -0
- package/dist/managers/ai-provider-manager.test.d.ts.map +1 -0
- package/dist/managers/ai-provider-manager.test.js +327 -0
- package/dist/managers/ai-provider-manager.test.js.map +1 -0
- package/dist/managers/conversation-history-manager.d.ts +13 -425
- package/dist/managers/conversation-history-manager.d.ts.map +1 -1
- package/dist/managers/conversation-history-manager.js +21 -537
- package/dist/managers/conversation-history-manager.js.map +1 -1
- package/dist/managers/conversation-history-manager.test.js +82 -43
- package/dist/managers/conversation-history-manager.test.js.map +1 -1
- package/dist/managers/conversation-message-factory.d.ts +40 -0
- package/dist/managers/conversation-message-factory.d.ts.map +1 -0
- package/dist/managers/conversation-message-factory.js +66 -0
- package/dist/managers/conversation-message-factory.js.map +1 -0
- package/dist/managers/conversation-message-factory.test.d.ts +2 -0
- package/dist/managers/conversation-message-factory.test.d.ts.map +1 -0
- package/dist/managers/conversation-message-factory.test.js +95 -0
- package/dist/managers/conversation-message-factory.test.js.map +1 -0
- package/dist/managers/conversation-session.d.ts +90 -0
- package/dist/managers/conversation-session.d.ts.map +1 -0
- package/dist/managers/conversation-session.js +177 -0
- package/dist/managers/conversation-session.js.map +1 -0
- package/dist/managers/index.d.ts +2 -2
- package/dist/managers/index.d.ts.map +1 -1
- package/dist/managers/index.js +1 -1
- package/dist/managers/index.js.map +1 -1
- package/dist/managers/module-registry-validation.d.ts +38 -0
- package/dist/managers/module-registry-validation.d.ts.map +1 -0
- package/dist/managers/module-registry-validation.js +100 -0
- package/dist/managers/module-registry-validation.js.map +1 -0
- package/dist/managers/module-registry-validation.test.d.ts +2 -0
- package/dist/managers/module-registry-validation.test.d.ts.map +1 -0
- package/dist/managers/module-registry-validation.test.js +144 -0
- package/dist/managers/module-registry-validation.test.js.map +1 -0
- package/dist/managers/module-registry.d.ts +13 -111
- package/dist/managers/module-registry.d.ts.map +1 -1
- package/dist/managers/module-registry.js +74 -344
- package/dist/managers/module-registry.js.map +1 -1
- package/dist/managers/module-type-registry-helpers.d.ts +34 -0
- package/dist/managers/module-type-registry-helpers.d.ts.map +1 -0
- package/dist/managers/module-type-registry-helpers.js +255 -0
- package/dist/managers/module-type-registry-helpers.js.map +1 -0
- package/dist/managers/module-type-registry.d.ts +10 -64
- package/dist/managers/module-type-registry.d.ts.map +1 -1
- package/dist/managers/module-type-registry.js +25 -373
- package/dist/managers/module-type-registry.js.map +1 -1
- package/dist/managers/plugins-helpers.d.ts +18 -0
- package/dist/managers/plugins-helpers.d.ts.map +1 -0
- package/dist/managers/plugins-helpers.js +118 -0
- package/dist/managers/plugins-helpers.js.map +1 -0
- package/dist/managers/plugins-helpers.test.d.ts +2 -0
- package/dist/managers/plugins-helpers.test.d.ts.map +1 -0
- package/dist/managers/plugins-helpers.test.js +68 -0
- package/dist/managers/plugins-helpers.test.js.map +1 -0
- package/dist/managers/plugins.d.ts +16 -109
- package/dist/managers/plugins.d.ts.map +1 -1
- package/dist/managers/plugins.js +29 -220
- package/dist/managers/plugins.js.map +1 -1
- package/dist/managers/plugins.test.d.ts +2 -0
- package/dist/managers/plugins.test.d.ts.map +1 -0
- package/dist/managers/plugins.test.js +160 -0
- package/dist/managers/plugins.test.js.map +1 -0
- package/dist/managers/tool-manager.d.ts +1 -1
- package/dist/managers/tool-manager.d.ts.map +1 -1
- package/dist/managers/tool-manager.js +15 -5
- package/dist/managers/tool-manager.js.map +1 -1
- package/dist/managers/tool-manager.test.js +32 -16
- package/dist/managers/tool-manager.test.js.map +1 -1
- package/dist/node/index.cjs +6 -4
- package/dist/node/index.d.cts +32 -2
- package/dist/node/index.d.ts +32 -2
- package/dist/node/index.js +6 -4
- package/dist/permissions/index.d.ts +7 -0
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/index.js +4 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/permissions/permission-gate.d.ts +38 -0
- package/dist/permissions/permission-gate.d.ts.map +1 -0
- package/dist/permissions/permission-gate.js +119 -0
- package/dist/permissions/permission-gate.js.map +1 -0
- package/dist/permissions/permission-mode.d.ts +25 -0
- package/dist/permissions/permission-mode.d.ts.map +1 -0
- package/dist/permissions/permission-mode.js +58 -0
- package/dist/permissions/permission-mode.js.map +1 -0
- package/dist/permissions/types.d.ts +27 -0
- package/dist/permissions/types.d.ts.map +1 -0
- package/dist/permissions/types.js +9 -0
- package/dist/permissions/types.js.map +1 -0
- package/dist/plugins/event-emitter/metrics.d.ts.map +1 -1
- package/dist/plugins/event-emitter/metrics.js +1 -1
- package/dist/plugins/event-emitter/metrics.js.map +1 -1
- package/dist/plugins/event-emitter/plugin-types.d.ts +88 -0
- package/dist/plugins/event-emitter/plugin-types.d.ts.map +1 -0
- package/dist/plugins/event-emitter/plugin-types.js +2 -0
- package/dist/plugins/event-emitter/plugin-types.js.map +1 -0
- package/dist/plugins/event-emitter/types.d.ts +3 -3
- package/dist/plugins/event-emitter/types.d.ts.map +1 -1
- package/dist/plugins/event-emitter/types.js +4 -4
- package/dist/plugins/event-emitter/types.js.map +1 -1
- package/dist/plugins/event-emitter-plugin.d.ts +9 -184
- package/dist/plugins/event-emitter-plugin.d.ts.map +1 -1
- package/dist/plugins/event-emitter-plugin.js +91 -235
- package/dist/plugins/event-emitter-plugin.js.map +1 -1
- package/dist/schemas/agent-template-schema.d.ts +12 -12
- package/dist/schemas/agent-template-schema.d.ts.map +1 -1
- package/dist/schemas/agent-template-schema.js +35 -33
- package/dist/schemas/agent-template-schema.js.map +1 -1
- package/dist/services/cache/cache-key-builder.d.ts +13 -0
- package/dist/services/cache/cache-key-builder.d.ts.map +1 -0
- package/dist/services/cache/cache-key-builder.js +30 -0
- package/dist/services/cache/cache-key-builder.js.map +1 -0
- package/dist/services/cache/cache-key-builder.test.d.ts +2 -0
- package/dist/services/cache/cache-key-builder.test.d.ts.map +1 -0
- package/dist/services/cache/cache-key-builder.test.js +56 -0
- package/dist/services/cache/cache-key-builder.test.js.map +1 -0
- package/dist/services/cache/execution-cache-service.d.ts +18 -0
- package/dist/services/cache/execution-cache-service.d.ts.map +1 -0
- package/dist/services/cache/execution-cache-service.js +26 -0
- package/dist/services/cache/execution-cache-service.js.map +1 -0
- package/dist/services/cache/execution-cache-service.test.d.ts +2 -0
- package/dist/services/cache/execution-cache-service.test.d.ts.map +1 -0
- package/dist/services/cache/execution-cache-service.test.js +59 -0
- package/dist/services/cache/execution-cache-service.test.js.map +1 -0
- package/dist/services/cache/index.d.ts +4 -0
- package/dist/services/cache/index.d.ts.map +1 -0
- package/dist/services/cache/index.js +4 -0
- package/dist/services/cache/index.js.map +1 -0
- package/dist/services/cache/memory-cache-storage.d.ts +25 -0
- package/dist/services/cache/memory-cache-storage.d.ts.map +1 -0
- package/dist/services/cache/memory-cache-storage.js +89 -0
- package/dist/services/cache/memory-cache-storage.js.map +1 -0
- package/dist/services/cache/memory-cache-storage.test.d.ts +2 -0
- package/dist/services/cache/memory-cache-storage.test.d.ts.map +1 -0
- package/dist/services/cache/memory-cache-storage.test.js +94 -0
- package/dist/services/cache/memory-cache-storage.test.js.map +1 -0
- package/dist/services/conversation-service/conversation-service.test.d.ts +2 -0
- package/dist/services/conversation-service/conversation-service.test.d.ts.map +1 -0
- package/dist/services/conversation-service/conversation-service.test.js +248 -0
- package/dist/services/conversation-service/conversation-service.test.js.map +1 -0
- package/dist/services/conversation-service/index.d.ts +10 -71
- package/dist/services/conversation-service/index.d.ts.map +1 -1
- package/dist/services/conversation-service/index.js +58 -355
- package/dist/services/conversation-service/index.js.map +1 -1
- package/dist/services/conversation-service/message-helpers.d.ts +47 -0
- package/dist/services/conversation-service/message-helpers.d.ts.map +1 -0
- package/dist/services/conversation-service/message-helpers.js +150 -0
- package/dist/services/conversation-service/message-helpers.js.map +1 -0
- package/dist/services/conversation-service/types.d.ts.map +1 -1
- package/dist/services/execution-constants.d.ts +16 -0
- package/dist/services/execution-constants.d.ts.map +1 -0
- package/dist/services/execution-constants.js +16 -0
- package/dist/services/execution-constants.js.map +1 -0
- package/dist/services/execution-event-emitter.d.ts +60 -0
- package/dist/services/execution-event-emitter.d.ts.map +1 -0
- package/dist/services/execution-event-emitter.js +323 -0
- package/dist/services/execution-event-emitter.js.map +1 -0
- package/dist/services/execution-round.d.ts +58 -0
- package/dist/services/execution-round.d.ts.map +1 -0
- package/dist/services/execution-round.js +323 -0
- package/dist/services/execution-round.js.map +1 -0
- package/dist/services/execution-round.test.d.ts +2 -0
- package/dist/services/execution-round.test.d.ts.map +1 -0
- package/dist/services/execution-round.test.js +188 -0
- package/dist/services/execution-round.test.js.map +1 -0
- package/dist/services/execution-service.d.ts +28 -125
- package/dist/services/execution-service.d.ts.map +1 -1
- package/dist/services/execution-service.js +222 -1134
- package/dist/services/execution-service.js.map +1 -1
- package/dist/services/execution-service.test.js +115 -72
- package/dist/services/execution-service.test.js.map +1 -1
- package/dist/services/execution-stream.d.ts +32 -0
- package/dist/services/execution-stream.d.ts.map +1 -0
- package/dist/services/execution-stream.js +268 -0
- package/dist/services/execution-stream.js.map +1 -0
- package/dist/services/execution-types.d.ts +122 -0
- package/dist/services/execution-types.d.ts.map +1 -0
- package/dist/services/execution-types.js +48 -0
- package/dist/services/execution-types.js.map +1 -0
- package/dist/services/history-module.d.ts.map +1 -1
- package/dist/services/history-module.js +1 -1
- package/dist/services/history-module.js.map +1 -1
- package/dist/services/history-module.test.d.ts +2 -0
- package/dist/services/history-module.test.d.ts.map +1 -0
- package/dist/services/history-module.test.js +137 -0
- package/dist/services/history-module.test.js.map +1 -0
- package/dist/services/in-memory-history-store.d.ts.map +1 -1
- package/dist/services/in-memory-history-store.js +1 -1
- package/dist/services/in-memory-history-store.js.map +1 -1
- package/dist/services/index.d.ts +0 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -3
- package/dist/services/index.js.map +1 -1
- package/dist/services/plugin-hook-dispatcher.d.ts +11 -0
- package/dist/services/plugin-hook-dispatcher.d.ts.map +1 -0
- package/dist/services/plugin-hook-dispatcher.js +68 -0
- package/dist/services/plugin-hook-dispatcher.js.map +1 -0
- package/dist/services/plugin-hook-dispatcher.test.d.ts +2 -0
- package/dist/services/plugin-hook-dispatcher.test.d.ts.map +1 -0
- package/dist/services/plugin-hook-dispatcher.test.js +93 -0
- package/dist/services/plugin-hook-dispatcher.test.js.map +1 -0
- package/dist/services/plugin-priority.test.d.ts +2 -0
- package/dist/services/plugin-priority.test.d.ts.map +1 -0
- package/dist/services/plugin-priority.test.js +119 -0
- package/dist/services/plugin-priority.test.js.map +1 -0
- package/dist/services/tool-execution-service.d.ts +1 -0
- package/dist/services/tool-execution-service.d.ts.map +1 -1
- package/dist/services/tool-execution-service.js +89 -46
- package/dist/services/tool-execution-service.js.map +1 -1
- package/dist/services/tool-execution-service.test.d.ts +2 -0
- package/dist/services/tool-execution-service.test.d.ts.map +1 -0
- package/dist/services/tool-execution-service.test.js +358 -0
- package/dist/services/tool-execution-service.test.js.map +1 -0
- package/dist/tool-registry/function-tool.d.ts +54 -0
- package/dist/tool-registry/function-tool.d.ts.map +1 -0
- package/dist/tool-registry/function-tool.js +190 -0
- package/dist/tool-registry/function-tool.js.map +1 -0
- package/dist/tool-registry/index.d.ts +3 -0
- package/dist/tool-registry/index.d.ts.map +1 -0
- package/dist/tool-registry/index.js +3 -0
- package/dist/tool-registry/index.js.map +1 -0
- package/dist/tool-registry/tool-registry.d.ts +54 -0
- package/dist/tool-registry/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry/tool-registry.js +148 -0
- package/dist/tool-registry/tool-registry.js.map +1 -0
- package/dist/utils/errors.d.ts +11 -2
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +13 -2
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/errors.test.d.ts +2 -0
- package/dist/utils/errors.test.d.ts.map +1 -0
- package/dist/utils/errors.test.js +361 -0
- package/dist/utils/errors.test.js.map +1 -0
- package/dist/utils/execution-proxy.d.ts +7 -3
- package/dist/utils/execution-proxy.d.ts.map +1 -1
- package/dist/utils/execution-proxy.js +64 -42
- package/dist/utils/execution-proxy.js.map +1 -1
- package/dist/utils/execution-proxy.test.d.ts +2 -0
- package/dist/utils/execution-proxy.test.d.ts.map +1 -0
- package/dist/utils/execution-proxy.test.js +179 -0
- package/dist/utils/execution-proxy.test.js.map +1 -0
- package/dist/utils/logger.d.ts +3 -3
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +9 -5
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/message-converter.d.ts +1 -4
- package/dist/utils/message-converter.d.ts.map +1 -1
- package/dist/utils/message-converter.js +13 -12
- package/dist/utils/message-converter.js.map +1 -1
- package/dist/utils/message-converter.test.d.ts +2 -0
- package/dist/utils/message-converter.test.d.ts.map +1 -0
- package/dist/utils/message-converter.test.js +164 -0
- package/dist/utils/message-converter.test.js.map +1 -0
- package/dist/utils/periodic-task.d.ts +1 -1
- package/dist/utils/periodic-task.d.ts.map +1 -1
- package/dist/utils/periodic-task.js +1 -1
- package/dist/utils/periodic-task.js.map +1 -1
- package/dist/utils/periodic-task.test.d.ts +2 -0
- package/dist/utils/periodic-task.test.d.ts.map +1 -0
- package/dist/utils/periodic-task.test.js +87 -0
- package/dist/utils/periodic-task.test.js.map +1 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +17 -11
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/validation.test.d.ts +2 -0
- package/dist/utils/validation.test.d.ts.map +1 -0
- package/dist/utils/validation.test.js +249 -0
- package/dist/utils/validation.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,52 +1,54 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
const MIN_DESCRIPTION_LENGTH = 10;
|
|
3
|
+
const MIN_SYSTEM_PROMPT_LENGTH = 50;
|
|
4
|
+
const MAX_TAGS = 10;
|
|
5
|
+
const MAX_TOKENS_LIMIT = 100000;
|
|
2
6
|
/**
|
|
3
7
|
* Zod schema for validating agent template metadata
|
|
4
8
|
*/
|
|
5
|
-
export const AgentTemplateMetadataSchema = z
|
|
9
|
+
export const AgentTemplateMetadataSchema = z
|
|
10
|
+
.object({
|
|
6
11
|
type: z.enum(['builtin', 'custom']),
|
|
7
12
|
author: z.string().optional(),
|
|
8
|
-
createdAt: z.union([
|
|
9
|
-
|
|
10
|
-
z.string().transform((str) => new Date(str))
|
|
11
|
-
]).optional(),
|
|
12
|
-
updatedAt: z.union([
|
|
13
|
-
z.date(),
|
|
14
|
-
z.string().transform((str) => new Date(str))
|
|
15
|
-
]).optional(),
|
|
13
|
+
createdAt: z.union([z.date(), z.string().transform((str) => new Date(str))]).optional(),
|
|
14
|
+
updatedAt: z.union([z.date(), z.string().transform((str) => new Date(str))]).optional(),
|
|
16
15
|
description: z.string().optional(),
|
|
17
|
-
category: z.string().optional()
|
|
18
|
-
})
|
|
16
|
+
category: z.string().optional(),
|
|
17
|
+
})
|
|
18
|
+
.strict();
|
|
19
19
|
/**
|
|
20
20
|
* Zod schema for validating agent templates
|
|
21
21
|
*/
|
|
22
|
-
export const AgentTemplateSchema = z
|
|
23
|
-
|
|
22
|
+
export const AgentTemplateSchema = z
|
|
23
|
+
.object({
|
|
24
|
+
name: z
|
|
25
|
+
.string()
|
|
24
26
|
.min(1, 'Template name cannot be empty')
|
|
25
27
|
.regex(/^[a-z0-9_-]+$/, 'Template name must contain only lowercase letters, numbers, underscores, and hyphens'),
|
|
26
|
-
description: z
|
|
27
|
-
.
|
|
28
|
-
|
|
28
|
+
description: z
|
|
29
|
+
.string()
|
|
30
|
+
.min(MIN_DESCRIPTION_LENGTH, 'Description must be at least 10 characters long'),
|
|
31
|
+
llm_provider: z
|
|
32
|
+
.string()
|
|
29
33
|
.min(1, 'LLM provider is required')
|
|
30
34
|
.regex(/^[a-z0-9_-]+$/, 'Provider name must contain only lowercase letters, numbers, underscores, and hyphens'),
|
|
31
|
-
model: z.string()
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
.
|
|
35
|
-
.
|
|
36
|
-
|
|
37
|
-
.
|
|
38
|
-
tags: z.array(z.string())
|
|
35
|
+
model: z.string().min(1, 'Model name is required'),
|
|
36
|
+
temperature: z.number().min(0, 'Temperature must be >= 0').max(1, 'Temperature must be <= 1'),
|
|
37
|
+
system_prompt: z
|
|
38
|
+
.string()
|
|
39
|
+
.min(MIN_SYSTEM_PROMPT_LENGTH, 'System prompt must be at least 50 characters long'),
|
|
40
|
+
tags: z
|
|
41
|
+
.array(z.string())
|
|
39
42
|
.min(1, 'At least one tag is required')
|
|
40
|
-
.max(
|
|
41
|
-
version: z
|
|
43
|
+
.max(MAX_TAGS, 'Maximum 10 tags allowed'),
|
|
44
|
+
version: z
|
|
45
|
+
.string()
|
|
42
46
|
.regex(/^\d+\.\d+\.\d+$/, 'Version must follow semantic versioning (x.y.z)')
|
|
43
47
|
.optional(),
|
|
44
|
-
maxTokens: z.number()
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
metadata: AgentTemplateMetadataSchema.optional()
|
|
49
|
-
}).strict();
|
|
48
|
+
maxTokens: z.number().min(1).max(MAX_TOKENS_LIMIT).optional(),
|
|
49
|
+
metadata: AgentTemplateMetadataSchema.optional(),
|
|
50
|
+
})
|
|
51
|
+
.strict();
|
|
50
52
|
/**
|
|
51
53
|
* Validate an agent template
|
|
52
54
|
*
|
|
@@ -79,7 +81,7 @@ export function safeValidateAgentTemplate(template) {
|
|
|
79
81
|
* @returns Formatted error messages
|
|
80
82
|
*/
|
|
81
83
|
export function getValidationErrors(error) {
|
|
82
|
-
return error.errors.map(err => {
|
|
84
|
+
return error.errors.map((err) => {
|
|
83
85
|
const path = err.path.length > 0 ? err.path.join('.') : 'root';
|
|
84
86
|
return `${path}: ${err.message}`;
|
|
85
87
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-template-schema.js","sourceRoot":"","sources":["../../src/schemas/agent-template-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-template-schema.js","sourceRoot":"","sources":["../../src/schemas/agent-template-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TUniversalMessage } from '../../interfaces/messages';
|
|
2
|
+
import type { ICacheKey } from '../../interfaces/cache';
|
|
3
|
+
interface ICacheKeyOptions {
|
|
4
|
+
temperature?: number;
|
|
5
|
+
maxTokens?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class CacheKeyBuilder {
|
|
8
|
+
build(messages: TUniversalMessage[], model: string, provider: string, options?: ICacheKeyOptions): ICacheKey;
|
|
9
|
+
computeIntegrityHash(content: string): string;
|
|
10
|
+
private sha256;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=cache-key-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-key-builder.d.ts","sourceRoot":"","sources":["../../../src/services/cache/cache-key-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,UAAU,gBAAgB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,eAAe;IAC1B,KAAK,CACH,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACzB,SAAS;IAqBZ,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI7C,OAAO,CAAC,MAAM;CAKf"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import jsSHA from 'jssha';
|
|
2
|
+
export class CacheKeyBuilder {
|
|
3
|
+
build(messages, model, provider, options) {
|
|
4
|
+
const serializable = messages.map((m) => ({
|
|
5
|
+
role: m.role,
|
|
6
|
+
content: m.content,
|
|
7
|
+
}));
|
|
8
|
+
const payload = JSON.stringify({
|
|
9
|
+
messages: serializable,
|
|
10
|
+
model,
|
|
11
|
+
provider,
|
|
12
|
+
temperature: options?.temperature,
|
|
13
|
+
maxTokens: options?.maxTokens,
|
|
14
|
+
});
|
|
15
|
+
return {
|
|
16
|
+
hash: this.sha256(payload),
|
|
17
|
+
model,
|
|
18
|
+
provider,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
computeIntegrityHash(content) {
|
|
22
|
+
return this.sha256(content);
|
|
23
|
+
}
|
|
24
|
+
sha256(input) {
|
|
25
|
+
const shaObj = new jsSHA('SHA-256', 'TEXT');
|
|
26
|
+
shaObj.update(input);
|
|
27
|
+
return shaObj.getHash('HEX');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=cache-key-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-key-builder.js","sourceRoot":"","sources":["../../../src/services/cache/cache-key-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,OAAO,eAAe;IAC1B,KAAK,CACH,QAA6B,EAC7B,KAAa,EACb,QAAgB,EAChB,OAA0B;QAE1B,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,QAAQ,EAAE,YAAY;YACtB,KAAK;YACL,QAAQ;YACR,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,SAAS,EAAE,OAAO,EAAE,SAAS;SAC9B,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAC1B,KAAK;YACL,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,OAAe;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAEO,MAAM,CAAC,KAAa;QAC1B,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-key-builder.test.d.ts","sourceRoot":"","sources":["../../../src/services/cache/cache-key-builder.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { CacheKeyBuilder } from './cache-key-builder';
|
|
3
|
+
describe('CacheKeyBuilder', () => {
|
|
4
|
+
const builder = new CacheKeyBuilder();
|
|
5
|
+
const messages = [
|
|
6
|
+
{ role: 'user', content: 'Hello', timestamp: new Date('2024-01-01') },
|
|
7
|
+
];
|
|
8
|
+
it('should produce consistent hash for identical inputs', () => {
|
|
9
|
+
const key1 = builder.build(messages, 'gpt-4', 'openai');
|
|
10
|
+
const key2 = builder.build(messages, 'gpt-4', 'openai');
|
|
11
|
+
expect(key1.hash).toBe(key2.hash);
|
|
12
|
+
expect(key1.model).toBe('gpt-4');
|
|
13
|
+
expect(key1.provider).toBe('openai');
|
|
14
|
+
});
|
|
15
|
+
it('should produce different hashes for different messages', () => {
|
|
16
|
+
const otherMessages = [
|
|
17
|
+
{ role: 'user', content: 'Goodbye', timestamp: new Date('2024-01-01') },
|
|
18
|
+
];
|
|
19
|
+
const key1 = builder.build(messages, 'gpt-4', 'openai');
|
|
20
|
+
const key2 = builder.build(otherMessages, 'gpt-4', 'openai');
|
|
21
|
+
expect(key1.hash).not.toBe(key2.hash);
|
|
22
|
+
});
|
|
23
|
+
it('should produce different hashes for different models', () => {
|
|
24
|
+
const key1 = builder.build(messages, 'gpt-4', 'openai');
|
|
25
|
+
const key2 = builder.build(messages, 'gpt-3.5-turbo', 'openai');
|
|
26
|
+
expect(key1.hash).not.toBe(key2.hash);
|
|
27
|
+
});
|
|
28
|
+
it('should produce different hashes for different providers', () => {
|
|
29
|
+
const key1 = builder.build(messages, 'gpt-4', 'openai');
|
|
30
|
+
const key2 = builder.build(messages, 'gpt-4', 'anthropic');
|
|
31
|
+
expect(key1.hash).not.toBe(key2.hash);
|
|
32
|
+
});
|
|
33
|
+
it('should exclude timestamps from hash computation', () => {
|
|
34
|
+
const messages1 = [
|
|
35
|
+
{ role: 'user', content: 'Hello', timestamp: new Date('2024-01-01') },
|
|
36
|
+
];
|
|
37
|
+
const messages2 = [
|
|
38
|
+
{ role: 'user', content: 'Hello', timestamp: new Date('2025-06-15') },
|
|
39
|
+
];
|
|
40
|
+
const key1 = builder.build(messages1, 'gpt-4', 'openai');
|
|
41
|
+
const key2 = builder.build(messages2, 'gpt-4', 'openai');
|
|
42
|
+
expect(key1.hash).toBe(key2.hash);
|
|
43
|
+
});
|
|
44
|
+
it('should include temperature and maxTokens when provided', () => {
|
|
45
|
+
const key1 = builder.build(messages, 'gpt-4', 'openai', { temperature: 0.7 });
|
|
46
|
+
const key2 = builder.build(messages, 'gpt-4', 'openai', { temperature: 0.9 });
|
|
47
|
+
expect(key1.hash).not.toBe(key2.hash);
|
|
48
|
+
});
|
|
49
|
+
it('should compute integrity hash for response content', () => {
|
|
50
|
+
const hash = builder.computeIntegrityHash('Hello world');
|
|
51
|
+
expect(hash).toBeTruthy();
|
|
52
|
+
expect(typeof hash).toBe('string');
|
|
53
|
+
expect(hash).toBe(builder.computeIntegrityHash('Hello world'));
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=cache-key-builder.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-key-builder.test.js","sourceRoot":"","sources":["../../../src/services/cache/cache-key-builder.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TUniversalMessage } from '../../interfaces/messages';
|
|
2
|
+
import type { ICacheStorage, ICacheStats } from '../../interfaces/cache';
|
|
3
|
+
import { CacheKeyBuilder } from './cache-key-builder';
|
|
4
|
+
export declare class ExecutionCacheService {
|
|
5
|
+
private readonly storage;
|
|
6
|
+
private readonly keyBuilder;
|
|
7
|
+
constructor(storage: ICacheStorage, keyBuilder: CacheKeyBuilder);
|
|
8
|
+
lookup(messages: TUniversalMessage[], model: string, provider: string, options?: {
|
|
9
|
+
temperature?: number;
|
|
10
|
+
maxTokens?: number;
|
|
11
|
+
}): string | undefined;
|
|
12
|
+
store(messages: TUniversalMessage[], model: string, provider: string, response: string, options?: {
|
|
13
|
+
temperature?: number;
|
|
14
|
+
maxTokens?: number;
|
|
15
|
+
}): void;
|
|
16
|
+
getStats(): ICacheStats;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=execution-cache-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-cache-service.d.ts","sourceRoot":"","sources":["../../../src/services/cache/execution-cache-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,eAAe;IAG9C,MAAM,CACJ,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACrD,MAAM,GAAG,SAAS;IAMrB,KAAK,CACH,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACrD,IAAI;IAUP,QAAQ,IAAI,WAAW;CAGxB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export class ExecutionCacheService {
|
|
2
|
+
storage;
|
|
3
|
+
keyBuilder;
|
|
4
|
+
constructor(storage, keyBuilder) {
|
|
5
|
+
this.storage = storage;
|
|
6
|
+
this.keyBuilder = keyBuilder;
|
|
7
|
+
}
|
|
8
|
+
lookup(messages, model, provider, options) {
|
|
9
|
+
const key = this.keyBuilder.build(messages, model, provider, options);
|
|
10
|
+
const entry = this.storage.get(key.hash);
|
|
11
|
+
return entry ? entry.response : undefined;
|
|
12
|
+
}
|
|
13
|
+
store(messages, model, provider, response, options) {
|
|
14
|
+
const key = this.keyBuilder.build(messages, model, provider, options);
|
|
15
|
+
this.storage.set({
|
|
16
|
+
key,
|
|
17
|
+
response,
|
|
18
|
+
timestamp: Date.now(),
|
|
19
|
+
integrityHash: this.keyBuilder.computeIntegrityHash(response),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
getStats() {
|
|
23
|
+
return this.storage.getStats();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=execution-cache-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-cache-service.js","sourceRoot":"","sources":["../../../src/services/cache/execution-cache-service.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,qBAAqB;IAEb;IACA;IAFnB,YACmB,OAAsB,EACtB,UAA2B;QAD3B,YAAO,GAAP,OAAO,CAAe;QACtB,eAAU,GAAV,UAAU,CAAiB;IAC3C,CAAC;IAEJ,MAAM,CACJ,QAA6B,EAC7B,KAAa,EACb,QAAgB,EAChB,OAAsD;QAEtD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5C,CAAC;IAED,KAAK,CACH,QAA6B,EAC7B,KAAa,EACb,QAAgB,EAChB,QAAgB,EAChB,OAAsD;QAEtD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YACf,GAAG;YACH,QAAQ;YACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-cache-service.test.d.ts","sourceRoot":"","sources":["../../../src/services/cache/execution-cache-service.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
|
+
import { ExecutionCacheService } from './execution-cache-service';
|
|
3
|
+
import { MemoryCacheStorage } from './memory-cache-storage';
|
|
4
|
+
import { CacheKeyBuilder } from './cache-key-builder';
|
|
5
|
+
import { CacheIntegrityError } from '../../utils/errors';
|
|
6
|
+
describe('ExecutionCacheService', () => {
|
|
7
|
+
let service;
|
|
8
|
+
let storage;
|
|
9
|
+
const messages = [{ role: 'user', content: 'Hello', timestamp: new Date() }];
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
storage = new MemoryCacheStorage({ maxEntries: 100, ttlMs: 60000 });
|
|
12
|
+
service = new ExecutionCacheService(storage, new CacheKeyBuilder());
|
|
13
|
+
});
|
|
14
|
+
describe('lookup', () => {
|
|
15
|
+
it('should return undefined on cache miss', () => {
|
|
16
|
+
const result = service.lookup(messages, 'gpt-4', 'openai');
|
|
17
|
+
expect(result).toBeUndefined();
|
|
18
|
+
});
|
|
19
|
+
it('should return cached response on cache hit', () => {
|
|
20
|
+
service.store(messages, 'gpt-4', 'openai', 'Cached response');
|
|
21
|
+
const result = service.lookup(messages, 'gpt-4', 'openai');
|
|
22
|
+
expect(result).toBe('Cached response');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('store', () => {
|
|
26
|
+
it('should store successful response', () => {
|
|
27
|
+
service.store(messages, 'gpt-4', 'openai', 'Hello world');
|
|
28
|
+
const result = service.lookup(messages, 'gpt-4', 'openai');
|
|
29
|
+
expect(result).toBe('Hello world');
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
describe('integrity error propagation', () => {
|
|
33
|
+
it('should propagate CacheIntegrityError without fallback', () => {
|
|
34
|
+
service.store(messages, 'gpt-4', 'openai', 'Hello world');
|
|
35
|
+
// Corrupt the storage entry directly
|
|
36
|
+
const keyBuilder = new CacheKeyBuilder();
|
|
37
|
+
const key = keyBuilder.build(messages, 'gpt-4', 'openai');
|
|
38
|
+
const entry = storage.get(key.hash);
|
|
39
|
+
if (entry) {
|
|
40
|
+
// Re-insert with tampered integrity hash
|
|
41
|
+
storage.delete(key.hash);
|
|
42
|
+
storage.set({ ...entry, integrityHash: 'tampered' });
|
|
43
|
+
}
|
|
44
|
+
expect(() => service.lookup(messages, 'gpt-4', 'openai')).toThrow(CacheIntegrityError);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('getStats', () => {
|
|
48
|
+
it('should return storage stats', () => {
|
|
49
|
+
service.store(messages, 'gpt-4', 'openai', 'Hello');
|
|
50
|
+
service.lookup(messages, 'gpt-4', 'openai'); // hit
|
|
51
|
+
service.lookup([{ role: 'user', content: 'X', timestamp: new Date() }], 'gpt-4', 'openai'); // miss
|
|
52
|
+
const stats = service.getStats();
|
|
53
|
+
expect(stats.hits).toBe(1);
|
|
54
|
+
expect(stats.misses).toBe(1);
|
|
55
|
+
expect(stats.entries).toBe(1);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=execution-cache-service.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-cache-service.test.js","sourceRoot":"","sources":["../../../src/services/cache/execution-cache-service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ICacheEntry, ICacheStorage, ICacheStats } from '../../interfaces/cache';
|
|
2
|
+
interface IMemoryCacheStorageOptions {
|
|
3
|
+
maxEntries: number;
|
|
4
|
+
ttlMs: number;
|
|
5
|
+
}
|
|
6
|
+
export declare class MemoryCacheStorage implements ICacheStorage {
|
|
7
|
+
private readonly cache;
|
|
8
|
+
private readonly accessOrder;
|
|
9
|
+
private readonly maxEntries;
|
|
10
|
+
private readonly ttlMs;
|
|
11
|
+
private readonly keyBuilder;
|
|
12
|
+
private hits;
|
|
13
|
+
private misses;
|
|
14
|
+
constructor(options: IMemoryCacheStorageOptions);
|
|
15
|
+
get(hash: string): ICacheEntry | undefined;
|
|
16
|
+
set(entry: ICacheEntry): void;
|
|
17
|
+
delete(hash: string): boolean;
|
|
18
|
+
clear(): void;
|
|
19
|
+
getStats(): ICacheStats;
|
|
20
|
+
private touchAccessOrder;
|
|
21
|
+
private removeFromAccessOrder;
|
|
22
|
+
private evictLRU;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=memory-cache-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-cache-storage.d.ts","sourceRoot":"","sources":["../../../src/services/cache/memory-cache-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAItF,UAAU,0BAA0B;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;gBAEP,OAAO,EAAE,0BAA0B;IAK/C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IA+B1C,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAW7B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAS7B,KAAK,IAAI,IAAI;IAOb,QAAQ,IAAI,WAAW;IAUvB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,QAAQ;CAMjB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { CacheIntegrityError } from '../../utils/errors';
|
|
2
|
+
import { CacheKeyBuilder } from './cache-key-builder';
|
|
3
|
+
export class MemoryCacheStorage {
|
|
4
|
+
cache = new Map();
|
|
5
|
+
accessOrder = [];
|
|
6
|
+
maxEntries;
|
|
7
|
+
ttlMs;
|
|
8
|
+
keyBuilder = new CacheKeyBuilder();
|
|
9
|
+
hits = 0;
|
|
10
|
+
misses = 0;
|
|
11
|
+
constructor(options) {
|
|
12
|
+
this.maxEntries = options.maxEntries;
|
|
13
|
+
this.ttlMs = options.ttlMs;
|
|
14
|
+
}
|
|
15
|
+
get(hash) {
|
|
16
|
+
const entry = this.cache.get(hash);
|
|
17
|
+
if (!entry) {
|
|
18
|
+
this.misses++;
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
if (Date.now() - entry.timestamp > this.ttlMs) {
|
|
22
|
+
this.cache.delete(hash);
|
|
23
|
+
this.removeFromAccessOrder(hash);
|
|
24
|
+
this.misses++;
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
const expectedHash = this.keyBuilder.computeIntegrityHash(entry.response);
|
|
28
|
+
if (entry.integrityHash !== expectedHash) {
|
|
29
|
+
this.cache.delete(hash);
|
|
30
|
+
this.removeFromAccessOrder(hash);
|
|
31
|
+
throw new CacheIntegrityError(`Integrity check failed for cache entry ${hash}`, {
|
|
32
|
+
hash,
|
|
33
|
+
expected: expectedHash,
|
|
34
|
+
actual: entry.integrityHash,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
this.touchAccessOrder(hash);
|
|
38
|
+
this.hits++;
|
|
39
|
+
return entry;
|
|
40
|
+
}
|
|
41
|
+
set(entry) {
|
|
42
|
+
const hash = entry.key.hash;
|
|
43
|
+
if (!this.cache.has(hash) && this.cache.size >= this.maxEntries) {
|
|
44
|
+
this.evictLRU();
|
|
45
|
+
}
|
|
46
|
+
this.cache.set(hash, entry);
|
|
47
|
+
this.touchAccessOrder(hash);
|
|
48
|
+
}
|
|
49
|
+
delete(hash) {
|
|
50
|
+
if (this.cache.has(hash)) {
|
|
51
|
+
this.cache.delete(hash);
|
|
52
|
+
this.removeFromAccessOrder(hash);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
clear() {
|
|
58
|
+
this.cache.clear();
|
|
59
|
+
this.accessOrder.length = 0;
|
|
60
|
+
this.hits = 0;
|
|
61
|
+
this.misses = 0;
|
|
62
|
+
}
|
|
63
|
+
getStats() {
|
|
64
|
+
const total = this.hits + this.misses;
|
|
65
|
+
return {
|
|
66
|
+
hits: this.hits,
|
|
67
|
+
misses: this.misses,
|
|
68
|
+
entries: this.cache.size,
|
|
69
|
+
hitRate: total === 0 ? 0 : this.hits / total,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
touchAccessOrder(hash) {
|
|
73
|
+
this.removeFromAccessOrder(hash);
|
|
74
|
+
this.accessOrder.push(hash);
|
|
75
|
+
}
|
|
76
|
+
removeFromAccessOrder(hash) {
|
|
77
|
+
const idx = this.accessOrder.indexOf(hash);
|
|
78
|
+
if (idx !== -1) {
|
|
79
|
+
this.accessOrder.splice(idx, 1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
evictLRU() {
|
|
83
|
+
const lruHash = this.accessOrder.shift();
|
|
84
|
+
if (lruHash) {
|
|
85
|
+
this.cache.delete(lruHash);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=memory-cache-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-cache-storage.js","sourceRoot":"","sources":["../../../src/services/cache/memory-cache-storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAOtD,MAAM,OAAO,kBAAkB;IACZ,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IACvC,WAAW,GAAa,EAAE,CAAC;IAC3B,UAAU,CAAS;IACnB,KAAK,CAAS;IACd,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAC5C,IAAI,GAAG,CAAC,CAAC;IACT,MAAM,GAAG,CAAC,CAAC;IAEnB,YAAY,OAAmC;QAC7C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1E,IAAI,KAAK,CAAC,aAAa,KAAK,YAAY,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,IAAI,mBAAmB,CAAC,0CAA0C,IAAI,EAAE,EAAE;gBAC9E,IAAI;gBACJ,QAAQ,EAAE,YAAY;gBACtB,MAAM,EAAE,KAAK,CAAC,aAAa;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,KAAkB;QACpB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACxB,OAAO,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK;SAC7C,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,qBAAqB,CAAC,IAAY;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,QAAQ;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-cache-storage.test.d.ts","sourceRoot":"","sources":["../../../src/services/cache/memory-cache-storage.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
|
+
import { MemoryCacheStorage } from './memory-cache-storage';
|
|
3
|
+
import { CacheIntegrityError } from '../../utils/errors';
|
|
4
|
+
import { CacheKeyBuilder } from './cache-key-builder';
|
|
5
|
+
describe('MemoryCacheStorage', () => {
|
|
6
|
+
let storage;
|
|
7
|
+
const keyBuilder = new CacheKeyBuilder();
|
|
8
|
+
const createEntry = (hash, response) => ({
|
|
9
|
+
key: { hash, model: 'gpt-4', provider: 'openai' },
|
|
10
|
+
response,
|
|
11
|
+
timestamp: Date.now(),
|
|
12
|
+
integrityHash: keyBuilder.computeIntegrityHash(response),
|
|
13
|
+
});
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
storage = new MemoryCacheStorage({ maxEntries: 3, ttlMs: 60000 });
|
|
16
|
+
});
|
|
17
|
+
describe('get/set', () => {
|
|
18
|
+
it('should store and retrieve an entry', () => {
|
|
19
|
+
const entry = createEntry('abc', 'Hello');
|
|
20
|
+
storage.set(entry);
|
|
21
|
+
const result = storage.get('abc');
|
|
22
|
+
expect(result).toEqual(entry);
|
|
23
|
+
});
|
|
24
|
+
it('should return undefined for missing key', () => {
|
|
25
|
+
expect(storage.get('nonexistent')).toBeUndefined();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('delete', () => {
|
|
29
|
+
it('should delete an existing entry', () => {
|
|
30
|
+
storage.set(createEntry('abc', 'Hello'));
|
|
31
|
+
expect(storage.delete('abc')).toBe(true);
|
|
32
|
+
expect(storage.get('abc')).toBeUndefined();
|
|
33
|
+
});
|
|
34
|
+
it('should return false for non-existing entry', () => {
|
|
35
|
+
expect(storage.delete('nonexistent')).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('clear', () => {
|
|
39
|
+
it('should remove all entries', () => {
|
|
40
|
+
storage.set(createEntry('a', 'A'));
|
|
41
|
+
storage.set(createEntry('b', 'B'));
|
|
42
|
+
storage.clear();
|
|
43
|
+
expect(storage.getStats().entries).toBe(0);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('TTL expiry', () => {
|
|
47
|
+
it('should return undefined for expired entries', () => {
|
|
48
|
+
storage = new MemoryCacheStorage({ maxEntries: 10, ttlMs: 100 });
|
|
49
|
+
const entry = createEntry('abc', 'Hello');
|
|
50
|
+
entry.timestamp = Date.now() - 200;
|
|
51
|
+
storage.set(entry);
|
|
52
|
+
expect(storage.get('abc')).toBeUndefined();
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
describe('LRU eviction', () => {
|
|
56
|
+
it('should evict least recently used entry when maxEntries exceeded', () => {
|
|
57
|
+
storage.set(createEntry('a', 'A'));
|
|
58
|
+
storage.set(createEntry('b', 'B'));
|
|
59
|
+
storage.set(createEntry('c', 'C'));
|
|
60
|
+
// Access 'a' to make it recently used
|
|
61
|
+
storage.get('a');
|
|
62
|
+
// Adding 'd' should evict 'b' (least recently used)
|
|
63
|
+
storage.set(createEntry('d', 'D'));
|
|
64
|
+
expect(storage.get('a')).toBeDefined();
|
|
65
|
+
expect(storage.get('b')).toBeUndefined();
|
|
66
|
+
expect(storage.get('c')).toBeDefined();
|
|
67
|
+
expect(storage.get('d')).toBeDefined();
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('integrity validation', () => {
|
|
71
|
+
it('should throw CacheIntegrityError when integrity hash does not match', () => {
|
|
72
|
+
const entry = createEntry('abc', 'Hello');
|
|
73
|
+
entry.integrityHash = 'tampered-hash';
|
|
74
|
+
storage.set(entry);
|
|
75
|
+
expect(() => storage.get('abc')).toThrow(CacheIntegrityError);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe('stats', () => {
|
|
79
|
+
it('should track hits and misses', () => {
|
|
80
|
+
storage.set(createEntry('abc', 'Hello'));
|
|
81
|
+
storage.get('abc'); // hit
|
|
82
|
+
storage.get('xyz'); // miss
|
|
83
|
+
const stats = storage.getStats();
|
|
84
|
+
expect(stats.hits).toBe(1);
|
|
85
|
+
expect(stats.misses).toBe(1);
|
|
86
|
+
expect(stats.entries).toBe(1);
|
|
87
|
+
expect(stats.hitRate).toBe(0.5);
|
|
88
|
+
});
|
|
89
|
+
it('should return 0 hitRate when no lookups', () => {
|
|
90
|
+
expect(storage.getStats().hitRate).toBe(0);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=memory-cache-storage.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-cache-storage.test.js","sourceRoot":"","sources":["../../../src/services/cache/memory-cache-storage.test.ts"],"names":[],"mappings":"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"}
|