@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
package/dist/goodhart.js
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { CATEGORIES } from "./category.js";
|
|
3
|
+
import { backpressureConfigOf } from "./vector.js";
|
|
4
|
+
export const evaluateGoodhart = (entries, vector) => {
|
|
5
|
+
const backpressureConfig = backpressureConfigOf(vector);
|
|
6
|
+
const config = backpressureConfig.goodhart;
|
|
7
|
+
const latest = entries.at(-1);
|
|
8
|
+
if (latest === undefined) {
|
|
9
|
+
return emptyGoodhartAssessment("No score history exists yet.", config.rotation_period_days);
|
|
10
|
+
}
|
|
11
|
+
const signalIds = extractSignalIds(latest);
|
|
12
|
+
if (signalIds.length === 0) {
|
|
13
|
+
return emptyGoodhartAssessment("No active signals were present in the latest observation.", config.rotation_period_days);
|
|
14
|
+
}
|
|
15
|
+
return buildGoodhartAssessment(scoreGoodhartSlices(entries, latest, signalIds, backpressureConfig.trajectory_days, config), config);
|
|
16
|
+
};
|
|
17
|
+
const emptyGoodhartAssessment = (rationale, rotationWindowDays) => ({
|
|
18
|
+
suspicion: "low",
|
|
19
|
+
rationale: [rationale],
|
|
20
|
+
visibleSignalIds: [],
|
|
21
|
+
hiddenSignalIds: [],
|
|
22
|
+
visibleScore: undefined,
|
|
23
|
+
hiddenScore: undefined,
|
|
24
|
+
holdoutGap: undefined,
|
|
25
|
+
visibleTrend: 0,
|
|
26
|
+
hiddenTrend: 0,
|
|
27
|
+
velocityExcess: 0,
|
|
28
|
+
rotationWindowDays,
|
|
29
|
+
});
|
|
30
|
+
const scoreGoodhartSlices = (entries, latest, signalIds, trajectoryDays, config) => {
|
|
31
|
+
const hiddenSignalIds = pickHiddenSignals(signalIds, latest.timestamp, config.rotation_period_days, config.holdout_ratio);
|
|
32
|
+
const visibleSignalIds = signalIds.filter((signalId) => !hiddenSignalIds.includes(signalId));
|
|
33
|
+
const latestVisibleScore = meanSignalScore(latest, visibleSignalIds);
|
|
34
|
+
const latestHiddenScore = meanSignalScore(latest, hiddenSignalIds);
|
|
35
|
+
const relevantEntries = filterRecentEntries(entries, latest.timestamp, trajectoryDays);
|
|
36
|
+
const visibleTrend = trendDelta(relevantEntries, visibleSignalIds);
|
|
37
|
+
const hiddenTrend = trendDelta(relevantEntries, hiddenSignalIds);
|
|
38
|
+
const holdoutGap = latestVisibleScore !== undefined && latestHiddenScore !== undefined
|
|
39
|
+
? latestVisibleScore - latestHiddenScore
|
|
40
|
+
: undefined;
|
|
41
|
+
const velocityExcess = visibleTrend - hiddenTrend;
|
|
42
|
+
return {
|
|
43
|
+
visibleSignalIds,
|
|
44
|
+
hiddenSignalIds,
|
|
45
|
+
visibleScore: latestVisibleScore,
|
|
46
|
+
hiddenScore: latestHiddenScore,
|
|
47
|
+
holdoutGap,
|
|
48
|
+
visibleTrend,
|
|
49
|
+
hiddenTrend,
|
|
50
|
+
velocityExcess,
|
|
51
|
+
recentHistoryCount: relevantEntries.length,
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
const buildGoodhartAssessment = (slices, config) => {
|
|
55
|
+
const result = classifyGoodhartSuspicion(slices, config);
|
|
56
|
+
return {
|
|
57
|
+
suspicion: result.suspicion,
|
|
58
|
+
rationale: result.rationale,
|
|
59
|
+
visibleSignalIds: slices.visibleSignalIds,
|
|
60
|
+
hiddenSignalIds: slices.hiddenSignalIds,
|
|
61
|
+
visibleScore: slices.visibleScore,
|
|
62
|
+
hiddenScore: slices.hiddenScore,
|
|
63
|
+
holdoutGap: slices.holdoutGap,
|
|
64
|
+
visibleTrend: slices.visibleTrend,
|
|
65
|
+
hiddenTrend: slices.hiddenTrend,
|
|
66
|
+
velocityExcess: slices.velocityExcess,
|
|
67
|
+
rotationWindowDays: config.rotation_period_days,
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
const classifyGoodhartSuspicion = (slices, config) => {
|
|
71
|
+
const rationale = [
|
|
72
|
+
"Numeric score surfaces stay hidden from the agent; only concrete diagnostics are exposed.",
|
|
73
|
+
];
|
|
74
|
+
if (slices.hiddenSignalIds.length > 0) {
|
|
75
|
+
rationale.push(`${slices.hiddenSignalIds.length} holdout signal(s) are rotated every ${config.rotation_period_days} day(s).`);
|
|
76
|
+
}
|
|
77
|
+
let suspicion = "low";
|
|
78
|
+
if (slices.holdoutGap !== undefined &&
|
|
79
|
+
slices.holdoutGap > config.max_visible_holdout_gap) {
|
|
80
|
+
suspicion = "elevated";
|
|
81
|
+
rationale.push(`Visible signals are improving ${slices.holdoutGap.toFixed(2)} faster than the holdout slice.`);
|
|
82
|
+
}
|
|
83
|
+
if (slices.recentHistoryCount >= config.min_history_points &&
|
|
84
|
+
slices.velocityExcess > config.max_velocity_excess) {
|
|
85
|
+
suspicion = suspicion === "elevated" ? "high" : "elevated";
|
|
86
|
+
rationale.push(`Visible-score velocity exceeds holdout velocity by ${slices.velocityExcess.toFixed(2)} across the recent window.`);
|
|
87
|
+
}
|
|
88
|
+
return { suspicion, rationale };
|
|
89
|
+
};
|
|
90
|
+
export const projectObserverForAgent = (entry, assessment) => {
|
|
91
|
+
const categories = Object.fromEntries(CATEGORIES.map((category) => {
|
|
92
|
+
const diagnostics = collectCategoryDiagnostics(entry, category, assessment.visibleSignalIds);
|
|
93
|
+
const hiddenSignalCount = collectSignalsForCategory(entry, category).filter((signalId) => assessment.hiddenSignalIds.includes(signalId)).length;
|
|
94
|
+
return [category, { diagnostics, hiddenSignalCount }];
|
|
95
|
+
}));
|
|
96
|
+
const reminders = [
|
|
97
|
+
"Optimize for the concrete diagnostics below, not for any hidden pulsar number.",
|
|
98
|
+
assessment.hiddenSignalIds.length > 0
|
|
99
|
+
? `${assessment.hiddenSignalIds.length} holdout signal(s) stay hidden to detect gaming pressure.`
|
|
100
|
+
: "No holdout signals were selected for this snapshot.",
|
|
101
|
+
];
|
|
102
|
+
return {
|
|
103
|
+
categories,
|
|
104
|
+
reminders,
|
|
105
|
+
visibleSignalIds: assessment.visibleSignalIds,
|
|
106
|
+
hiddenSignalIds: assessment.hiddenSignalIds,
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
const collectCategoryDiagnostics = (entry, category, visibleSignalIds) => {
|
|
110
|
+
if (entry?.signalDiagnostics === undefined)
|
|
111
|
+
return [];
|
|
112
|
+
const messages = [];
|
|
113
|
+
for (const signalId of visibleSignalIds) {
|
|
114
|
+
if (!(signalId in entry.observerOutput.categories[category].signals))
|
|
115
|
+
continue;
|
|
116
|
+
const diagnostics = entry.signalDiagnostics[signalId] ?? [];
|
|
117
|
+
for (const diagnostic of diagnostics) {
|
|
118
|
+
const location = diagnostic.location?.file
|
|
119
|
+
? ` (${diagnostic.location.file}${diagnostic.location.line !== undefined ? `:${diagnostic.location.line}` : ""})`
|
|
120
|
+
: "";
|
|
121
|
+
messages.push(`${diagnostic.message}${location}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return messages;
|
|
125
|
+
};
|
|
126
|
+
const collectSignalsForCategory = (entry, category) => entry === undefined ? [] : Object.keys(entry.observerOutput.categories[category].signals);
|
|
127
|
+
const extractSignalIds = (entry) => CATEGORIES.flatMap((category) => Object.keys(entry.observerOutput.categories[category].signals))
|
|
128
|
+
.filter((signalId, index, all) => all.indexOf(signalId) === index)
|
|
129
|
+
.sort((a, b) => a.localeCompare(b));
|
|
130
|
+
const pickHiddenSignals = (signalIds, timestamp, rotationWindowDays, holdoutRatio) => {
|
|
131
|
+
if (signalIds.length <= 2)
|
|
132
|
+
return [];
|
|
133
|
+
const slot = Math.floor(Date.parse(timestamp) / (rotationWindowDays * 24 * 60 * 60 * 1000));
|
|
134
|
+
const holdoutCount = Math.max(1, Math.floor(signalIds.length * holdoutRatio));
|
|
135
|
+
return [...signalIds]
|
|
136
|
+
.sort((left, right) => hashSignal(left, slot).localeCompare(hashSignal(right, slot)))
|
|
137
|
+
.slice(0, holdoutCount)
|
|
138
|
+
.sort((a, b) => a.localeCompare(b));
|
|
139
|
+
};
|
|
140
|
+
const hashSignal = (signalId, slot) => {
|
|
141
|
+
const hash = createHash("sha1");
|
|
142
|
+
hash.update(`${slot}:${signalId}`);
|
|
143
|
+
return hash.digest("hex");
|
|
144
|
+
};
|
|
145
|
+
const filterRecentEntries = (entries, latestTimestamp, trajectoryDays) => {
|
|
146
|
+
const cutoff = Date.parse(latestTimestamp) - trajectoryDays * 24 * 60 * 60 * 1000;
|
|
147
|
+
return entries.filter((entry) => Date.parse(entry.timestamp) >= cutoff);
|
|
148
|
+
};
|
|
149
|
+
const meanSignalScore = (entry, signalIds) => {
|
|
150
|
+
if (signalIds.length === 0)
|
|
151
|
+
return undefined;
|
|
152
|
+
const values = signalIds
|
|
153
|
+
.map((signalId) => findSignalScore(entry, signalId))
|
|
154
|
+
.filter((value) => value !== undefined);
|
|
155
|
+
if (values.length === 0)
|
|
156
|
+
return undefined;
|
|
157
|
+
return values.reduce((sum, value) => sum + value, 0) / values.length;
|
|
158
|
+
};
|
|
159
|
+
const trendDelta = (entries, signalIds) => {
|
|
160
|
+
if (entries.length < 2 || signalIds.length === 0)
|
|
161
|
+
return 0;
|
|
162
|
+
const first = meanSignalScore(entries[0], signalIds);
|
|
163
|
+
const last = meanSignalScore(entries.at(-1), signalIds);
|
|
164
|
+
if (first === undefined || last === undefined)
|
|
165
|
+
return 0;
|
|
166
|
+
return last - first;
|
|
167
|
+
};
|
|
168
|
+
const findSignalScore = (entry, signalId) => {
|
|
169
|
+
for (const category of CATEGORIES) {
|
|
170
|
+
const value = entry.observerOutput.categories[category].signals[signalId];
|
|
171
|
+
if (value !== undefined)
|
|
172
|
+
return value;
|
|
173
|
+
}
|
|
174
|
+
return undefined;
|
|
175
|
+
};
|
|
176
|
+
//# sourceMappingURL=goodhart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goodhart.js","sourceRoot":"","sources":["../src/goodhart.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @skastr0/pulsar-core root.
|
|
3
|
+
*
|
|
4
|
+
* Use named entrypoints for subsystem APIs:
|
|
5
|
+
* `/signal`, `/scoring`, `/observer`, `/vector`, `/calibration`,
|
|
6
|
+
* `/factors`, `/reference-data`, `/routing`, `/time-series`,
|
|
7
|
+
* `/backpressure`, `/shared-signals`, and `/elicitation`.
|
|
8
|
+
*/
|
|
9
|
+
export { buildRegistry, type Registry } from "./registry.js";
|
|
10
|
+
export { runSignal, type SignalRunResult } from "./runner.js";
|
|
11
|
+
export { ObserverOutput, observe, toObserverJson, } from "./observer.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EACL,cAAc,EACd,OAAO,EACP,cAAc,GACf,MAAM,eAAe,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @skastr0/pulsar-core root.
|
|
3
|
+
*
|
|
4
|
+
* Use named entrypoints for subsystem APIs:
|
|
5
|
+
* `/signal`, `/scoring`, `/observer`, `/vector`, `/calibration`,
|
|
6
|
+
* `/factors`, `/reference-data`, `/routing`, `/time-series`,
|
|
7
|
+
* `/backpressure`, `/shared-signals`, and `/elicitation`.
|
|
8
|
+
*/
|
|
9
|
+
export { buildRegistry } from "./registry.js";
|
|
10
|
+
export { runSignal } from "./runner.js";
|
|
11
|
+
export { ObserverOutput, observe, toObserverJson, } from "./observer.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAwB,MAAM,aAAa,CAAA;AAC7D,OAAO,EACL,cAAc,EACd,OAAO,EACP,cAAc,GACf,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-outputs.d.ts","sourceRoot":"","sources":["../src/input-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE/D,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,cAAc,EACtB,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,KACpC,YAOF,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const buildInputOutputs = (signal, outputs) => {
|
|
2
|
+
const map = new Map();
|
|
3
|
+
for (const input of signal.inputs) {
|
|
4
|
+
const value = outputs.get(input.id);
|
|
5
|
+
if (value !== undefined)
|
|
6
|
+
map.set(input.id, value);
|
|
7
|
+
}
|
|
8
|
+
return map;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=input-outputs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-outputs.js","sourceRoot":"","sources":["../src/input-outputs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,MAAsB,EACtB,OAAqC,EACvB,EAAE;IAChB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmB,CAAA;IACtC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACnC,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Category } from "./category.js";
|
|
2
|
+
import type { Registry } from "./registry.js";
|
|
3
|
+
import type { SignalRunResult } from "./runner.js";
|
|
4
|
+
import { type PulsarVector } from "./vector.js";
|
|
5
|
+
import type { CategoryOutput } from "./observer-model.js";
|
|
6
|
+
export declare const aggregateCategories: (registry: Registry, signalResults: ReadonlyMap<string, SignalRunResult>, vector: PulsarVector | undefined) => Record<Category, CategoryOutput>;
|
|
7
|
+
//# sourceMappingURL=observer-categories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer-categories.d.ts","sourceRoot":"","sources":["../src/observer-categories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,eAAe,CAAA;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,EAAuE,KAAK,YAAY,EAA8B,MAAM,aAAa,CAAA;AAChJ,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAIzD,eAAO,MAAM,mBAAmB,GAC9B,UAAU,QAAQ,EAClB,eAAe,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,EACnD,QAAQ,YAAY,GAAG,SAAS,KAC/B,MAAM,CAAC,QAAQ,EAAE,cAAc,CAC6D,CAAA"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { categoryRecord } from "./category.js";
|
|
2
|
+
import { categoryAggregationConfigOf, weightOf as vectorWeightOf } from "./vector.js";
|
|
3
|
+
import { localSignalPressure } from "./observer-local-pressure.js";
|
|
4
|
+
import { clamp01, confidenceForSignal, roundScore, signalApplicabilityOf } from "./observer-score-utils.js";
|
|
5
|
+
export const aggregateCategories = (registry, signalResults, vector) => categoryRecord((category) => aggregateOneCategory(category, registry, signalResults, vector));
|
|
6
|
+
const aggregateOneCategory = (category, registry, signalResults, vector) => {
|
|
7
|
+
const inputs = collectCategoryAggregationInputs(category, registry, signalResults, vector);
|
|
8
|
+
const rawScore = inputs.weightTotal === 0 ? 1 : inputs.weightedSum / inputs.weightTotal;
|
|
9
|
+
const lowestSignalScore = Math.min(...inputs.applicableScores);
|
|
10
|
+
const normalization = inputs.languageLocalGroups.size > 1
|
|
11
|
+
? buildCategoryNormalization(inputs.groups)
|
|
12
|
+
: undefined;
|
|
13
|
+
const normalizedScore = normalization?.score ?? rawScore;
|
|
14
|
+
const pressure = aggregateCategoryPressure(inputs.pressureInputs, categoryAggregationConfigOf(vector), inputs.pressureInputs);
|
|
15
|
+
const pressureScore = clamp01(1 - pressure.finalPressure);
|
|
16
|
+
const score = roundScore(Math.min(normalizedScore, pressureScore));
|
|
17
|
+
return {
|
|
18
|
+
score,
|
|
19
|
+
signals: inputs.signalsRecord,
|
|
20
|
+
signalCount: inputs.signalsInCategory.length,
|
|
21
|
+
applicableSignalCount: inputs.applicableSignalCount,
|
|
22
|
+
activeSignalIds: inputs.activeIds,
|
|
23
|
+
aggregation: {
|
|
24
|
+
strategy: normalization === undefined ? "weighted-mean" : "language-group-mean",
|
|
25
|
+
rawScore,
|
|
26
|
+
aggregateScore: normalizedScore,
|
|
27
|
+
lowestSignalScore: Number.isFinite(lowestSignalScore) ? lowestSignalScore : 1,
|
|
28
|
+
finalScore: score,
|
|
29
|
+
shapedByPressure: score < normalizedScore,
|
|
30
|
+
pressure,
|
|
31
|
+
weightTotal: inputs.weightTotal,
|
|
32
|
+
weights: inputs.weightsRecord,
|
|
33
|
+
},
|
|
34
|
+
...(normalization !== undefined ? { normalization: normalization.snapshot } : {}),
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
const collectCategoryAggregationInputs = (category, registry, signalResults, vector) => {
|
|
38
|
+
const signalsInCategory = registry.sorted.filter((signal) => signal.category === category && signalResults.has(signal.id));
|
|
39
|
+
const inputs = makeEmptyCategoryAggregationInputs(signalsInCategory);
|
|
40
|
+
for (const signal of signalsInCategory) {
|
|
41
|
+
addCategorySignalInput(signal, signalResults.get(signal.id), vector, inputs);
|
|
42
|
+
}
|
|
43
|
+
return inputs;
|
|
44
|
+
};
|
|
45
|
+
const makeEmptyCategoryAggregationInputs = (signalsInCategory) => ({
|
|
46
|
+
signalsInCategory,
|
|
47
|
+
signalsRecord: {},
|
|
48
|
+
weightsRecord: {},
|
|
49
|
+
activeIds: [],
|
|
50
|
+
applicableSignalCount: 0,
|
|
51
|
+
weightedSum: 0,
|
|
52
|
+
weightTotal: 0,
|
|
53
|
+
groups: new Map(),
|
|
54
|
+
languageLocalGroups: new Set(),
|
|
55
|
+
pressureInputs: [],
|
|
56
|
+
applicableScores: [],
|
|
57
|
+
});
|
|
58
|
+
const addCategorySignalInput = (signal, result, vector, inputs) => {
|
|
59
|
+
if (result === undefined)
|
|
60
|
+
return;
|
|
61
|
+
const weight = vectorWeightOf(signal, vector);
|
|
62
|
+
inputs.signalsRecord[signal.id] = result.score;
|
|
63
|
+
inputs.weightsRecord[signal.id] = weight;
|
|
64
|
+
inputs.activeIds.push(signal.id);
|
|
65
|
+
if (signalApplicabilityOf(result) !== "applicable")
|
|
66
|
+
return;
|
|
67
|
+
const confidence = confidenceForSignal(signal, result);
|
|
68
|
+
const effectiveScore = confidenceAdjustedScore(result.score, confidence);
|
|
69
|
+
inputs.applicableSignalCount += 1;
|
|
70
|
+
inputs.weightedSum += weight * effectiveScore;
|
|
71
|
+
inputs.weightTotal += weight;
|
|
72
|
+
inputs.pressureInputs.push({ score: result.score, weight, confidence });
|
|
73
|
+
inputs.applicableScores.push(result.score);
|
|
74
|
+
addCategoryNormalizationInput(signal, weight, effectiveScore, inputs);
|
|
75
|
+
};
|
|
76
|
+
const addCategoryNormalizationInput = (signal, weight, effectiveScore, inputs) => {
|
|
77
|
+
const normalizationGroup = normalizationGroupOfSignal(signal);
|
|
78
|
+
const bucket = inputs.groups.get(normalizationGroup) ?? {
|
|
79
|
+
weightedSum: 0,
|
|
80
|
+
weightTotal: 0,
|
|
81
|
+
signalIds: [],
|
|
82
|
+
};
|
|
83
|
+
bucket.weightedSum += weight * effectiveScore;
|
|
84
|
+
bucket.weightTotal += weight;
|
|
85
|
+
bucket.signalIds.push(signal.id);
|
|
86
|
+
inputs.groups.set(normalizationGroup, bucket);
|
|
87
|
+
if (isLanguageNormalizationGroup(normalizationGroup)) {
|
|
88
|
+
inputs.languageLocalGroups.add(normalizationGroup);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const buildCategoryNormalization = (groups) => {
|
|
92
|
+
const normalizedGroups = {};
|
|
93
|
+
let groupScoreSum = 0;
|
|
94
|
+
let groupCount = 0;
|
|
95
|
+
for (const [group, bucket] of groups) {
|
|
96
|
+
const score = bucket.weightTotal === 0 ? 1 : bucket.weightedSum / bucket.weightTotal;
|
|
97
|
+
normalizedGroups[group] = {
|
|
98
|
+
score,
|
|
99
|
+
signals: [...bucket.signalIds].sort(),
|
|
100
|
+
signalCount: bucket.signalIds.length,
|
|
101
|
+
};
|
|
102
|
+
groupScoreSum += score;
|
|
103
|
+
groupCount += 1;
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
score: groupCount === 0 ? 1 : groupScoreSum / groupCount,
|
|
107
|
+
snapshot: {
|
|
108
|
+
strategy: "language-group-mean",
|
|
109
|
+
groups: normalizedGroups,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
const normalizationGroupOfSignal = (signal) => {
|
|
114
|
+
if (signal.normalizationGroup !== undefined)
|
|
115
|
+
return signal.normalizationGroup;
|
|
116
|
+
if (signal.id.startsWith("TS-"))
|
|
117
|
+
return "typescript";
|
|
118
|
+
if (signal.id.startsWith("RS-"))
|
|
119
|
+
return "rust";
|
|
120
|
+
if (signal.id.startsWith("SHARED-"))
|
|
121
|
+
return "shared";
|
|
122
|
+
return "default";
|
|
123
|
+
};
|
|
124
|
+
const isLanguageNormalizationGroup = (group) => group === "typescript" || group === "rust";
|
|
125
|
+
const aggregateCategoryPressure = (inputs, config, localInputs = inputs) => {
|
|
126
|
+
let weightedPressureSum = 0;
|
|
127
|
+
let weightedPnormSum = 0;
|
|
128
|
+
let weightTotal = 0;
|
|
129
|
+
for (const input of inputs) {
|
|
130
|
+
const weight = input.weight;
|
|
131
|
+
const pressure = confidenceAdjustedPressure(input.score, input.confidence);
|
|
132
|
+
weightedPressureSum += weight * pressure;
|
|
133
|
+
weightedPnormSum += weight * Math.pow(pressure, config.p_norm);
|
|
134
|
+
weightTotal += weight;
|
|
135
|
+
}
|
|
136
|
+
let maxLocalPressure = 0;
|
|
137
|
+
for (const input of localInputs) {
|
|
138
|
+
maxLocalPressure = Math.max(maxLocalPressure, confidenceAdjustedPressure(input.score, input.confidence));
|
|
139
|
+
}
|
|
140
|
+
const meanPressure = weightTotal === 0 ? 0 : weightedPressureSum / weightTotal;
|
|
141
|
+
const pnormPressure = weightTotal === 0
|
|
142
|
+
? 0
|
|
143
|
+
: Math.pow(weightedPnormSum / weightTotal, 1 / config.p_norm);
|
|
144
|
+
const localPressure = localSignalPressure(maxLocalPressure, config);
|
|
145
|
+
const finalPressure = clamp01(Math.max(pnormPressure, localPressure));
|
|
146
|
+
return {
|
|
147
|
+
strategy: "pressure-pnorm-local-max",
|
|
148
|
+
p: config.p_norm,
|
|
149
|
+
meanPressure: roundScore(meanPressure),
|
|
150
|
+
pnormPressure: roundScore(pnormPressure),
|
|
151
|
+
maxLocalPressure: roundScore(maxLocalPressure),
|
|
152
|
+
localPressure: roundScore(localPressure),
|
|
153
|
+
finalPressure: roundScore(finalPressure),
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
const confidenceAdjustedScore = (score, confidence) => clamp01(1 - confidenceAdjustedPressure(score, confidence));
|
|
157
|
+
const confidenceAdjustedPressure = (score, confidence) => clamp01(1 - score) * confidence;
|
|
158
|
+
//# sourceMappingURL=observer-categories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer-categories.js","sourceRoot":"","sources":["../src/observer-categories.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { ResolvedCalibrationContext } from "./calibration.js";
|
|
3
|
+
import type { Registry } from "./registry.js";
|
|
4
|
+
import type { SignalRunResult } from "./runner.js";
|
|
5
|
+
import type { ResolvedSignal } from "./signal.js";
|
|
6
|
+
import type { SignalRequirements } from "./signal-runtime.js";
|
|
7
|
+
import { type PulsarVector } from "./vector.js";
|
|
8
|
+
import type { ObserverCalibrationSummary, ObserverRuntimeOutput, ObserverRuntimeProfile } from "./observer-model.js";
|
|
9
|
+
type ObserverSignalMetadata = NonNullable<ObserverRuntimeOutput["signalMetadata"]>;
|
|
10
|
+
interface ObserverSignalExecution {
|
|
11
|
+
readonly outputs: Map<string, unknown>;
|
|
12
|
+
readonly signalResults: Map<string, SignalRunResult>;
|
|
13
|
+
readonly inactiveSignals: Array<string>;
|
|
14
|
+
readonly signalMetadata: ObserverSignalMetadata;
|
|
15
|
+
readonly signalProfiles: ObserverRuntimeProfile["signals"];
|
|
16
|
+
readonly processedSignals: Set<string>;
|
|
17
|
+
readonly registryIds: Set<string>;
|
|
18
|
+
pendingSignals: Array<ResolvedSignal>;
|
|
19
|
+
}
|
|
20
|
+
export declare const executeObserverSignals: (registry: Registry, vector: PulsarVector | undefined, profile: boolean) => Effect.Effect<ObserverSignalExecution, never, SignalRequirements>;
|
|
21
|
+
export declare const summarizeCalibration: (calibration: ResolvedCalibrationContext) => ObserverCalibrationSummary;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=observer-execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer-execution.d.ts","sourceRoot":"","sources":["../src/observer-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAIlE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAsE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AACnH,OAAO,KAAK,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,qBAAqB,CAAA;AAI5B,KAAK,sBAAsB,GAAG,WAAW,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAElF,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACpD,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACvC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAA;IAC/C,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAA;IAC1D,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACjC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;CACtC;AAQD,eAAO,MAAM,sBAAsB,GACjC,UAAU,QAAQ,EAClB,QAAQ,YAAY,GAAG,SAAS,EAChC,SAAS,OAAO,KACf,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,KAAK,EAAE,kBAAkB,CAS/D,CAAA;AAiFJ,eAAO,MAAM,oBAAoB,GAC/B,aAAa,0BAA0B,KACtC,0BAeD,CAAA"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { applySignalFactorPolicy, makeSignalFactorPolicyContext, SignalFactorPolicyTag } from "./factor-ledger.js";
|
|
3
|
+
import { buildInputOutputs } from "./input-outputs.js";
|
|
4
|
+
import { isActive as vectorIsActive, resolvedConfig as vectorResolvedConfig } from "./vector.js";
|
|
5
|
+
import { nowMs, roundRuntimeMs } from "./observer-time.js";
|
|
6
|
+
const DEFAULT_OBSERVER_SIGNAL_CONCURRENCY = 1;
|
|
7
|
+
export const executeObserverSignals = (registry, vector, profile) => Effect.gen(function* () {
|
|
8
|
+
const execution = createObserverSignalExecution(registry, vector);
|
|
9
|
+
while (execution.pendingSignals.length > 0) {
|
|
10
|
+
const batch = takeNextObserverBatch(execution);
|
|
11
|
+
const batchResults = yield* runObserverSignalBatch(batch, execution.outputs, vector);
|
|
12
|
+
recordObserverBatchResults(execution, batchResults, profile);
|
|
13
|
+
}
|
|
14
|
+
return execution;
|
|
15
|
+
});
|
|
16
|
+
const createObserverSignalExecution = (registry, vector) => {
|
|
17
|
+
const execution = {
|
|
18
|
+
outputs: new Map(),
|
|
19
|
+
signalResults: new Map(),
|
|
20
|
+
inactiveSignals: [],
|
|
21
|
+
signalMetadata: {},
|
|
22
|
+
signalProfiles: {},
|
|
23
|
+
processedSignals: new Set(),
|
|
24
|
+
registryIds: new Set(registry.sorted.map((signal) => signal.id)),
|
|
25
|
+
pendingSignals: [],
|
|
26
|
+
};
|
|
27
|
+
for (const signal of registry.sorted) {
|
|
28
|
+
if (vectorIsActive(signal, vector)) {
|
|
29
|
+
execution.pendingSignals.push(signal);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
execution.inactiveSignals.push(signal.id);
|
|
33
|
+
execution.processedSignals.add(signal.id);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return execution;
|
|
37
|
+
};
|
|
38
|
+
const takeNextObserverBatch = (execution) => {
|
|
39
|
+
const readySignals = execution.pendingSignals.filter((signal) => signal.inputs.every((input) => execution.processedSignals.has(input.id) || !execution.registryIds.has(input.id)));
|
|
40
|
+
const batch = readySignals.length > 0 ? readySignals : [execution.pendingSignals[0]];
|
|
41
|
+
const batchIds = new Set(batch.map((signal) => signal.id));
|
|
42
|
+
execution.pendingSignals = execution.pendingSignals.filter((signal) => !batchIds.has(signal.id));
|
|
43
|
+
return batch;
|
|
44
|
+
};
|
|
45
|
+
const runObserverSignalBatch = (batch, outputs, vector) => {
|
|
46
|
+
const outputSnapshot = new Map(outputs);
|
|
47
|
+
return Effect.forEach(batch, (signal) => Effect.gen(function* () {
|
|
48
|
+
const startedAt = nowMs();
|
|
49
|
+
const result = yield* runOneSignal(signal, outputSnapshot, vector);
|
|
50
|
+
return {
|
|
51
|
+
signal,
|
|
52
|
+
result,
|
|
53
|
+
durationMs: roundRuntimeMs(nowMs() - startedAt),
|
|
54
|
+
};
|
|
55
|
+
}), { concurrency: DEFAULT_OBSERVER_SIGNAL_CONCURRENCY });
|
|
56
|
+
};
|
|
57
|
+
const recordObserverBatchResults = (execution, batchResults, profile) => {
|
|
58
|
+
for (const { signal, result, durationMs } of batchResults) {
|
|
59
|
+
if (profile) {
|
|
60
|
+
execution.signalProfiles[signal.id] = {
|
|
61
|
+
durationMs,
|
|
62
|
+
score: result.score,
|
|
63
|
+
diagnostics: result.diagnostics.length,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (result.output !== undefined)
|
|
67
|
+
execution.outputs.set(signal.id, result.output);
|
|
68
|
+
if (result.metadata !== undefined)
|
|
69
|
+
execution.signalMetadata[signal.id] = result.metadata;
|
|
70
|
+
execution.signalResults.set(signal.id, result);
|
|
71
|
+
execution.processedSignals.add(signal.id);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
export const summarizeCalibration = (calibration) => ({
|
|
75
|
+
fingerprint: calibration.fingerprint,
|
|
76
|
+
active_modules: calibration.activeModules
|
|
77
|
+
.map((module) => ({
|
|
78
|
+
id: module.id,
|
|
79
|
+
version: module.version,
|
|
80
|
+
scope: module.scope,
|
|
81
|
+
source: module.source,
|
|
82
|
+
...(module.sourceRef !== undefined ? { source_ref: module.sourceRef } : {}),
|
|
83
|
+
...(module.sourceFingerprint !== undefined
|
|
84
|
+
? { source_fingerprint: module.sourceFingerprint }
|
|
85
|
+
: {}),
|
|
86
|
+
fingerprint: module.fingerprint,
|
|
87
|
+
}))
|
|
88
|
+
.sort((left, right) => left.id.localeCompare(right.id) || left.version.localeCompare(right.version)),
|
|
89
|
+
});
|
|
90
|
+
/**
|
|
91
|
+
* Run a single signal against the shared outputs map. Compute failures
|
|
92
|
+
* are swallowed into a score-0 result with a synthetic `warn` diagnostic.
|
|
93
|
+
* The observer never crashes on a bad leaf signal.
|
|
94
|
+
*/
|
|
95
|
+
const runOneSignal = (signal, outputs, vector) => Effect.gen(function* () {
|
|
96
|
+
const inputOutputs = buildInputOutputs(signal, outputs);
|
|
97
|
+
const config = vectorResolvedConfig(signal, signal.defaultConfig, vector);
|
|
98
|
+
const factorPolicy = makeSignalFactorPolicyContext(signal, vector);
|
|
99
|
+
const either = yield* Effect.either(signal.compute(config, inputOutputs).pipe(Effect.provideService(SignalFactorPolicyTag, factorPolicy)));
|
|
100
|
+
if (either._tag === "Left") {
|
|
101
|
+
const err = either.left;
|
|
102
|
+
const message = err.message ?? String(err);
|
|
103
|
+
const failureDiagnostic = {
|
|
104
|
+
severity: "warn",
|
|
105
|
+
message: `Signal ${signal.id} failed: ${message}`,
|
|
106
|
+
};
|
|
107
|
+
return {
|
|
108
|
+
signalId: signal.id,
|
|
109
|
+
score: 0,
|
|
110
|
+
output: undefined,
|
|
111
|
+
diagnostics: [failureDiagnostic],
|
|
112
|
+
metadata: { applicability: "failed" },
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
const out = either.right;
|
|
116
|
+
const metadata = signal.outputMetadata?.(out);
|
|
117
|
+
const rawFactorLedger = signal.factorLedger?.(out);
|
|
118
|
+
const factorLedger = rawFactorLedger === undefined
|
|
119
|
+
? undefined
|
|
120
|
+
: applySignalFactorPolicy(rawFactorLedger, factorPolicy);
|
|
121
|
+
return {
|
|
122
|
+
signalId: signal.id,
|
|
123
|
+
score: signal.score(out),
|
|
124
|
+
output: out,
|
|
125
|
+
diagnostics: signal.diagnose(out),
|
|
126
|
+
...(metadata !== undefined ? { metadata } : {}),
|
|
127
|
+
...(factorLedger !== undefined ? { factorLedger } : {}),
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=observer-execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer-execution.js","sourceRoot":"","sources":["../src/observer-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAClH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAKtD,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,cAAc,IAAI,oBAAoB,EAAqB,MAAM,aAAa,CAAA;AAMnH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAE1D,MAAM,mCAAmC,GAAG,CAAC,CAAA;AAoB7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,QAAkB,EAClB,MAAgC,EAChC,OAAgB,EACmD,EAAE,CACrE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,SAAS,GAAG,6BAA6B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACjE,OAAO,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;QAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACpF,0BAA0B,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAC,CAAA;AAEJ,MAAM,6BAA6B,GAAG,CACpC,QAAkB,EAClB,MAAgC,EACP,EAAE;IAC3B,MAAM,SAAS,GAA4B;QACzC,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,eAAe,EAAE,EAAE;QACnB,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,EAAE;QAClB,gBAAgB,EAAE,IAAI,GAAG,EAAE;QAC3B,WAAW,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,cAAc,EAAE,EAAE;KACnB,CAAA;IACD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrC,IAAI,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YACnC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACzC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAC5B,SAAkC,EACH,EAAE;IACjC,MAAM,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAC9D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CACjH,CAAA;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,CAAA;IACrF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1D,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAChG,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAC7B,KAAoC,EACpC,OAAqC,EACrC,MAAgC,EAC8C,EAAE;IAChF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IACvC,OAAO,MAAM,CAAC,OAAO,CACnB,KAAK,EACL,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,SAAS,GAAG,KAAK,EAAE,CAAA;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAA;QAClE,OAAO;YACL,MAAM;YACN,MAAM;YACN,UAAU,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC;SAChD,CAAA;IACH,CAAC,CAAC,EACJ,EAAE,WAAW,EAAE,mCAAmC,EAAE,CACrD,CAAA;AACH,CAAC,CAAA;AAED,MAAM,0BAA0B,GAAG,CACjC,SAAkC,EAClC,YAAgD,EAChD,OAAgB,EACV,EAAE;IACR,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,YAAY,EAAE,CAAC;QAC1D,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;gBACpC,UAAU;gBACV,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;aACvC,CAAA;QACH,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAChF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAA;QACxF,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAC9C,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,WAAuC,EACX,EAAE,CAAC,CAAC;IAChC,WAAW,EAAE,WAAW,CAAC,WAAW;IACpC,cAAc,EAAE,WAAW,CAAC,aAAa;SACtC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,iBAAiB,EAAE;YAClD,CAAC,CAAC,EAAE,CAAC;QACP,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CACvG,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,YAAY,GAAG,CACnB,MAAsB,EACtB,OAAqC,EACrC,MAAgC,EAC2B,EAAE,CAC7D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvD,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IACzE,MAAM,YAAY,GAAG,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAElE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CACjC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,IAAI,CACvC,MAAM,CAAC,cAAc,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAC3D,CACF,CAAA;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAA;QACvB,MAAM,OAAO,GAAI,GAA4B,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;QACpE,MAAM,iBAAiB,GAAe;YACpC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,UAAU,MAAM,CAAC,EAAE,YAAY,OAAO,EAAE;SAClD,CAAA;QACD,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,CAAC,iBAAiB,CAAC;YAChC,QAAQ,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE;SACtC,CAAA;IACH,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAA;IACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAA;IAC7C,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;IAClD,MAAM,YAAY,GAChB,eAAe,KAAK,SAAS;QAC3B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,uBAAuB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;IAC5D,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACxB,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QACjC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAA;AACH,CAAC,CAAC,CAAA"}
|