@co-engram/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/LICENSE +21 -0
- package/README.md +167 -0
- package/dist/config/defaults.d.ts +45 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +70 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +84 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +230 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/types.d.ts +145 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +14 -0
- package/dist/config/types.js.map +1 -0
- package/dist/contradiction/arbiter.d.ts +51 -0
- package/dist/contradiction/arbiter.d.ts.map +1 -0
- package/dist/contradiction/arbiter.js +112 -0
- package/dist/contradiction/arbiter.js.map +1 -0
- package/dist/contradiction/auto-degrade.d.ts +53 -0
- package/dist/contradiction/auto-degrade.d.ts.map +1 -0
- package/dist/contradiction/auto-degrade.js +79 -0
- package/dist/contradiction/auto-degrade.js.map +1 -0
- package/dist/contradiction/detector.d.ts +33 -0
- package/dist/contradiction/detector.d.ts.map +1 -0
- package/dist/contradiction/detector.js +76 -0
- package/dist/contradiction/detector.js.map +1 -0
- package/dist/contradiction/index.d.ts +11 -0
- package/dist/contradiction/index.d.ts.map +1 -0
- package/dist/contradiction/index.js +11 -0
- package/dist/contradiction/index.js.map +1 -0
- package/dist/contradiction/resolver.d.ts +45 -0
- package/dist/contradiction/resolver.d.ts.map +1 -0
- package/dist/contradiction/resolver.js +196 -0
- package/dist/contradiction/resolver.js.map +1 -0
- package/dist/contradiction/types.d.ts +73 -0
- package/dist/contradiction/types.d.ts.map +1 -0
- package/dist/contradiction/types.js +7 -0
- package/dist/contradiction/types.js.map +1 -0
- package/dist/dedup/dedupe.d.ts +49 -0
- package/dist/dedup/dedupe.d.ts.map +1 -0
- package/dist/dedup/dedupe.js +111 -0
- package/dist/dedup/dedupe.js.map +1 -0
- package/dist/dedup/hash.d.ts +27 -0
- package/dist/dedup/hash.d.ts.map +1 -0
- package/dist/dedup/hash.js +43 -0
- package/dist/dedup/hash.js.map +1 -0
- package/dist/dedup/index.d.ts +12 -0
- package/dist/dedup/index.d.ts.map +1 -0
- package/dist/dedup/index.js +12 -0
- package/dist/dedup/index.js.map +1 -0
- package/dist/dedup/llm-triage.d.ts +48 -0
- package/dist/dedup/llm-triage.d.ts.map +1 -0
- package/dist/dedup/llm-triage.js +100 -0
- package/dist/dedup/llm-triage.js.map +1 -0
- package/dist/dedup/merge.d.ts +41 -0
- package/dist/dedup/merge.d.ts.map +1 -0
- package/dist/dedup/merge.js +55 -0
- package/dist/dedup/merge.js.map +1 -0
- package/dist/dedup/similar.d.ts +45 -0
- package/dist/dedup/similar.d.ts.map +1 -0
- package/dist/dedup/similar.js +103 -0
- package/dist/dedup/similar.js.map +1 -0
- package/dist/dedup/types.d.ts +72 -0
- package/dist/dedup/types.d.ts.map +1 -0
- package/dist/dedup/types.js +18 -0
- package/dist/dedup/types.js.map +1 -0
- package/dist/disclosure/adaptive.d.ts +86 -0
- package/dist/disclosure/adaptive.d.ts.map +1 -0
- package/dist/disclosure/adaptive.js +196 -0
- package/dist/disclosure/adaptive.js.map +1 -0
- package/dist/disclosure/budget.d.ts +51 -0
- package/dist/disclosure/budget.d.ts.map +1 -0
- package/dist/disclosure/budget.js +91 -0
- package/dist/disclosure/budget.js.map +1 -0
- package/dist/disclosure/index.d.ts +11 -0
- package/dist/disclosure/index.d.ts.map +1 -0
- package/dist/disclosure/index.js +11 -0
- package/dist/disclosure/index.js.map +1 -0
- package/dist/disclosure/tier-loader.d.ts +58 -0
- package/dist/disclosure/tier-loader.d.ts.map +1 -0
- package/dist/disclosure/tier-loader.js +205 -0
- package/dist/disclosure/tier-loader.js.map +1 -0
- package/dist/dreaming/decay.d.ts +46 -0
- package/dist/dreaming/decay.d.ts.map +1 -0
- package/dist/dreaming/decay.js +69 -0
- package/dist/dreaming/decay.js.map +1 -0
- package/dist/dreaming/deep.d.ts +48 -0
- package/dist/dreaming/deep.d.ts.map +1 -0
- package/dist/dreaming/deep.js +41 -0
- package/dist/dreaming/deep.js.map +1 -0
- package/dist/dreaming/index.d.ts +12 -0
- package/dist/dreaming/index.d.ts.map +1 -0
- package/dist/dreaming/index.js +12 -0
- package/dist/dreaming/index.js.map +1 -0
- package/dist/dreaming/light.d.ts +54 -0
- package/dist/dreaming/light.d.ts.map +1 -0
- package/dist/dreaming/light.js +114 -0
- package/dist/dreaming/light.js.map +1 -0
- package/dist/dreaming/rem.d.ts +128 -0
- package/dist/dreaming/rem.d.ts.map +1 -0
- package/dist/dreaming/rem.js +228 -0
- package/dist/dreaming/rem.js.map +1 -0
- package/dist/dreaming/scheduler.d.ts +75 -0
- package/dist/dreaming/scheduler.d.ts.map +1 -0
- package/dist/dreaming/scheduler.js +138 -0
- package/dist/dreaming/scheduler.js.map +1 -0
- package/dist/dreaming/trash.d.ts +174 -0
- package/dist/dreaming/trash.d.ts.map +1 -0
- package/dist/dreaming/trash.js +466 -0
- package/dist/dreaming/trash.js.map +1 -0
- package/dist/evolution/category.d.ts +127 -0
- package/dist/evolution/category.d.ts.map +1 -0
- package/dist/evolution/category.js +271 -0
- package/dist/evolution/category.js.map +1 -0
- package/dist/evolution/index.d.ts +8 -0
- package/dist/evolution/index.d.ts.map +1 -0
- package/dist/evolution/index.js +8 -0
- package/dist/evolution/index.js.map +1 -0
- package/dist/evolution/triggered.d.ts +107 -0
- package/dist/evolution/triggered.d.ts.map +1 -0
- package/dist/evolution/triggered.js +278 -0
- package/dist/evolution/triggered.js.map +1 -0
- package/dist/generative/cross-pollinate.d.ts +144 -0
- package/dist/generative/cross-pollinate.d.ts.map +1 -0
- package/dist/generative/cross-pollinate.js +390 -0
- package/dist/generative/cross-pollinate.js.map +1 -0
- package/dist/generative/gap-detector.d.ts +80 -0
- package/dist/generative/gap-detector.d.ts.map +1 -0
- package/dist/generative/gap-detector.js +250 -0
- package/dist/generative/gap-detector.js.map +1 -0
- package/dist/generative/hypothesis.d.ts +161 -0
- package/dist/generative/hypothesis.d.ts.map +1 -0
- package/dist/generative/hypothesis.js +356 -0
- package/dist/generative/hypothesis.js.map +1 -0
- package/dist/generative/index.d.ts +9 -0
- package/dist/generative/index.d.ts.map +1 -0
- package/dist/generative/index.js +9 -0
- package/dist/generative/index.js.map +1 -0
- package/dist/graph/clustering.d.ts +117 -0
- package/dist/graph/clustering.d.ts.map +1 -0
- package/dist/graph/clustering.js +196 -0
- package/dist/graph/clustering.js.map +1 -0
- package/dist/graph/index.d.ts +13 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +13 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/layout.d.ts +46 -0
- package/dist/graph/layout.d.ts.map +1 -0
- package/dist/graph/layout.js +269 -0
- package/dist/graph/layout.js.map +1 -0
- package/dist/graph/presets.d.ts +134 -0
- package/dist/graph/presets.d.ts.map +1 -0
- package/dist/graph/presets.js +190 -0
- package/dist/graph/presets.js.map +1 -0
- package/dist/graph/registry.d.ts +42 -0
- package/dist/graph/registry.d.ts.map +1 -0
- package/dist/graph/registry.js +158 -0
- package/dist/graph/registry.js.map +1 -0
- package/dist/graph/snapshot.d.ts +113 -0
- package/dist/graph/snapshot.d.ts.map +1 -0
- package/dist/graph/snapshot.js +194 -0
- package/dist/graph/snapshot.js.map +1 -0
- package/dist/graph/traverse.d.ts +84 -0
- package/dist/graph/traverse.d.ts.map +1 -0
- package/dist/graph/traverse.js +190 -0
- package/dist/graph/traverse.js.map +1 -0
- package/dist/graph/view-config.d.ts +99 -0
- package/dist/graph/view-config.d.ts.map +1 -0
- package/dist/graph/view-config.js +208 -0
- package/dist/graph/view-config.js.map +1 -0
- package/dist/host/detect-git-author.d.ts +26 -0
- package/dist/host/detect-git-author.d.ts.map +1 -0
- package/dist/host/detect-git-author.js +53 -0
- package/dist/host/detect-git-author.js.map +1 -0
- package/dist/host/index.d.ts +7 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +7 -0
- package/dist/host/index.js.map +1 -0
- package/dist/i18n/en.d.ts +8 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +211 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/field-names.d.ts +95 -0
- package/dist/i18n/field-names.d.ts.map +1 -0
- package/dist/i18n/field-names.js +329 -0
- package/dist/i18n/field-names.js.map +1 -0
- package/dist/i18n/index.d.ts +92 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +135 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/types.d.ts +92 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +7 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/i18n/zh.d.ts +197 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +216 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/importance/index.d.ts +7 -0
- package/dist/importance/index.d.ts.map +1 -0
- package/dist/importance/index.js +7 -0
- package/dist/importance/index.js.map +1 -0
- package/dist/importance/vector.d.ts +113 -0
- package/dist/importance/vector.d.ts.map +1 -0
- package/dist/importance/vector.js +202 -0
- package/dist/importance/vector.js.map +1 -0
- package/dist/index/digest-builder.d.ts +59 -0
- package/dist/index/digest-builder.d.ts.map +1 -0
- package/dist/index/digest-builder.js +195 -0
- package/dist/index/digest-builder.js.map +1 -0
- package/dist/index/graph-builder.d.ts +32 -0
- package/dist/index/graph-builder.d.ts.map +1 -0
- package/dist/index/graph-builder.js +104 -0
- package/dist/index/graph-builder.js.map +1 -0
- package/dist/index/incremental.d.ts +31 -0
- package/dist/index/incremental.d.ts.map +1 -0
- package/dist/index/incremental.js +47 -0
- package/dist/index/incremental.js.map +1 -0
- package/dist/index/index.d.ts +11 -0
- package/dist/index/index.d.ts.map +1 -0
- package/dist/index/index.js +11 -0
- package/dist/index/index.js.map +1 -0
- package/dist/index/orchestrator.d.ts +60 -0
- package/dist/index/orchestrator.d.ts.map +1 -0
- package/dist/index/orchestrator.js +99 -0
- package/dist/index/orchestrator.js.map +1 -0
- package/dist/index/types.d.ts +116 -0
- package/dist/index/types.d.ts.map +1 -0
- package/dist/index/types.js +10 -0
- package/dist/index/types.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/learning/index.d.ts +7 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +7 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/learning/loop.d.ts +79 -0
- package/dist/learning/loop.d.ts.map +1 -0
- package/dist/learning/loop.js +116 -0
- package/dist/learning/loop.js.map +1 -0
- package/dist/lifecycle/freshness.d.ts +35 -0
- package/dist/lifecycle/freshness.d.ts.map +1 -0
- package/dist/lifecycle/freshness.js +60 -0
- package/dist/lifecycle/freshness.js.map +1 -0
- package/dist/lifecycle/index.d.ts +7 -0
- package/dist/lifecycle/index.d.ts.map +1 -0
- package/dist/lifecycle/index.js +7 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lineage/index.d.ts +10 -0
- package/dist/lineage/index.d.ts.map +1 -0
- package/dist/lineage/index.js +10 -0
- package/dist/lineage/index.js.map +1 -0
- package/dist/lineage/trace.d.ts +142 -0
- package/dist/lineage/trace.d.ts.map +1 -0
- package/dist/lineage/trace.js +316 -0
- package/dist/lineage/trace.js.map +1 -0
- package/dist/maintenance/engine.d.ts +78 -0
- package/dist/maintenance/engine.d.ts.map +1 -0
- package/dist/maintenance/engine.js +291 -0
- package/dist/maintenance/engine.js.map +1 -0
- package/dist/maintenance/index.d.ts +8 -0
- package/dist/maintenance/index.d.ts.map +1 -0
- package/dist/maintenance/index.js +8 -0
- package/dist/maintenance/index.js.map +1 -0
- package/dist/maintenance/types.d.ts +111 -0
- package/dist/maintenance/types.d.ts.map +1 -0
- package/dist/maintenance/types.js +24 -0
- package/dist/maintenance/types.js.map +1 -0
- package/dist/observability/audit-log.d.ts +77 -0
- package/dist/observability/audit-log.d.ts.map +1 -0
- package/dist/observability/audit-log.js +101 -0
- package/dist/observability/audit-log.js.map +1 -0
- package/dist/observability/effectiveness-tracker.d.ts +162 -0
- package/dist/observability/effectiveness-tracker.d.ts.map +1 -0
- package/dist/observability/effectiveness-tracker.js +251 -0
- package/dist/observability/effectiveness-tracker.js.map +1 -0
- package/dist/observability/index.d.ts +16 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +16 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/necessity-evaluator.d.ts +116 -0
- package/dist/observability/necessity-evaluator.d.ts.map +1 -0
- package/dist/observability/necessity-evaluator.js +487 -0
- package/dist/observability/necessity-evaluator.js.map +1 -0
- package/dist/observability/proposal-engine.d.ts +224 -0
- package/dist/observability/proposal-engine.d.ts.map +1 -0
- package/dist/observability/proposal-engine.js +651 -0
- package/dist/observability/proposal-engine.js.map +1 -0
- package/dist/perspectives/index.d.ts +7 -0
- package/dist/perspectives/index.d.ts.map +1 -0
- package/dist/perspectives/index.js +7 -0
- package/dist/perspectives/index.js.map +1 -0
- package/dist/perspectives/multi-view.d.ts +81 -0
- package/dist/perspectives/multi-view.d.ts.map +1 -0
- package/dist/perspectives/multi-view.js +221 -0
- package/dist/perspectives/multi-view.js.map +1 -0
- package/dist/prompt-builder/builder.d.ts +47 -0
- package/dist/prompt-builder/builder.d.ts.map +1 -0
- package/dist/prompt-builder/builder.js +136 -0
- package/dist/prompt-builder/builder.js.map +1 -0
- package/dist/prompt-builder/index.d.ts +8 -0
- package/dist/prompt-builder/index.d.ts.map +1 -0
- package/dist/prompt-builder/index.js +8 -0
- package/dist/prompt-builder/index.js.map +1 -0
- package/dist/prompt-builder/types.d.ts +42 -0
- package/dist/prompt-builder/types.d.ts.map +1 -0
- package/dist/prompt-builder/types.js +10 -0
- package/dist/prompt-builder/types.js.map +1 -0
- package/dist/prompt-signals/cache.d.ts +36 -0
- package/dist/prompt-signals/cache.d.ts.map +1 -0
- package/dist/prompt-signals/cache.js +70 -0
- package/dist/prompt-signals/cache.js.map +1 -0
- package/dist/prompt-signals/index.d.ts +12 -0
- package/dist/prompt-signals/index.d.ts.map +1 -0
- package/dist/prompt-signals/index.js +11 -0
- package/dist/prompt-signals/index.js.map +1 -0
- package/dist/prompt-signals/stats.d.ts +45 -0
- package/dist/prompt-signals/stats.d.ts.map +1 -0
- package/dist/prompt-signals/stats.js +119 -0
- package/dist/prompt-signals/stats.js.map +1 -0
- package/dist/prompt-signals/types.d.ts +53 -0
- package/dist/prompt-signals/types.d.ts.map +1 -0
- package/dist/prompt-signals/types.js +34 -0
- package/dist/prompt-signals/types.js.map +1 -0
- package/dist/provenance/index.d.ts +7 -0
- package/dist/provenance/index.d.ts.map +1 -0
- package/dist/provenance/index.js +7 -0
- package/dist/provenance/index.js.map +1 -0
- package/dist/provenance/reliability.d.ts +133 -0
- package/dist/provenance/reliability.d.ts.map +1 -0
- package/dist/provenance/reliability.js +213 -0
- package/dist/provenance/reliability.js.map +1 -0
- package/dist/reinforcement/config.d.ts +34 -0
- package/dist/reinforcement/config.d.ts.map +1 -0
- package/dist/reinforcement/config.js +43 -0
- package/dist/reinforcement/config.js.map +1 -0
- package/dist/reinforcement/index.d.ts +12 -0
- package/dist/reinforcement/index.d.ts.map +1 -0
- package/dist/reinforcement/index.js +12 -0
- package/dist/reinforcement/index.js.map +1 -0
- package/dist/reinforcement/ltd.d.ts +59 -0
- package/dist/reinforcement/ltd.d.ts.map +1 -0
- package/dist/reinforcement/ltd.js +90 -0
- package/dist/reinforcement/ltd.js.map +1 -0
- package/dist/reinforcement/ltp.d.ts +63 -0
- package/dist/reinforcement/ltp.d.ts.map +1 -0
- package/dist/reinforcement/ltp.js +99 -0
- package/dist/reinforcement/ltp.js.map +1 -0
- package/dist/reinforcement/related.d.ts +39 -0
- package/dist/reinforcement/related.d.ts.map +1 -0
- package/dist/reinforcement/related.js +92 -0
- package/dist/reinforcement/related.js.map +1 -0
- package/dist/retrieval/filter.d.ts +18 -0
- package/dist/retrieval/filter.d.ts.map +1 -0
- package/dist/retrieval/filter.js +68 -0
- package/dist/retrieval/filter.js.map +1 -0
- package/dist/retrieval/fts.d.ts +44 -0
- package/dist/retrieval/fts.d.ts.map +1 -0
- package/dist/retrieval/fts.js +120 -0
- package/dist/retrieval/fts.js.map +1 -0
- package/dist/retrieval/index.d.ts +10 -0
- package/dist/retrieval/index.d.ts.map +1 -0
- package/dist/retrieval/index.js +10 -0
- package/dist/retrieval/index.js.map +1 -0
- package/dist/retrieval/orchestrator.d.ts +78 -0
- package/dist/retrieval/orchestrator.d.ts.map +1 -0
- package/dist/retrieval/orchestrator.js +156 -0
- package/dist/retrieval/orchestrator.js.map +1 -0
- package/dist/retrieval/scoring.d.ts +105 -0
- package/dist/retrieval/scoring.d.ts.map +1 -0
- package/dist/retrieval/scoring.js +165 -0
- package/dist/retrieval/scoring.js.map +1 -0
- package/dist/signals/extract.d.ts +98 -0
- package/dist/signals/extract.d.ts.map +1 -0
- package/dist/signals/extract.js +388 -0
- package/dist/signals/extract.js.map +1 -0
- package/dist/signals/file-sink.d.ts +81 -0
- package/dist/signals/file-sink.d.ts.map +1 -0
- package/dist/signals/file-sink.js +227 -0
- package/dist/signals/file-sink.js.map +1 -0
- package/dist/signals/index.d.ts +12 -0
- package/dist/signals/index.d.ts.map +1 -0
- package/dist/signals/index.js +12 -0
- package/dist/signals/index.js.map +1 -0
- package/dist/signals/rpe.d.ts +60 -0
- package/dist/signals/rpe.d.ts.map +1 -0
- package/dist/signals/rpe.js +68 -0
- package/dist/signals/rpe.js.map +1 -0
- package/dist/signals/types.d.ts +80 -0
- package/dist/signals/types.d.ts.map +1 -0
- package/dist/signals/types.js +14 -0
- package/dist/signals/types.js.map +1 -0
- package/dist/storage/engram-index.d.ts +73 -0
- package/dist/storage/engram-index.d.ts.map +1 -0
- package/dist/storage/engram-index.js +215 -0
- package/dist/storage/engram-index.js.map +1 -0
- package/dist/storage/engram-store.d.ts +147 -0
- package/dist/storage/engram-store.d.ts.map +1 -0
- package/dist/storage/engram-store.js +221 -0
- package/dist/storage/engram-store.js.map +1 -0
- package/dist/storage/git-stage.d.ts +56 -0
- package/dist/storage/git-stage.d.ts.map +1 -0
- package/dist/storage/git-stage.js +147 -0
- package/dist/storage/git-stage.js.map +1 -0
- package/dist/storage/git.d.ts +57 -0
- package/dist/storage/git.d.ts.map +1 -0
- package/dist/storage/git.js +156 -0
- package/dist/storage/git.js.map +1 -0
- package/dist/storage/hash.d.ts +23 -0
- package/dist/storage/hash.d.ts.map +1 -0
- package/dist/storage/hash.js +31 -0
- package/dist/storage/hash.js.map +1 -0
- package/dist/storage/index.d.ts +14 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +14 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/path.d.ts +51 -0
- package/dist/storage/path.d.ts.map +1 -0
- package/dist/storage/path.js +72 -0
- package/dist/storage/path.js.map +1 -0
- package/dist/storage/repository.d.ts +342 -0
- package/dist/storage/repository.d.ts.map +1 -0
- package/dist/storage/repository.js +1221 -0
- package/dist/storage/repository.js.map +1 -0
- package/dist/storage/synapse-store.d.ts +113 -0
- package/dist/storage/synapse-store.d.ts.map +1 -0
- package/dist/storage/synapse-store.js +279 -0
- package/dist/storage/synapse-store.js.map +1 -0
- package/dist/tools/doctor-tools.d.ts +53 -0
- package/dist/tools/doctor-tools.d.ts.map +1 -0
- package/dist/tools/doctor-tools.js +97 -0
- package/dist/tools/doctor-tools.js.map +1 -0
- package/dist/tools/engram-tools.d.ts +166 -0
- package/dist/tools/engram-tools.d.ts.map +1 -0
- package/dist/tools/engram-tools.js +834 -0
- package/dist/tools/engram-tools.js.map +1 -0
- package/dist/tools/index.d.ts +16 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +16 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/llm-descriptions.d.ts +61 -0
- package/dist/tools/llm-descriptions.d.ts.map +1 -0
- package/dist/tools/llm-descriptions.js +556 -0
- package/dist/tools/llm-descriptions.js.map +1 -0
- package/dist/tools/proposal-tools.d.ts +40 -0
- package/dist/tools/proposal-tools.d.ts.map +1 -0
- package/dist/tools/proposal-tools.js +99 -0
- package/dist/tools/proposal-tools.js.map +1 -0
- package/dist/tools/registry.d.ts +30 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +43 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/schemas.d.ts +715 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +383 -0
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/skill-tools.d.ts +26 -0
- package/dist/tools/skill-tools.d.ts.map +1 -0
- package/dist/tools/skill-tools.js +84 -0
- package/dist/tools/skill-tools.js.map +1 -0
- package/dist/tools/synapse-tools.d.ts +28 -0
- package/dist/tools/synapse-tools.d.ts.map +1 -0
- package/dist/tools/synapse-tools.js +177 -0
- package/dist/tools/synapse-tools.js.map +1 -0
- package/dist/tools/tool.d.ts +84 -0
- package/dist/tools/tool.d.ts.map +1 -0
- package/dist/tools/tool.js +22 -0
- package/dist/tools/tool.js.map +1 -0
- package/dist/tools/wrapped.d.ts +28 -0
- package/dist/tools/wrapped.d.ts.map +1 -0
- package/dist/tools/wrapped.js +172 -0
- package/dist/tools/wrapped.js.map +1 -0
- package/dist/types/disclosure.d.ts +70 -0
- package/dist/types/disclosure.d.ts.map +1 -0
- package/dist/types/disclosure.js +9 -0
- package/dist/types/disclosure.js.map +1 -0
- package/dist/types/engram.d.ts +203 -0
- package/dist/types/engram.d.ts.map +1 -0
- package/dist/types/engram.js +7 -0
- package/dist/types/engram.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +15 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/intention.d.ts +91 -0
- package/dist/types/intention.d.ts.map +1 -0
- package/dist/types/intention.js +9 -0
- package/dist/types/intention.js.map +1 -0
- package/dist/types/repository-types.d.ts +113 -0
- package/dist/types/repository-types.d.ts.map +1 -0
- package/dist/types/repository-types.js +18 -0
- package/dist/types/repository-types.js.map +1 -0
- package/dist/types/scene.d.ts +52 -0
- package/dist/types/scene.d.ts.map +1 -0
- package/dist/types/scene.js +12 -0
- package/dist/types/scene.js.map +1 -0
- package/dist/types/skill.d.ts +107 -0
- package/dist/types/skill.d.ts.map +1 -0
- package/dist/types/skill.js +10 -0
- package/dist/types/skill.js.map +1 -0
- package/dist/types/slugify.d.ts +34 -0
- package/dist/types/slugify.d.ts.map +1 -0
- package/dist/types/slugify.js +55 -0
- package/dist/types/slugify.js.map +1 -0
- package/dist/types/synapse-id.d.ts +22 -0
- package/dist/types/synapse-id.d.ts.map +1 -0
- package/dist/types/synapse-id.js +34 -0
- package/dist/types/synapse-id.js.map +1 -0
- package/dist/types/synapse.d.ts +99 -0
- package/dist/types/synapse.d.ts.map +1 -0
- package/dist/types/synapse.js +9 -0
- package/dist/types/synapse.js.map +1 -0
- package/dist/verification/index.d.ts +11 -0
- package/dist/verification/index.d.ts.map +1 -0
- package/dist/verification/index.js +11 -0
- package/dist/verification/index.js.map +1 -0
- package/dist/verification/metacognition.d.ts +102 -0
- package/dist/verification/metacognition.d.ts.map +1 -0
- package/dist/verification/metacognition.js +284 -0
- package/dist/verification/metacognition.js.map +1 -0
- package/dist/verification/state-machine.d.ts +77 -0
- package/dist/verification/state-machine.d.ts.map +1 -0
- package/dist/verification/state-machine.js +126 -0
- package/dist/verification/state-machine.js.map +1 -0
- package/dist/verification/upgrade.d.ts +133 -0
- package/dist/verification/upgrade.d.ts.map +1 -0
- package/dist/verification/upgrade.js +364 -0
- package/dist/verification/upgrade.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 默认信号收集器实现
|
|
3
|
+
*
|
|
4
|
+
* - FileSignalSink:JSONL 文件持久化(生产用,路径默认 <dataRoot>/.co-engram/signals.jsonl)
|
|
5
|
+
* - MemorySignalSink:内存数组(测试用,断言方便)
|
|
6
|
+
*
|
|
7
|
+
* 设计:
|
|
8
|
+
* - append 只追加一行 JSON,不做 fsync(性能优先)
|
|
9
|
+
* - drain 读取整个文件 + 截断(O(n))
|
|
10
|
+
* - prune 读取 + 过滤 + 重写(O(n))
|
|
11
|
+
*
|
|
12
|
+
* 并发:单进程内 by-design 安全;多进程并发需要文件锁,留作 TODO(MVP 单进程场景够用)。
|
|
13
|
+
*
|
|
14
|
+
* @module @co-engram/core/signals
|
|
15
|
+
*/
|
|
16
|
+
import { closeSync, existsSync, mkdirSync, openSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
17
|
+
import { dirname, join } from "node:path";
|
|
18
|
+
/**
|
|
19
|
+
* 进程级 exit handler 注册表(单例)
|
|
20
|
+
*
|
|
21
|
+
* 每个 FileSignalSink 实例都需要在进程退出前 flush 一次,但若每个实例都调
|
|
22
|
+
* process.once('beforeExit' / 'exit'),创建 N 个 sink 就会注册 2N 个 listener,
|
|
23
|
+
* 超过 Node 默认的 maxListeners=10 → 触发 MaxListenersExceededWarning。
|
|
24
|
+
*
|
|
25
|
+
* 测试场景会频繁创建 sink(每个用例一个),生产场景通常只 1 个,所以警告主要
|
|
26
|
+
* 污染测试日志。但监听器膨胀本身就是泄漏 + 让人误以为有真问题。
|
|
27
|
+
*
|
|
28
|
+
* 解决:模块级单 Set 跟踪所有 active sinks,只注册一次 exit handler,handler
|
|
29
|
+
* 内部遍历所有 sinks 调 flushSync。WeakSet 自动 GC 回收后的 sink 不会泄漏。
|
|
30
|
+
*/
|
|
31
|
+
const activeSinks = new Set();
|
|
32
|
+
let exitHandlerRegistered = false;
|
|
33
|
+
function registerGlobalExitHandlerOnce() {
|
|
34
|
+
if (exitHandlerRegistered)
|
|
35
|
+
return;
|
|
36
|
+
exitHandlerRegistered = true;
|
|
37
|
+
const handler = () => {
|
|
38
|
+
for (const sink of activeSinks) {
|
|
39
|
+
try {
|
|
40
|
+
sink.flushSync();
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// ignore — best effort on exit
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
process.once("beforeExit", handler);
|
|
48
|
+
process.once("exit", handler);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* JSONL 文件信号收集器
|
|
52
|
+
*
|
|
53
|
+
* 文件格式:每行一个 JSON object,字段对应 ToolCallEvent。
|
|
54
|
+
* drain() 会读取全部并截断文件;prune() 会保留最近 N ms 的事件。
|
|
55
|
+
*/
|
|
56
|
+
export class FileSignalSink {
|
|
57
|
+
filePath;
|
|
58
|
+
buffer = [];
|
|
59
|
+
flushTimer = null;
|
|
60
|
+
flushIntervalMs;
|
|
61
|
+
flushThreshold;
|
|
62
|
+
constructor(options) {
|
|
63
|
+
this.filePath = options.filePath;
|
|
64
|
+
this.flushIntervalMs = options.flushIntervalMs ?? 5_000;
|
|
65
|
+
this.flushThreshold = options.flushThreshold ?? 50;
|
|
66
|
+
// 注册到全局 exit handler(只真正注册一次 process listener)
|
|
67
|
+
activeSinks.add(this);
|
|
68
|
+
registerGlobalExitHandlerOnce();
|
|
69
|
+
}
|
|
70
|
+
append(event) {
|
|
71
|
+
this.buffer.push(event);
|
|
72
|
+
if (this.buffer.length >= this.flushThreshold) {
|
|
73
|
+
void this.flush();
|
|
74
|
+
}
|
|
75
|
+
else if (this.flushTimer === null) {
|
|
76
|
+
this.flushTimer = setInterval(() => {
|
|
77
|
+
void this.flush();
|
|
78
|
+
}, this.flushIntervalMs);
|
|
79
|
+
this.flushTimer.unref?.();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
drain() {
|
|
83
|
+
// 同步 flush 缓冲,再读取整个文件
|
|
84
|
+
this.flushSync();
|
|
85
|
+
if (!existsSync(this.filePath))
|
|
86
|
+
return [];
|
|
87
|
+
const raw = readFileSync(this.filePath, "utf8").trim();
|
|
88
|
+
if (raw === "")
|
|
89
|
+
return [];
|
|
90
|
+
const events = [];
|
|
91
|
+
for (const line of raw.split("\n")) {
|
|
92
|
+
const trimmed = line.trim();
|
|
93
|
+
if (!trimmed)
|
|
94
|
+
continue;
|
|
95
|
+
try {
|
|
96
|
+
events.push(JSON.parse(trimmed));
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// 跳过损坏行(部分写入)
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// 清空文件
|
|
103
|
+
writeFileSync(this.filePath, "", "utf8");
|
|
104
|
+
return events;
|
|
105
|
+
}
|
|
106
|
+
async prune(olderThanMs) {
|
|
107
|
+
const cutoff = Date.now() - olderThanMs;
|
|
108
|
+
const events = this.drain();
|
|
109
|
+
const kept = events.filter((e) => e.at >= cutoff);
|
|
110
|
+
if (kept.length === 0) {
|
|
111
|
+
if (existsSync(this.filePath))
|
|
112
|
+
writeFileSync(this.filePath, "", "utf8");
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const lines = kept.map((e) => JSON.stringify(e)).join("\n");
|
|
116
|
+
writeFileSync(this.filePath, lines + "\n", "utf8");
|
|
117
|
+
}
|
|
118
|
+
/** 显式 flush(测试或进程退出时调) */
|
|
119
|
+
async flush() {
|
|
120
|
+
this.flushSync();
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* 主动从 exit handler 注销(测试结束后清理)
|
|
124
|
+
*
|
|
125
|
+
* 不强制要求调用,但测试中创建大量 sink 时调用可避免 Set 无限增长
|
|
126
|
+
* (生产中只有 1 个 sink,生命周期 = 进程生命周期,无所谓)。
|
|
127
|
+
*/
|
|
128
|
+
dispose() {
|
|
129
|
+
activeSinks.delete(this);
|
|
130
|
+
}
|
|
131
|
+
flushSync() {
|
|
132
|
+
if (this.buffer.length === 0)
|
|
133
|
+
return;
|
|
134
|
+
if (this.flushTimer !== null) {
|
|
135
|
+
clearInterval(this.flushTimer);
|
|
136
|
+
this.flushTimer = null;
|
|
137
|
+
}
|
|
138
|
+
const pending = this.buffer.splice(0, this.buffer.length);
|
|
139
|
+
const lines = pending.map((e) => JSON.stringify(e)).join("\n") + "\n";
|
|
140
|
+
// 追加模式打开,避免覆盖已有数据
|
|
141
|
+
const fd = openSync(this.filePath, "a");
|
|
142
|
+
try {
|
|
143
|
+
writeFileSync(fd, lines, "utf8");
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
closeSync(fd);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* 内存信号收集器(测试用)
|
|
152
|
+
*
|
|
153
|
+
* drain() 返回当前缓冲并清空,但不涉及文件 IO。
|
|
154
|
+
*/
|
|
155
|
+
export class MemorySignalSink {
|
|
156
|
+
events = [];
|
|
157
|
+
append(event) {
|
|
158
|
+
this.events.push(event);
|
|
159
|
+
}
|
|
160
|
+
drain() {
|
|
161
|
+
const drained = [...this.events];
|
|
162
|
+
this.events.length = 0;
|
|
163
|
+
return drained;
|
|
164
|
+
}
|
|
165
|
+
async prune(olderThanMs) {
|
|
166
|
+
const cutoff = Date.now() - olderThanMs;
|
|
167
|
+
const kept = this.events.filter((e) => e.at >= cutoff);
|
|
168
|
+
this.events.length = 0;
|
|
169
|
+
this.events.push(...kept);
|
|
170
|
+
}
|
|
171
|
+
/** 当前缓冲长度(不断言 drain 后的状态) */
|
|
172
|
+
get size() {
|
|
173
|
+
return this.events.length;
|
|
174
|
+
}
|
|
175
|
+
/** 查看当前缓冲(不消费) */
|
|
176
|
+
peek() {
|
|
177
|
+
return [...this.events];
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* 创建默认的 FileSignalSink(便捷工厂)
|
|
182
|
+
*
|
|
183
|
+
* 文件位置:`<dataRoot>/.co-engram/signals.jsonl`,与 audit.jsonl /
|
|
184
|
+
* proposals.jsonl / topic-clusters.jsonl / prompt-signals.json 等其它
|
|
185
|
+
* 状态文件保持一致。
|
|
186
|
+
*
|
|
187
|
+
* 历史遗留:0.x 版本曾写到 `<dataRoot>/signals.jsonl`(根目录),与其它状态
|
|
188
|
+
* 文件不在同一子目录,导致用户备份 `.co-engram/` 时会漏掉 signals。此处会
|
|
189
|
+
* 自动把根目录的旧文件迁移到新位置(只在首次创建 sink 时执行一次,代价极低)。
|
|
190
|
+
*/
|
|
191
|
+
export function createDefaultSignalSink(dataRoot) {
|
|
192
|
+
const newPath = join(dataRoot, ".co-engram", "signals.jsonl");
|
|
193
|
+
migrateLegacySignalFile(dataRoot, newPath);
|
|
194
|
+
return new FileSignalSink({ filePath: newPath });
|
|
195
|
+
}
|
|
196
|
+
/** 把 `<dataRoot>/signals.jsonl`(老路径)迁移到 `newPath`,如果老文件存在。
|
|
197
|
+
* 幂等:新路径已存在时不覆盖;老文件不存在时 no-op。 */
|
|
198
|
+
function migrateLegacySignalFile(dataRoot, newPath) {
|
|
199
|
+
const legacyPath = join(dataRoot, "signals.jsonl");
|
|
200
|
+
if (!existsSync(legacyPath))
|
|
201
|
+
return;
|
|
202
|
+
// 新路径已存在:用户已经在新位置写过 → 不覆盖,只把老文件备份标识后留下
|
|
203
|
+
// (避免数据丢失;运维可以人工合并)
|
|
204
|
+
if (existsSync(newPath))
|
|
205
|
+
return;
|
|
206
|
+
try {
|
|
207
|
+
mkdirSync(dirname(newPath), { recursive: true });
|
|
208
|
+
renameSync(legacyPath, newPath);
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
// 迁移失败不阻塞 sink 创建;老文件依然可读,只是不一致
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/** 仅用于测试:清空文件 */
|
|
215
|
+
export function resetFileSignalSink(sink) {
|
|
216
|
+
// 用反射读取私有 filePath
|
|
217
|
+
const filePath = sink.filePath;
|
|
218
|
+
if (existsSync(filePath)) {
|
|
219
|
+
try {
|
|
220
|
+
unlinkSync(filePath);
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
// ignore
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=file-sink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-sink.js","sourceRoot":"","sources":["../../src/signals/file-sink.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signals 模块 barrel(P4 自动维护服务)
|
|
3
|
+
*
|
|
4
|
+
* 行为信号提取:从工具调用事件流推断 engram 的"真实效用",不依赖 agent 自律上报。
|
|
5
|
+
*
|
|
6
|
+
* @module @co-engram/core/signals
|
|
7
|
+
*/
|
|
8
|
+
export * from "./types.js";
|
|
9
|
+
export * from "./file-sink.js";
|
|
10
|
+
export * from "./extract.js";
|
|
11
|
+
export * from "./rpe.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signals 模块 barrel(P4 自动维护服务)
|
|
3
|
+
*
|
|
4
|
+
* 行为信号提取:从工具调用事件流推断 engram 的"真实效用",不依赖 agent 自律上报。
|
|
5
|
+
*
|
|
6
|
+
* @module @co-engram/core/signals
|
|
7
|
+
*/
|
|
8
|
+
export * from "./types.js";
|
|
9
|
+
export * from "./file-sink.js";
|
|
10
|
+
export * from "./extract.js";
|
|
11
|
+
export * from "./rpe.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RPE(Reward Prediction Error)有效性计算(P4 B)
|
|
3
|
+
*
|
|
4
|
+
* 人类多巴胺机制的工程化映射:
|
|
5
|
+
*
|
|
6
|
+
* effectiveness = actual - expected
|
|
7
|
+
*
|
|
8
|
+
* 其中:
|
|
9
|
+
* expected = 检索时算出的相关性分数(lastRetrievalScore,[0,1])
|
|
10
|
+
* actual = 该 engram 在后续工具调用流中收到的累积信号(signalWeight,[-1,1])
|
|
11
|
+
*
|
|
12
|
+
* effectiveness 为正 → 超预期(强化);为负 → 失望(衰减)。
|
|
13
|
+
*
|
|
14
|
+
* @module @co-engram/core/signals
|
|
15
|
+
*/
|
|
16
|
+
import type { EngramRepository } from "../storage/repository.js";
|
|
17
|
+
/** RPE 输入 */
|
|
18
|
+
export interface RpeInput {
|
|
19
|
+
/** 检索时的相关性分数 [0,1],作为"预期值" */
|
|
20
|
+
readonly expected: number;
|
|
21
|
+
/** 累积行为信号 [-1,1],作为"实际值" */
|
|
22
|
+
readonly signalWeight: number;
|
|
23
|
+
/** 触发信号的次数(用于判断是否应更新) */
|
|
24
|
+
readonly signalCount: number;
|
|
25
|
+
}
|
|
26
|
+
/** 默认学习率(Δreinforcement 系数) */
|
|
27
|
+
export declare const DEFAULT_RPE_LEARNING_RATE = 0.1;
|
|
28
|
+
/** effectiveness 死区阈值:|eff| ≤ DEAD_ZONE 时不更新 */
|
|
29
|
+
export declare const RPE_DEAD_ZONE = 0.05;
|
|
30
|
+
/**
|
|
31
|
+
* 计算 RPE(不写库)
|
|
32
|
+
*
|
|
33
|
+
* - signalCount === 0 → 返回 0(无信号不更新)
|
|
34
|
+
* - actual = (clamp(signalWeight, -1, 1) + 1) / 2 // 归一化到 [0,1]
|
|
35
|
+
* - rpe = actual - expected // ∈ [-1, 1]
|
|
36
|
+
*
|
|
37
|
+
* @returns effectiveness ∈ [-1, 1]
|
|
38
|
+
*/
|
|
39
|
+
export declare function computeRpe(input: RpeInput): number;
|
|
40
|
+
/**
|
|
41
|
+
* 应用一次 RPE 更新(写库)
|
|
42
|
+
*
|
|
43
|
+
* 根据 effectiveness 符号:
|
|
44
|
+
* eff > 0.05 → effectiveRetrievals += 1, reinforcementScore += eff * lr
|
|
45
|
+
* eff < -0.05 → failedUses += 1, reinforcementScore += eff * lr(负值,衰减)
|
|
46
|
+
* |eff| ≤ 0.05 → 中性,不更新
|
|
47
|
+
*
|
|
48
|
+
* 不触发 version++。
|
|
49
|
+
*
|
|
50
|
+
* @returns 更新详情(供审计/日志)
|
|
51
|
+
*/
|
|
52
|
+
export declare function applyRpeUpdate(repo: EngramRepository, engramId: string, effectiveness: number, learningRate?: number): RpeUpdateResult;
|
|
53
|
+
/** RPE 应用结果 */
|
|
54
|
+
export interface RpeUpdateResult {
|
|
55
|
+
readonly engramId: string;
|
|
56
|
+
readonly effectiveness: number;
|
|
57
|
+
readonly action: "reinforced" | "penalized" | "neutral";
|
|
58
|
+
readonly delta: number;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=rpe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpe.d.ts","sourceRoot":"","sources":["../../src/signals/rpe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,aAAa;AACb,MAAM,WAAW,QAAQ;IACvB,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,yBAAyB;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,+BAA+B;AAC/B,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,gDAAgD;AAChD,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAMlD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,YAAY,GAAE,MAAkC,GAC/C,eAAe,CAqBjB;AAED,eAAe;AACf,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RPE(Reward Prediction Error)有效性计算(P4 B)
|
|
3
|
+
*
|
|
4
|
+
* 人类多巴胺机制的工程化映射:
|
|
5
|
+
*
|
|
6
|
+
* effectiveness = actual - expected
|
|
7
|
+
*
|
|
8
|
+
* 其中:
|
|
9
|
+
* expected = 检索时算出的相关性分数(lastRetrievalScore,[0,1])
|
|
10
|
+
* actual = 该 engram 在后续工具调用流中收到的累积信号(signalWeight,[-1,1])
|
|
11
|
+
*
|
|
12
|
+
* effectiveness 为正 → 超预期(强化);为负 → 失望(衰减)。
|
|
13
|
+
*
|
|
14
|
+
* @module @co-engram/core/signals
|
|
15
|
+
*/
|
|
16
|
+
/** 默认学习率(Δreinforcement 系数) */
|
|
17
|
+
export const DEFAULT_RPE_LEARNING_RATE = 0.1;
|
|
18
|
+
/** effectiveness 死区阈值:|eff| ≤ DEAD_ZONE 时不更新 */
|
|
19
|
+
export const RPE_DEAD_ZONE = 0.05;
|
|
20
|
+
/**
|
|
21
|
+
* 计算 RPE(不写库)
|
|
22
|
+
*
|
|
23
|
+
* - signalCount === 0 → 返回 0(无信号不更新)
|
|
24
|
+
* - actual = (clamp(signalWeight, -1, 1) + 1) / 2 // 归一化到 [0,1]
|
|
25
|
+
* - rpe = actual - expected // ∈ [-1, 1]
|
|
26
|
+
*
|
|
27
|
+
* @returns effectiveness ∈ [-1, 1]
|
|
28
|
+
*/
|
|
29
|
+
export function computeRpe(input) {
|
|
30
|
+
if (input.signalCount === 0)
|
|
31
|
+
return 0;
|
|
32
|
+
const clampedSignal = Math.max(-1, Math.min(1, input.signalWeight));
|
|
33
|
+
const actual = (clampedSignal + 1) / 2;
|
|
34
|
+
const expected = Math.max(0, Math.min(1, input.expected));
|
|
35
|
+
return actual - expected;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 应用一次 RPE 更新(写库)
|
|
39
|
+
*
|
|
40
|
+
* 根据 effectiveness 符号:
|
|
41
|
+
* eff > 0.05 → effectiveRetrievals += 1, reinforcementScore += eff * lr
|
|
42
|
+
* eff < -0.05 → failedUses += 1, reinforcementScore += eff * lr(负值,衰减)
|
|
43
|
+
* |eff| ≤ 0.05 → 中性,不更新
|
|
44
|
+
*
|
|
45
|
+
* 不触发 version++。
|
|
46
|
+
*
|
|
47
|
+
* @returns 更新详情(供审计/日志)
|
|
48
|
+
*/
|
|
49
|
+
export function applyRpeUpdate(repo, engramId, effectiveness, learningRate = DEFAULT_RPE_LEARNING_RATE) {
|
|
50
|
+
if (Math.abs(effectiveness) <= RPE_DEAD_ZONE) {
|
|
51
|
+
return { engramId, effectiveness, action: "neutral", delta: 0 };
|
|
52
|
+
}
|
|
53
|
+
const delta = effectiveness * learningRate;
|
|
54
|
+
if (effectiveness > 0) {
|
|
55
|
+
repo.bumpRetrievalStats(engramId, {
|
|
56
|
+
effectiveDelta: 1,
|
|
57
|
+
reinforcementDelta: delta,
|
|
58
|
+
lastEffectiveAt: new Date().toISOString(),
|
|
59
|
+
});
|
|
60
|
+
return { engramId, effectiveness, action: "reinforced", delta };
|
|
61
|
+
}
|
|
62
|
+
repo.bumpRetrievalStats(engramId, {
|
|
63
|
+
failedDelta: 1,
|
|
64
|
+
reinforcementDelta: delta,
|
|
65
|
+
});
|
|
66
|
+
return { engramId, effectiveness, action: "penalized", delta };
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=rpe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpe.js","sourceRoot":"","sources":["../../src/signals/rpe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAcH,+BAA+B;AAC/B,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C,gDAAgD;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,KAAe;IACxC,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,GAAG,QAAQ,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAsB,EACtB,QAAgB,EAChB,aAAqB,EACrB,eAAuB,yBAAyB;IAEhD,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,aAAa,EAAE,CAAC;QAC7C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,GAAG,YAAY,CAAC;IAE3C,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;YAChC,cAAc,EAAE,CAAC;YACjB,kBAAkB,EAAE,KAAK;YACzB,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAC1C,CAAC,CAAC;QACH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;QAChC,WAAW,EAAE,CAAC;QACd,kBAAkB,EAAE,KAAK;KAC1B,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 行为信号数据模型(P4 自动维护服务 A 层)
|
|
3
|
+
*
|
|
4
|
+
* 从工具调用事件流中提取 implicit behavioral signals,不依赖 agent 主动上报。
|
|
5
|
+
*
|
|
6
|
+
* 数据流:
|
|
7
|
+
* tools/*.execute → ctx.signalSink.append(ToolCallEvent)
|
|
8
|
+
* → signals.jsonl(JSONL, <dataRoot>/.co-engram/)
|
|
9
|
+
* engine.runLight → sink.drain() → extractSignals(events) → BehavioralSignal[]
|
|
10
|
+
*
|
|
11
|
+
* @module @co-engram/core/signals
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* 一次工具调用事件(recorded for later signal extraction)
|
|
15
|
+
*
|
|
16
|
+
* 写入时机:tools/wrapped.ts 包裹的 execute 在返回前 append。
|
|
17
|
+
* 写入是非阻塞的(fire-and-forget),失败不影响工具调用本身。
|
|
18
|
+
*/
|
|
19
|
+
export interface ToolCallEvent {
|
|
20
|
+
/** 工具名(engram_get / engram_search / synapse_create ...) */
|
|
21
|
+
readonly toolName: string;
|
|
22
|
+
/** 工具入参(只保留可序列化字段) */
|
|
23
|
+
readonly input: Readonly<Record<string, unknown>>;
|
|
24
|
+
/** 输出摘要(避免把整个 engram content 塞进事件流) */
|
|
25
|
+
readonly outputSummary?: string;
|
|
26
|
+
/** 工具结果涉及的 engram id 列表(如 engram_get 的返回 id、engram_search 的 hits) */
|
|
27
|
+
readonly retrievedEngramIds?: readonly string[];
|
|
28
|
+
/** 会话 id(每次工具调用生成新 UUID;extract 用 sliding window 替代会话边界) */
|
|
29
|
+
readonly sessionId: string;
|
|
30
|
+
/** 触发时间(epoch ms) */
|
|
31
|
+
readonly at: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 行为信号(从 ToolCallEvent 流提取的"这条 engram 有多被信任/有用"的归一化打分)
|
|
35
|
+
*
|
|
36
|
+
* weight ∈ [-1, 1]:
|
|
37
|
+
* - 正值:engram 被认为有用(强正 ≥ 0.6、弱正 0.2-0.5)
|
|
38
|
+
* - 负值:engram 被认为失败/错误(强负 ≤ -0.6、弱负 -0.2 - -0.5)
|
|
39
|
+
* - 0:中性,通常不产生
|
|
40
|
+
*/
|
|
41
|
+
export interface BehavioralSignal {
|
|
42
|
+
/** 关联的 engram id */
|
|
43
|
+
readonly engramId: string;
|
|
44
|
+
/** 权重 [-1, 1] */
|
|
45
|
+
readonly weight: number;
|
|
46
|
+
/** 来源规则名(extract.ts 的 Rule.name) */
|
|
47
|
+
readonly source: string;
|
|
48
|
+
/** 证据(用于审计:触发事件、窗口大小、命中字段等) */
|
|
49
|
+
readonly evidence: Readonly<Record<string, unknown>>;
|
|
50
|
+
/** 触发事件所属的 sessionId */
|
|
51
|
+
readonly sessionId: string;
|
|
52
|
+
/** 信号生成时间(epoch ms) */
|
|
53
|
+
readonly at: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 信号收集器接口
|
|
57
|
+
*
|
|
58
|
+
* 宿主负责实现,core 提供默认 FileSignalSink(JSONL) 和 MemorySignalSink(测试用)。
|
|
59
|
+
*/
|
|
60
|
+
export interface SignalSink {
|
|
61
|
+
/**
|
|
62
|
+
* 追加一次工具调用事件
|
|
63
|
+
*
|
|
64
|
+
* 实现必须容忍失败(文件锁、磁盘满等),不应阻塞工具调用本身。
|
|
65
|
+
*/
|
|
66
|
+
append(event: ToolCallEvent): Promise<void> | void;
|
|
67
|
+
/**
|
|
68
|
+
* 取出全部事件并清空内部缓冲
|
|
69
|
+
*
|
|
70
|
+
* 维护引擎 runLight 会调用此方法,拿到自上次维护以来的事件流。
|
|
71
|
+
*/
|
|
72
|
+
drain(): readonly ToolCallEvent[];
|
|
73
|
+
/**
|
|
74
|
+
* 修剪过期事件
|
|
75
|
+
*
|
|
76
|
+
* 默认保留 7 天(runLight 末尾调用)。
|
|
77
|
+
*/
|
|
78
|
+
prune(olderThanMs: number): Promise<void> | void;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/signals/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,uCAAuC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iBAAiB;IACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,wBAAwB;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uBAAuB;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEnD;;;;OAIG;IACH,KAAK,IAAI,SAAS,aAAa,EAAE,CAAC;IAElC;;;;OAIG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 行为信号数据模型(P4 自动维护服务 A 层)
|
|
3
|
+
*
|
|
4
|
+
* 从工具调用事件流中提取 implicit behavioral signals,不依赖 agent 主动上报。
|
|
5
|
+
*
|
|
6
|
+
* 数据流:
|
|
7
|
+
* tools/*.execute → ctx.signalSink.append(ToolCallEvent)
|
|
8
|
+
* → signals.jsonl(JSONL, <dataRoot>/.co-engram/)
|
|
9
|
+
* engine.runLight → sink.drain() → extractSignals(events) → BehavioralSignal[]
|
|
10
|
+
*
|
|
11
|
+
* @module @co-engram/core/signals
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/signals/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engram Index — 派生缓存 {stableId → path/title/mtime/...}
|
|
3
|
+
*
|
|
4
|
+
* 设计见 docs/superpowers/specs/2026-06-22-per-edge-synapse-refactor-design.md。
|
|
5
|
+
*
|
|
6
|
+
* 文件位置:`.co-engram/engram-index.json`(gitignore)
|
|
7
|
+
* 用途:
|
|
8
|
+
* - doctor 增量扫描(mtime 比对)
|
|
9
|
+
* - repository 快速查 stableId → path
|
|
10
|
+
* - graph 派生
|
|
11
|
+
* - viewer 渲染
|
|
12
|
+
*
|
|
13
|
+
* @module @co-engram/core/storage
|
|
14
|
+
*/
|
|
15
|
+
import type { StableEngramId, EngramIndexEntry } from "../types/repository-types.js";
|
|
16
|
+
import { type EngramFrontmatter } from "./engram-store.js";
|
|
17
|
+
/** .co-engram/ 顶层缓存目录名 */
|
|
18
|
+
export declare const CO_ENGRAM_CACHE_DIR = ".co-engram";
|
|
19
|
+
/** engram-index.json 文件名 */
|
|
20
|
+
export declare const ENGRAM_INDEX_FILENAME = "engram-index.json";
|
|
21
|
+
/** engram-index.json 完整路径 */
|
|
22
|
+
export declare function engramIndexPath(dataRoot: string): string;
|
|
23
|
+
/** 内存中的 index 结构(用 Map 加速查询) */
|
|
24
|
+
export interface EngramIndexMap {
|
|
25
|
+
readonly version: 1;
|
|
26
|
+
readonly entries: Map<StableEngramId, EngramIndexEntry>;
|
|
27
|
+
lastRebuiltAt: string;
|
|
28
|
+
}
|
|
29
|
+
/** 创建空 index */
|
|
30
|
+
export declare function createEmptyEngramIndex(): EngramIndexMap;
|
|
31
|
+
/**
|
|
32
|
+
* 从磁盘读取 index;不存在或损坏返回空 index。
|
|
33
|
+
*/
|
|
34
|
+
export declare function readEngramIndex(dataRoot: string): EngramIndexMap;
|
|
35
|
+
/**
|
|
36
|
+
* 落盘 index(gitignore,但结构稳定以便人类 debug)。
|
|
37
|
+
*/
|
|
38
|
+
export declare function writeEngramIndex(dataRoot: string, index: EngramIndexMap): void;
|
|
39
|
+
/**
|
|
40
|
+
* 从单条 engram 文件构建 index entry。
|
|
41
|
+
*
|
|
42
|
+
* - slug:frontmatter 显式则锁定,否则从 title slugify
|
|
43
|
+
* - domainTags:frontmatter 显式则锁定,否则从路径推断
|
|
44
|
+
* - mtime / contentHash 必须由调用者传入
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildIndexEntryFromFrontmatter(params: {
|
|
47
|
+
readonly relativePath: string;
|
|
48
|
+
readonly frontmatter: EngramFrontmatter;
|
|
49
|
+
readonly mtime: number;
|
|
50
|
+
readonly contentHash: string;
|
|
51
|
+
}): EngramIndexEntry;
|
|
52
|
+
/**
|
|
53
|
+
* 扫描 dataRoot 下所有 .md,构建 engram-index。
|
|
54
|
+
*
|
|
55
|
+
* 规则:
|
|
56
|
+
* - 跳过 SKIP_DIRECTORIES 中的目录(.co-engram, node_modules, .git, synapses)
|
|
57
|
+
* - 无 frontmatter 的 .md 跳过(由 doctor 报告为 orphan_markdown)
|
|
58
|
+
* - frontmatter 缺 id 的 .md 跳过(由 doctor 报告为 orphan_markdown)
|
|
59
|
+
*/
|
|
60
|
+
export declare function rebuildEngramIndex(dataRoot: string, onOrphan?: (relativePath: string) => void): EngramIndexMap;
|
|
61
|
+
/**
|
|
62
|
+
* 增量更新:仅更新单条 engram 的 index entry。
|
|
63
|
+
*/
|
|
64
|
+
export declare function upsertEngramIndexEntry(index: EngramIndexMap, entry: EngramIndexEntry): EngramIndexMap;
|
|
65
|
+
/**
|
|
66
|
+
* 从 index 中删除一条 engram。
|
|
67
|
+
*/
|
|
68
|
+
export declare function removeEngramIndexEntry(index: EngramIndexMap, id: StableEngramId): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* 按 path 查 stableId(用于 doctor 检测文件移动)。
|
|
71
|
+
*/
|
|
72
|
+
export declare function findEngramIdByPath(index: EngramIndexMap, relativePath: string): StableEngramId | undefined;
|
|
73
|
+
//# sourceMappingURL=engram-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engram-index.d.ts","sourceRoot":"","sources":["../../src/storage/engram-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAEjB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,0BAA0B;AAC1B,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,4BAA4B;AAC5B,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAyBzD,6BAA6B;AAC7B,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IACxD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,gBAAgB;AAChB,wBAAgB,sBAAsB,IAAI,cAAc,CAMvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAwBhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,cAAc,GACpB,IAAI,CAaN;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACrD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,GAAG,gBAAgB,CA6BnB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,GACxC,cAAc,CAgDhB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,gBAAgB,GACtB,cAAc,CAGhB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,cAAc,EACrB,EAAE,EAAE,cAAc,GACjB,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,MAAM,GACnB,cAAc,GAAG,SAAS,CAK5B"}
|