@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,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 多维重要性(spec §8 字段表:personal/team/project/network/temporal/composite)
|
|
3
|
+
*
|
|
4
|
+
* 五维独立追踪 + composite 加权聚合:
|
|
5
|
+
* - personal: 个人相关性(手动设置或系统派生)
|
|
6
|
+
* - team: 团队相关性(手动设置)
|
|
7
|
+
* - project: 项目相关性(手动设置)
|
|
8
|
+
* - network: 网络中心性(由 incomingSynapseCount 派生)
|
|
9
|
+
* - temporal: 时效性(由 lastEffectiveAt + decayHalfLifeDays 派生,艾宾浩斯衰退)
|
|
10
|
+
* - composite: 加权聚合,写入 engram.importance(检索公式消费此值)
|
|
11
|
+
*
|
|
12
|
+
* 默认权重(spec §9 决策 9 派生):
|
|
13
|
+
* personal 0.20 + team 0.25 + project 0.25 + network 0.15 + temporal 0.15 = 1.00
|
|
14
|
+
*
|
|
15
|
+
* 神经科学依据:
|
|
16
|
+
* - personal/temporal 类似情景记忆(episodic)显著性
|
|
17
|
+
* - team/project 类似语义记忆(semantic)共识权重
|
|
18
|
+
* - network 类似突触强度(Hebbian:连接越多越重要)
|
|
19
|
+
*
|
|
20
|
+
* @module @co-engram/core/importance
|
|
21
|
+
*/
|
|
22
|
+
import type { EngramRepository } from "../storage/repository.js";
|
|
23
|
+
import type { ImportanceVector } from "../types/engram.js";
|
|
24
|
+
/** 五维权重(和必须为 1) */
|
|
25
|
+
export interface ImportanceWeights {
|
|
26
|
+
readonly personal: number;
|
|
27
|
+
readonly team: number;
|
|
28
|
+
readonly project: number;
|
|
29
|
+
readonly network: number;
|
|
30
|
+
readonly temporal: number;
|
|
31
|
+
}
|
|
32
|
+
/** 默认权重(spec §9 决策 9 派生) */
|
|
33
|
+
export declare const DEFAULT_IMPORTANCE_WEIGHTS: ImportanceWeights;
|
|
34
|
+
/**
|
|
35
|
+
* 校验权重和为 1(容差 0.001)
|
|
36
|
+
*/
|
|
37
|
+
export declare function validateImportanceWeights(w: ImportanceWeights): void;
|
|
38
|
+
/**
|
|
39
|
+
* 派生 network 维度(网络中心性)
|
|
40
|
+
*
|
|
41
|
+
* `network = min(1, incomingSynapseCount / SATURATION)`
|
|
42
|
+
*
|
|
43
|
+
* 饱和点默认 10:达到 10 条入边即视为高中心性。
|
|
44
|
+
*/
|
|
45
|
+
export declare function deriveNetworkImportance(incomingSynapseCount: number, saturation?: number): number;
|
|
46
|
+
/**
|
|
47
|
+
* 派生 temporal 维度(艾宾浩斯衰退)
|
|
48
|
+
*
|
|
49
|
+
* `temporal = recencyDecay(ageDays, decayHalfLifeDays)`
|
|
50
|
+
*
|
|
51
|
+
* - decayHalfLifeDays=null → 1(永不衰退)
|
|
52
|
+
* - 从未 lastEffectiveAt → 0(年龄无穷大)
|
|
53
|
+
*/
|
|
54
|
+
export declare function deriveTemporalImportance(lastEffectiveAt: string | null | undefined, decayHalfLifeDays: number | null, now: Date): number;
|
|
55
|
+
/**
|
|
56
|
+
* 计算复合重要性
|
|
57
|
+
*
|
|
58
|
+
* `composite = Σ w_i · v_i`(截断到 [0,1])
|
|
59
|
+
*/
|
|
60
|
+
export declare function compositeImportance(v: Omit<ImportanceVector, "composite">, weights?: ImportanceWeights): number;
|
|
61
|
+
/**
|
|
62
|
+
* 构造默认 ImportanceVector(全 0.5 + composite 0.5)
|
|
63
|
+
*
|
|
64
|
+
* 用于未调用 recomputeImportance 的老数据。
|
|
65
|
+
*/
|
|
66
|
+
export declare function defaultImportanceVector(): ImportanceVector;
|
|
67
|
+
export interface RecomputeImportanceOptions {
|
|
68
|
+
/** 手动覆盖 personal/team/project(network/temporal 永远派生) */
|
|
69
|
+
readonly overrides?: Partial<Pick<ImportanceVector, "personal" | "team" | "project">>;
|
|
70
|
+
/** 自定义权重(默认 DEFAULT_IMPORTANCE_WEIGHTS) */
|
|
71
|
+
readonly weights?: ImportanceWeights;
|
|
72
|
+
/** 当前时间(测试用,默认 new Date()) */
|
|
73
|
+
readonly now?: Date;
|
|
74
|
+
/** 是否写回 meta.yaml(默认 true) */
|
|
75
|
+
readonly persist?: boolean;
|
|
76
|
+
/** 调用者标识(persist=true 时写入 updatedBy) */
|
|
77
|
+
readonly updatedBy?: string;
|
|
78
|
+
}
|
|
79
|
+
export interface RecomputeImportanceResult {
|
|
80
|
+
readonly id: string;
|
|
81
|
+
readonly previous: ImportanceVector | undefined;
|
|
82
|
+
readonly next: ImportanceVector;
|
|
83
|
+
readonly previousScalarImportance: number;
|
|
84
|
+
readonly nextScalarImportance: number;
|
|
85
|
+
readonly persisted: boolean;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 重新计算 engram 的多维重要性
|
|
89
|
+
*
|
|
90
|
+
* 1. 读取当前 engram + 已有 importanceVector(若有)
|
|
91
|
+
* 2. network/temporal 派生(不受 overrides 影响)
|
|
92
|
+
* 3. personal/team/project 用 overrides,否则保留原值或默认 0.5
|
|
93
|
+
* 4. 算 composite
|
|
94
|
+
* 5. 持久化:更新 meta.importanceVector + meta.importance = composite
|
|
95
|
+
*/
|
|
96
|
+
export declare function recomputeImportance(repo: EngramRepository, id: string, options?: RecomputeImportanceOptions): RecomputeImportanceResult;
|
|
97
|
+
/**
|
|
98
|
+
* 批量重算(Deep Dreaming / 定期任务调用)
|
|
99
|
+
*
|
|
100
|
+
* 稳定扫描:按 id 字典序。
|
|
101
|
+
*/
|
|
102
|
+
export interface BatchRecomputeResult {
|
|
103
|
+
readonly scanned: number;
|
|
104
|
+
readonly recomputed: number;
|
|
105
|
+
readonly skipped: ReadonlyArray<{
|
|
106
|
+
id: string;
|
|
107
|
+
reason: string;
|
|
108
|
+
}>;
|
|
109
|
+
}
|
|
110
|
+
export declare function recomputeImportanceBatch(repo: EngramRepository, options?: Omit<RecomputeImportanceOptions, "overrides"> & {
|
|
111
|
+
readonly overrides?: (engramId: string) => Partial<Pick<ImportanceVector, "personal" | "team" | "project">> | undefined;
|
|
112
|
+
}): BatchRecomputeResult;
|
|
113
|
+
//# sourceMappingURL=vector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../src/importance/vector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 多维重要性(spec §8 字段表:personal/team/project/network/temporal/composite)
|
|
3
|
+
*
|
|
4
|
+
* 五维独立追踪 + composite 加权聚合:
|
|
5
|
+
* - personal: 个人相关性(手动设置或系统派生)
|
|
6
|
+
* - team: 团队相关性(手动设置)
|
|
7
|
+
* - project: 项目相关性(手动设置)
|
|
8
|
+
* - network: 网络中心性(由 incomingSynapseCount 派生)
|
|
9
|
+
* - temporal: 时效性(由 lastEffectiveAt + decayHalfLifeDays 派生,艾宾浩斯衰退)
|
|
10
|
+
* - composite: 加权聚合,写入 engram.importance(检索公式消费此值)
|
|
11
|
+
*
|
|
12
|
+
* 默认权重(spec §9 决策 9 派生):
|
|
13
|
+
* personal 0.20 + team 0.25 + project 0.25 + network 0.15 + temporal 0.15 = 1.00
|
|
14
|
+
*
|
|
15
|
+
* 神经科学依据:
|
|
16
|
+
* - personal/temporal 类似情景记忆(episodic)显著性
|
|
17
|
+
* - team/project 类似语义记忆(semantic)共识权重
|
|
18
|
+
* - network 类似突触强度(Hebbian:连接越多越重要)
|
|
19
|
+
*
|
|
20
|
+
* @module @co-engram/core/importance
|
|
21
|
+
*/
|
|
22
|
+
import { recencyDecay } from "../retrieval/scoring.js";
|
|
23
|
+
/** 默认权重(spec §9 决策 9 派生) */
|
|
24
|
+
export const DEFAULT_IMPORTANCE_WEIGHTS = {
|
|
25
|
+
personal: 0.2,
|
|
26
|
+
team: 0.25,
|
|
27
|
+
project: 0.25,
|
|
28
|
+
network: 0.15,
|
|
29
|
+
temporal: 0.15,
|
|
30
|
+
};
|
|
31
|
+
/** network 派生:incomingSynapseCount ≥ 此阈值时 network=1 */
|
|
32
|
+
const NETWORK_SATURATION_INCOMING = 10;
|
|
33
|
+
/**
|
|
34
|
+
* 校验权重和为 1(容差 0.001)
|
|
35
|
+
*/
|
|
36
|
+
export function validateImportanceWeights(w) {
|
|
37
|
+
const sum = w.personal + w.team + w.project + w.network + w.temporal;
|
|
38
|
+
if (Math.abs(sum - 1) > 0.001) {
|
|
39
|
+
throw new Error(`Importance weights must sum to 1, got ${sum} (p=${w.personal} t=${w.team} pr=${w.project} n=${w.network} te=${w.temporal})`);
|
|
40
|
+
}
|
|
41
|
+
for (const [name, v] of [
|
|
42
|
+
["personal", w.personal],
|
|
43
|
+
["team", w.team],
|
|
44
|
+
["project", w.project],
|
|
45
|
+
["network", w.network],
|
|
46
|
+
["temporal", w.temporal],
|
|
47
|
+
]) {
|
|
48
|
+
if (v < 0 || v > 1) {
|
|
49
|
+
throw new Error(`Importance weight ${name} must be in [0,1], got ${v}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function clamp01(x) {
|
|
54
|
+
if (Number.isNaN(x))
|
|
55
|
+
return 0;
|
|
56
|
+
if (x < 0)
|
|
57
|
+
return 0;
|
|
58
|
+
if (x > 1)
|
|
59
|
+
return 1;
|
|
60
|
+
return x;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 派生 network 维度(网络中心性)
|
|
64
|
+
*
|
|
65
|
+
* `network = min(1, incomingSynapseCount / SATURATION)`
|
|
66
|
+
*
|
|
67
|
+
* 饱和点默认 10:达到 10 条入边即视为高中心性。
|
|
68
|
+
*/
|
|
69
|
+
export function deriveNetworkImportance(incomingSynapseCount, saturation = NETWORK_SATURATION_INCOMING) {
|
|
70
|
+
if (saturation <= 0)
|
|
71
|
+
return 0;
|
|
72
|
+
return clamp01(incomingSynapseCount / saturation);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 派生 temporal 维度(艾宾浩斯衰退)
|
|
76
|
+
*
|
|
77
|
+
* `temporal = recencyDecay(ageDays, decayHalfLifeDays)`
|
|
78
|
+
*
|
|
79
|
+
* - decayHalfLifeDays=null → 1(永不衰退)
|
|
80
|
+
* - 从未 lastEffectiveAt → 0(年龄无穷大)
|
|
81
|
+
*/
|
|
82
|
+
export function deriveTemporalImportance(lastEffectiveAt, decayHalfLifeDays, now) {
|
|
83
|
+
if (!lastEffectiveAt)
|
|
84
|
+
return 0;
|
|
85
|
+
const ts = new Date(lastEffectiveAt).getTime();
|
|
86
|
+
if (Number.isNaN(ts))
|
|
87
|
+
return 0;
|
|
88
|
+
const ageMs = now.getTime() - ts;
|
|
89
|
+
const ageDays = ageMs < 0 ? 0 : ageMs / (1000 * 60 * 60 * 24);
|
|
90
|
+
return recencyDecay(ageDays, decayHalfLifeDays);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 计算复合重要性
|
|
94
|
+
*
|
|
95
|
+
* `composite = Σ w_i · v_i`(截断到 [0,1])
|
|
96
|
+
*/
|
|
97
|
+
export function compositeImportance(v, weights = DEFAULT_IMPORTANCE_WEIGHTS) {
|
|
98
|
+
validateImportanceWeights(weights);
|
|
99
|
+
const raw = weights.personal * v.personal +
|
|
100
|
+
weights.team * v.team +
|
|
101
|
+
weights.project * v.project +
|
|
102
|
+
weights.network * v.network +
|
|
103
|
+
weights.temporal * v.temporal;
|
|
104
|
+
return clamp01(raw);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* 构造默认 ImportanceVector(全 0.5 + composite 0.5)
|
|
108
|
+
*
|
|
109
|
+
* 用于未调用 recomputeImportance 的老数据。
|
|
110
|
+
*/
|
|
111
|
+
export function defaultImportanceVector() {
|
|
112
|
+
return {
|
|
113
|
+
personal: 0.5,
|
|
114
|
+
team: 0.5,
|
|
115
|
+
project: 0.5,
|
|
116
|
+
network: 0,
|
|
117
|
+
temporal: 0,
|
|
118
|
+
composite: 0.5,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 重新计算 engram 的多维重要性
|
|
123
|
+
*
|
|
124
|
+
* 1. 读取当前 engram + 已有 importanceVector(若有)
|
|
125
|
+
* 2. network/temporal 派生(不受 overrides 影响)
|
|
126
|
+
* 3. personal/team/project 用 overrides,否则保留原值或默认 0.5
|
|
127
|
+
* 4. 算 composite
|
|
128
|
+
* 5. 持久化:更新 meta.importanceVector + meta.importance = composite
|
|
129
|
+
*/
|
|
130
|
+
export function recomputeImportance(repo, id, options = {}) {
|
|
131
|
+
if (!repo.exists(id)) {
|
|
132
|
+
throw new Error(`Engram not found: ${id}`);
|
|
133
|
+
}
|
|
134
|
+
const engram = repo.readEngram(id);
|
|
135
|
+
const weights = options.weights ?? DEFAULT_IMPORTANCE_WEIGHTS;
|
|
136
|
+
const now = options.now ?? new Date();
|
|
137
|
+
const persist = options.persist ?? true;
|
|
138
|
+
const prevVector = engram.importanceVector;
|
|
139
|
+
const prevScalar = engram.importance;
|
|
140
|
+
const personal = options.overrides?.personal ?? prevVector?.personal ?? 0.5;
|
|
141
|
+
const team = options.overrides?.team ?? prevVector?.team ?? 0.5;
|
|
142
|
+
const project = options.overrides?.project ?? prevVector?.project ?? 0.5;
|
|
143
|
+
const network = deriveNetworkImportance(engram.incomingSynapseCount);
|
|
144
|
+
const temporal = deriveTemporalImportance(engram.lastEffectiveAt, engram.decayHalfLifeDays, now);
|
|
145
|
+
const composite = compositeImportance({ personal, team, project, network, temporal }, weights);
|
|
146
|
+
const next = {
|
|
147
|
+
personal,
|
|
148
|
+
team,
|
|
149
|
+
project,
|
|
150
|
+
network,
|
|
151
|
+
temporal,
|
|
152
|
+
composite,
|
|
153
|
+
};
|
|
154
|
+
if (persist) {
|
|
155
|
+
repo.updateImportanceVector(id, {
|
|
156
|
+
vector: next,
|
|
157
|
+
updatedBy: options.updatedBy ?? "importance-recompute",
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
id,
|
|
162
|
+
previous: prevVector,
|
|
163
|
+
next,
|
|
164
|
+
previousScalarImportance: prevScalar,
|
|
165
|
+
nextScalarImportance: composite,
|
|
166
|
+
persisted: persist,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
export function recomputeImportanceBatch(repo, options = {}) {
|
|
170
|
+
const now = options.now ?? new Date();
|
|
171
|
+
const persist = options.persist ?? true;
|
|
172
|
+
const entries = [...repo.listEngrams()].sort((a, b) => a.id < b.id ? -1 : 1);
|
|
173
|
+
let scanned = 0;
|
|
174
|
+
let recomputed = 0;
|
|
175
|
+
const skipped = [];
|
|
176
|
+
for (const entry of entries) {
|
|
177
|
+
const engram = repo.readEngram(entry.id);
|
|
178
|
+
if (engram.status !== "active") {
|
|
179
|
+
skipped.push({ id: engram.id, reason: `status=${engram.status}` });
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
scanned += 1;
|
|
183
|
+
const overrides = options.overrides?.(engram.id);
|
|
184
|
+
try {
|
|
185
|
+
recomputeImportance(repo, engram.id, {
|
|
186
|
+
...options,
|
|
187
|
+
overrides,
|
|
188
|
+
now,
|
|
189
|
+
persist,
|
|
190
|
+
});
|
|
191
|
+
recomputed += 1;
|
|
192
|
+
}
|
|
193
|
+
catch (e) {
|
|
194
|
+
skipped.push({
|
|
195
|
+
id: engram.id,
|
|
196
|
+
reason: `failed: ${e.message}`,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return { scanned, recomputed, skipped };
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=vector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../../src/importance/vector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Digest 索引构建器
|
|
3
|
+
*
|
|
4
|
+
* 扫描仓库中所有 engram 文件(单文件布局),构建 digest.jsonl 索引。
|
|
5
|
+
* 支持增量构建(基于 mtime / contentHash 对比)。
|
|
6
|
+
*
|
|
7
|
+
* @module @co-engram/core/index
|
|
8
|
+
*/
|
|
9
|
+
import type { EngramRepository } from "../storage/repository.js";
|
|
10
|
+
import type { DigestBuildResult, DigestLine } from "./types.js";
|
|
11
|
+
/**
|
|
12
|
+
* 从 engram id 读取所有需要的字段
|
|
13
|
+
*/
|
|
14
|
+
export declare function readDigestLine(repo: EngramRepository, id: string): DigestLine | null;
|
|
15
|
+
/**
|
|
16
|
+
* Digest 构建器
|
|
17
|
+
*/
|
|
18
|
+
export declare class DigestBuilder {
|
|
19
|
+
private readonly repo;
|
|
20
|
+
private readonly cachePath;
|
|
21
|
+
constructor(repo: EngramRepository, cachePath: string);
|
|
22
|
+
/** digest.jsonl 路径 */
|
|
23
|
+
get digestFilePath(): string;
|
|
24
|
+
/**
|
|
25
|
+
* 读取现有 digest(按 id 索引)
|
|
26
|
+
*/
|
|
27
|
+
readExisting(): Map<string, DigestLine>;
|
|
28
|
+
/**
|
|
29
|
+
* 增量构建 digest 索引
|
|
30
|
+
*
|
|
31
|
+
* 通过对比 engram.updatedAt 和 contentHash 判断是否变化
|
|
32
|
+
*/
|
|
33
|
+
buildIncremental(): DigestBuildResult;
|
|
34
|
+
/**
|
|
35
|
+
* 完全重建(强制全量)
|
|
36
|
+
*/
|
|
37
|
+
rebuild(): DigestBuildResult;
|
|
38
|
+
/**
|
|
39
|
+
* 写入 digest.jsonl
|
|
40
|
+
*/
|
|
41
|
+
private write;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 收集仓库中所有 engram 的 DigestLine(纯内存,不写文件)
|
|
45
|
+
*
|
|
46
|
+
* 用于 search 索引重建等场景:需要真实 importance / decayHalfLifeDays /
|
|
47
|
+
* retrievalCount 等字段参与三因子打分,但又不需要持久化 digest.jsonl 缓存。
|
|
48
|
+
*
|
|
49
|
+
* 与 `DigestBuilder.rebuild()` 区别:
|
|
50
|
+
* - `DigestBuilder.rebuild()` 写文件 + 返回统计
|
|
51
|
+
* - `collectDigestLines()` 不写文件,直接返回 DigestLine[]
|
|
52
|
+
*
|
|
53
|
+
* 行为:
|
|
54
|
+
* - 跳过 repo.exists(id) 为 false 的条目(可能并发删除)
|
|
55
|
+
* - 跳过 readEngram 失败的条目(损坏文件由 repository 层吞错)
|
|
56
|
+
* - 返回顺序与 repo.listEngramIndex() 一致(确定性)
|
|
57
|
+
*/
|
|
58
|
+
export declare function collectDigestLines(repo: EngramRepository): DigestLine[];
|
|
59
|
+
//# sourceMappingURL=digest-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digest-builder.d.ts","sourceRoot":"","sources":["../../src/index/digest-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEhE;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,MAAM,GACT,UAAU,GAAG,IAAI,CAmCnB;AAED;;GAEG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,MAAM;IAGpC,sBAAsB;IACtB,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACH,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAqBvC;;;;OAIG;IACH,gBAAgB,IAAI,iBAAiB;IAkDrC;;OAEG;IACH,OAAO,IAAI,iBAAiB;IAyB5B;;OAEG;IACH,OAAO,CAAC,KAAK;CAOd;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,UAAU,EAAE,CAOvE"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Digest 索引构建器
|
|
3
|
+
*
|
|
4
|
+
* 扫描仓库中所有 engram 文件(单文件布局),构建 digest.jsonl 索引。
|
|
5
|
+
* 支持增量构建(基于 mtime / contentHash 对比)。
|
|
6
|
+
*
|
|
7
|
+
* @module @co-engram/core/index
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
/**
|
|
12
|
+
* 从 engram id 读取所有需要的字段
|
|
13
|
+
*/
|
|
14
|
+
export function readDigestLine(repo, id) {
|
|
15
|
+
if (!repo.exists(id)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const engram = repo.readEngram(id);
|
|
19
|
+
return {
|
|
20
|
+
id: engram.id,
|
|
21
|
+
title: engram.title,
|
|
22
|
+
kind: engram.kind,
|
|
23
|
+
kinds: engram.kinds,
|
|
24
|
+
summary: engram.summary,
|
|
25
|
+
domainTags: engram.domainTags,
|
|
26
|
+
contextTags: engram.contextTags,
|
|
27
|
+
importance: engram.importance,
|
|
28
|
+
importanceVector: engram.importanceVector,
|
|
29
|
+
emotionalValence: engram.emotionalValence,
|
|
30
|
+
freshness: engram.freshness,
|
|
31
|
+
status: engram.status,
|
|
32
|
+
sourceType: engram.sourceType,
|
|
33
|
+
createdBy: engram.createdBy,
|
|
34
|
+
createdAt: engram.createdAt,
|
|
35
|
+
updatedAt: engram.updatedAt,
|
|
36
|
+
lastRetrievedAt: engram.lastRetrievedAt ?? null,
|
|
37
|
+
lastEffectiveAt: engram.lastEffectiveAt ?? null,
|
|
38
|
+
retrievalCount: engram.retrievalCount,
|
|
39
|
+
effectiveRetrievals: engram.effectiveRetrievals,
|
|
40
|
+
failedUses: engram.failedUses,
|
|
41
|
+
reinforcementScore: engram.reinforcementScore,
|
|
42
|
+
decayHalfLifeDays: engram.decayHalfLifeDays,
|
|
43
|
+
contentSize: engram.contentSize,
|
|
44
|
+
contentHash: engram.contentHash,
|
|
45
|
+
outgoingSynapseCount: engram.outgoingSynapseCount,
|
|
46
|
+
incomingSynapseCount: engram.incomingSynapseCount,
|
|
47
|
+
activeContradictionCount: engram.activeContradictionCount,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Digest 构建器
|
|
52
|
+
*/
|
|
53
|
+
export class DigestBuilder {
|
|
54
|
+
repo;
|
|
55
|
+
cachePath;
|
|
56
|
+
constructor(repo, cachePath) {
|
|
57
|
+
this.repo = repo;
|
|
58
|
+
this.cachePath = cachePath;
|
|
59
|
+
}
|
|
60
|
+
/** digest.jsonl 路径 */
|
|
61
|
+
get digestFilePath() {
|
|
62
|
+
return join(this.cachePath, "digest.jsonl");
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 读取现有 digest(按 id 索引)
|
|
66
|
+
*/
|
|
67
|
+
readExisting() {
|
|
68
|
+
const map = new Map();
|
|
69
|
+
if (!existsSync(this.digestFilePath)) {
|
|
70
|
+
return map;
|
|
71
|
+
}
|
|
72
|
+
const raw = readFileSync(this.digestFilePath, "utf8");
|
|
73
|
+
for (const line of raw.split("\n")) {
|
|
74
|
+
const trimmed = line.trim();
|
|
75
|
+
if (!trimmed) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
const parsed = JSON.parse(trimmed);
|
|
80
|
+
map.set(parsed.id, parsed);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// 跳过无效行
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return map;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* 增量构建 digest 索引
|
|
90
|
+
*
|
|
91
|
+
* 通过对比 engram.updatedAt 和 contentHash 判断是否变化
|
|
92
|
+
*/
|
|
93
|
+
buildIncremental() {
|
|
94
|
+
const existing = this.readExisting();
|
|
95
|
+
const entries = this.repo.listEngramIndex();
|
|
96
|
+
const currentIds = new Set();
|
|
97
|
+
let added = 0;
|
|
98
|
+
let updated = 0;
|
|
99
|
+
let unchanged = 0;
|
|
100
|
+
let removed = 0;
|
|
101
|
+
const result = new Map();
|
|
102
|
+
for (const entry of entries) {
|
|
103
|
+
currentIds.add(entry.id);
|
|
104
|
+
const newLine = readDigestLine(this.repo, entry.id);
|
|
105
|
+
if (!newLine) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const oldLine = existing.get(entry.id);
|
|
109
|
+
if (!oldLine) {
|
|
110
|
+
added++;
|
|
111
|
+
}
|
|
112
|
+
else if (oldLine.updatedAt !== newLine.updatedAt ||
|
|
113
|
+
oldLine.contentHash !== newLine.contentHash) {
|
|
114
|
+
updated++;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
unchanged++;
|
|
118
|
+
}
|
|
119
|
+
result.set(entry.id, newLine);
|
|
120
|
+
}
|
|
121
|
+
// 统计被删除的
|
|
122
|
+
for (const id of existing.keys()) {
|
|
123
|
+
if (!currentIds.has(id)) {
|
|
124
|
+
removed++;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
this.write(result.values());
|
|
128
|
+
return {
|
|
129
|
+
total: result.size,
|
|
130
|
+
added,
|
|
131
|
+
updated,
|
|
132
|
+
unchanged,
|
|
133
|
+
removed,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* 完全重建(强制全量)
|
|
138
|
+
*/
|
|
139
|
+
rebuild() {
|
|
140
|
+
const entries = this.repo.listEngramIndex();
|
|
141
|
+
const result = new Map();
|
|
142
|
+
let added = 0;
|
|
143
|
+
for (const entry of entries) {
|
|
144
|
+
const newLine = readDigestLine(this.repo, entry.id);
|
|
145
|
+
if (!newLine) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
result.set(entry.id, newLine);
|
|
149
|
+
added++;
|
|
150
|
+
}
|
|
151
|
+
this.write(result.values());
|
|
152
|
+
return {
|
|
153
|
+
total: result.size,
|
|
154
|
+
added,
|
|
155
|
+
updated: 0,
|
|
156
|
+
unchanged: 0,
|
|
157
|
+
removed: 0,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* 写入 digest.jsonl
|
|
162
|
+
*/
|
|
163
|
+
write(lines) {
|
|
164
|
+
mkdirSync(this.cachePath, { recursive: true });
|
|
165
|
+
const text = Array.from(lines)
|
|
166
|
+
.map((line) => JSON.stringify(line))
|
|
167
|
+
.join("\n");
|
|
168
|
+
writeFileSync(this.digestFilePath, text + "\n", "utf8");
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* 收集仓库中所有 engram 的 DigestLine(纯内存,不写文件)
|
|
173
|
+
*
|
|
174
|
+
* 用于 search 索引重建等场景:需要真实 importance / decayHalfLifeDays /
|
|
175
|
+
* retrievalCount 等字段参与三因子打分,但又不需要持久化 digest.jsonl 缓存。
|
|
176
|
+
*
|
|
177
|
+
* 与 `DigestBuilder.rebuild()` 区别:
|
|
178
|
+
* - `DigestBuilder.rebuild()` 写文件 + 返回统计
|
|
179
|
+
* - `collectDigestLines()` 不写文件,直接返回 DigestLine[]
|
|
180
|
+
*
|
|
181
|
+
* 行为:
|
|
182
|
+
* - 跳过 repo.exists(id) 为 false 的条目(可能并发删除)
|
|
183
|
+
* - 跳过 readEngram 失败的条目(损坏文件由 repository 层吞错)
|
|
184
|
+
* - 返回顺序与 repo.listEngramIndex() 一致(确定性)
|
|
185
|
+
*/
|
|
186
|
+
export function collectDigestLines(repo) {
|
|
187
|
+
const out = [];
|
|
188
|
+
for (const entry of repo.listEngramIndex()) {
|
|
189
|
+
const line = readDigestLine(repo, entry.id);
|
|
190
|
+
if (line)
|
|
191
|
+
out.push(line);
|
|
192
|
+
}
|
|
193
|
+
return out;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=digest-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digest-builder.js","sourceRoot":"","sources":["../../src/index/digest-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph 索引构建器
|
|
3
|
+
*
|
|
4
|
+
* 从所有 engrams/synapses/*.yaml 收集所有出边,构建 graph.json 索引。
|
|
5
|
+
*
|
|
6
|
+
* @module @co-engram/core/index
|
|
7
|
+
*/
|
|
8
|
+
import type { EngramRepository } from "../storage/repository.js";
|
|
9
|
+
import type { GraphIndex } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Graph 构建器
|
|
12
|
+
*/
|
|
13
|
+
export declare class GraphBuilder {
|
|
14
|
+
private readonly repo;
|
|
15
|
+
private readonly cachePath;
|
|
16
|
+
constructor(repo: EngramRepository, cachePath: string);
|
|
17
|
+
/** graph.json 路径 */
|
|
18
|
+
get graphFilePath(): string;
|
|
19
|
+
/**
|
|
20
|
+
* 完全重建 graph 索引
|
|
21
|
+
*/
|
|
22
|
+
rebuild(): {
|
|
23
|
+
nodes: number;
|
|
24
|
+
edges: number;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* 读取 graph.json
|
|
28
|
+
*/
|
|
29
|
+
read(): GraphIndex | null;
|
|
30
|
+
private write;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=graph-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-builder.d.ts","sourceRoot":"","sources":["../../src/index/graph-builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAa,UAAU,EAAa,MAAM,YAAY,CAAC;AAEnE;;GAEG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,MAAM;IAGpC,oBAAoB;IACpB,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,OAAO,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAiE3C;;OAEG;IACH,IAAI,IAAI,UAAU,GAAG,IAAI;IAQzB,OAAO,CAAC,KAAK;CAId"}
|