@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/perspectives/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/perspectives/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 多视角保留(spec §5.3 机制 3,P3 4.4)
|
|
3
|
+
*
|
|
4
|
+
* 抗认知失调:矛盾 engram 并存且都可检索,不强制消除矛盾。
|
|
5
|
+
*
|
|
6
|
+
* 设计原则:
|
|
7
|
+
* - 检索时主动展示 contradicts 关系(双方都被返回)
|
|
8
|
+
* - 不主动排除任一方(避免单视角确认偏误)
|
|
9
|
+
* - 标注 resolutionState(pending/escalated/contested/...)
|
|
10
|
+
* - perspective 字段记录 engram 所属视角("team-a"、"expert-yang")
|
|
11
|
+
*
|
|
12
|
+
* @module @co-engram/core/perspectives
|
|
13
|
+
*/
|
|
14
|
+
import type { EngramRepository } from "../storage/repository.js";
|
|
15
|
+
import type { EngramKind, EngramId } from "../types/engram.js";
|
|
16
|
+
import type { SynapseResolutionState } from "../types/synapse.js";
|
|
17
|
+
/** 单条 contradicts 视图 */
|
|
18
|
+
export interface ContradictingView {
|
|
19
|
+
readonly engramId: EngramId;
|
|
20
|
+
readonly title: string;
|
|
21
|
+
readonly kind: EngramKind;
|
|
22
|
+
readonly perspective?: string;
|
|
23
|
+
/** outgoing = center 主动反驳 other;incoming = other 反驳 center */
|
|
24
|
+
readonly direction: "outgoing" | "incoming";
|
|
25
|
+
readonly resolutionState?: SynapseResolutionState;
|
|
26
|
+
readonly synapseId: string;
|
|
27
|
+
}
|
|
28
|
+
/** 单个 engram 的多视角包 */
|
|
29
|
+
export interface MultiViewBundle {
|
|
30
|
+
readonly centerId: EngramId;
|
|
31
|
+
readonly contradictions: readonly ContradictingView[];
|
|
32
|
+
}
|
|
33
|
+
/** 检索结果 + 附加视图 */
|
|
34
|
+
export interface EnrichedResult {
|
|
35
|
+
readonly engramId: EngramId;
|
|
36
|
+
readonly contradictsViews: readonly ContradictingView[];
|
|
37
|
+
}
|
|
38
|
+
/** contradiction cluster(视角群) */
|
|
39
|
+
export interface ContradictionCluster {
|
|
40
|
+
readonly clusterId: string;
|
|
41
|
+
readonly memberIds: readonly EngramId[];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 收集单个 engram 的所有 contradicts 视图(双向)
|
|
45
|
+
*
|
|
46
|
+
* outgoing: center 的 synapses.outgoing 中 kind=contradicts
|
|
47
|
+
* incoming: 其他 engram 的 outgoing 指向 center 且 kind=contradicts
|
|
48
|
+
*/
|
|
49
|
+
export declare function gatherContradictingViews(repo: EngramRepository, engramId: EngramId): MultiViewBundle;
|
|
50
|
+
/**
|
|
51
|
+
* 检索结果后处理:对每个结果附加 contradicts 视图
|
|
52
|
+
*
|
|
53
|
+
* 关键设计:本函数**不会从结果中移除任何 engram**,只附加 contradicts 元信息。
|
|
54
|
+
* 即使 other 的 resolutionState=resolved 或 refuted,也仍然返回(保留审计痕迹)。
|
|
55
|
+
*
|
|
56
|
+
* @param resultIds 检索返回的 engram ID 列表
|
|
57
|
+
* @param options.maxViewsPerResult 每个结果最多附加多少个视图(默认 5)
|
|
58
|
+
*/
|
|
59
|
+
export declare function enrichWithContradictingViews(repo: EngramRepository, resultIds: readonly EngramId[], options?: {
|
|
60
|
+
readonly maxViewsPerResult?: number;
|
|
61
|
+
}): EnrichedResult[];
|
|
62
|
+
/**
|
|
63
|
+
* 找出整个仓库的 contradiction clusters(视角群)
|
|
64
|
+
*
|
|
65
|
+
* 算法:把 contradicts synapse 视为无向边,做 Union-Find 找连通分量。
|
|
66
|
+
* 每个 cluster 是一组互相矛盾的 engram(视角群)。
|
|
67
|
+
*/
|
|
68
|
+
export declare function findContradictionClusters(repo: EngramRepository): ContradictionCluster[];
|
|
69
|
+
/**
|
|
70
|
+
* 统计:仓库中 multi-view 相关指标
|
|
71
|
+
*/
|
|
72
|
+
export interface MultiViewStats {
|
|
73
|
+
readonly totalContradictsEdges: number;
|
|
74
|
+
readonly activeContradictions: number;
|
|
75
|
+
readonly resolvedContradictions: number;
|
|
76
|
+
readonly clusters: number;
|
|
77
|
+
readonly largestClusterSize: number;
|
|
78
|
+
readonly distinctPerspectives: number;
|
|
79
|
+
}
|
|
80
|
+
export declare function computeMultiViewStats(repo: EngramRepository): MultiViewStats;
|
|
81
|
+
//# sourceMappingURL=multi-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-view.d.ts","sourceRoot":"","sources":["../../src/perspectives/multi-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,wBAAwB;AACxB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;IAC5C,QAAQ,CAAC,eAAe,CAAC,EAAE,sBAAsB,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,sBAAsB;AACtB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACvD;AAED,kBAAkB;AAClB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACzD;AAED,iCAAiC;AACjC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;CACzC;AAID;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,QAAQ,GACjB,eAAe,CA+DjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,OAAO,GAAE;IACP,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAChC,GACL,cAAc,EAAE,CAalB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,gBAAgB,GACrB,oBAAoB,EAAE,CAyExB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAiC5E"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 多视角保留(spec §5.3 机制 3,P3 4.4)
|
|
3
|
+
*
|
|
4
|
+
* 抗认知失调:矛盾 engram 并存且都可检索,不强制消除矛盾。
|
|
5
|
+
*
|
|
6
|
+
* 设计原则:
|
|
7
|
+
* - 检索时主动展示 contradicts 关系(双方都被返回)
|
|
8
|
+
* - 不主动排除任一方(避免单视角确认偏误)
|
|
9
|
+
* - 标注 resolutionState(pending/escalated/contested/...)
|
|
10
|
+
* - perspective 字段记录 engram 所属视角("team-a"、"expert-yang")
|
|
11
|
+
*
|
|
12
|
+
* @module @co-engram/core/perspectives
|
|
13
|
+
*/
|
|
14
|
+
const DEFAULT_MAX_VIEWS_PER_RESULT = 5;
|
|
15
|
+
/**
|
|
16
|
+
* 收集单个 engram 的所有 contradicts 视图(双向)
|
|
17
|
+
*
|
|
18
|
+
* outgoing: center 的 synapses.outgoing 中 kind=contradicts
|
|
19
|
+
* incoming: 其他 engram 的 outgoing 指向 center 且 kind=contradicts
|
|
20
|
+
*/
|
|
21
|
+
export function gatherContradictingViews(repo, engramId) {
|
|
22
|
+
if (!repo.exists(engramId)) {
|
|
23
|
+
throw new Error(`Engram not found: ${engramId}`);
|
|
24
|
+
}
|
|
25
|
+
const views = [];
|
|
26
|
+
const seen = new Set();
|
|
27
|
+
// === outgoing:center 反驳别人 ===
|
|
28
|
+
const outgoing = repo.readSynapses(engramId).outgoing;
|
|
29
|
+
for (const syn of outgoing) {
|
|
30
|
+
if (syn.kind !== "contradicts")
|
|
31
|
+
continue;
|
|
32
|
+
if (!repo.exists(syn.to))
|
|
33
|
+
continue; // 跳过 dangling
|
|
34
|
+
const other = repo.readEngram(syn.to);
|
|
35
|
+
const key = `out:${syn.to}`;
|
|
36
|
+
if (seen.has(key))
|
|
37
|
+
continue;
|
|
38
|
+
seen.add(key);
|
|
39
|
+
views.push({
|
|
40
|
+
engramId: other.id,
|
|
41
|
+
title: other.title,
|
|
42
|
+
kind: other.kind,
|
|
43
|
+
perspective: other.perspective,
|
|
44
|
+
direction: "outgoing",
|
|
45
|
+
resolutionState: syn.resolutionState,
|
|
46
|
+
synapseId: syn.id,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// === incoming:别人反驳 center ===
|
|
50
|
+
for (const entry of repo.listEngrams()) {
|
|
51
|
+
if (entry.id === engramId)
|
|
52
|
+
continue;
|
|
53
|
+
const file = repo.readSynapses(entry.id);
|
|
54
|
+
for (const syn of file.outgoing) {
|
|
55
|
+
if (syn.kind !== "contradicts")
|
|
56
|
+
continue;
|
|
57
|
+
if (syn.to !== engramId)
|
|
58
|
+
continue;
|
|
59
|
+
const other = repo.readEngram(entry.id);
|
|
60
|
+
const key = `in:${entry.id}`;
|
|
61
|
+
if (seen.has(key))
|
|
62
|
+
continue;
|
|
63
|
+
seen.add(key);
|
|
64
|
+
views.push({
|
|
65
|
+
engramId: other.id,
|
|
66
|
+
title: other.title,
|
|
67
|
+
kind: other.kind,
|
|
68
|
+
perspective: other.perspective,
|
|
69
|
+
direction: "incoming",
|
|
70
|
+
resolutionState: syn.resolutionState,
|
|
71
|
+
synapseId: syn.id,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// 排序:incoming 优先(外部挑战更值得关注),然后按 engramId 字典序
|
|
76
|
+
views.sort((a, b) => {
|
|
77
|
+
if (a.direction !== b.direction) {
|
|
78
|
+
return a.direction === "incoming" ? -1 : 1;
|
|
79
|
+
}
|
|
80
|
+
return a.engramId < b.engramId ? -1 : 1;
|
|
81
|
+
});
|
|
82
|
+
return {
|
|
83
|
+
centerId: engramId,
|
|
84
|
+
contradictions: views,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 检索结果后处理:对每个结果附加 contradicts 视图
|
|
89
|
+
*
|
|
90
|
+
* 关键设计:本函数**不会从结果中移除任何 engram**,只附加 contradicts 元信息。
|
|
91
|
+
* 即使 other 的 resolutionState=resolved 或 refuted,也仍然返回(保留审计痕迹)。
|
|
92
|
+
*
|
|
93
|
+
* @param resultIds 检索返回的 engram ID 列表
|
|
94
|
+
* @param options.maxViewsPerResult 每个结果最多附加多少个视图(默认 5)
|
|
95
|
+
*/
|
|
96
|
+
export function enrichWithContradictingViews(repo, resultIds, options = {}) {
|
|
97
|
+
const maxViews = options.maxViewsPerResult ?? DEFAULT_MAX_VIEWS_PER_RESULT;
|
|
98
|
+
return resultIds.map((id) => {
|
|
99
|
+
if (!repo.exists(id)) {
|
|
100
|
+
return { engramId: id, contradictsViews: [] };
|
|
101
|
+
}
|
|
102
|
+
const bundle = gatherContradictingViews(repo, id);
|
|
103
|
+
return {
|
|
104
|
+
engramId: id,
|
|
105
|
+
contradictsViews: bundle.contradictions.slice(0, maxViews),
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 找出整个仓库的 contradiction clusters(视角群)
|
|
111
|
+
*
|
|
112
|
+
* 算法:把 contradicts synapse 视为无向边,做 Union-Find 找连通分量。
|
|
113
|
+
* 每个 cluster 是一组互相矛盾的 engram(视角群)。
|
|
114
|
+
*/
|
|
115
|
+
export function findContradictionClusters(repo) {
|
|
116
|
+
// 收集所有 contradicts 边
|
|
117
|
+
const edges = [];
|
|
118
|
+
const allEngrams = new Set();
|
|
119
|
+
for (const entry of repo.listEngrams()) {
|
|
120
|
+
allEngrams.add(entry.id);
|
|
121
|
+
const file = repo.readSynapses(entry.id);
|
|
122
|
+
for (const syn of file.outgoing) {
|
|
123
|
+
if (syn.kind !== "contradicts")
|
|
124
|
+
continue;
|
|
125
|
+
if (!repo.exists(syn.to))
|
|
126
|
+
continue;
|
|
127
|
+
edges.push({ a: entry.id, b: syn.to });
|
|
128
|
+
allEngrams.add(syn.to);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Union-Find
|
|
132
|
+
const parent = new Map();
|
|
133
|
+
function find(x) {
|
|
134
|
+
if (!parent.has(x))
|
|
135
|
+
parent.set(x, x);
|
|
136
|
+
let root = x;
|
|
137
|
+
while (parent.get(root) !== root) {
|
|
138
|
+
root = parent.get(root);
|
|
139
|
+
}
|
|
140
|
+
// path compression
|
|
141
|
+
let cur = x;
|
|
142
|
+
while (parent.get(cur) !== root) {
|
|
143
|
+
const next = parent.get(cur);
|
|
144
|
+
parent.set(cur, root);
|
|
145
|
+
cur = next;
|
|
146
|
+
}
|
|
147
|
+
return root;
|
|
148
|
+
}
|
|
149
|
+
function union(a, b) {
|
|
150
|
+
const ra = find(a);
|
|
151
|
+
const rb = find(b);
|
|
152
|
+
if (ra !== rb) {
|
|
153
|
+
parent.set(ra, rb);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
for (const e of edges) {
|
|
157
|
+
union(e.a, e.b);
|
|
158
|
+
}
|
|
159
|
+
// 收集每个 root 下的成员
|
|
160
|
+
const clusters = new Map();
|
|
161
|
+
for (const id of allEngrams) {
|
|
162
|
+
const root = find(id);
|
|
163
|
+
const arr = clusters.get(root) ?? [];
|
|
164
|
+
arr.push(id);
|
|
165
|
+
clusters.set(root, arr);
|
|
166
|
+
}
|
|
167
|
+
// 过滤:只保留 ≥ 2 个成员的 cluster(孤立节点不算 cluster)
|
|
168
|
+
const result = [];
|
|
169
|
+
for (const [, members] of clusters) {
|
|
170
|
+
if (members.length < 2)
|
|
171
|
+
continue;
|
|
172
|
+
const sorted = [...members].sort();
|
|
173
|
+
result.push({
|
|
174
|
+
clusterId: `cluster-${sorted[0].replace(/\//g, "_")}`,
|
|
175
|
+
memberIds: sorted,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
// 排序:成员数多的优先;同 size 按 clusterId 字典序
|
|
179
|
+
result.sort((a, b) => {
|
|
180
|
+
if (b.memberIds.length !== a.memberIds.length) {
|
|
181
|
+
return b.memberIds.length - a.memberIds.length;
|
|
182
|
+
}
|
|
183
|
+
return a.clusterId < b.clusterId ? -1 : 1;
|
|
184
|
+
});
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
export function computeMultiViewStats(repo) {
|
|
188
|
+
let totalEdges = 0;
|
|
189
|
+
let active = 0;
|
|
190
|
+
let resolved = 0;
|
|
191
|
+
const perspectives = new Set();
|
|
192
|
+
for (const entry of repo.listEngrams()) {
|
|
193
|
+
const engram = repo.readEngram(entry.id);
|
|
194
|
+
if (engram.perspective)
|
|
195
|
+
perspectives.add(engram.perspective);
|
|
196
|
+
const file = repo.readSynapses(entry.id);
|
|
197
|
+
for (const syn of file.outgoing) {
|
|
198
|
+
if (syn.kind !== "contradicts")
|
|
199
|
+
continue;
|
|
200
|
+
totalEdges += 1;
|
|
201
|
+
const status = syn.resolutionState?.status;
|
|
202
|
+
if (status === "resolved" || status === "auto_resolved") {
|
|
203
|
+
resolved += 1;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
active += 1;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const clusters = findContradictionClusters(repo);
|
|
211
|
+
const largest = clusters.reduce((m, c) => Math.max(m, c.memberIds.length), 0);
|
|
212
|
+
return {
|
|
213
|
+
totalContradictsEdges: totalEdges,
|
|
214
|
+
activeContradictions: active,
|
|
215
|
+
resolvedContradictions: resolved,
|
|
216
|
+
clusters: clusters.length,
|
|
217
|
+
largestClusterSize: largest,
|
|
218
|
+
distinctPerspectives: perspectives.size,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=multi-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-view.js","sourceRoot":"","sources":["../../src/perspectives/multi-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Co-Engram memory prompt builder(host-agnostic)
|
|
3
|
+
*
|
|
4
|
+
* 生成注入到 LLM 系统提示的 "## Memory Recall" section。
|
|
5
|
+
*
|
|
6
|
+
* 三层设计(可独立启用/禁用):
|
|
7
|
+
*
|
|
8
|
+
* 1. 基础引导(常驻)——何时调用 memory_search / 何时跳过 / 如何解读结果
|
|
9
|
+
* 2. Proposal 提醒(条件性)——count > 0 时注入
|
|
10
|
+
* 3. 自进化信号(条件性)——基于 prompt-signals.json:
|
|
11
|
+
* - topTags(高频 engram 领域)
|
|
12
|
+
* - lowConfidenceTopics(RPE false negative 检测)
|
|
13
|
+
*
|
|
14
|
+
* 所有文字走 i18n(en/zh)。
|
|
15
|
+
*
|
|
16
|
+
* 宿主集成:
|
|
17
|
+
* - OpenClaw:`registerMemoryCapability.promptBuilder`
|
|
18
|
+
* - Claude Code MCP:`serverInfo.instructions`(静态)+ hook(动态)
|
|
19
|
+
*
|
|
20
|
+
* @module @co-engram/core/prompt-builder
|
|
21
|
+
*/
|
|
22
|
+
import type { Language } from "../i18n/index.js";
|
|
23
|
+
import type { BuildPromptInput, PromptBuilder, PromptSignals } from "./types.js";
|
|
24
|
+
export type { BuildPromptInput, PromptBuilder, PromptSignals };
|
|
25
|
+
/**
|
|
26
|
+
* 主构建函数:组装所有部分
|
|
27
|
+
*
|
|
28
|
+
* 返回 string[](宿主期望的 prompt lines 格式)。
|
|
29
|
+
* 每个 element 是一段,宿主用换行连接。
|
|
30
|
+
*
|
|
31
|
+
* 工具未注册时返回空(没有任何 memory 工具就不需要 memory section)。
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildCoEngramMemoryPrompt(input: BuildPromptInput): readonly string[];
|
|
34
|
+
/**
|
|
35
|
+
* 工厂:创建闭包绑定的 prompt builder
|
|
36
|
+
*
|
|
37
|
+
* 额外参数通过闭包注入:
|
|
38
|
+
* - language:固定(adapter 注册时确定)
|
|
39
|
+
* - signals:固定 snapshot(adapter 注册时读取,下次重启刷新)
|
|
40
|
+
* - proposalCount:动态(每次调用时通过 provider 获取)
|
|
41
|
+
*/
|
|
42
|
+
export declare function createPromptBuilder(options: {
|
|
43
|
+
readonly language?: Language;
|
|
44
|
+
readonly signals?: PromptSignals;
|
|
45
|
+
readonly proposalCountProvider?: () => number;
|
|
46
|
+
}): PromptBuilder;
|
|
47
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/prompt-builder/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AAqG/D;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,gBAAgB,GACtB,SAAS,MAAM,EAAE,CAgBnB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,MAAM,CAAC;CAC/C,GAAG,aAAa,CAQhB"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Co-Engram memory prompt builder(host-agnostic)
|
|
3
|
+
*
|
|
4
|
+
* 生成注入到 LLM 系统提示的 "## Memory Recall" section。
|
|
5
|
+
*
|
|
6
|
+
* 三层设计(可独立启用/禁用):
|
|
7
|
+
*
|
|
8
|
+
* 1. 基础引导(常驻)——何时调用 memory_search / 何时跳过 / 如何解读结果
|
|
9
|
+
* 2. Proposal 提醒(条件性)——count > 0 时注入
|
|
10
|
+
* 3. 自进化信号(条件性)——基于 prompt-signals.json:
|
|
11
|
+
* - topTags(高频 engram 领域)
|
|
12
|
+
* - lowConfidenceTopics(RPE false negative 检测)
|
|
13
|
+
*
|
|
14
|
+
* 所有文字走 i18n(en/zh)。
|
|
15
|
+
*
|
|
16
|
+
* 宿主集成:
|
|
17
|
+
* - OpenClaw:`registerMemoryCapability.promptBuilder`
|
|
18
|
+
* - Claude Code MCP:`serverInfo.instructions`(静态)+ hook(动态)
|
|
19
|
+
*
|
|
20
|
+
* @module @co-engram/core/prompt-builder
|
|
21
|
+
*/
|
|
22
|
+
import { DEFAULT_LANGUAGE, translatePrompt } from "../i18n/index.js";
|
|
23
|
+
/**
|
|
24
|
+
* 构建基础 memory section(常驻部分)
|
|
25
|
+
*
|
|
26
|
+
* 包含:
|
|
27
|
+
* - section header
|
|
28
|
+
* - 何时调用 memory_search(语义检索场景)
|
|
29
|
+
* - 何时调用 engram_list(列举场景,仅当 engram_list 可用时注入)
|
|
30
|
+
* - 何时跳过(负向引导)
|
|
31
|
+
* - 如何解读结果(truthScore + 低分处理)
|
|
32
|
+
* - 创建/更新引导(条件性)
|
|
33
|
+
* - 强化闭环引导(条件性,仅当 engram_reinforce 可用时注入)
|
|
34
|
+
*/
|
|
35
|
+
function buildBaseSection(language, availableTools) {
|
|
36
|
+
const lines = [
|
|
37
|
+
translatePrompt(language, "prompt.memory.section_header"),
|
|
38
|
+
translatePrompt(language, "prompt.memory.when_to_search"),
|
|
39
|
+
];
|
|
40
|
+
// 仅当 engram_list 在可用工具集时才注入列举场景引导
|
|
41
|
+
// (避免对未注册 engram_list 的 host adapter 误导 agent)
|
|
42
|
+
if (availableTools.has("engram_list")) {
|
|
43
|
+
lines.push(translatePrompt(language, "prompt.memory.when_to_list"));
|
|
44
|
+
}
|
|
45
|
+
lines.push(translatePrompt(language, "prompt.memory.when_not_to_search"), translatePrompt(language, "prompt.memory.reading_results"));
|
|
46
|
+
// 写入引导:仅当 engram_create 或 engram_update 可用时注入
|
|
47
|
+
// 避免 agent 在 createdBy 填通用词(AIOS/openclaw/assistant)
|
|
48
|
+
if (availableTools.has("engram_create") ||
|
|
49
|
+
availableTools.has("engram_update")) {
|
|
50
|
+
lines.push(translatePrompt(language, "prompt.memory.writing"));
|
|
51
|
+
}
|
|
52
|
+
// 强化闭环引导:仅当 engram_reinforce 可用时注入
|
|
53
|
+
// 引导 agent 在用户明确确认后主动调 engram_reinforce(避免 importance 评分污染)
|
|
54
|
+
if (availableTools.has("engram_reinforce")) {
|
|
55
|
+
lines.push(translatePrompt(language, "prompt.memory.when_to_reinforce"));
|
|
56
|
+
}
|
|
57
|
+
return lines;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 构建 proposal 提醒(条件性)
|
|
61
|
+
*
|
|
62
|
+
* 仅当 count > 0 时返回非空数组。
|
|
63
|
+
*/
|
|
64
|
+
function buildProposalSection(count, language) {
|
|
65
|
+
if (count <= 0)
|
|
66
|
+
return [];
|
|
67
|
+
return [
|
|
68
|
+
translatePrompt(language, "prompt.memory.proposal_reminder", { count }),
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 构建自进化 signals 提示(条件性)
|
|
73
|
+
*
|
|
74
|
+
* 仅当 signals 存在且对应字段非空时注入。
|
|
75
|
+
*/
|
|
76
|
+
function buildSignalsSection(signals, language) {
|
|
77
|
+
if (!signals)
|
|
78
|
+
return [];
|
|
79
|
+
const lines = [];
|
|
80
|
+
if (signals.topTags.length > 0) {
|
|
81
|
+
lines.push(translatePrompt(language, "prompt.memory.frequent_topics", {
|
|
82
|
+
tags: signals.topTags.join(", "),
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
if (signals.missedTopics && signals.missedTopics.length > 0) {
|
|
86
|
+
lines.push(translatePrompt(language, "prompt.memory.missed_topics", {
|
|
87
|
+
topics: signals.missedTopics.join(", "),
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
if (signals.lowConfidenceTopics && signals.lowConfidenceTopics.length > 0) {
|
|
91
|
+
lines.push(translatePrompt(language, "prompt.memory.low_confidence_topics", {
|
|
92
|
+
topics: signals.lowConfidenceTopics.join(", "),
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
return lines;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 主构建函数:组装所有部分
|
|
99
|
+
*
|
|
100
|
+
* 返回 string[](宿主期望的 prompt lines 格式)。
|
|
101
|
+
* 每个 element 是一段,宿主用换行连接。
|
|
102
|
+
*
|
|
103
|
+
* 工具未注册时返回空(没有任何 memory 工具就不需要 memory section)。
|
|
104
|
+
*/
|
|
105
|
+
export function buildCoEngramMemoryPrompt(input) {
|
|
106
|
+
const language = input.language ?? DEFAULT_LANGUAGE;
|
|
107
|
+
const hasSearch = input.availableTools.has("memory_search");
|
|
108
|
+
const hasGet = input.availableTools.has("memory_get");
|
|
109
|
+
const hasEngramSearch = input.availableTools.has("engram_search");
|
|
110
|
+
const hasEngramGet = input.availableTools.has("engram_get");
|
|
111
|
+
if (!hasSearch && !hasGet && !hasEngramSearch && !hasEngramGet)
|
|
112
|
+
return [];
|
|
113
|
+
const sections = [
|
|
114
|
+
buildBaseSection(language, input.availableTools),
|
|
115
|
+
buildSignalsSection(input.signals, language),
|
|
116
|
+
buildProposalSection(input.proposalCount ?? 0, language),
|
|
117
|
+
];
|
|
118
|
+
return sections.flat();
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 工厂:创建闭包绑定的 prompt builder
|
|
122
|
+
*
|
|
123
|
+
* 额外参数通过闭包注入:
|
|
124
|
+
* - language:固定(adapter 注册时确定)
|
|
125
|
+
* - signals:固定 snapshot(adapter 注册时读取,下次重启刷新)
|
|
126
|
+
* - proposalCount:动态(每次调用时通过 provider 获取)
|
|
127
|
+
*/
|
|
128
|
+
export function createPromptBuilder(options) {
|
|
129
|
+
return (input) => buildCoEngramMemoryPrompt({
|
|
130
|
+
...input,
|
|
131
|
+
language: options.language,
|
|
132
|
+
signals: options.signals,
|
|
133
|
+
proposalCount: options.proposalCountProvider?.() ?? 0,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/prompt-builder/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompt-builder/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompt-builder/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt builder 类型定义(host-agnostic)
|
|
3
|
+
*
|
|
4
|
+
* 与 OpenClaw / MCP 等具体宿主解耦 — 宿主 adapter 负责把各自的协议参数
|
|
5
|
+
* 适配为 BuildPromptInput,再调用 buildCoEngramMemoryPrompt。
|
|
6
|
+
*
|
|
7
|
+
* @module @co-engram/core/prompt-builder
|
|
8
|
+
*/
|
|
9
|
+
import type { Language } from "../i18n/index.js";
|
|
10
|
+
import type { PromptSignalSnapshot } from "../prompt-signals/types.js";
|
|
11
|
+
/**
|
|
12
|
+
* 自进化信号(从 PromptSignalSnapshot 派生)
|
|
13
|
+
*
|
|
14
|
+
* 完整 snapshot 由 maintenance light stage 生成,
|
|
15
|
+
* 缓存在 `<dataRoot>/.co-engram/prompt-signals.json`。
|
|
16
|
+
*
|
|
17
|
+
* promptBuilder 只读取 snapshot 的字符串字段,不关心 stats 元数据。
|
|
18
|
+
*/
|
|
19
|
+
export type PromptSignals = PromptSignalSnapshot;
|
|
20
|
+
/**
|
|
21
|
+
* Prompt builder 的完整输入(base + 动态状态)
|
|
22
|
+
*
|
|
23
|
+
* Host-agnostic:不依赖 OpenClaw MemoryPromptBuilderParams 等宿主协议类型。
|
|
24
|
+
* 宿主 adapter 负责在自己的类型和此类型之间转换。
|
|
25
|
+
*/
|
|
26
|
+
export interface BuildPromptInput {
|
|
27
|
+
/** 当前会话可用的工具名集合(决定是否注入提示) */
|
|
28
|
+
readonly availableTools: ReadonlySet<string>;
|
|
29
|
+
/** 引用模式(目前实现忽略,预留扩展) */
|
|
30
|
+
readonly citationsMode?: "off" | "compact" | "full";
|
|
31
|
+
/** 自进化 signals;undefined 时跳过动态部分 */
|
|
32
|
+
readonly language?: Language;
|
|
33
|
+
/** 自进化 signals;undefined 时跳过动态部分 */
|
|
34
|
+
readonly signals?: PromptSignals;
|
|
35
|
+
/** 待处理 proposal 数量;0 时不注入 proposal 提醒 */
|
|
36
|
+
readonly proposalCount?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Prompt builder 函数签名
|
|
40
|
+
*/
|
|
41
|
+
export type PromptBuilder = (input: BuildPromptInput) => readonly string[];
|
|
42
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prompt-builder/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,wBAAwB;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IACpD,oCAAoC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,oCAAoC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IACjC,yCAAyC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,SAAS,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/prompt-builder/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt signals 缓存文件读写
|
|
3
|
+
*
|
|
4
|
+
* 路径:`<dataRoot>/.co-engram/prompt-signals.json`
|
|
5
|
+
*
|
|
6
|
+
* 与 team-memory/config.json 同目录,但语义不同:
|
|
7
|
+
* - config.json:用户首次选择(语言/作者),很少变
|
|
8
|
+
* - prompt-signals.json:light stage 周期性生成,频繁变
|
|
9
|
+
*
|
|
10
|
+
* 失败策略:
|
|
11
|
+
* - read: 文件不存在或解析失败 → 返回 undefined(首次启动/损坏降级)
|
|
12
|
+
* - write: 失败抛错(light stage 会捕获并记 log)
|
|
13
|
+
*
|
|
14
|
+
* @module @co-engram/core/prompt-signals
|
|
15
|
+
*/
|
|
16
|
+
import type { PromptSignalSnapshot } from "./types.js";
|
|
17
|
+
/**
|
|
18
|
+
* 缓存文件名
|
|
19
|
+
*/
|
|
20
|
+
export declare const PROMPT_SIGNALS_FILENAME = "prompt-signals.json";
|
|
21
|
+
/**
|
|
22
|
+
* 读取 prompt signals 缓存
|
|
23
|
+
*
|
|
24
|
+
* @param dataRoot team-memory 根目录
|
|
25
|
+
* @param fsRead 可选的自定义读取函数(测试注入)
|
|
26
|
+
*/
|
|
27
|
+
export declare function readPromptSignals(dataRoot: string, fsRead?: (path: string) => Promise<string>): Promise<PromptSignalSnapshot | undefined>;
|
|
28
|
+
/**
|
|
29
|
+
* 写入 prompt signals 缓存
|
|
30
|
+
*
|
|
31
|
+
* @param dataRoot team-memory 根目录
|
|
32
|
+
* @param signals 完整 snapshot
|
|
33
|
+
* @param fsWrite 可选的自定义写入函数(测试注入)
|
|
34
|
+
*/
|
|
35
|
+
export declare function writePromptSignals(dataRoot: string, signals: PromptSignalSnapshot, fsWrite?: (path: string, content: string) => Promise<void>): Promise<void>;
|
|
36
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/prompt-signals/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAY3C;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACzD,OAAO,CAAC,IAAI,CAAC,CAQf"}
|