@skastr0/pulsar-core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backpressure.d.ts +31 -0
- package/dist/backpressure.d.ts.map +1 -0
- package/dist/backpressure.js +206 -0
- package/dist/backpressure.js.map +1 -0
- package/dist/baseline.d.ts +91 -0
- package/dist/baseline.d.ts.map +1 -0
- package/dist/baseline.js +139 -0
- package/dist/baseline.js.map +1 -0
- package/dist/bypass.d.ts +14 -0
- package/dist/bypass.d.ts.map +1 -0
- package/dist/bypass.js +47 -0
- package/dist/bypass.js.map +1 -0
- package/dist/cache-disk.d.ts +4 -0
- package/dist/cache-disk.d.ts.map +1 -0
- package/dist/cache-disk.js +212 -0
- package/dist/cache-disk.js.map +1 -0
- package/dist/cache.d.ts +62 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +87 -0
- package/dist/cache.js.map +1 -0
- package/dist/calibration-context.d.ts +7 -0
- package/dist/calibration-context.d.ts.map +1 -0
- package/dist/calibration-context.js +40 -0
- package/dist/calibration-context.js.map +1 -0
- package/dist/calibration-fingerprint.d.ts +28 -0
- package/dist/calibration-fingerprint.d.ts.map +1 -0
- package/dist/calibration-fingerprint.js +67 -0
- package/dist/calibration-fingerprint.js.map +1 -0
- package/dist/calibration-model.d.ts +103 -0
- package/dist/calibration-model.d.ts.map +1 -0
- package/dist/calibration-model.js +44 -0
- package/dist/calibration-model.js.map +1 -0
- package/dist/calibration-slot-values.d.ts +232 -0
- package/dist/calibration-slot-values.d.ts.map +1 -0
- package/dist/calibration-slot-values.js +2 -0
- package/dist/calibration-slot-values.js.map +1 -0
- package/dist/calibration.d.ts +4 -0
- package/dist/calibration.d.ts.map +1 -0
- package/dist/calibration.js +4 -0
- package/dist/calibration.js.map +1 -0
- package/dist/category.d.ts +6 -0
- package/dist/category.d.ts.map +1 -0
- package/dist/category.js +12 -0
- package/dist/category.js.map +1 -0
- package/dist/concurrency.d.ts +2 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +15 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/context.d.ts +40 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +28 -0
- package/dist/context.js.map +1 -0
- package/dist/conventions.d.ts +110 -0
- package/dist/conventions.d.ts.map +1 -0
- package/dist/conventions.js +40 -0
- package/dist/conventions.js.map +1 -0
- package/dist/dedupe-by-key.d.ts +2 -0
- package/dist/dedupe-by-key.d.ts.map +1 -0
- package/dist/dedupe-by-key.js +13 -0
- package/dist/dedupe-by-key.js.map +1 -0
- package/dist/diagnostic.d.ts +26 -0
- package/dist/diagnostic.d.ts.map +1 -0
- package/dist/diagnostic.js +34 -0
- package/dist/diagnostic.js.map +1 -0
- package/dist/distribution.d.ts +18 -0
- package/dist/distribution.d.ts.map +1 -0
- package/dist/distribution.js +44 -0
- package/dist/distribution.js.map +1 -0
- package/dist/edit-distance.d.ts +2 -0
- package/dist/edit-distance.d.ts.map +1 -0
- package/dist/edit-distance.js +21 -0
- package/dist/edit-distance.js.map +1 -0
- package/dist/elicitation/proposal-ai-assisted-mode.d.ts +9 -0
- package/dist/elicitation/proposal-ai-assisted-mode.d.ts.map +1 -0
- package/dist/elicitation/proposal-ai-assisted-mode.js +37 -0
- package/dist/elicitation/proposal-ai-assisted-mode.js.map +1 -0
- package/dist/elicitation/proposal-passive.d.ts +12 -0
- package/dist/elicitation/proposal-passive.d.ts.map +1 -0
- package/dist/elicitation/proposal-passive.js +62 -0
- package/dist/elicitation/proposal-passive.js.map +1 -0
- package/dist/elicitation/proposal-resolution.d.ts +11 -0
- package/dist/elicitation/proposal-resolution.d.ts.map +1 -0
- package/dist/elicitation/proposal-resolution.js +43 -0
- package/dist/elicitation/proposal-resolution.js.map +1 -0
- package/dist/elicitation/proposal-revealed-preference.d.ts +21 -0
- package/dist/elicitation/proposal-revealed-preference.d.ts.map +1 -0
- package/dist/elicitation/proposal-revealed-preference.js +72 -0
- package/dist/elicitation/proposal-revealed-preference.js.map +1 -0
- package/dist/elicitation/proposal-schema.d.ts +62 -0
- package/dist/elicitation/proposal-schema.d.ts.map +1 -0
- package/dist/elicitation/proposal-schema.js +39 -0
- package/dist/elicitation/proposal-schema.js.map +1 -0
- package/dist/elicitation/proposal-utils.d.ts +6 -0
- package/dist/elicitation/proposal-utils.d.ts.map +1 -0
- package/dist/elicitation/proposal-utils.js +7 -0
- package/dist/elicitation/proposal-utils.js.map +1 -0
- package/dist/elicitation/proposals.d.ts +6 -0
- package/dist/elicitation/proposals.d.ts.map +1 -0
- package/dist/elicitation/proposals.js +6 -0
- package/dist/elicitation/proposals.js.map +1 -0
- package/dist/elicitation/quiz.d.ts +72 -0
- package/dist/elicitation/quiz.d.ts.map +1 -0
- package/dist/elicitation/quiz.js +189 -0
- package/dist/elicitation/quiz.js.map +1 -0
- package/dist/elicitation/revealed-preference.d.ts +24 -0
- package/dist/elicitation/revealed-preference.d.ts.map +1 -0
- package/dist/elicitation/revealed-preference.js +101 -0
- package/dist/elicitation/revealed-preference.js.map +1 -0
- package/dist/elicitation.d.ts +5 -0
- package/dist/elicitation.d.ts.map +1 -0
- package/dist/elicitation.js +5 -0
- package/dist/elicitation.js.map +1 -0
- package/dist/enforcement.d.ts +13 -0
- package/dist/enforcement.d.ts.map +1 -0
- package/dist/enforcement.js +31 -0
- package/dist/enforcement.js.map +1 -0
- package/dist/errors.d.ts +132 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +76 -0
- package/dist/errors.js.map +1 -0
- package/dist/factor-ledger.d.ts +38 -0
- package/dist/factor-ledger.d.ts.map +1 -0
- package/dist/factor-ledger.js +184 -0
- package/dist/factor-ledger.js.map +1 -0
- package/dist/factor-policy-ledger.d.ts +12 -0
- package/dist/factor-policy-ledger.d.ts.map +1 -0
- package/dist/factor-policy-ledger.js +48 -0
- package/dist/factor-policy-ledger.js.map +1 -0
- package/dist/factors.d.ts +4 -0
- package/dist/factors.d.ts.map +1 -0
- package/dist/factors.js +3 -0
- package/dist/factors.js.map +1 -0
- package/dist/file-taxonomy.d.ts +10 -0
- package/dist/file-taxonomy.d.ts.map +1 -0
- package/dist/file-taxonomy.js +171 -0
- package/dist/file-taxonomy.js.map +1 -0
- package/dist/globs.d.ts +3 -0
- package/dist/globs.d.ts.map +1 -0
- package/dist/globs.js +24 -0
- package/dist/globs.js.map +1 -0
- package/dist/glossary.d.ts +137 -0
- package/dist/glossary.d.ts.map +1 -0
- package/dist/glossary.js +51 -0
- package/dist/glossary.js.map +1 -0
- package/dist/goodhart.d.ts +31 -0
- package/dist/goodhart.d.ts.map +1 -0
- package/dist/goodhart.js +176 -0
- package/dist/goodhart.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/input-outputs.d.ts +3 -0
- package/dist/input-outputs.d.ts.map +1 -0
- package/dist/input-outputs.js +10 -0
- package/dist/input-outputs.js.map +1 -0
- package/dist/observer-categories.d.ts +7 -0
- package/dist/observer-categories.d.ts.map +1 -0
- package/dist/observer-categories.js +158 -0
- package/dist/observer-categories.js.map +1 -0
- package/dist/observer-execution.d.ts +23 -0
- package/dist/observer-execution.d.ts.map +1 -0
- package/dist/observer-execution.js +130 -0
- package/dist/observer-execution.js.map +1 -0
- package/dist/observer-json.d.ts +319 -0
- package/dist/observer-json.d.ts.map +1 -0
- package/dist/observer-json.js +153 -0
- package/dist/observer-json.js.map +1 -0
- package/dist/observer-local-pressure.d.ts +5 -0
- package/dist/observer-local-pressure.d.ts.map +1 -0
- package/dist/observer-local-pressure.js +9 -0
- package/dist/observer-local-pressure.js.map +1 -0
- package/dist/observer-minimum.d.ts +26 -0
- package/dist/observer-minimum.d.ts.map +1 -0
- package/dist/observer-minimum.js +94 -0
- package/dist/observer-minimum.js.map +1 -0
- package/dist/observer-model.d.ts +129 -0
- package/dist/observer-model.d.ts.map +1 -0
- package/dist/observer-model.js +2 -0
- package/dist/observer-model.js.map +1 -0
- package/dist/observer-readiness.d.ts +6 -0
- package/dist/observer-readiness.d.ts.map +1 -0
- package/dist/observer-readiness.js +131 -0
- package/dist/observer-readiness.js.map +1 -0
- package/dist/observer-score-utils.d.ts +8 -0
- package/dist/observer-score-utils.d.ts.map +1 -0
- package/dist/observer-score-utils.js +17 -0
- package/dist/observer-score-utils.js.map +1 -0
- package/dist/observer-serializer.d.ts +3 -0
- package/dist/observer-serializer.d.ts.map +1 -0
- package/dist/observer-serializer.js +66 -0
- package/dist/observer-serializer.js.map +1 -0
- package/dist/observer-time.d.ts +3 -0
- package/dist/observer-time.d.ts.map +1 -0
- package/dist/observer-time.js +7 -0
- package/dist/observer-time.js.map +1 -0
- package/dist/observer-weighted-mean.d.ts +4 -0
- package/dist/observer-weighted-mean.d.ts.map +1 -0
- package/dist/observer-weighted-mean.js +17 -0
- package/dist/observer-weighted-mean.js.map +1 -0
- package/dist/observer.d.ts +26 -0
- package/dist/observer.d.ts.map +1 -0
- package/dist/observer.js +63 -0
- package/dist/observer.js.map +1 -0
- package/dist/presets.d.ts +11 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +52 -0
- package/dist/presets.js.map +1 -0
- package/dist/reference-data-loader.d.ts +6 -0
- package/dist/reference-data-loader.d.ts.map +1 -0
- package/dist/reference-data-loader.js +53 -0
- package/dist/reference-data-loader.js.map +1 -0
- package/dist/reference-data.d.ts +6 -0
- package/dist/reference-data.d.ts.map +1 -0
- package/dist/reference-data.js +6 -0
- package/dist/reference-data.js.map +1 -0
- package/dist/registry.d.ts +16 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +174 -0
- package/dist/registry.js.map +1 -0
- package/dist/review-plan.d.ts +30 -0
- package/dist/review-plan.d.ts.map +1 -0
- package/dist/review-plan.js +235 -0
- package/dist/review-plan.js.map +1 -0
- package/dist/routing-context-payload.d.ts +20 -0
- package/dist/routing-context-payload.d.ts.map +1 -0
- package/dist/routing-context-payload.js +58 -0
- package/dist/routing-context-payload.js.map +1 -0
- package/dist/routing-matching.d.ts +10 -0
- package/dist/routing-matching.d.ts.map +1 -0
- package/dist/routing-matching.js +74 -0
- package/dist/routing-matching.js.map +1 -0
- package/dist/routing-pattern-catalog.d.ts +7 -0
- package/dist/routing-pattern-catalog.d.ts.map +1 -0
- package/dist/routing-pattern-catalog.js +120 -0
- package/dist/routing-pattern-catalog.js.map +1 -0
- package/dist/routing-schema.d.ts +162 -0
- package/dist/routing-schema.d.ts.map +1 -0
- package/dist/routing-schema.js +75 -0
- package/dist/routing-schema.js.map +1 -0
- package/dist/routing.d.ts +14 -0
- package/dist/routing.d.ts.map +1 -0
- package/dist/routing.js +35 -0
- package/dist/routing.js.map +1 -0
- package/dist/runner.d.ts +26 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +72 -0
- package/dist/runner.js.map +1 -0
- package/dist/scoring-engine-contract.d.ts +43 -0
- package/dist/scoring-engine-contract.d.ts.map +1 -0
- package/dist/scoring-engine-contract.js +42 -0
- package/dist/scoring-engine-contract.js.map +1 -0
- package/dist/scoring-engine-git-content-hash.d.ts +12 -0
- package/dist/scoring-engine-git-content-hash.d.ts.map +1 -0
- package/dist/scoring-engine-git-content-hash.js +154 -0
- package/dist/scoring-engine-git-content-hash.js.map +1 -0
- package/dist/scoring-engine-git-diff.d.ts +10 -0
- package/dist/scoring-engine-git-diff.d.ts.map +1 -0
- package/dist/scoring-engine-git-diff.js +103 -0
- package/dist/scoring-engine-git-diff.js.map +1 -0
- package/dist/scoring-engine-git-paths.d.ts +2 -0
- package/dist/scoring-engine-git-paths.d.ts.map +1 -0
- package/dist/scoring-engine-git-paths.js +17 -0
- package/dist/scoring-engine-git-paths.js.map +1 -0
- package/dist/scoring-engine-git-range.d.ts +9 -0
- package/dist/scoring-engine-git-range.d.ts.map +1 -0
- package/dist/scoring-engine-git-range.js +19 -0
- package/dist/scoring-engine-git-range.js.map +1 -0
- package/dist/scoring-engine-git-run.d.ts +7 -0
- package/dist/scoring-engine-git-run.d.ts.map +1 -0
- package/dist/scoring-engine-git-run.js +32 -0
- package/dist/scoring-engine-git-run.js.map +1 -0
- package/dist/scoring-engine-git-worktree.d.ts +9 -0
- package/dist/scoring-engine-git-worktree.d.ts.map +1 -0
- package/dist/scoring-engine-git-worktree.js +83 -0
- package/dist/scoring-engine-git-worktree.js.map +1 -0
- package/dist/scoring-engine-git.d.ts +5 -0
- package/dist/scoring-engine-git.d.ts.map +1 -0
- package/dist/scoring-engine-git.js +5 -0
- package/dist/scoring-engine-git.js.map +1 -0
- package/dist/scoring-engine-layer.d.ts +12 -0
- package/dist/scoring-engine-layer.d.ts.map +1 -0
- package/dist/scoring-engine-layer.js +48 -0
- package/dist/scoring-engine-layer.js.map +1 -0
- package/dist/scoring-engine-observe.d.ts +50 -0
- package/dist/scoring-engine-observe.d.ts.map +1 -0
- package/dist/scoring-engine-observe.js +77 -0
- package/dist/scoring-engine-observe.js.map +1 -0
- package/dist/scoring-engine-observer-cache.d.ts +36 -0
- package/dist/scoring-engine-observer-cache.d.ts.map +1 -0
- package/dist/scoring-engine-observer-cache.js +115 -0
- package/dist/scoring-engine-observer-cache.js.map +1 -0
- package/dist/scoring-engine-runtime.d.ts +25 -0
- package/dist/scoring-engine-runtime.d.ts.map +1 -0
- package/dist/scoring-engine-runtime.js +49 -0
- package/dist/scoring-engine-runtime.js.map +1 -0
- package/dist/scoring-engine-score-execution.d.ts +24 -0
- package/dist/scoring-engine-score-execution.d.ts.map +1 -0
- package/dist/scoring-engine-score-execution.js +71 -0
- package/dist/scoring-engine-score-execution.js.map +1 -0
- package/dist/scoring-engine-score.d.ts +13 -0
- package/dist/scoring-engine-score.d.ts.map +1 -0
- package/dist/scoring-engine-score.js +28 -0
- package/dist/scoring-engine-score.js.map +1 -0
- package/dist/scoring-engine.d.ts +5 -0
- package/dist/scoring-engine.d.ts.map +1 -0
- package/dist/scoring-engine.js +5 -0
- package/dist/scoring-engine.js.map +1 -0
- package/dist/scoring.d.ts +9 -0
- package/dist/scoring.d.ts.map +1 -0
- package/dist/scoring.js +9 -0
- package/dist/scoring.js.map +1 -0
- package/dist/shared-02-aggregation.d.ts +31 -0
- package/dist/shared-02-aggregation.d.ts.map +1 -0
- package/dist/shared-02-aggregation.js +63 -0
- package/dist/shared-02-aggregation.js.map +1 -0
- package/dist/shared-02-bus-factor.d.ts +37 -0
- package/dist/shared-02-bus-factor.d.ts.map +1 -0
- package/dist/shared-02-bus-factor.js +195 -0
- package/dist/shared-02-bus-factor.js.map +1 -0
- package/dist/shared-02-history.d.ts +7 -0
- package/dist/shared-02-history.d.ts.map +1 -0
- package/dist/shared-02-history.js +9 -0
- package/dist/shared-02-history.js.map +1 -0
- package/dist/shared-03-churn-rate.d.ts +47 -0
- package/dist/shared-03-churn-rate.d.ts.map +1 -0
- package/dist/shared-03-churn-rate.js +187 -0
- package/dist/shared-03-churn-rate.js.map +1 -0
- package/dist/shared-03-compute.d.ts +4 -0
- package/dist/shared-03-compute.d.ts.map +1 -0
- package/dist/shared-03-compute.js +84 -0
- package/dist/shared-03-compute.js.map +1 -0
- package/dist/shared-03-line-matching.d.ts +2 -0
- package/dist/shared-03-line-matching.d.ts.map +1 -0
- package/dist/shared-03-line-matching.js +119 -0
- package/dist/shared-03-line-matching.js.map +1 -0
- package/dist/shared-churn-01.d.ts +24 -0
- package/dist/shared-churn-01.d.ts.map +1 -0
- package/dist/shared-churn-01.js +107 -0
- package/dist/shared-churn-01.js.map +1 -0
- package/dist/shared-history-authors.d.ts +5 -0
- package/dist/shared-history-authors.d.ts.map +1 -0
- package/dist/shared-history-authors.js +77 -0
- package/dist/shared-history-authors.js.map +1 -0
- package/dist/shared-history-defaults.d.ts +2 -0
- package/dist/shared-history-defaults.d.ts.map +1 -0
- package/dist/shared-history-defaults.js +73 -0
- package/dist/shared-history-defaults.js.map +1 -0
- package/dist/shared-history-files.d.ts +3 -0
- package/dist/shared-history-files.d.ts.map +1 -0
- package/dist/shared-history-files.js +19 -0
- package/dist/shared-history-files.js.map +1 -0
- package/dist/shared-history-filter.d.ts +10 -0
- package/dist/shared-history-filter.d.ts.map +1 -0
- package/dist/shared-history-filter.js +10 -0
- package/dist/shared-history-filter.js.map +1 -0
- package/dist/shared-history-git.d.ts +7 -0
- package/dist/shared-history-git.d.ts.map +1 -0
- package/dist/shared-history-git.js +45 -0
- package/dist/shared-history-git.js.map +1 -0
- package/dist/shared-history-lines.d.ts +4 -0
- package/dist/shared-history-lines.d.ts.map +1 -0
- package/dist/shared-history-lines.js +139 -0
- package/dist/shared-history-lines.js.map +1 -0
- package/dist/shared-history.d.ts +6 -0
- package/dist/shared-history.d.ts.map +1 -0
- package/dist/shared-history.js +6 -0
- package/dist/shared-history.js.map +1 -0
- package/dist/shared-signals.d.ts +4 -0
- package/dist/shared-signals.d.ts.map +1 -0
- package/dist/shared-signals.js +4 -0
- package/dist/shared-signals.js.map +1 -0
- package/dist/signal-api.d.ts +16 -0
- package/dist/signal-api.d.ts.map +1 -0
- package/dist/signal-api.js +13 -0
- package/dist/signal-api.js.map +1 -0
- package/dist/signal-factor-model.d.ts +53 -0
- package/dist/signal-factor-model.d.ts.map +1 -0
- package/dist/signal-factor-model.js +2 -0
- package/dist/signal-factor-model.js.map +1 -0
- package/dist/signal-runtime.d.ts +13 -0
- package/dist/signal-runtime.d.ts.map +1 -0
- package/dist/signal-runtime.js +2 -0
- package/dist/signal-runtime.js.map +1 -0
- package/dist/signal-score-utils.d.ts +2 -0
- package/dist/signal-score-utils.d.ts.map +1 -0
- package/dist/signal-score-utils.js +6 -0
- package/dist/signal-score-utils.js.map +1 -0
- package/dist/signal.d.ts +113 -0
- package/dist/signal.d.ts.map +1 -0
- package/dist/signal.js +2 -0
- package/dist/signal.js.map +1 -0
- package/dist/state-paths.d.ts +7 -0
- package/dist/state-paths.d.ts.map +1 -0
- package/dist/state-paths.js +32 -0
- package/dist/state-paths.js.map +1 -0
- package/dist/tier.d.ts +14 -0
- package/dist/tier.d.ts.map +1 -0
- package/dist/tier.js +12 -0
- package/dist/tier.js.map +1 -0
- package/dist/time-series-compaction-types.d.ts +6 -0
- package/dist/time-series-compaction-types.d.ts.map +1 -0
- package/dist/time-series-compaction-types.js +2 -0
- package/dist/time-series-compaction-types.js.map +1 -0
- package/dist/time-series-compaction.d.ts +3 -0
- package/dist/time-series-compaction.d.ts.map +1 -0
- package/dist/time-series-compaction.js +138 -0
- package/dist/time-series-compaction.js.map +1 -0
- package/dist/time-series-dates.d.ts +8 -0
- package/dist/time-series-dates.d.ts.map +1 -0
- package/dist/time-series-dates.js +43 -0
- package/dist/time-series-dates.js.map +1 -0
- package/dist/time-series-metadata.d.ts +6 -0
- package/dist/time-series-metadata.d.ts.map +1 -0
- package/dist/time-series-metadata.js +72 -0
- package/dist/time-series-metadata.js.map +1 -0
- package/dist/time-series-model.d.ts +419 -0
- package/dist/time-series-model.d.ts.map +1 -0
- package/dist/time-series-model.js +51 -0
- package/dist/time-series-model.js.map +1 -0
- package/dist/time-series-readiness.d.ts +4 -0
- package/dist/time-series-readiness.d.ts.map +1 -0
- package/dist/time-series-readiness.js +82 -0
- package/dist/time-series-readiness.js.map +1 -0
- package/dist/time-series-storage.d.ts +15 -0
- package/dist/time-series-storage.d.ts.map +1 -0
- package/dist/time-series-storage.js +124 -0
- package/dist/time-series-storage.js.map +1 -0
- package/dist/time-series.d.ts +6 -0
- package/dist/time-series.d.ts.map +1 -0
- package/dist/time-series.js +98 -0
- package/dist/time-series.js.map +1 -0
- package/dist/vector-ai-mode.d.ts +10 -0
- package/dist/vector-ai-mode.d.ts.map +1 -0
- package/dist/vector-ai-mode.js +41 -0
- package/dist/vector-ai-mode.js.map +1 -0
- package/dist/vector-backpressure-config.d.ts +3 -0
- package/dist/vector-backpressure-config.d.ts.map +1 -0
- package/dist/vector-backpressure-config.js +18 -0
- package/dist/vector-backpressure-config.js.map +1 -0
- package/dist/vector-observer-config.d.ts +7 -0
- package/dist/vector-observer-config.d.ts.map +1 -0
- package/dist/vector-observer-config.js +24 -0
- package/dist/vector-observer-config.js.map +1 -0
- package/dist/vector-provenance.d.ts +3 -0
- package/dist/vector-provenance.d.ts.map +1 -0
- package/dist/vector-provenance.js +5 -0
- package/dist/vector-provenance.js.map +1 -0
- package/dist/vector-resolution.d.ts +25 -0
- package/dist/vector-resolution.d.ts.map +1 -0
- package/dist/vector-resolution.js +82 -0
- package/dist/vector-resolution.js.map +1 -0
- package/dist/vector-schema.d.ts +435 -0
- package/dist/vector-schema.d.ts.map +1 -0
- package/dist/vector-schema.js +158 -0
- package/dist/vector-schema.js.map +1 -0
- package/dist/vector.d.ts +3 -0
- package/dist/vector.d.ts.map +1 -0
- package/dist/vector.js +3 -0
- package/dist/vector.js.map +1 -0
- package/package.json +106 -0
- package/presets/ai-slop-defense.json +28 -0
- package/presets/domain-purist.json +15 -0
- package/presets/refactor-friendly.json +18 -0
- package/presets/security-paranoid.json +20 -0
- package/presets/strict-type-safety.json +15 -0
- package/presets/velocity-first.json +32 -0
- package/quiz-items/typescript.json +602 -0
- package/routing-patterns/api-surface-change.json +17 -0
- package/routing-patterns/auth-paths-touched.json +16 -0
- package/routing-patterns/crypto-import-added.json +21 -0
- package/routing-patterns/domain-term-drift.json +17 -0
- package/routing-patterns/migration-added.json +13 -0
- package/routing-patterns/unsafe-added.json +17 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { SharedChurn01, SharedChurn01Config, } from "./shared-churn-01.js";
|
|
2
|
+
export { Shared02BusFactor, Shared02BusFactorConfig, } from "./shared-02-bus-factor.js";
|
|
3
|
+
export { Shared03ChurnRate, Shared03ChurnRateConfig, } from "./shared-03-churn-rate.js";
|
|
4
|
+
//# sourceMappingURL=shared-signals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-signals.js","sourceRoot":"","sources":["../src/shared-signals.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,mBAAmB,GAEpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GAGxB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GAGxB,MAAM,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { CATEGORIES, type Category } from "./category.js";
|
|
2
|
+
export { type Diagnostic, computeDiagnosticHash } from "./diagnostic.js";
|
|
3
|
+
export { ReferenceDataTag, SignalContextTag, makeReferenceData, type ChangedHunk, type ReferenceData, type SignalContext, } from "./context.js";
|
|
4
|
+
export { InMemoryCacheLayer } from "./cache.js";
|
|
5
|
+
export { summarize, type DistributionalSummary } from "./distribution.js";
|
|
6
|
+
export { levenshteinDistance } from "./edit-distance.js";
|
|
7
|
+
export { matchesAnyGlob } from "./globs.js";
|
|
8
|
+
export { classifyFilePath, isProductionSourcePath, sortedUniqueFilePaths } from "./file-taxonomy.js";
|
|
9
|
+
export { mapWithConcurrency } from "./concurrency.js";
|
|
10
|
+
export { hasSuppressingBypass, parseBypasses, toExpiredBypassDiagnostic, type PulsarAllowBypass, } from "./bypass.js";
|
|
11
|
+
export { SignalComputeError, type RegistryError, type ScoringEngineError, type SignalError, } from "./errors.js";
|
|
12
|
+
export { type AnySignal, type Signal, } from "./signal.js";
|
|
13
|
+
export type { SignalRequirements } from "./signal-runtime.js";
|
|
14
|
+
export { scoreThresholdViolationShare } from "./signal-score-utils.js";
|
|
15
|
+
export { type SignalFactorAttribution, type SignalFactorAttributionEvidence, type SignalFactorDefinition, type SignalFactorLedger, type SignalFactorLedgerEntry, type SignalFactorPolicyMutation, type SignalFactorScoreRole, type SignalFactorSource, type SignalFactorValue, type SignalFactorValueKind, } from "./signal-factor-model.js";
|
|
16
|
+
//# sourceMappingURL=signal-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-api.d.ts","sourceRoot":"","sources":["../src/signal-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AACpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EACzB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,SAAS,EACd,KAAK,MAAM,GACZ,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { CATEGORIES } from "./category.js";
|
|
2
|
+
export { computeDiagnosticHash } from "./diagnostic.js";
|
|
3
|
+
export { ReferenceDataTag, SignalContextTag, makeReferenceData, } from "./context.js";
|
|
4
|
+
export { InMemoryCacheLayer } from "./cache.js";
|
|
5
|
+
export { summarize } from "./distribution.js";
|
|
6
|
+
export { levenshteinDistance } from "./edit-distance.js";
|
|
7
|
+
export { matchesAnyGlob } from "./globs.js";
|
|
8
|
+
export { classifyFilePath, isProductionSourcePath, sortedUniqueFilePaths } from "./file-taxonomy.js";
|
|
9
|
+
export { mapWithConcurrency } from "./concurrency.js";
|
|
10
|
+
export { hasSuppressingBypass, parseBypasses, toExpiredBypassDiagnostic, } from "./bypass.js";
|
|
11
|
+
export { SignalComputeError, } from "./errors.js";
|
|
12
|
+
export { scoreThresholdViolationShare } from "./signal-score-utils.js";
|
|
13
|
+
//# sourceMappingURL=signal-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-api.js","sourceRoot":"","sources":["../src/signal-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,eAAe,CAAA;AACzD,OAAO,EAAmB,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAIlB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,SAAS,EAA8B,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AACpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,yBAAyB,GAE1B,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,kBAAkB,GAInB,MAAM,aAAa,CAAA;AAMpB,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export type SignalFactorValue = string | number | boolean | null | ReadonlyArray<SignalFactorValue> | {
|
|
2
|
+
readonly [key: string]: SignalFactorValue;
|
|
3
|
+
};
|
|
4
|
+
export type SignalFactorValueKind = "string" | "number" | "boolean" | "null" | "array" | "object";
|
|
5
|
+
export type SignalFactorScoreRole = "evidence" | "threshold" | "penalty" | "weight" | "confidence" | "score-cap" | "metadata";
|
|
6
|
+
export type SignalFactorSource = "signal-default" | "computed" | "vector" | "module";
|
|
7
|
+
export interface SignalFactorDefinition {
|
|
8
|
+
readonly path: string;
|
|
9
|
+
readonly title: string;
|
|
10
|
+
readonly valueKind: SignalFactorValueKind;
|
|
11
|
+
readonly scoreRole: SignalFactorScoreRole;
|
|
12
|
+
readonly description?: string;
|
|
13
|
+
readonly defaultValue?: SignalFactorValue;
|
|
14
|
+
}
|
|
15
|
+
export interface SignalFactorAttributionEvidence {
|
|
16
|
+
readonly kind: string;
|
|
17
|
+
readonly value: string;
|
|
18
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
19
|
+
}
|
|
20
|
+
export interface SignalFactorAttribution {
|
|
21
|
+
readonly ruleId?: string;
|
|
22
|
+
readonly sourceRef?: string;
|
|
23
|
+
readonly moduleId?: string;
|
|
24
|
+
readonly processorId?: string;
|
|
25
|
+
readonly evidence?: ReadonlyArray<SignalFactorAttributionEvidence>;
|
|
26
|
+
}
|
|
27
|
+
export interface SignalFactorLedgerEntry {
|
|
28
|
+
readonly path: string;
|
|
29
|
+
readonly value: SignalFactorValue;
|
|
30
|
+
readonly source: SignalFactorSource;
|
|
31
|
+
readonly affectsScore: boolean;
|
|
32
|
+
readonly title?: string;
|
|
33
|
+
readonly scoreRole?: SignalFactorScoreRole;
|
|
34
|
+
readonly attribution?: SignalFactorAttribution;
|
|
35
|
+
readonly mutations?: ReadonlyArray<SignalFactorPolicyMutation>;
|
|
36
|
+
}
|
|
37
|
+
export interface SignalFactorLedger {
|
|
38
|
+
readonly signalId: string;
|
|
39
|
+
readonly entries: ReadonlyArray<SignalFactorLedgerEntry>;
|
|
40
|
+
}
|
|
41
|
+
export interface SignalFactorPolicyMutation {
|
|
42
|
+
readonly path: string;
|
|
43
|
+
readonly source: SignalFactorSource;
|
|
44
|
+
readonly action: string;
|
|
45
|
+
readonly before?: SignalFactorValue;
|
|
46
|
+
readonly after: SignalFactorValue;
|
|
47
|
+
readonly ruleId?: string;
|
|
48
|
+
readonly sourceRef?: string;
|
|
49
|
+
readonly moduleId?: string;
|
|
50
|
+
readonly processorId?: string;
|
|
51
|
+
readonly evidence?: ReadonlyArray<SignalFactorAttributionEvidence>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=signal-factor-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-factor-model.d.ts","sourceRoot":"","sources":["../src/signal-factor-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-factor-model.js","sourceRoot":"","sources":["../src/signal-factor-model.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SignalCacheTag } from "./cache.js";
|
|
2
|
+
import type { SignalContextTag, ReferenceDataTag } from "./context.js";
|
|
3
|
+
/**
|
|
4
|
+
* The runtime services a signal's `compute` has access to.
|
|
5
|
+
*
|
|
6
|
+
* - `SignalContextTag`: gitSha, worktreePath, changedHunks
|
|
7
|
+
* - `ReferenceDataTag`: glossary, boundary rules, etc.
|
|
8
|
+
* - `SignalCacheTag`: read-through cache (the scoring engine also
|
|
9
|
+
* caches at the outer layer; signals can cache
|
|
10
|
+
* sub-computations if they need)
|
|
11
|
+
*/
|
|
12
|
+
export type SignalRequirements = SignalContextTag | ReferenceDataTag | SignalCacheTag;
|
|
13
|
+
//# sourceMappingURL=signal-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-runtime.d.ts","sourceRoot":"","sources":["../src/signal-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEtE;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-runtime.js","sourceRoot":"","sources":["../src/signal-runtime.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-score-utils.d.ts","sourceRoot":"","sources":["../src/signal-score-utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,GACvC,YAAY,MAAM,EAClB,gBAAgB,MAAM,KACrB,MAGF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-score-utils.js","sourceRoot":"","sources":["../src/signal-score-utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,UAAkB,EAClB,cAAsB,EACd,EAAE;IACV,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,GAAG,UAAU,CAAC,CAAA;AACrD,CAAC,CAAA"}
|
package/dist/signal.d.ts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { Effect, Schema } from "effect";
|
|
2
|
+
import type { Category } from "./category.js";
|
|
3
|
+
import type { Diagnostic } from "./diagnostic.js";
|
|
4
|
+
import type { EnforcementCeiling } from "./enforcement.js";
|
|
5
|
+
import type { SignalError } from "./errors.js";
|
|
6
|
+
import type { SignalKind, Tier } from "./tier.js";
|
|
7
|
+
import type { SignalFactorDefinition, SignalFactorLedger } from "./signal-factor-model.js";
|
|
8
|
+
import type { SignalRequirements } from "./signal-runtime.js";
|
|
9
|
+
/**
|
|
10
|
+
* Declared input dependency for a compound (Tier 1.5) signal.
|
|
11
|
+
*
|
|
12
|
+
* Dependencies are declared by id — NOT called imperatively — so the
|
|
13
|
+
* registry can topologically sort, enforce composition depth, and allow
|
|
14
|
+
* the scoring engine to parallelize independent leaves.
|
|
15
|
+
*/
|
|
16
|
+
export interface SignalInputRef {
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly optional?: boolean;
|
|
19
|
+
}
|
|
20
|
+
type ConfigDirection = "higher-is-stricter" | "higher-is-looser";
|
|
21
|
+
export type SignalApplicability = "applicable" | "not_applicable" | "insufficient_evidence" | "failed";
|
|
22
|
+
type SignalCacheDependency = "git-revision-context";
|
|
23
|
+
export interface SignalOutputMetadata {
|
|
24
|
+
readonly effectiveConfidence?: number;
|
|
25
|
+
readonly baseConfidence?: number;
|
|
26
|
+
readonly computedAt?: string;
|
|
27
|
+
readonly stale?: boolean;
|
|
28
|
+
readonly applicability?: SignalApplicability;
|
|
29
|
+
}
|
|
30
|
+
export interface SignalIdentity {
|
|
31
|
+
/**
|
|
32
|
+
* Canonical, emitted signal identifier. New signal IDs should be stable and
|
|
33
|
+
* semantic, e.g. TS-SL-04-unfinished-implementations.
|
|
34
|
+
*/
|
|
35
|
+
readonly id: string;
|
|
36
|
+
/**
|
|
37
|
+
* Human-readable display title for CLI, JSON explain output, and docs.
|
|
38
|
+
*/
|
|
39
|
+
readonly title?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Legacy or alternate IDs accepted at input boundaries. Aliases are never
|
|
42
|
+
* emitted as canonical IDs for new output.
|
|
43
|
+
*/
|
|
44
|
+
readonly aliases?: ReadonlyArray<string>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Map of dependency output values, keyed by the producing signal's id.
|
|
48
|
+
* Passed to `compute` for Tier 1.5 signals. Leaf signals receive an
|
|
49
|
+
* empty map.
|
|
50
|
+
*/
|
|
51
|
+
export type InputOutputs = ReadonlyMap<string, unknown>;
|
|
52
|
+
export interface Signal<Config, Output, R = SignalRequirements> {
|
|
53
|
+
readonly id: string;
|
|
54
|
+
readonly title?: string;
|
|
55
|
+
readonly aliases?: ReadonlyArray<string>;
|
|
56
|
+
readonly tier: Tier;
|
|
57
|
+
readonly category: Category;
|
|
58
|
+
readonly kind: SignalKind;
|
|
59
|
+
readonly normalizationGroup?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Included in score/observer cache keys. Packs should bump this whenever
|
|
62
|
+
* signal implementation or scoring semantics change without a corresponding
|
|
63
|
+
* default-config change.
|
|
64
|
+
*/
|
|
65
|
+
readonly cacheVersion?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Extra repository facts that affect the signal output beyond the tracked
|
|
68
|
+
* source tree and resolved config. Use this sparingly for signals whose
|
|
69
|
+
* evidence depends on git topology, branch upstreams, or commit identity.
|
|
70
|
+
*/
|
|
71
|
+
readonly cacheDependencies?: ReadonlyArray<SignalCacheDependency>;
|
|
72
|
+
/**
|
|
73
|
+
* Schema that decodes raw JSON config from the pulsar vector into a
|
|
74
|
+
* typed `Config`. Validation happens at vector load time.
|
|
75
|
+
*/
|
|
76
|
+
readonly configSchema: Schema.Schema<Config>;
|
|
77
|
+
/**
|
|
78
|
+
* Default config when the pulsar vector does not override this signal.
|
|
79
|
+
*/
|
|
80
|
+
readonly defaultConfig: Config;
|
|
81
|
+
readonly configDirections?: Partial<Record<keyof Config, ConfigDirection>>;
|
|
82
|
+
readonly factorDefinitions?: ReadonlyArray<SignalFactorDefinition>;
|
|
83
|
+
readonly inputs: ReadonlyArray<SignalInputRef>;
|
|
84
|
+
/**
|
|
85
|
+
* `R` is the additional service requirement beyond the core
|
|
86
|
+
* `SignalRequirements`. Packs provide these via their own layers
|
|
87
|
+
* (e.g. ts-pack provides `TsProjectTag`). The scoring engine composes
|
|
88
|
+
* all provided layers before running.
|
|
89
|
+
*/
|
|
90
|
+
readonly compute: (config: Config, inputs: InputOutputs) => Effect.Effect<Output, SignalError, R>;
|
|
91
|
+
/**
|
|
92
|
+
* Pure function from raw output to a 0..1 health score.
|
|
93
|
+
*
|
|
94
|
+
* The two-phase design (compute → score) lets us change thresholds
|
|
95
|
+
* without re-running AST or git passes.
|
|
96
|
+
*/
|
|
97
|
+
readonly score: (output: Output) => number;
|
|
98
|
+
readonly diagnose: (output: Output) => ReadonlyArray<Diagnostic>;
|
|
99
|
+
readonly outputMetadata?: (output: Output) => SignalOutputMetadata | undefined;
|
|
100
|
+
readonly factorLedger?: (output: Output) => SignalFactorLedger | undefined;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Opaque existential for "some signal with some config, output, and
|
|
104
|
+
* requirement set". Used by the registry when types are not statically
|
|
105
|
+
* known.
|
|
106
|
+
*/
|
|
107
|
+
export interface AnySignal extends Signal<any, any, any> {
|
|
108
|
+
}
|
|
109
|
+
export interface ResolvedSignal extends AnySignal {
|
|
110
|
+
readonly enforcement: EnforcementCeiling;
|
|
111
|
+
}
|
|
112
|
+
export {};
|
|
113
|
+
//# sourceMappingURL=signal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../src/signal.ts"],"names":[],"mappings":"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"}
|
package/dist/signal.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal.js","sourceRoot":"","sources":["../src/signal.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const PULSAR_CONFIG_DIR_NAME: "pulsar";
|
|
2
|
+
export declare const resolvePulsarStateRoot: () => string;
|
|
3
|
+
export declare const normalizeRepoStatePath: (repoPath: string) => string;
|
|
4
|
+
export declare const repoStateId: (repoPath: string) => string;
|
|
5
|
+
export declare const resolvePulsarRepoStateDir: (repoPath: string) => string;
|
|
6
|
+
export declare const resolvePulsarRepoStatePath: (repoPath: string, ...segments: ReadonlyArray<string>) => string;
|
|
7
|
+
//# sourceMappingURL=state-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-paths.d.ts","sourceRoot":"","sources":["../src/state-paths.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,sBAAsB,EAAG,QAAiB,CAAA;AAEvD,eAAO,MAAM,sBAAsB,QAAO,MAUzC,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,KAAG,MAMzD,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MAK9C,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,UAAU,MAAM,KAAG,MACG,CAAA;AAEhE,eAAO,MAAM,0BAA0B,GACrC,UAAU,MAAM,EAChB,GAAG,UAAU,aAAa,CAAC,MAAM,CAAC,KACjC,MAAgE,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { realpathSync } from "node:fs";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { basename, join } from "node:path";
|
|
5
|
+
export const PULSAR_CONFIG_DIR_NAME = "pulsar";
|
|
6
|
+
export const resolvePulsarStateRoot = () => {
|
|
7
|
+
const explicit = process.env.PULSAR_STATE_HOME;
|
|
8
|
+
if (explicit !== undefined && explicit.trim().length > 0)
|
|
9
|
+
return explicit;
|
|
10
|
+
const xdgConfigHome = process.env.XDG_CONFIG_HOME;
|
|
11
|
+
const configHome = xdgConfigHome !== undefined && xdgConfigHome.trim().length > 0
|
|
12
|
+
? xdgConfigHome
|
|
13
|
+
: join(homedir(), ".config");
|
|
14
|
+
return join(configHome, PULSAR_CONFIG_DIR_NAME);
|
|
15
|
+
};
|
|
16
|
+
export const normalizeRepoStatePath = (repoPath) => {
|
|
17
|
+
try {
|
|
18
|
+
return realpathSync.native(repoPath);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return repoPath;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export const repoStateId = (repoPath) => {
|
|
25
|
+
const normalized = normalizeRepoStatePath(repoPath);
|
|
26
|
+
const name = basename(normalized).replace(/[^A-Za-z0-9._-]+/g, "-") || "repo";
|
|
27
|
+
const hash = createHash("sha256").update(normalized).digest("hex").slice(0, 12);
|
|
28
|
+
return `${name}-${hash}`;
|
|
29
|
+
};
|
|
30
|
+
export const resolvePulsarRepoStateDir = (repoPath) => join(resolvePulsarStateRoot(), "repos", repoStateId(repoPath));
|
|
31
|
+
export const resolvePulsarRepoStatePath = (repoPath, ...segments) => join(resolvePulsarRepoStateDir(repoPath), ...segments);
|
|
32
|
+
//# sourceMappingURL=state-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-paths.js","sourceRoot":"","sources":["../src/state-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAA;AAEvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAW,EAAE;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAA;IAC9C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAA;IAEzE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;IACjD,MAAM,UAAU,GACd,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC5D,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;IAChC,OAAO,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAA;AACjD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAgB,EAAU,EAAE;IACjE,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAA;IACjB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE;IACtD,MAAM,UAAU,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,IAAI,MAAM,CAAA;IAC7E,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC/E,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,QAAgB,EAAU,EAAE,CACpE,IAAI,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;AAEhE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,QAAgB,EAChB,GAAG,QAA+B,EAC1B,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAA"}
|
package/dist/tier.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
/**
|
|
3
|
+
* Provability tier. Determines the enforcement ceiling of a signal.
|
|
4
|
+
*
|
|
5
|
+
* - 1: Pure computation
|
|
6
|
+
* - 1.5: Derived / compound (takes other signal outputs as inputs)
|
|
7
|
+
* - 2: Computation + reference data
|
|
8
|
+
* - 3: LLM with grounded context (soft warning only; never a hard gate)
|
|
9
|
+
*/
|
|
10
|
+
export declare const Tier: Schema.Literal<[1, 1.5, 2, 3]>;
|
|
11
|
+
export type Tier = typeof Tier.Type;
|
|
12
|
+
export declare const SignalKind: Schema.Literal<["structural", "legibility", "compound"]>;
|
|
13
|
+
export type SignalKind = typeof SignalKind.Type;
|
|
14
|
+
//# sourceMappingURL=tier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier.d.ts","sourceRoot":"","sources":["../src/tier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,gCAA+B,CAAA;AAChD,MAAM,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,CAAA;AAEnC,eAAO,MAAM,UAAU,0DAAyD,CAAA;AAChF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA"}
|
package/dist/tier.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
/**
|
|
3
|
+
* Provability tier. Determines the enforcement ceiling of a signal.
|
|
4
|
+
*
|
|
5
|
+
* - 1: Pure computation
|
|
6
|
+
* - 1.5: Derived / compound (takes other signal outputs as inputs)
|
|
7
|
+
* - 2: Computation + reference data
|
|
8
|
+
* - 3: LLM with grounded context (soft warning only; never a hard gate)
|
|
9
|
+
*/
|
|
10
|
+
export const Tier = Schema.Literal(1, 1.5, 2, 3);
|
|
11
|
+
export const SignalKind = Schema.Literal("structural", "legibility", "compound");
|
|
12
|
+
//# sourceMappingURL=tier.js.map
|
package/dist/tier.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier.js","sourceRoot":"","sources":["../src/tier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAGhD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-series-compaction-types.d.ts","sourceRoot":"","sources":["../src/time-series-compaction-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-series-compaction-types.js","sourceRoot":"","sources":["../src/time-series-compaction-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-series-compaction.d.ts","sourceRoot":"","sources":["../src/time-series-compaction.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAevD,eAAO,MAAM,wBAAwB,GACnC,SAAS,aAAa,CAAC,eAAe,CAAC,EACvC,kBAAkB,MAAM,KACvB,aAAa,CAAC,eAAe,CAsB/B,CAAA"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { CATEGORIES } from "./category.js";
|
|
2
|
+
import { OBSERVER_OUTPUT_SEMANTICS, } from "./observer.js";
|
|
3
|
+
import { DAY_MS, compareTimeSeriesEntries, endOfIsoWeek, isoWeekKey, startOfIsoWeek, } from "./time-series-dates.js";
|
|
4
|
+
import { aggregateCategoryMetadata, aggregateSignalMetadata, } from "./time-series-metadata.js";
|
|
5
|
+
import { aggregateReadiness } from "./time-series-readiness.js";
|
|
6
|
+
export const compactTimeSeriesEntries = (entries, rawRetentionDays) => {
|
|
7
|
+
if (entries.length === 0)
|
|
8
|
+
return entries;
|
|
9
|
+
const latestTimestamp = Date.parse(entries.at(-1)?.timestamp ?? new Date(0).toISOString());
|
|
10
|
+
const retentionCutoff = latestTimestamp - rawRetentionDays * DAY_MS;
|
|
11
|
+
const recent = entries.filter((entry) => Date.parse(entry.timestamp) >= retentionCutoff);
|
|
12
|
+
const older = entries.filter((entry) => Date.parse(entry.timestamp) < retentionCutoff);
|
|
13
|
+
if (older.length === 0)
|
|
14
|
+
return entries;
|
|
15
|
+
const byWeek = new Map();
|
|
16
|
+
for (const entry of older) {
|
|
17
|
+
const key = isoWeekKey(new Date(entry.timestamp));
|
|
18
|
+
const bucket = byWeek.get(key) ?? [];
|
|
19
|
+
bucket.push(entry);
|
|
20
|
+
byWeek.set(key, bucket);
|
|
21
|
+
}
|
|
22
|
+
const compacted = [...byWeek.entries()]
|
|
23
|
+
.sort((a, b) => a[0].localeCompare(b[0]))
|
|
24
|
+
.map(([, bucket]) => aggregateWeek(bucket));
|
|
25
|
+
return [...compacted, ...recent].sort(compareTimeSeriesEntries);
|
|
26
|
+
};
|
|
27
|
+
const aggregateWeek = (entries) => {
|
|
28
|
+
const weightedEntries = entries.map((entry) => ({
|
|
29
|
+
entry,
|
|
30
|
+
weight: entry.aggregate?.sample_count ?? 1,
|
|
31
|
+
}));
|
|
32
|
+
const totalWeight = weightedEntries.reduce((sum, item) => sum + item.weight, 0);
|
|
33
|
+
const earliest = entries[0]?.timestamp ?? new Date(0).toISOString();
|
|
34
|
+
const latest = entries.at(-1)?.timestamp ?? earliest;
|
|
35
|
+
const readiness = aggregateReadiness(weightedEntries, totalWeight);
|
|
36
|
+
const signalMetadata = aggregateSignalMetadata(weightedEntries);
|
|
37
|
+
const readinessSampleCount = weightedEntries
|
|
38
|
+
.filter(({ entry }) => entry.observerOutput.readiness !== undefined)
|
|
39
|
+
.reduce((sum, item) => sum + item.weight, 0);
|
|
40
|
+
const { categories, signalAverages } = aggregateWeeklyCategories(weightedEntries, totalWeight);
|
|
41
|
+
const minimum = computeAggregateMinimum(signalAverages, totalWeight);
|
|
42
|
+
const weightedMean = weightedEntries.reduce((sum, { entry, weight }) => sum + entry.observerOutput.weighted_mean * weight, 0) / totalWeight;
|
|
43
|
+
const hardGateStatus = weightedEntries.some(({ entry }) => entry.observerOutput.hard_gate_status === "fail")
|
|
44
|
+
? "fail"
|
|
45
|
+
: "pass";
|
|
46
|
+
const commitShas = weightedEntries.flatMap(({ entry }) => entry.aggregate?.commit_shas ?? [entry.sha]);
|
|
47
|
+
const weekStart = startOfIsoWeek(new Date(earliest));
|
|
48
|
+
const weekEnd = endOfIsoWeek(new Date(latest));
|
|
49
|
+
const aggregate = buildWeeklyAggregateMetadata({
|
|
50
|
+
weekStart,
|
|
51
|
+
weekEnd,
|
|
52
|
+
commitShas,
|
|
53
|
+
readiness,
|
|
54
|
+
readinessSampleCount,
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
sha: `aggregate:${isoWeekKey(weekStart)}`,
|
|
58
|
+
timestamp: weekEnd.toISOString(),
|
|
59
|
+
source: "weekly-average",
|
|
60
|
+
aggregate,
|
|
61
|
+
observerOutput: {
|
|
62
|
+
observer_semantics: OBSERVER_OUTPUT_SEMANTICS,
|
|
63
|
+
categories,
|
|
64
|
+
minimum,
|
|
65
|
+
weighted_mean: weightedMean,
|
|
66
|
+
...(readiness !== undefined ? { readiness } : {}),
|
|
67
|
+
hard_gate_status: hardGateStatus,
|
|
68
|
+
hard_gate_violations: [],
|
|
69
|
+
...(signalMetadata !== undefined ? { signal_metadata: signalMetadata } : {}),
|
|
70
|
+
},
|
|
71
|
+
inactiveSignals: [],
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
const buildWeeklyAggregateMetadata = (input) => ({
|
|
75
|
+
kind: "weekly-average",
|
|
76
|
+
from: input.weekStart.toISOString(),
|
|
77
|
+
to: input.weekEnd.toISOString(),
|
|
78
|
+
sample_count: input.commitShas.length,
|
|
79
|
+
commit_shas: input.commitShas,
|
|
80
|
+
observer_semantics: input.readiness === undefined ? "legacy-compatibility" : "readiness-aware",
|
|
81
|
+
readiness_sample_count: input.readinessSampleCount,
|
|
82
|
+
...(input.readiness === undefined
|
|
83
|
+
? { compatibility_reason: aggregateCompatibilityReason(input.readinessSampleCount) }
|
|
84
|
+
: {}),
|
|
85
|
+
});
|
|
86
|
+
const aggregateCompatibilityReason = (readinessSampleCount) => readinessSampleCount === 0
|
|
87
|
+
? "source rows predate readiness/applicability metadata"
|
|
88
|
+
: "source rows mix readiness-aware and legacy observer semantics";
|
|
89
|
+
const aggregateWeeklyCategories = (weightedEntries, totalWeight) => {
|
|
90
|
+
const signalAverages = new Map();
|
|
91
|
+
const categories = Object.fromEntries(CATEGORIES.map((category) => [
|
|
92
|
+
category,
|
|
93
|
+
aggregateWeeklyCategory(category, weightedEntries, totalWeight, signalAverages),
|
|
94
|
+
]));
|
|
95
|
+
return { categories, signalAverages };
|
|
96
|
+
};
|
|
97
|
+
const aggregateWeeklyCategory = (category, weightedEntries, totalWeight, signalAverages) => {
|
|
98
|
+
let categorySum = 0;
|
|
99
|
+
const signals = {};
|
|
100
|
+
for (const { entry, weight } of weightedEntries) {
|
|
101
|
+
const snapshot = entry.observerOutput.categories[category];
|
|
102
|
+
categorySum += snapshot.score * weight;
|
|
103
|
+
for (const [signalId, score] of Object.entries(snapshot.signals)) {
|
|
104
|
+
const existing = signalAverages.get(signalId) ?? { category, total: 0 };
|
|
105
|
+
existing.total += score * weight;
|
|
106
|
+
signalAverages.set(signalId, existing);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
for (const [signalId, average] of signalAverages.entries()) {
|
|
110
|
+
if (average.category === category)
|
|
111
|
+
signals[signalId] = average.total / totalWeight;
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
score: categorySum / totalWeight,
|
|
115
|
+
signals,
|
|
116
|
+
...aggregateCategoryMetadata(weightedEntries, category, totalWeight),
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
const computeAggregateMinimum = (signals, totalWeight) => {
|
|
120
|
+
let best;
|
|
121
|
+
for (const [signalId, aggregate] of signals.entries()) {
|
|
122
|
+
const score = aggregate.total / totalWeight;
|
|
123
|
+
if (best === undefined ||
|
|
124
|
+
score < best.score ||
|
|
125
|
+
(score === best.score && signalId.localeCompare(best.signal) < 0)) {
|
|
126
|
+
best = { signal: signalId, category: aggregate.category, score };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (best === undefined)
|
|
130
|
+
return undefined;
|
|
131
|
+
return {
|
|
132
|
+
signal: best.signal,
|
|
133
|
+
category: best.category,
|
|
134
|
+
score: best.score,
|
|
135
|
+
detail: `Compacted weekly average across ${totalWeight} entries`,
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=time-series-compaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-series-compaction.js","sourceRoot":"","sources":["../src/time-series-compaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TimeSeriesEntry, TimeSeriesRange } from "./time-series.js";
|
|
2
|
+
export declare const DAY_MS: number;
|
|
3
|
+
export declare const applyTimeRange: (entries: ReadonlyArray<TimeSeriesEntry>, range?: TimeSeriesRange) => ReadonlyArray<TimeSeriesEntry>;
|
|
4
|
+
export declare const compareTimeSeriesEntries: (left: TimeSeriesEntry, right: TimeSeriesEntry) => number;
|
|
5
|
+
export declare const isoWeekKey: (date: Date) => string;
|
|
6
|
+
export declare const startOfIsoWeek: (date: Date) => Date;
|
|
7
|
+
export declare const endOfIsoWeek: (date: Date) => Date;
|
|
8
|
+
//# sourceMappingURL=time-series-dates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-series-dates.d.ts","sourceRoot":"","sources":["../src/time-series-dates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAExE,eAAO,MAAM,MAAM,QAAsB,CAAA;AAEzC,eAAO,MAAM,cAAc,GACzB,SAAS,aAAa,CAAC,eAAe,CAAC,EACvC,QAAQ,eAAe,KACtB,aAAa,CAAC,eAAe,CAQ/B,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,MAAM,eAAe,EAAE,OAAO,eAAe,KAAG,MAIxF,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,KAAG,MAGvC,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,MAAM,IAAI,KAAG,IAM3C,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,KAAG,IAMzC,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const DAY_MS = 24 * 60 * 60 * 1000;
|
|
2
|
+
export const applyTimeRange = (entries, range) => {
|
|
3
|
+
if (range === undefined)
|
|
4
|
+
return entries;
|
|
5
|
+
const from = range.from === undefined ? Number.NEGATIVE_INFINITY : Date.parse(range.from);
|
|
6
|
+
const to = range.to === undefined ? Number.POSITIVE_INFINITY : Date.parse(range.to);
|
|
7
|
+
return entries.filter((entry) => {
|
|
8
|
+
const value = Date.parse(entry.timestamp);
|
|
9
|
+
return value >= from && value <= to;
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
export const compareTimeSeriesEntries = (left, right) => {
|
|
13
|
+
const delta = Date.parse(left.timestamp) - Date.parse(right.timestamp);
|
|
14
|
+
if (delta !== 0)
|
|
15
|
+
return delta;
|
|
16
|
+
return left.sha.localeCompare(right.sha);
|
|
17
|
+
};
|
|
18
|
+
export const isoWeekKey = (date) => {
|
|
19
|
+
const start = startOfIsoWeek(date);
|
|
20
|
+
return `${start.getUTCFullYear()}-W${String(isoWeekNumber(start)).padStart(2, "0")}`;
|
|
21
|
+
};
|
|
22
|
+
export const startOfIsoWeek = (date) => {
|
|
23
|
+
const copy = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
|
|
24
|
+
const day = copy.getUTCDay() || 7;
|
|
25
|
+
copy.setUTCDate(copy.getUTCDate() - day + 1);
|
|
26
|
+
copy.setUTCHours(0, 0, 0, 0);
|
|
27
|
+
return copy;
|
|
28
|
+
};
|
|
29
|
+
export const endOfIsoWeek = (date) => {
|
|
30
|
+
const start = startOfIsoWeek(date);
|
|
31
|
+
const end = new Date(start);
|
|
32
|
+
end.setUTCDate(end.getUTCDate() + 6);
|
|
33
|
+
end.setUTCHours(23, 59, 59, 999);
|
|
34
|
+
return end;
|
|
35
|
+
};
|
|
36
|
+
const isoWeekNumber = (date) => {
|
|
37
|
+
const target = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
|
|
38
|
+
const day = target.getUTCDay() || 7;
|
|
39
|
+
target.setUTCDate(target.getUTCDate() + 4 - day);
|
|
40
|
+
const yearStart = new Date(Date.UTC(target.getUTCFullYear(), 0, 1));
|
|
41
|
+
return Math.ceil(((target.getTime() - yearStart.getTime()) / DAY_MS + 1) / 7);
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=time-series-dates.js.map
|