@substrate-ai/factory 0.19.54 → 0.20.2
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 +39 -0
- package/dist/config.d.ts +4 -4
- package/package.json +12 -3
- package/dist/__tests__/config.test.d.ts +0 -11
- package/dist/__tests__/config.test.d.ts.map +0 -1
- package/dist/__tests__/config.test.js +0 -215
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/factory-run-command.test.d.ts +0 -12
- package/dist/__tests__/factory-run-command.test.d.ts.map +0 -1
- package/dist/__tests__/factory-run-command.test.js +0 -454
- package/dist/__tests__/factory-run-command.test.js.map +0 -1
- package/dist/__tests__/factory-validate-command.test.d.ts +0 -15
- package/dist/__tests__/factory-validate-command.test.d.ts.map +0 -1
- package/dist/__tests__/factory-validate-command.test.js +0 -339
- package/dist/__tests__/factory-validate-command.test.js.map +0 -1
- package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts +0 -72
- package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.d.ts.map +0 -1
- package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js +0 -121
- package/dist/__tests__/fixtures/advanced-cross-project-validation.dot.js.map +0 -1
- package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts +0 -28
- package/dist/__tests__/fixtures/llm-edge-routing.dot.d.ts.map +0 -1
- package/dist/__tests__/fixtures/llm-edge-routing.dot.js +0 -55
- package/dist/__tests__/fixtures/llm-edge-routing.dot.js.map +0 -1
- package/dist/__tests__/fixtures/manager-loop.dot.d.ts +0 -34
- package/dist/__tests__/fixtures/manager-loop.dot.d.ts.map +0 -1
- package/dist/__tests__/fixtures/manager-loop.dot.js +0 -61
- package/dist/__tests__/fixtures/manager-loop.dot.js.map +0 -1
- package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts +0 -42
- package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.d.ts.map +0 -1
- package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js +0 -118
- package/dist/__tests__/fixtures/parallel-fan-out-fan-in.dot.js.map +0 -1
- package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts +0 -35
- package/dist/__tests__/fixtures/subgraph-parent.dot.d.ts.map +0 -1
- package/dist/__tests__/fixtures/subgraph-parent.dot.js +0 -69
- package/dist/__tests__/fixtures/subgraph-parent.dot.js.map +0 -1
- package/dist/__tests__/integration/advanced-graph-events.test.d.ts +0 -19
- package/dist/__tests__/integration/advanced-graph-events.test.d.ts.map +0 -1
- package/dist/__tests__/integration/advanced-graph-events.test.js +0 -288
- package/dist/__tests__/integration/advanced-graph-events.test.js.map +0 -1
- package/dist/__tests__/integration/checkpoint-resume.test.d.ts +0 -10
- package/dist/__tests__/integration/checkpoint-resume.test.d.ts.map +0 -1
- package/dist/__tests__/integration/checkpoint-resume.test.js +0 -125
- package/dist/__tests__/integration/checkpoint-resume.test.js.map +0 -1
- package/dist/__tests__/integration/conditional-pipeline.test.d.ts +0 -10
- package/dist/__tests__/integration/conditional-pipeline.test.d.ts.map +0 -1
- package/dist/__tests__/integration/conditional-pipeline.test.js +0 -106
- package/dist/__tests__/integration/conditional-pipeline.test.js.map +0 -1
- package/dist/__tests__/integration/convergence-validation.test.d.ts +0 -14
- package/dist/__tests__/integration/convergence-validation.test.d.ts.map +0 -1
- package/dist/__tests__/integration/convergence-validation.test.js +0 -449
- package/dist/__tests__/integration/convergence-validation.test.js.map +0 -1
- package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts +0 -12
- package/dist/__tests__/integration/epic44-coverage-gate.test.d.ts.map +0 -1
- package/dist/__tests__/integration/epic44-coverage-gate.test.js +0 -58
- package/dist/__tests__/integration/epic44-coverage-gate.test.js.map +0 -1
- package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts +0 -11
- package/dist/__tests__/integration/epic45-coverage-gate.test.d.ts.map +0 -1
- package/dist/__tests__/integration/epic45-coverage-gate.test.js +0 -64
- package/dist/__tests__/integration/epic45-coverage-gate.test.js.map +0 -1
- package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts +0 -2
- package/dist/__tests__/integration/epic46-scenario-primary-executor.test.d.ts.map +0 -1
- package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js +0 -285
- package/dist/__tests__/integration/epic46-scenario-primary-executor.test.js.map +0 -1
- package/dist/__tests__/integration/events.test.d.ts +0 -8
- package/dist/__tests__/integration/events.test.d.ts.map +0 -1
- package/dist/__tests__/integration/events.test.js +0 -194
- package/dist/__tests__/integration/events.test.js.map +0 -1
- package/dist/__tests__/integration/graphs.d.ts +0 -59
- package/dist/__tests__/integration/graphs.d.ts.map +0 -1
- package/dist/__tests__/integration/graphs.js +0 -164
- package/dist/__tests__/integration/graphs.js.map +0 -1
- package/dist/__tests__/integration/helpers.d.ts +0 -127
- package/dist/__tests__/integration/helpers.d.ts.map +0 -1
- package/dist/__tests__/integration/helpers.js +0 -167
- package/dist/__tests__/integration/helpers.js.map +0 -1
- package/dist/__tests__/integration/integrity.test.d.ts +0 -8
- package/dist/__tests__/integration/integrity.test.d.ts.map +0 -1
- package/dist/__tests__/integration/integrity.test.js +0 -198
- package/dist/__tests__/integration/integrity.test.js.map +0 -1
- package/dist/__tests__/integration/llm-edge-routing.test.d.ts +0 -21
- package/dist/__tests__/integration/llm-edge-routing.test.d.ts.map +0 -1
- package/dist/__tests__/integration/llm-edge-routing.test.js +0 -341
- package/dist/__tests__/integration/llm-edge-routing.test.js.map +0 -1
- package/dist/__tests__/integration/manager-loop.test.d.ts +0 -24
- package/dist/__tests__/integration/manager-loop.test.d.ts.map +0 -1
- package/dist/__tests__/integration/manager-loop.test.js +0 -276
- package/dist/__tests__/integration/manager-loop.test.js.map +0 -1
- package/dist/__tests__/integration/multi-type-graph.test.d.ts +0 -10
- package/dist/__tests__/integration/multi-type-graph.test.d.ts.map +0 -1
- package/dist/__tests__/integration/multi-type-graph.test.js +0 -100
- package/dist/__tests__/integration/multi-type-graph.test.js.map +0 -1
- package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts +0 -22
- package/dist/__tests__/integration/parallel-fan-out-fan-in.test.d.ts.map +0 -1
- package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js +0 -515
- package/dist/__tests__/integration/parallel-fan-out-fan-in.test.js.map +0 -1
- package/dist/__tests__/integration/persistence.test.d.ts +0 -8
- package/dist/__tests__/integration/persistence.test.d.ts.map +0 -1
- package/dist/__tests__/integration/persistence.test.js +0 -129
- package/dist/__tests__/integration/persistence.test.js.map +0 -1
- package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts +0 -16
- package/dist/__tests__/integration/pipeline-templates-integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/pipeline-templates-integration.test.js +0 -171
- package/dist/__tests__/integration/pipeline-templates-integration.test.js.map +0 -1
- package/dist/__tests__/integration/scenario-pipeline.test.d.ts +0 -11
- package/dist/__tests__/integration/scenario-pipeline.test.d.ts.map +0 -1
- package/dist/__tests__/integration/scenario-pipeline.test.js +0 -243
- package/dist/__tests__/integration/scenario-pipeline.test.js.map +0 -1
- package/dist/__tests__/integration/stylesheet-application.test.d.ts +0 -12
- package/dist/__tests__/integration/stylesheet-application.test.d.ts.map +0 -1
- package/dist/__tests__/integration/stylesheet-application.test.js +0 -119
- package/dist/__tests__/integration/stylesheet-application.test.js.map +0 -1
- package/dist/__tests__/integration/subgraph-execution.test.d.ts +0 -24
- package/dist/__tests__/integration/subgraph-execution.test.d.ts.map +0 -1
- package/dist/__tests__/integration/subgraph-execution.test.js +0 -291
- package/dist/__tests__/integration/subgraph-execution.test.js.map +0 -1
- package/dist/__tests__/integration/validation-errors.test.d.ts +0 -8
- package/dist/__tests__/integration/validation-errors.test.d.ts.map +0 -1
- package/dist/__tests__/integration/validation-errors.test.js +0 -150
- package/dist/__tests__/integration/validation-errors.test.js.map +0 -1
- package/dist/agent/__tests__/loop-detection.test.d.ts +0 -2
- package/dist/agent/__tests__/loop-detection.test.d.ts.map +0 -1
- package/dist/agent/__tests__/loop-detection.test.js +0 -236
- package/dist/agent/__tests__/loop-detection.test.js.map +0 -1
- package/dist/agent/__tests__/loop.test.d.ts +0 -2
- package/dist/agent/__tests__/loop.test.d.ts.map +0 -1
- package/dist/agent/__tests__/loop.test.js +0 -868
- package/dist/agent/__tests__/loop.test.js.map +0 -1
- package/dist/agent/__tests__/truncation.test.d.ts +0 -2
- package/dist/agent/__tests__/truncation.test.d.ts.map +0 -1
- package/dist/agent/__tests__/truncation.test.js +0 -276
- package/dist/agent/__tests__/truncation.test.js.map +0 -1
- package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts +0 -6
- package/dist/agent/tools/__tests__/anthropic-tools.test.d.ts.map +0 -1
- package/dist/agent/tools/__tests__/anthropic-tools.test.js +0 -49
- package/dist/agent/tools/__tests__/anthropic-tools.test.js.map +0 -1
- package/dist/agent/tools/__tests__/environment.test.d.ts +0 -6
- package/dist/agent/tools/__tests__/environment.test.d.ts.map +0 -1
- package/dist/agent/tools/__tests__/environment.test.js +0 -33
- package/dist/agent/tools/__tests__/environment.test.js.map +0 -1
- package/dist/agent/tools/__tests__/gemini-tools.test.d.ts +0 -6
- package/dist/agent/tools/__tests__/gemini-tools.test.d.ts.map +0 -1
- package/dist/agent/tools/__tests__/gemini-tools.test.js +0 -98
- package/dist/agent/tools/__tests__/gemini-tools.test.js.map +0 -1
- package/dist/agent/tools/__tests__/openai-tools.test.d.ts +0 -6
- package/dist/agent/tools/__tests__/openai-tools.test.d.ts.map +0 -1
- package/dist/agent/tools/__tests__/openai-tools.test.js +0 -53
- package/dist/agent/tools/__tests__/openai-tools.test.js.map +0 -1
- package/dist/agent/tools/__tests__/patch.test.d.ts +0 -6
- package/dist/agent/tools/__tests__/patch.test.d.ts.map +0 -1
- package/dist/agent/tools/__tests__/patch.test.js +0 -116
- package/dist/agent/tools/__tests__/patch.test.js.map +0 -1
- package/dist/agent/tools/__tests__/profiles.test.d.ts +0 -6
- package/dist/agent/tools/__tests__/profiles.test.d.ts.map +0 -1
- package/dist/agent/tools/__tests__/profiles.test.js +0 -125
- package/dist/agent/tools/__tests__/profiles.test.js.map +0 -1
- package/dist/agent/tools/__tests__/registry.test.d.ts +0 -6
- package/dist/agent/tools/__tests__/registry.test.d.ts.map +0 -1
- package/dist/agent/tools/__tests__/registry.test.js +0 -94
- package/dist/agent/tools/__tests__/registry.test.js.map +0 -1
- package/dist/agent/tools/__tests__/shared.test.d.ts +0 -6
- package/dist/agent/tools/__tests__/shared.test.d.ts.map +0 -1
- package/dist/agent/tools/__tests__/shared.test.js +0 -131
- package/dist/agent/tools/__tests__/shared.test.js.map +0 -1
- package/dist/backend/__tests__/direct-backend.test.d.ts +0 -14
- package/dist/backend/__tests__/direct-backend.test.d.ts.map +0 -1
- package/dist/backend/__tests__/direct-backend.test.js +0 -393
- package/dist/backend/__tests__/direct-backend.test.js.map +0 -1
- package/dist/backend/__tests__/direct-bootstrap.test.d.ts +0 -7
- package/dist/backend/__tests__/direct-bootstrap.test.d.ts.map +0 -1
- package/dist/backend/__tests__/direct-bootstrap.test.js +0 -177
- package/dist/backend/__tests__/direct-bootstrap.test.js.map +0 -1
- package/dist/backend/__tests__/mock-backend.test.d.ts +0 -7
- package/dist/backend/__tests__/mock-backend.test.d.ts.map +0 -1
- package/dist/backend/__tests__/mock-backend.test.js +0 -273
- package/dist/backend/__tests__/mock-backend.test.js.map +0 -1
- package/dist/backend/__tests__/parity.test.d.ts +0 -17
- package/dist/backend/__tests__/parity.test.d.ts.map +0 -1
- package/dist/backend/__tests__/parity.test.js +0 -411
- package/dist/backend/__tests__/parity.test.js.map +0 -1
- package/dist/context/__tests__/auto-summarizer.test.d.ts +0 -14
- package/dist/context/__tests__/auto-summarizer.test.d.ts.map +0 -1
- package/dist/context/__tests__/auto-summarizer.test.js +0 -189
- package/dist/context/__tests__/auto-summarizer.test.js.map +0 -1
- package/dist/context/__tests__/context-cli-command.test.d.ts +0 -7
- package/dist/context/__tests__/context-cli-command.test.d.ts.map +0 -1
- package/dist/context/__tests__/context-cli-command.test.js +0 -331
- package/dist/context/__tests__/context-cli-command.test.js.map +0 -1
- package/dist/context/__tests__/pyramid-summary-integration.test.d.ts +0 -2
- package/dist/context/__tests__/pyramid-summary-integration.test.d.ts.map +0 -1
- package/dist/context/__tests__/pyramid-summary-integration.test.js +0 -533
- package/dist/context/__tests__/pyramid-summary-integration.test.js.map +0 -1
- package/dist/context/__tests__/summarizer.test.d.ts +0 -2
- package/dist/context/__tests__/summarizer.test.d.ts.map +0 -1
- package/dist/context/__tests__/summarizer.test.js +0 -189
- package/dist/context/__tests__/summarizer.test.js.map +0 -1
- package/dist/context/__tests__/summary-cache.test.d.ts +0 -2
- package/dist/context/__tests__/summary-cache.test.d.ts.map +0 -1
- package/dist/context/__tests__/summary-cache.test.js +0 -214
- package/dist/context/__tests__/summary-cache.test.js.map +0 -1
- package/dist/context/__tests__/summary-metrics.test.d.ts +0 -2
- package/dist/context/__tests__/summary-metrics.test.d.ts.map +0 -1
- package/dist/context/__tests__/summary-metrics.test.js +0 -172
- package/dist/context/__tests__/summary-metrics.test.js.map +0 -1
- package/dist/context/__tests__/summary-types.test.d.ts +0 -2
- package/dist/context/__tests__/summary-types.test.d.ts.map +0 -1
- package/dist/context/__tests__/summary-types.test.js +0 -130
- package/dist/context/__tests__/summary-types.test.js.map +0 -1
- package/dist/convergence/__tests__/budget.test.d.ts +0 -6
- package/dist/convergence/__tests__/budget.test.d.ts.map +0 -1
- package/dist/convergence/__tests__/budget.test.js +0 -187
- package/dist/convergence/__tests__/budget.test.js.map +0 -1
- package/dist/convergence/__tests__/controller.test.d.ts +0 -9
- package/dist/convergence/__tests__/controller.test.d.ts.map +0 -1
- package/dist/convergence/__tests__/controller.test.js +0 -585
- package/dist/convergence/__tests__/controller.test.js.map +0 -1
- package/dist/convergence/__tests__/dual-signal.test.d.ts +0 -14
- package/dist/convergence/__tests__/dual-signal.test.d.ts.map +0 -1
- package/dist/convergence/__tests__/dual-signal.test.js +0 -123
- package/dist/convergence/__tests__/dual-signal.test.js.map +0 -1
- package/dist/convergence/__tests__/epic46-integration.test.d.ts +0 -15
- package/dist/convergence/__tests__/epic46-integration.test.d.ts.map +0 -1
- package/dist/convergence/__tests__/epic46-integration.test.js +0 -522
- package/dist/convergence/__tests__/epic46-integration.test.js.map +0 -1
- package/dist/convergence/__tests__/plateau.test.d.ts +0 -6
- package/dist/convergence/__tests__/plateau.test.d.ts.map +0 -1
- package/dist/convergence/__tests__/plateau.test.js +0 -163
- package/dist/convergence/__tests__/plateau.test.js.map +0 -1
- package/dist/convergence/__tests__/remediation.test.d.ts +0 -11
- package/dist/convergence/__tests__/remediation.test.d.ts.map +0 -1
- package/dist/convergence/__tests__/remediation.test.js +0 -209
- package/dist/convergence/__tests__/remediation.test.js.map +0 -1
- package/dist/convergence/__tests__/scenario-primary.test.d.ts +0 -13
- package/dist/convergence/__tests__/scenario-primary.test.d.ts.map +0 -1
- package/dist/convergence/__tests__/scenario-primary.test.js +0 -183
- package/dist/convergence/__tests__/scenario-primary.test.js.map +0 -1
- package/dist/factory-command.test.d.ts +0 -8
- package/dist/factory-command.test.d.ts.map +0 -1
- package/dist/factory-command.test.js +0 -304
- package/dist/factory-command.test.js.map +0 -1
- package/dist/graph/__tests__/attractor-compliance.test.d.ts +0 -10
- package/dist/graph/__tests__/attractor-compliance.test.d.ts.map +0 -1
- package/dist/graph/__tests__/attractor-compliance.test.js +0 -766
- package/dist/graph/__tests__/attractor-compliance.test.js.map +0 -1
- package/dist/graph/__tests__/checkpoint.test.d.ts +0 -8
- package/dist/graph/__tests__/checkpoint.test.d.ts.map +0 -1
- package/dist/graph/__tests__/checkpoint.test.js +0 -329
- package/dist/graph/__tests__/checkpoint.test.js.map +0 -1
- package/dist/graph/__tests__/condition-parser.test.d.ts +0 -14
- package/dist/graph/__tests__/condition-parser.test.d.ts.map +0 -1
- package/dist/graph/__tests__/condition-parser.test.js +0 -406
- package/dist/graph/__tests__/condition-parser.test.js.map +0 -1
- package/dist/graph/__tests__/context.test.d.ts +0 -14
- package/dist/graph/__tests__/context.test.d.ts.map +0 -1
- package/dist/graph/__tests__/context.test.js +0 -276
- package/dist/graph/__tests__/context.test.js.map +0 -1
- package/dist/graph/__tests__/edge-selector-events.test.d.ts +0 -11
- package/dist/graph/__tests__/edge-selector-events.test.d.ts.map +0 -1
- package/dist/graph/__tests__/edge-selector-events.test.js +0 -184
- package/dist/graph/__tests__/edge-selector-events.test.js.map +0 -1
- package/dist/graph/__tests__/edge-selector.test.d.ts +0 -6
- package/dist/graph/__tests__/edge-selector.test.d.ts.map +0 -1
- package/dist/graph/__tests__/edge-selector.test.js +0 -452
- package/dist/graph/__tests__/edge-selector.test.js.map +0 -1
- package/dist/graph/__tests__/executor-convergence.test.d.ts +0 -12
- package/dist/graph/__tests__/executor-convergence.test.d.ts.map +0 -1
- package/dist/graph/__tests__/executor-convergence.test.js +0 -432
- package/dist/graph/__tests__/executor-convergence.test.js.map +0 -1
- package/dist/graph/__tests__/executor-fidelity.test.d.ts +0 -13
- package/dist/graph/__tests__/executor-fidelity.test.d.ts.map +0 -1
- package/dist/graph/__tests__/executor-fidelity.test.js +0 -335
- package/dist/graph/__tests__/executor-fidelity.test.js.map +0 -1
- package/dist/graph/__tests__/executor.test.d.ts +0 -14
- package/dist/graph/__tests__/executor.test.d.ts.map +0 -1
- package/dist/graph/__tests__/executor.test.js +0 -901
- package/dist/graph/__tests__/executor.test.js.map +0 -1
- package/dist/graph/__tests__/fidelity.test.d.ts +0 -8
- package/dist/graph/__tests__/fidelity.test.d.ts.map +0 -1
- package/dist/graph/__tests__/fidelity.test.js +0 -135
- package/dist/graph/__tests__/fidelity.test.js.map +0 -1
- package/dist/graph/__tests__/llm-evaluator.test.d.ts +0 -7
- package/dist/graph/__tests__/llm-evaluator.test.d.ts.map +0 -1
- package/dist/graph/__tests__/llm-evaluator.test.js +0 -106
- package/dist/graph/__tests__/llm-evaluator.test.js.map +0 -1
- package/dist/graph/__tests__/parser-chaining.test.d.ts +0 -13
- package/dist/graph/__tests__/parser-chaining.test.d.ts.map +0 -1
- package/dist/graph/__tests__/parser-chaining.test.js +0 -215
- package/dist/graph/__tests__/parser-chaining.test.js.map +0 -1
- package/dist/graph/__tests__/parser.test.d.ts +0 -22
- package/dist/graph/__tests__/parser.test.d.ts.map +0 -1
- package/dist/graph/__tests__/parser.test.js +0 -452
- package/dist/graph/__tests__/parser.test.js.map +0 -1
- package/dist/graph/__tests__/run-state.test.d.ts +0 -13
- package/dist/graph/__tests__/run-state.test.d.ts.map +0 -1
- package/dist/graph/__tests__/run-state.test.js +0 -189
- package/dist/graph/__tests__/run-state.test.js.map +0 -1
- package/dist/graph/__tests__/transformer.test.d.ts +0 -16
- package/dist/graph/__tests__/transformer.test.d.ts.map +0 -1
- package/dist/graph/__tests__/transformer.test.js +0 -350
- package/dist/graph/__tests__/transformer.test.js.map +0 -1
- package/dist/graph/__tests__/validator-errors.test.d.ts +0 -15
- package/dist/graph/__tests__/validator-errors.test.d.ts.map +0 -1
- package/dist/graph/__tests__/validator-errors.test.js +0 -572
- package/dist/graph/__tests__/validator-errors.test.js.map +0 -1
- package/dist/graph/__tests__/validator-warnings.test.d.ts +0 -15
- package/dist/graph/__tests__/validator-warnings.test.d.ts.map +0 -1
- package/dist/graph/__tests__/validator-warnings.test.js +0 -363
- package/dist/graph/__tests__/validator-warnings.test.js.map +0 -1
- package/dist/handlers/__tests__/codergen-handler.test.d.ts +0 -14
- package/dist/handlers/__tests__/codergen-handler.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/codergen-handler.test.js +0 -442
- package/dist/handlers/__tests__/codergen-handler.test.js.map +0 -1
- package/dist/handlers/__tests__/fan-in.test.d.ts +0 -14
- package/dist/handlers/__tests__/fan-in.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/fan-in.test.js +0 -399
- package/dist/handlers/__tests__/fan-in.test.js.map +0 -1
- package/dist/handlers/__tests__/join-policy.test.d.ts +0 -9
- package/dist/handlers/__tests__/join-policy.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/join-policy.test.js +0 -201
- package/dist/handlers/__tests__/join-policy.test.js.map +0 -1
- package/dist/handlers/__tests__/manager-loop.test.d.ts +0 -14
- package/dist/handlers/__tests__/manager-loop.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/manager-loop.test.js +0 -322
- package/dist/handlers/__tests__/manager-loop.test.js.map +0 -1
- package/dist/handlers/__tests__/parallel-events.test.d.ts +0 -12
- package/dist/handlers/__tests__/parallel-events.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/parallel-events.test.js +0 -252
- package/dist/handlers/__tests__/parallel-events.test.js.map +0 -1
- package/dist/handlers/__tests__/parallel-handler.test.d.ts +0 -14
- package/dist/handlers/__tests__/parallel-handler.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/parallel-handler.test.js +0 -337
- package/dist/handlers/__tests__/parallel-handler.test.js.map +0 -1
- package/dist/handlers/__tests__/parallel-join.test.d.ts +0 -9
- package/dist/handlers/__tests__/parallel-join.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/parallel-join.test.js +0 -267
- package/dist/handlers/__tests__/parallel-join.test.js.map +0 -1
- package/dist/handlers/__tests__/registry.test.d.ts +0 -14
- package/dist/handlers/__tests__/registry.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/registry.test.js +0 -315
- package/dist/handlers/__tests__/registry.test.js.map +0 -1
- package/dist/handlers/__tests__/subgraph-events.test.d.ts +0 -10
- package/dist/handlers/__tests__/subgraph-events.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/subgraph-events.test.js +0 -189
- package/dist/handlers/__tests__/subgraph-events.test.js.map +0 -1
- package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts +0 -14
- package/dist/handlers/__tests__/subgraph-inheritance.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/subgraph-inheritance.test.js +0 -267
- package/dist/handlers/__tests__/subgraph-inheritance.test.js.map +0 -1
- package/dist/handlers/__tests__/subgraph.test.d.ts +0 -14
- package/dist/handlers/__tests__/subgraph.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/subgraph.test.js +0 -369
- package/dist/handlers/__tests__/subgraph.test.js.map +0 -1
- package/dist/handlers/__tests__/tool-handler.test.d.ts +0 -11
- package/dist/handlers/__tests__/tool-handler.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/tool-handler.test.js +0 -184
- package/dist/handlers/__tests__/tool-handler.test.js.map +0 -1
- package/dist/handlers/__tests__/tool-scenario.test.d.ts +0 -12
- package/dist/handlers/__tests__/tool-scenario.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/tool-scenario.test.js +0 -222
- package/dist/handlers/__tests__/tool-scenario.test.js.map +0 -1
- package/dist/handlers/__tests__/wait-human-handler.test.d.ts +0 -11
- package/dist/handlers/__tests__/wait-human-handler.test.d.ts.map +0 -1
- package/dist/handlers/__tests__/wait-human-handler.test.js +0 -251
- package/dist/handlers/__tests__/wait-human-handler.test.js.map +0 -1
- package/dist/llm/__tests__/client.test.d.ts +0 -2
- package/dist/llm/__tests__/client.test.d.ts.map +0 -1
- package/dist/llm/__tests__/client.test.js +0 -198
- package/dist/llm/__tests__/client.test.js.map +0 -1
- package/dist/llm/__tests__/types.test.d.ts +0 -2
- package/dist/llm/__tests__/types.test.d.ts.map +0 -1
- package/dist/llm/__tests__/types.test.js +0 -289
- package/dist/llm/__tests__/types.test.js.map +0 -1
- package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts +0 -2
- package/dist/llm/middleware/__tests__/cost-tracking.test.d.ts.map +0 -1
- package/dist/llm/middleware/__tests__/cost-tracking.test.js +0 -73
- package/dist/llm/middleware/__tests__/cost-tracking.test.js.map +0 -1
- package/dist/llm/middleware/__tests__/logging.test.d.ts +0 -2
- package/dist/llm/middleware/__tests__/logging.test.d.ts.map +0 -1
- package/dist/llm/middleware/__tests__/logging.test.js +0 -127
- package/dist/llm/middleware/__tests__/logging.test.js.map +0 -1
- package/dist/llm/middleware/__tests__/retry.test.d.ts +0 -2
- package/dist/llm/middleware/__tests__/retry.test.d.ts.map +0 -1
- package/dist/llm/middleware/__tests__/retry.test.js +0 -126
- package/dist/llm/middleware/__tests__/retry.test.js.map +0 -1
- package/dist/llm/providers/__tests__/anthropic.test.d.ts +0 -2
- package/dist/llm/providers/__tests__/anthropic.test.d.ts.map +0 -1
- package/dist/llm/providers/__tests__/anthropic.test.js +0 -412
- package/dist/llm/providers/__tests__/anthropic.test.js.map +0 -1
- package/dist/llm/providers/__tests__/gemini.test.d.ts +0 -2
- package/dist/llm/providers/__tests__/gemini.test.d.ts.map +0 -1
- package/dist/llm/providers/__tests__/gemini.test.js +0 -591
- package/dist/llm/providers/__tests__/gemini.test.js.map +0 -1
- package/dist/llm/providers/__tests__/openai.test.d.ts +0 -2
- package/dist/llm/providers/__tests__/openai.test.d.ts.map +0 -1
- package/dist/llm/providers/__tests__/openai.test.js +0 -546
- package/dist/llm/providers/__tests__/openai.test.js.map +0 -1
- package/dist/persistence/__tests__/factory-queries.test.d.ts +0 -9
- package/dist/persistence/__tests__/factory-queries.test.d.ts.map +0 -1
- package/dist/persistence/__tests__/factory-queries.test.js +0 -372
- package/dist/persistence/__tests__/factory-queries.test.js.map +0 -1
- package/dist/persistence/__tests__/factory-schema.test.d.ts +0 -6
- package/dist/persistence/__tests__/factory-schema.test.d.ts.map +0 -1
- package/dist/persistence/__tests__/factory-schema.test.js +0 -105
- package/dist/persistence/__tests__/factory-schema.test.js.map +0 -1
- package/dist/scenarios/__tests__/cli-command-list.test.d.ts +0 -7
- package/dist/scenarios/__tests__/cli-command-list.test.d.ts.map +0 -1
- package/dist/scenarios/__tests__/cli-command-list.test.js +0 -237
- package/dist/scenarios/__tests__/cli-command-list.test.js.map +0 -1
- package/dist/scenarios/__tests__/cli-command.test.d.ts +0 -11
- package/dist/scenarios/__tests__/cli-command.test.d.ts.map +0 -1
- package/dist/scenarios/__tests__/cli-command.test.js +0 -275
- package/dist/scenarios/__tests__/cli-command.test.js.map +0 -1
- package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts +0 -15
- package/dist/scenarios/__tests__/integrity-pipeline.test.d.ts.map +0 -1
- package/dist/scenarios/__tests__/integrity-pipeline.test.js +0 -318
- package/dist/scenarios/__tests__/integrity-pipeline.test.js.map +0 -1
- package/dist/scenarios/__tests__/runner-twins.test.d.ts +0 -13
- package/dist/scenarios/__tests__/runner-twins.test.d.ts.map +0 -1
- package/dist/scenarios/__tests__/runner-twins.test.js +0 -205
- package/dist/scenarios/__tests__/runner-twins.test.js.map +0 -1
- package/dist/scenarios/__tests__/scorer.test.d.ts +0 -11
- package/dist/scenarios/__tests__/scorer.test.d.ts.map +0 -1
- package/dist/scenarios/__tests__/scorer.test.js +0 -225
- package/dist/scenarios/__tests__/scorer.test.js.map +0 -1
- package/dist/scenarios/__tests__/scoring-integration.test.d.ts +0 -8
- package/dist/scenarios/__tests__/scoring-integration.test.d.ts.map +0 -1
- package/dist/scenarios/__tests__/scoring-integration.test.js +0 -178
- package/dist/scenarios/__tests__/scoring-integration.test.js.map +0 -1
- package/dist/scenarios/__tests__/store.test.d.ts +0 -5
- package/dist/scenarios/__tests__/store.test.d.ts.map +0 -1
- package/dist/scenarios/__tests__/store.test.js +0 -169
- package/dist/scenarios/__tests__/store.test.js.map +0 -1
- package/dist/stylesheet/__tests__/stylesheet.test.d.ts +0 -17
- package/dist/stylesheet/__tests__/stylesheet.test.d.ts.map +0 -1
- package/dist/stylesheet/__tests__/stylesheet.test.js +0 -368
- package/dist/stylesheet/__tests__/stylesheet.test.js.map +0 -1
- package/dist/templates/__tests__/templates.test.d.ts +0 -7
- package/dist/templates/__tests__/templates.test.d.ts.map +0 -1
- package/dist/templates/__tests__/templates.test.js +0 -92
- package/dist/templates/__tests__/templates.test.js.map +0 -1
- package/dist/twins/__tests__/docker-compose.test.d.ts +0 -13
- package/dist/twins/__tests__/docker-compose.test.d.ts.map +0 -1
- package/dist/twins/__tests__/docker-compose.test.js +0 -247
- package/dist/twins/__tests__/docker-compose.test.js.map +0 -1
- package/dist/twins/__tests__/health-monitor.test.d.ts +0 -19
- package/dist/twins/__tests__/health-monitor.test.d.ts.map +0 -1
- package/dist/twins/__tests__/health-monitor.test.js +0 -301
- package/dist/twins/__tests__/health-monitor.test.js.map +0 -1
- package/dist/twins/__tests__/integration/e2e.test.d.ts +0 -18
- package/dist/twins/__tests__/integration/e2e.test.d.ts.map +0 -1
- package/dist/twins/__tests__/integration/e2e.test.js +0 -146
- package/dist/twins/__tests__/integration/e2e.test.js.map +0 -1
- package/dist/twins/__tests__/integration/health-monitor-integration.test.d.ts +0 -16
- package/dist/twins/__tests__/integration/health-monitor-integration.test.d.ts.map +0 -1
- package/dist/twins/__tests__/integration/health-monitor-integration.test.js +0 -183
- package/dist/twins/__tests__/integration/health-monitor-integration.test.js.map +0 -1
- package/dist/twins/__tests__/integration/helpers.d.ts +0 -32
- package/dist/twins/__tests__/integration/helpers.d.ts.map +0 -1
- package/dist/twins/__tests__/integration/helpers.js +0 -67
- package/dist/twins/__tests__/integration/helpers.js.map +0 -1
- package/dist/twins/__tests__/integration/lifecycle.test.d.ts +0 -14
- package/dist/twins/__tests__/integration/lifecycle.test.d.ts.map +0 -1
- package/dist/twins/__tests__/integration/lifecycle.test.js +0 -127
- package/dist/twins/__tests__/integration/lifecycle.test.js.map +0 -1
- package/dist/twins/__tests__/integration/persistence-integration.test.d.ts +0 -14
- package/dist/twins/__tests__/integration/persistence-integration.test.d.ts.map +0 -1
- package/dist/twins/__tests__/integration/persistence-integration.test.js +0 -132
- package/dist/twins/__tests__/integration/persistence-integration.test.js.map +0 -1
- package/dist/twins/__tests__/persistence.test.d.ts +0 -10
- package/dist/twins/__tests__/persistence.test.d.ts.map +0 -1
- package/dist/twins/__tests__/persistence.test.js +0 -300
- package/dist/twins/__tests__/persistence.test.js.map +0 -1
- package/dist/twins/__tests__/registry.test.d.ts +0 -7
- package/dist/twins/__tests__/registry.test.d.ts.map +0 -1
- package/dist/twins/__tests__/registry.test.js +0 -282
- package/dist/twins/__tests__/registry.test.js.map +0 -1
- package/dist/twins/__tests__/run-state.test.d.ts +0 -9
- package/dist/twins/__tests__/run-state.test.d.ts.map +0 -1
- package/dist/twins/__tests__/run-state.test.js +0 -112
- package/dist/twins/__tests__/run-state.test.js.map +0 -1
- package/dist/twins/__tests__/templates-cli.test.d.ts +0 -10
- package/dist/twins/__tests__/templates-cli.test.d.ts.map +0 -1
- package/dist/twins/__tests__/templates-cli.test.js +0 -187
- package/dist/twins/__tests__/templates-cli.test.js.map +0 -1
- package/dist/twins/__tests__/templates.test.d.ts +0 -7
- package/dist/twins/__tests__/templates.test.d.ts.map +0 -1
- package/dist/twins/__tests__/templates.test.js +0 -87
- package/dist/twins/__tests__/templates.test.js.map +0 -1
- package/dist/twins/__tests__/twins-cli.test.d.ts +0 -11
- package/dist/twins/__tests__/twins-cli.test.d.ts.map +0 -1
- package/dist/twins/__tests__/twins-cli.test.js +0 -365
- package/dist/twins/__tests__/twins-cli.test.js.map +0 -1
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { createHash } from 'node:crypto';
|
|
3
|
-
import { LLMSummaryEngine } from '../summarizer.js';
|
|
4
|
-
// ---------------------------------------------------------------------------
|
|
5
|
-
// Mock LLM client
|
|
6
|
-
// ---------------------------------------------------------------------------
|
|
7
|
-
class MockLLMClient {
|
|
8
|
-
lastRequest;
|
|
9
|
-
callCount = 0;
|
|
10
|
-
responseContent = 'summarized text';
|
|
11
|
-
async complete(request) {
|
|
12
|
-
this.lastRequest = request;
|
|
13
|
-
this.callCount++;
|
|
14
|
-
return {
|
|
15
|
-
content: this.responseContent,
|
|
16
|
-
toolCalls: [],
|
|
17
|
-
usage: { inputTokens: 500, outputTokens: 100, totalTokens: 600 },
|
|
18
|
-
model: request.model,
|
|
19
|
-
stopReason: 'stop',
|
|
20
|
-
providerMetadata: {},
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
// ---------------------------------------------------------------------------
|
|
25
|
-
// Helpers
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
function getPromptText(client) {
|
|
28
|
-
const parts = client.lastRequest?.messages[0]?.content ?? [];
|
|
29
|
-
return parts.map((p) => p.text ?? '').join('');
|
|
30
|
-
}
|
|
31
|
-
// ---------------------------------------------------------------------------
|
|
32
|
-
// Tests
|
|
33
|
-
// ---------------------------------------------------------------------------
|
|
34
|
-
describe('LLMSummaryEngine', () => {
|
|
35
|
-
// AC7: constructor + name field
|
|
36
|
-
it('has name === "llm" and exposes summarize and expand methods', () => {
|
|
37
|
-
const client = new MockLLMClient();
|
|
38
|
-
const engine = new LLMSummaryEngine(client);
|
|
39
|
-
expect(engine.name).toBe('llm');
|
|
40
|
-
expect(typeof engine.summarize).toBe('function');
|
|
41
|
-
expect(typeof engine.expand).toBe('function');
|
|
42
|
-
});
|
|
43
|
-
// ---------------------------------------------------------------------------
|
|
44
|
-
// AC1: Structural preservation
|
|
45
|
-
// ---------------------------------------------------------------------------
|
|
46
|
-
describe('AC1 — structural preservation', () => {
|
|
47
|
-
it('prompt contains "verbatim"', async () => {
|
|
48
|
-
const client = new MockLLMClient();
|
|
49
|
-
const engine = new LLMSummaryEngine(client);
|
|
50
|
-
await engine.summarize('some content', 'medium');
|
|
51
|
-
expect(getPromptText(client).toLowerCase()).toContain('verbatim');
|
|
52
|
-
});
|
|
53
|
-
it('prompt contains "code block"', async () => {
|
|
54
|
-
const client = new MockLLMClient();
|
|
55
|
-
const engine = new LLMSummaryEngine(client);
|
|
56
|
-
await engine.summarize('some content', 'medium');
|
|
57
|
-
expect(getPromptText(client).toLowerCase()).toContain('code block');
|
|
58
|
-
});
|
|
59
|
-
it('returned Summary.content equals mock response content', async () => {
|
|
60
|
-
const client = new MockLLMClient();
|
|
61
|
-
const engine = new LLMSummaryEngine(client);
|
|
62
|
-
const summary = await engine.summarize('some content', 'medium');
|
|
63
|
-
expect(summary.content).toBe('summarized text');
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
// ---------------------------------------------------------------------------
|
|
67
|
-
// AC2: Prompt targets token budget
|
|
68
|
-
// ---------------------------------------------------------------------------
|
|
69
|
-
describe('AC2 — token budget in prompt', () => {
|
|
70
|
-
it('prompt includes target token count when modelTokenLimit is provided (200_000 × 0.5 = 100_000)', async () => {
|
|
71
|
-
const client = new MockLLMClient();
|
|
72
|
-
const engine = new LLMSummaryEngine(client);
|
|
73
|
-
await engine.summarize('content', 'medium', { modelTokenLimit: 200_000 });
|
|
74
|
-
// Math.floor(200_000 * 0.5) = 100_000
|
|
75
|
-
expect(getPromptText(client)).toContain('100000');
|
|
76
|
-
});
|
|
77
|
-
it('prompt uses default 100_000 token limit when modelTokenLimit is omitted (100_000 × 0.5 = 50_000)', async () => {
|
|
78
|
-
const client = new MockLLMClient();
|
|
79
|
-
const engine = new LLMSummaryEngine(client);
|
|
80
|
-
await engine.summarize('content', 'medium');
|
|
81
|
-
// Math.floor(100_000 * 0.5) = 50_000
|
|
82
|
-
expect(getPromptText(client)).toContain('50000');
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
// ---------------------------------------------------------------------------
|
|
86
|
-
// AC3: SHA-256 hash and token counts
|
|
87
|
-
// ---------------------------------------------------------------------------
|
|
88
|
-
describe('AC3 — originalHash and token counts', () => {
|
|
89
|
-
it('originalHash matches SHA-256 of original content', async () => {
|
|
90
|
-
const client = new MockLLMClient();
|
|
91
|
-
const engine = new LLMSummaryEngine(client);
|
|
92
|
-
const testContent = 'hello world content for hashing';
|
|
93
|
-
const expectedHash = createHash('sha256').update(testContent).digest('hex');
|
|
94
|
-
const summary = await engine.summarize(testContent, 'medium');
|
|
95
|
-
expect(summary.originalHash).toBe(expectedHash);
|
|
96
|
-
});
|
|
97
|
-
it('originalTokenCount is set from LLMResponse.usage.inputTokens (500)', async () => {
|
|
98
|
-
const client = new MockLLMClient();
|
|
99
|
-
const engine = new LLMSummaryEngine(client);
|
|
100
|
-
const summary = await engine.summarize('some content', 'medium');
|
|
101
|
-
expect(summary.originalTokenCount).toBe(500);
|
|
102
|
-
});
|
|
103
|
-
it('summaryTokenCount is set from LLMResponse.usage.outputTokens (100)', async () => {
|
|
104
|
-
const client = new MockLLMClient();
|
|
105
|
-
const engine = new LLMSummaryEngine(client);
|
|
106
|
-
const summary = await engine.summarize('some content', 'medium');
|
|
107
|
-
expect(summary.summaryTokenCount).toBe(100);
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
// ---------------------------------------------------------------------------
|
|
111
|
-
// AC4: expand() lossless path with originalContent
|
|
112
|
-
// ---------------------------------------------------------------------------
|
|
113
|
-
describe('AC4 — expand() lossless path (originalContent provided)', () => {
|
|
114
|
-
it('returns originalContent directly without calling the LLM', async () => {
|
|
115
|
-
const client = new MockLLMClient();
|
|
116
|
-
const engine = new LLMSummaryEngine(client);
|
|
117
|
-
const fakeSummary = {
|
|
118
|
-
level: 'medium',
|
|
119
|
-
content: 'summarized text',
|
|
120
|
-
originalHash: 'abc123',
|
|
121
|
-
createdAt: new Date().toISOString(),
|
|
122
|
-
};
|
|
123
|
-
const result = await engine.expand(fakeSummary, 'full', { originalContent: 'original text' });
|
|
124
|
-
expect(result).toBe('original text');
|
|
125
|
-
});
|
|
126
|
-
it('does NOT call LLM when originalContent is provided (callCount stays at 0)', async () => {
|
|
127
|
-
const client = new MockLLMClient();
|
|
128
|
-
const engine = new LLMSummaryEngine(client);
|
|
129
|
-
const fakeSummary = {
|
|
130
|
-
level: 'medium',
|
|
131
|
-
content: 'summarized text',
|
|
132
|
-
originalHash: 'abc123',
|
|
133
|
-
createdAt: new Date().toISOString(),
|
|
134
|
-
};
|
|
135
|
-
await engine.expand(fakeSummary, 'full', { originalContent: 'original text' });
|
|
136
|
-
expect(client.callCount).toBe(0);
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
// ---------------------------------------------------------------------------
|
|
140
|
-
// AC5: expand() LLM path when originalContent is absent
|
|
141
|
-
// ---------------------------------------------------------------------------
|
|
142
|
-
describe('AC5 — expand() LLM path (no originalContent)', () => {
|
|
143
|
-
it('calls LLM when no originalContent is provided', async () => {
|
|
144
|
-
const client = new MockLLMClient();
|
|
145
|
-
const engine = new LLMSummaryEngine(client);
|
|
146
|
-
const fakeSummary = {
|
|
147
|
-
level: 'medium',
|
|
148
|
-
content: 'summarized text here',
|
|
149
|
-
originalHash: 'abc123',
|
|
150
|
-
createdAt: new Date().toISOString(),
|
|
151
|
-
};
|
|
152
|
-
await engine.expand(fakeSummary, 'full');
|
|
153
|
-
expect(client.callCount).toBe(1);
|
|
154
|
-
});
|
|
155
|
-
it('captured prompt contains summary.content', async () => {
|
|
156
|
-
const client = new MockLLMClient();
|
|
157
|
-
const engine = new LLMSummaryEngine(client);
|
|
158
|
-
const fakeSummary = {
|
|
159
|
-
level: 'medium',
|
|
160
|
-
content: 'summarized text here',
|
|
161
|
-
originalHash: 'abc123',
|
|
162
|
-
createdAt: new Date().toISOString(),
|
|
163
|
-
};
|
|
164
|
-
await engine.expand(fakeSummary, 'full');
|
|
165
|
-
expect(getPromptText(client)).toContain('summarized text here');
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
// ---------------------------------------------------------------------------
|
|
169
|
-
// AC6: Round-trip structural fidelity via originalContent path
|
|
170
|
-
// ---------------------------------------------------------------------------
|
|
171
|
-
describe('AC6 — round-trip structural fidelity', () => {
|
|
172
|
-
it('expand() with originalContent returns original content exactly', async () => {
|
|
173
|
-
const client = new MockLLMClient();
|
|
174
|
-
const engine = new LLMSummaryEngine(client);
|
|
175
|
-
const originalContent = `Some preamble text.
|
|
176
|
-
|
|
177
|
-
\`\`\`typescript
|
|
178
|
-
const x = 1
|
|
179
|
-
const y = 2
|
|
180
|
-
\`\`\`
|
|
181
|
-
|
|
182
|
-
See also src/foo/bar.ts for details.`;
|
|
183
|
-
const summary = await engine.summarize(originalContent, 'medium');
|
|
184
|
-
const expanded = await engine.expand(summary, 'full', { originalContent });
|
|
185
|
-
expect(expanded).toBe(originalContent);
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
//# sourceMappingURL=summarizer.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summarizer.test.js","sourceRoot":"","sources":["../../../src/context/__tests__/summarizer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summary-cache.test.d.ts","sourceRoot":"","sources":["../../../src/context/__tests__/summary-cache.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { mkdtemp, rm } from 'node:fs/promises';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import { tmpdir } from 'node:os';
|
|
5
|
-
import { createHash } from 'node:crypto';
|
|
6
|
-
import { SummaryCache, CachingSummaryEngine } from '../summary-cache.js';
|
|
7
|
-
// ---------------------------------------------------------------------------
|
|
8
|
-
// Mock engine
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
10
|
-
class MockSummaryEngine {
|
|
11
|
-
name = 'mock';
|
|
12
|
-
invokeCount = 0;
|
|
13
|
-
expandCount = 0;
|
|
14
|
-
async summarize(content, targetLevel, _opts) {
|
|
15
|
-
this.invokeCount++;
|
|
16
|
-
const originalHash = createHash('sha256').update(content).digest('hex');
|
|
17
|
-
return {
|
|
18
|
-
level: targetLevel,
|
|
19
|
-
content: `summarized(${content.slice(0, 20)})`,
|
|
20
|
-
originalHash,
|
|
21
|
-
createdAt: new Date().toISOString(),
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
async expand(summary, _targetLevel, opts) {
|
|
25
|
-
this.expandCount++;
|
|
26
|
-
return opts?.originalContent ?? summary.content;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function makeHash(content) {
|
|
30
|
-
return createHash('sha256').update(content).digest('hex');
|
|
31
|
-
}
|
|
32
|
-
// ---------------------------------------------------------------------------
|
|
33
|
-
// SummaryCache tests
|
|
34
|
-
// ---------------------------------------------------------------------------
|
|
35
|
-
describe('SummaryCache', () => {
|
|
36
|
-
let tmpDir;
|
|
37
|
-
let cache;
|
|
38
|
-
beforeEach(async () => {
|
|
39
|
-
tmpDir = await mkdtemp(join(tmpdir(), 'summary-cache-test-'));
|
|
40
|
-
cache = new SummaryCache({ runId: 'run-001', storageDir: tmpDir });
|
|
41
|
-
});
|
|
42
|
-
afterEach(async () => {
|
|
43
|
-
await rm(tmpDir, { recursive: true, force: true });
|
|
44
|
-
});
|
|
45
|
-
it('put then get with same hash+level returns stored Summary object', async () => {
|
|
46
|
-
const summary = {
|
|
47
|
-
level: 'medium',
|
|
48
|
-
content: 'summarized text',
|
|
49
|
-
originalHash: makeHash('original text'),
|
|
50
|
-
createdAt: new Date().toISOString(),
|
|
51
|
-
};
|
|
52
|
-
await cache.put(summary);
|
|
53
|
-
const result = await cache.get(summary.originalHash, 'medium');
|
|
54
|
-
expect(result).toEqual(summary);
|
|
55
|
-
});
|
|
56
|
-
it('get with unknown hash returns null', async () => {
|
|
57
|
-
const result = await cache.get('deadbeef'.repeat(8), 'medium');
|
|
58
|
-
expect(result).toBeNull();
|
|
59
|
-
});
|
|
60
|
-
it('get with known hash but different level returns null', async () => {
|
|
61
|
-
const summary = {
|
|
62
|
-
level: 'medium',
|
|
63
|
-
content: 'summarized text',
|
|
64
|
-
originalHash: makeHash('original text'),
|
|
65
|
-
createdAt: new Date().toISOString(),
|
|
66
|
-
};
|
|
67
|
-
await cache.put(summary);
|
|
68
|
-
// stored at 'medium', querying 'low' should miss
|
|
69
|
-
const result = await cache.get(summary.originalHash, 'low');
|
|
70
|
-
expect(result).toBeNull();
|
|
71
|
-
});
|
|
72
|
-
it('put succeeds when summaries directory does not yet exist', async () => {
|
|
73
|
-
// Use a sub-directory that has never been created
|
|
74
|
-
const nestedDir = join(tmpDir, 'deep', 'nested');
|
|
75
|
-
const freshCache = new SummaryCache({ runId: 'run-999', storageDir: nestedDir });
|
|
76
|
-
const summary = {
|
|
77
|
-
level: 'high',
|
|
78
|
-
content: 'hello',
|
|
79
|
-
originalHash: makeHash('hello-source'),
|
|
80
|
-
createdAt: new Date().toISOString(),
|
|
81
|
-
};
|
|
82
|
-
await expect(freshCache.put(summary)).resolves.toBeUndefined();
|
|
83
|
-
const result = await freshCache.get(summary.originalHash, 'high');
|
|
84
|
-
expect(result).toEqual(summary);
|
|
85
|
-
});
|
|
86
|
-
it('getOriginal returns exact text when put with originalContent', async () => {
|
|
87
|
-
const originalText = 'This is the original content — preserve it exactly.';
|
|
88
|
-
const summary = {
|
|
89
|
-
level: 'low',
|
|
90
|
-
content: 'compressed',
|
|
91
|
-
originalHash: makeHash(originalText),
|
|
92
|
-
createdAt: new Date().toISOString(),
|
|
93
|
-
};
|
|
94
|
-
await cache.put(summary, originalText);
|
|
95
|
-
const result = await cache.getOriginal(summary.originalHash);
|
|
96
|
-
expect(result).toBe(originalText);
|
|
97
|
-
});
|
|
98
|
-
it('getOriginal returns null when no original was stored', async () => {
|
|
99
|
-
const summary = {
|
|
100
|
-
level: 'low',
|
|
101
|
-
content: 'compressed',
|
|
102
|
-
originalHash: makeHash('some content'),
|
|
103
|
-
createdAt: new Date().toISOString(),
|
|
104
|
-
};
|
|
105
|
-
await cache.put(summary); // no originalContent argument
|
|
106
|
-
const result = await cache.getOriginal(summary.originalHash);
|
|
107
|
-
expect(result).toBeNull();
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
// ---------------------------------------------------------------------------
|
|
111
|
-
// SummaryCache — storeOriginals: false
|
|
112
|
-
// ---------------------------------------------------------------------------
|
|
113
|
-
describe('SummaryCache storeOriginals: false', () => {
|
|
114
|
-
let tmpDir;
|
|
115
|
-
beforeEach(async () => {
|
|
116
|
-
tmpDir = await mkdtemp(join(tmpdir(), 'summary-cache-no-orig-'));
|
|
117
|
-
});
|
|
118
|
-
afterEach(async () => {
|
|
119
|
-
await rm(tmpDir, { recursive: true, force: true });
|
|
120
|
-
});
|
|
121
|
-
it('does NOT write .orig file when storeOriginals is false', async () => {
|
|
122
|
-
const config = { runId: 'run-002', storageDir: tmpDir, storeOriginals: false };
|
|
123
|
-
const cache = new SummaryCache(config);
|
|
124
|
-
const originalText = 'original content that should not be persisted';
|
|
125
|
-
const summary = {
|
|
126
|
-
level: 'medium',
|
|
127
|
-
content: 'compressed',
|
|
128
|
-
originalHash: makeHash(originalText),
|
|
129
|
-
createdAt: new Date().toISOString(),
|
|
130
|
-
};
|
|
131
|
-
await cache.put(summary, originalText);
|
|
132
|
-
const orig = await cache.getOriginal(summary.originalHash);
|
|
133
|
-
expect(orig).toBeNull();
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
// ---------------------------------------------------------------------------
|
|
137
|
-
// CachingSummaryEngine tests
|
|
138
|
-
// ---------------------------------------------------------------------------
|
|
139
|
-
describe('CachingSummaryEngine', () => {
|
|
140
|
-
let tmpDir;
|
|
141
|
-
let inner;
|
|
142
|
-
let cache;
|
|
143
|
-
let engine;
|
|
144
|
-
beforeEach(async () => {
|
|
145
|
-
tmpDir = await mkdtemp(join(tmpdir(), 'caching-engine-test-'));
|
|
146
|
-
inner = new MockSummaryEngine();
|
|
147
|
-
cache = new SummaryCache({ runId: 'run-caching', storageDir: tmpDir });
|
|
148
|
-
engine = new CachingSummaryEngine(inner, cache);
|
|
149
|
-
});
|
|
150
|
-
afterEach(async () => {
|
|
151
|
-
await rm(tmpDir, { recursive: true, force: true });
|
|
152
|
-
});
|
|
153
|
-
it('first call (cache miss) delegates to inner engine exactly once', async () => {
|
|
154
|
-
const content = 'Hello world content for summarization';
|
|
155
|
-
const summary = await engine.summarize(content, 'medium');
|
|
156
|
-
expect(inner.invokeCount).toBe(1);
|
|
157
|
-
expect(summary.level).toBe('medium');
|
|
158
|
-
expect(summary.originalHash).toBe(makeHash(content));
|
|
159
|
-
});
|
|
160
|
-
it('second call with same content+level (cache hit) returns cached without calling inner', async () => {
|
|
161
|
-
const content = 'Same content for cache hit test';
|
|
162
|
-
const first = await engine.summarize(content, 'medium');
|
|
163
|
-
const second = await engine.summarize(content, 'medium');
|
|
164
|
-
expect(inner.invokeCount).toBe(1);
|
|
165
|
-
expect(second).toEqual(first);
|
|
166
|
-
});
|
|
167
|
-
it('different levels for same content are stored independently', async () => {
|
|
168
|
-
const content = 'Content to summarize at multiple levels';
|
|
169
|
-
const medSummary = await engine.summarize(content, 'medium');
|
|
170
|
-
const lowSummary = await engine.summarize(content, 'low');
|
|
171
|
-
expect(inner.invokeCount).toBe(2);
|
|
172
|
-
expect(medSummary.level).toBe('medium');
|
|
173
|
-
expect(lowSummary.level).toBe('low');
|
|
174
|
-
// Both should be retrievable from cache
|
|
175
|
-
const cachedMed = await cache.get(makeHash(content), 'medium');
|
|
176
|
-
const cachedLow = await cache.get(makeHash(content), 'low');
|
|
177
|
-
expect(cachedMed).toEqual(medSummary);
|
|
178
|
-
expect(cachedLow).toEqual(lowSummary);
|
|
179
|
-
});
|
|
180
|
-
it('expand returns original from cache without calling inner expand', async () => {
|
|
181
|
-
const content = 'Original content for lossless expansion test';
|
|
182
|
-
const summary = await engine.summarize(content, 'low');
|
|
183
|
-
// original was stored during summarize
|
|
184
|
-
const expanded = await engine.expand(summary, 'full');
|
|
185
|
-
expect(inner.expandCount).toBe(0);
|
|
186
|
-
expect(expanded).toBe(content);
|
|
187
|
-
});
|
|
188
|
-
it('expand calls inner when original not cached (manually constructed summary)', async () => {
|
|
189
|
-
// Build a summary whose hash is not in the cache
|
|
190
|
-
const fakeSummary = {
|
|
191
|
-
level: 'medium',
|
|
192
|
-
content: 'some compressed text',
|
|
193
|
-
originalHash: makeHash('content that was never summarized via engine'),
|
|
194
|
-
createdAt: new Date().toISOString(),
|
|
195
|
-
};
|
|
196
|
-
const expanded = await engine.expand(fakeSummary, 'full');
|
|
197
|
-
expect(inner.expandCount).toBe(1);
|
|
198
|
-
// MockSummaryEngine.expand returns summary.content when no opts.originalContent
|
|
199
|
-
expect(expanded).toBe(fakeSummary.content);
|
|
200
|
-
});
|
|
201
|
-
it('engine.name equals "caching(mock)" given inner engine with name "mock"', () => {
|
|
202
|
-
expect(engine.name).toBe('caching(mock)');
|
|
203
|
-
});
|
|
204
|
-
it('CachingSummaryEngine instance is accepted as SummaryEngine', async () => {
|
|
205
|
-
// Verify by calling both methods through a typed SummaryEngine variable
|
|
206
|
-
const typed = engine;
|
|
207
|
-
const content = 'Interface compliance check';
|
|
208
|
-
const summary = await typed.summarize(content, 'high');
|
|
209
|
-
expect(summary).toBeDefined();
|
|
210
|
-
const expanded = await typed.expand(summary, 'full');
|
|
211
|
-
expect(expanded).toBeDefined();
|
|
212
|
-
});
|
|
213
|
-
});
|
|
214
|
-
//# sourceMappingURL=summary-cache.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summary-cache.test.js","sourceRoot":"","sources":["../../../src/context/__tests__/summary-cache.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summary-metrics.test.d.ts","sourceRoot":"","sources":["../../../src/context/__tests__/summary-metrics.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { mkdtemp, rm } from 'node:fs/promises';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { tmpdir } from 'node:os';
|
|
4
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
5
|
-
import { computeCompressionRatio, extractKeyFacts, computeKeyFactRetentionRate, computeRoundTripScore, SummaryQualityAnalyzer, QualityMetricsPersistence, } from '../summary-metrics.js';
|
|
6
|
-
function makeSummary(overrides) {
|
|
7
|
-
return {
|
|
8
|
-
level: 'medium',
|
|
9
|
-
content: 'summary content',
|
|
10
|
-
originalHash: 'abc123',
|
|
11
|
-
createdAt: new Date().toISOString(),
|
|
12
|
-
...overrides,
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
// ─── computeCompressionRatio ──────────────────────────────────────────────────
|
|
16
|
-
describe('computeCompressionRatio', () => {
|
|
17
|
-
it('returns summaryTokenCount / originalTokenCount when both are present', () => {
|
|
18
|
-
const summary = makeSummary({ originalTokenCount: 100, summaryTokenCount: 50 });
|
|
19
|
-
expect(computeCompressionRatio(summary)).toBe(0.5);
|
|
20
|
-
});
|
|
21
|
-
it('returns -1 when originalTokenCount is absent', () => {
|
|
22
|
-
// Omit originalTokenCount to test undefined branch (exactOptionalPropertyTypes)
|
|
23
|
-
const summary = makeSummary();
|
|
24
|
-
expect(computeCompressionRatio(summary)).toBe(-1);
|
|
25
|
-
});
|
|
26
|
-
it('returns -1 when originalTokenCount is zero', () => {
|
|
27
|
-
const summary = makeSummary({ originalTokenCount: 0, summaryTokenCount: 50 });
|
|
28
|
-
expect(computeCompressionRatio(summary)).toBe(-1);
|
|
29
|
-
});
|
|
30
|
-
it('returns -1 when summaryTokenCount is absent', () => {
|
|
31
|
-
// Omit summaryTokenCount to test undefined branch (exactOptionalPropertyTypes)
|
|
32
|
-
const summary = makeSummary({ originalTokenCount: 100 });
|
|
33
|
-
expect(computeCompressionRatio(summary)).toBe(-1);
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
// ─── extractKeyFacts ──────────────────────────────────────────────────────────
|
|
37
|
-
describe('extractKeyFacts', () => {
|
|
38
|
-
it('detects fenced code blocks', () => {
|
|
39
|
-
const content = 'Some text\n```\nconst x = 1;\n```\nMore text';
|
|
40
|
-
const facts = extractKeyFacts(content);
|
|
41
|
-
const entries = [...facts];
|
|
42
|
-
expect(entries.some(e => e.includes('const x = 1'))).toBe(true);
|
|
43
|
-
});
|
|
44
|
-
it('detects file-path tokens', () => {
|
|
45
|
-
// Note: the spec regex [\w./]+ does not match hyphens, so use a hyphen-free path
|
|
46
|
-
const content = 'See packages/factory/src/context/index.ts for details';
|
|
47
|
-
const facts = extractKeyFacts(content);
|
|
48
|
-
expect(facts.has('packages/factory/src/context/index.ts')).toBe(true);
|
|
49
|
-
});
|
|
50
|
-
it('detects error-type names', () => {
|
|
51
|
-
const content = 'The operation failed with ENOENT';
|
|
52
|
-
const facts = extractKeyFacts(content);
|
|
53
|
-
expect(facts.has('ENOENT')).toBe(true);
|
|
54
|
-
});
|
|
55
|
-
it('returns empty set for plain prose text', () => {
|
|
56
|
-
const content = 'hello world no facts here';
|
|
57
|
-
const facts = extractKeyFacts(content);
|
|
58
|
-
expect(facts.size).toBe(0);
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
// ─── computeKeyFactRetentionRate ──────────────────────────────────────────────
|
|
62
|
-
describe('computeKeyFactRetentionRate', () => {
|
|
63
|
-
it('returns 1.0 when original and summarized both contain the same file path', () => {
|
|
64
|
-
const original = 'See src/index.ts for implementation';
|
|
65
|
-
const summarized = 'Refer to src/index.ts';
|
|
66
|
-
expect(computeKeyFactRetentionRate(original, summarized)).toBe(1.0);
|
|
67
|
-
});
|
|
68
|
-
it('returns 1.0 when original has no key facts', () => {
|
|
69
|
-
const original = 'plain prose with no structured facts';
|
|
70
|
-
const summarized = 'a different summary';
|
|
71
|
-
expect(computeKeyFactRetentionRate(original, summarized)).toBe(1.0);
|
|
72
|
-
});
|
|
73
|
-
it('returns approximately 0.5 when original has two file paths and summarized retains only one', () => {
|
|
74
|
-
const original = 'Check src/index.ts and src/utils.ts for details';
|
|
75
|
-
const summarized = 'Look at src/index.ts only';
|
|
76
|
-
const rate = computeKeyFactRetentionRate(original, summarized);
|
|
77
|
-
expect(rate).toBeCloseTo(0.5);
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
// ─── computeRoundTripScore ────────────────────────────────────────────────────
|
|
81
|
-
describe('computeRoundTripScore', () => {
|
|
82
|
-
it('returns 1.0 for identical strings', () => {
|
|
83
|
-
const s = 'alpha beta gamma delta';
|
|
84
|
-
expect(computeRoundTripScore(s, s)).toBe(1.0);
|
|
85
|
-
});
|
|
86
|
-
it('returns 0.0 for completely disjoint word sets', () => {
|
|
87
|
-
expect(computeRoundTripScore('alpha beta', 'gamma delta')).toBe(0.0);
|
|
88
|
-
});
|
|
89
|
-
it('returns a value strictly between 0 and 1 for partial overlap', () => {
|
|
90
|
-
const score = computeRoundTripScore('alpha beta gamma', 'alpha beta delta');
|
|
91
|
-
expect(score).toBeGreaterThan(0);
|
|
92
|
-
expect(score).toBeLessThan(1);
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
// ─── SummaryQualityAnalyzer ───────────────────────────────────────────────────
|
|
96
|
-
describe('SummaryQualityAnalyzer', () => {
|
|
97
|
-
const analyzer = new SummaryQualityAnalyzer();
|
|
98
|
-
it('returns roundTripScore null and overallScore === keyFactRetentionRate when no expanded provided', () => {
|
|
99
|
-
const original = 'some original content with src/index.ts';
|
|
100
|
-
const summary = makeSummary({ content: 'summary with src/index.ts' });
|
|
101
|
-
const report = analyzer.analyze(original, summary);
|
|
102
|
-
expect(report.roundTripScore).toBeNull();
|
|
103
|
-
expect(report.overallScore).toBe(report.keyFactRetentionRate);
|
|
104
|
-
});
|
|
105
|
-
it('returns non-null roundTripScore and correct overallScore when expanded equals original', () => {
|
|
106
|
-
const original = 'some original content with src/index.ts';
|
|
107
|
-
const summary = makeSummary({ content: 'summary with src/index.ts' });
|
|
108
|
-
const report = analyzer.analyze(original, summary, original);
|
|
109
|
-
expect(report.roundTripScore).toBe(1.0);
|
|
110
|
-
const expected = report.keyFactRetentionRate * 0.6 + 1.0 * 0.4;
|
|
111
|
-
expect(report.overallScore).toBeCloseTo(expected);
|
|
112
|
-
});
|
|
113
|
-
it('includes summaryHash from summary.originalHash', () => {
|
|
114
|
-
const summary = makeSummary({ originalHash: 'deadbeef' });
|
|
115
|
-
const report = analyzer.analyze('content', summary);
|
|
116
|
-
expect(report.summaryHash).toBe('deadbeef');
|
|
117
|
-
});
|
|
118
|
-
it('includes level from summary.level', () => {
|
|
119
|
-
const summary = makeSummary({ level: 'low' });
|
|
120
|
-
const report = analyzer.analyze('content', summary);
|
|
121
|
-
expect(report.level).toBe('low');
|
|
122
|
-
});
|
|
123
|
-
it('sets computedAt as ISO-8601 string', () => {
|
|
124
|
-
const summary = makeSummary();
|
|
125
|
-
const report = analyzer.analyze('content', summary);
|
|
126
|
-
expect(() => new Date(report.computedAt)).not.toThrow();
|
|
127
|
-
expect(report.computedAt).toMatch(/^\d{4}-\d{2}-\d{2}T/);
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
// ─── QualityMetricsPersistence ────────────────────────────────────────────────
|
|
131
|
-
describe('QualityMetricsPersistence', () => {
|
|
132
|
-
let tmpDir;
|
|
133
|
-
beforeEach(async () => {
|
|
134
|
-
tmpDir = await mkdtemp(join(tmpdir(), 'summary-metrics-test-'));
|
|
135
|
-
});
|
|
136
|
-
afterEach(async () => {
|
|
137
|
-
await rm(tmpDir, { recursive: true, force: true });
|
|
138
|
-
});
|
|
139
|
-
function makeReport() {
|
|
140
|
-
const analyzer = new SummaryQualityAnalyzer();
|
|
141
|
-
const summary = makeSummary({ originalHash: 'test-hash-001' });
|
|
142
|
-
return analyzer.analyze('original content', summary);
|
|
143
|
-
}
|
|
144
|
-
it('record() then readAll() returns array of length 1 with correct summaryHash and recordedAt', async () => {
|
|
145
|
-
const persistence = new QualityMetricsPersistence({ runId: 'run-1', storageDir: tmpDir });
|
|
146
|
-
const report = makeReport();
|
|
147
|
-
await persistence.record(report);
|
|
148
|
-
const entries = await persistence.readAll();
|
|
149
|
-
expect(entries).toHaveLength(1);
|
|
150
|
-
const entry = entries[0];
|
|
151
|
-
expect(entry.summaryHash).toBe(report.summaryHash);
|
|
152
|
-
expect(typeof entry.recordedAt).toBe('string');
|
|
153
|
-
expect(entry.recordedAt.length).toBeGreaterThan(0);
|
|
154
|
-
});
|
|
155
|
-
it('readAll() returns [] when no file exists at the metrics path', async () => {
|
|
156
|
-
const persistence = new QualityMetricsPersistence({ runId: 'run-2', storageDir: tmpDir });
|
|
157
|
-
const entries = await persistence.readAll();
|
|
158
|
-
expect(entries).toEqual([]);
|
|
159
|
-
});
|
|
160
|
-
it('multiple records are returned in insertion order', async () => {
|
|
161
|
-
const persistence = new QualityMetricsPersistence({ runId: 'run-3', storageDir: tmpDir });
|
|
162
|
-
const report1 = makeReport();
|
|
163
|
-
const report2 = { ...makeReport(), summaryHash: 'second-hash' };
|
|
164
|
-
await persistence.record(report1);
|
|
165
|
-
await persistence.record(report2);
|
|
166
|
-
const entries = await persistence.readAll();
|
|
167
|
-
expect(entries).toHaveLength(2);
|
|
168
|
-
expect(entries[0].summaryHash).toBe(report1.summaryHash);
|
|
169
|
-
expect(entries[1].summaryHash).toBe('second-hash');
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
//# sourceMappingURL=summary-metrics.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summary-metrics.test.js","sourceRoot":"","sources":["../../../src/context/__tests__/summary-metrics.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summary-types.test.d.ts","sourceRoot":"","sources":["../../../src/context/__tests__/summary-types.test.ts"],"names":[],"mappings":""}
|