@modusensus/dsh-mneme 0.14.0-beta.1 → 0.14.0-beta.2
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 -21
- package/README.md +830 -830
- package/assets/icon.svg +3 -3
- package/bin/cli.mjs +964 -964
- package/bin/dsh-mneme-choro.mjs +262 -262
- package/bin/dsh-mneme-mcp.mjs +510 -510
- package/bin/dsh-mneme-serve.mjs +151 -151
- package/cordis.patch.yml +21 -21
- package/docs/CONFIGURATION.md +407 -404
- package/docs/CONTINUITY.md +139 -139
- package/docs/DAEMON.md +57 -57
- package/docs/DIRECTORIES.md +114 -114
- package/docs/DISTILL.md +397 -371
- package/docs/DSH-GO.md +97 -97
- package/docs/ENTITIES.md +247 -247
- package/docs/FORGET.md +77 -77
- package/docs/KB.md +110 -110
- package/docs/LOCAL_MODEL.md +222 -222
- package/docs/SEMANTIC.md +256 -256
- package/docs/SHARE.md +552 -552
- package/docs/SLEEP.md +202 -202
- package/docs/STORAGE.md +122 -122
- package/docs/WORKFLOWS.md +366 -366
- package/lib/api-standalone.js +1007 -1007
- package/lib/api.js +3600 -3600
- package/lib/attachment-text.js +122 -122
- package/lib/bootstrap-http.js +105 -105
- package/lib/bootstrap.js +215 -215
- package/lib/candidates.js +454 -454
- package/lib/capabilities.js +819 -819
- package/lib/choro-command.js +111 -111
- package/lib/client.js +14420 -14322
- package/lib/commands.js +95 -95
- package/lib/config-keys.js +144 -144
- package/lib/config.js +1361 -1344
- package/lib/content-hash.js +54 -54
- package/lib/continuity.js +258 -258
- package/lib/date-hint.js +32 -0
- package/lib/diary/auto.js +190 -190
- package/lib/diary/compose.js +440 -440
- package/lib/diary/dir.js +59 -59
- package/lib/diary/export.js +97 -97
- package/lib/diary/index.js +26 -26
- package/lib/diary/library.js +189 -189
- package/lib/diary/qq-inbox.js +142 -142
- package/lib/diary/rollover.js +61 -61
- package/lib/diary/session-provider.js +122 -122
- package/lib/document-index.js +94 -94
- package/lib/document.js +322 -322
- package/lib/dream/clustering.js +123 -123
- package/lib/dream/decisions.js +945 -945
- package/lib/dream/narratives.js +44 -44
- package/lib/dream/sleep.js +2027 -2027
- package/lib/dream/triage.js +139 -139
- package/lib/dream.js +1879 -1879
- package/lib/dsh-go/host.js +162 -162
- package/lib/dsh-go/panel.js +2091 -2091
- package/lib/dsh-go/text.js +342 -342
- package/lib/dsh-go/views/common.js +68 -68
- package/lib/dsh-go/views/entity.js +48 -48
- package/lib/dsh-go/views/memory.js +198 -198
- package/lib/dsh-go/views/root.js +30 -30
- package/lib/dsh-go/views/settings.js +398 -398
- package/lib/dsh-go/views/status.js +51 -51
- package/lib/embedding.js +342 -342
- package/lib/entities/extractor.js +285 -285
- package/lib/fence.js +24 -24
- package/lib/graph/anchoring.js +184 -184
- package/lib/guide.js +74 -74
- package/lib/heat.js +144 -144
- package/lib/hot-memory.js +119 -119
- package/lib/image-describe.js +158 -0
- package/lib/index.js +852 -852
- package/lib/inject.js +656 -651
- package/lib/kb/index.js +309 -309
- package/lib/kb/routes.js +219 -219
- package/lib/kb/tools.js +148 -148
- package/lib/lang.js +607 -595
- package/lib/local-embedder.js +358 -358
- package/lib/maintenance.js +162 -162
- package/lib/memory-source.js +9 -9
- package/lib/mirror.js +330 -330
- package/lib/organize.js +456 -456
- package/lib/peak-hours.js +172 -172
- package/lib/pipeline-activities.js +178 -178
- package/lib/pipeline-attribution.js +165 -165
- package/lib/pipeline-command.js +279 -279
- package/lib/pipeline-confirm.js +142 -142
- package/lib/pipeline-exec.js +174 -174
- package/lib/pipeline-nudge-auto.js +129 -129
- package/lib/pipeline-nudge.js +1623 -1623
- package/lib/pipeline-observations.js +181 -181
- package/lib/pipeline-observe.js +133 -133
- package/lib/pipeline-runner.js +361 -361
- package/lib/pipeline-runs.js +442 -442
- package/lib/pipeline.js +716 -716
- package/lib/placement.js +13 -13
- package/lib/pre-inject-gate.js +354 -354
- package/lib/profile-extract.js +164 -164
- package/lib/profile-facts.js +356 -356
- package/lib/provenance-http.js +251 -251
- package/lib/quality-filter.js +162 -162
- package/lib/recall-stats.js +190 -190
- package/lib/reclaim-http.js +150 -150
- package/lib/reranker.js +269 -269
- package/lib/runtime/adopt.js +176 -176
- package/lib/runtime/closure.js +172 -172
- package/lib/runtime/download.js +247 -247
- package/lib/runtime/layout.js +265 -265
- package/lib/runtime/loader.js +252 -252
- package/lib/runtime/model-fetch.js +361 -361
- package/lib/runtime/provision.js +237 -237
- package/lib/runtime/tarball.js +130 -130
- package/lib/runtime/verify.js +223 -223
- package/lib/safe-slice.js +18 -18
- package/lib/scope-state.js +277 -277
- package/lib/scope.js +187 -187
- package/lib/search/adaptive.js +60 -60
- package/lib/search/bm25.js +96 -96
- package/lib/semantic.js +572 -572
- package/lib/sensitive-scan.js +209 -209
- package/lib/serve.js +228 -228
- package/lib/service.js +3268 -3268
- package/lib/session-gate.js +91 -91
- package/lib/session-usage.js +350 -350
- package/lib/settings.js +827 -817
- package/lib/share-http.js +281 -281
- package/lib/share-import.js +234 -234
- package/lib/share.js +335 -335
- package/lib/store.js +5895 -5895
- package/lib/summarize.js +1388 -1343
- package/lib/tools.js +1370 -1356
- package/lib/user-settings.js +230 -230
- package/lib/vector-index.js +180 -180
- package/lib/version-check.js +122 -122
- package/lib/wiki/claims.js +267 -267
- package/lib/wiki/cli-hint.js +90 -90
- package/lib/wiki/inject.js +164 -164
- package/lib/wiki/partition.js +200 -200
- package/lib/wiki/plan.js +214 -214
- package/lib/wiki/queries.js +640 -640
- package/lib/wiki/render.js +261 -261
- package/lib/wiki/scan.js +371 -371
- package/lib/wiki/t0.js +500 -500
- package/lib/wiki/t1-jobs.js +232 -232
- package/lib/wiki/t1.js +609 -609
- package/lib/write-admission.js +404 -404
- package/locale/en.json +6 -6
- package/locale/zh.json +6 -6
- package/package.json +1 -1
- package/runtime-manifest.json +526 -526
- package/scripts/benchmark-embed.js +201 -201
- package/scripts/benchmark-recall.js +249 -249
- package/scripts/benchmark-rerank.js +166 -166
- package/scripts/build-runtime-manifest.mjs +224 -224
- package/scripts/changelog-prep.mjs +91 -91
- package/scripts/check-sync.js +44 -44
- package/scripts/e2e-dsh.js +220 -220
- package/scripts/mneme-runtime.mjs +277 -277
- package/scripts/publish-gate.mjs +197 -197
- package/scripts/release-docs.mjs +210 -210
- package/scripts/release-notes.mjs +164 -164
- package/scripts/stress-dsh.js +255 -255
- package/scripts/sync-lib.js +47 -47
- package/scripts/sync-test-badge.mjs +69 -69
- package/scripts/test-count-sync.mjs +48 -48
- package/src/api-standalone.js +1007 -1007
- package/src/api.js +3600 -3600
- package/src/attachment-text.js +122 -122
- package/src/bootstrap-http.js +105 -105
- package/src/bootstrap.js +215 -215
- package/src/candidates.js +454 -454
- package/src/capabilities.js +819 -819
- package/src/choro-command.js +111 -111
- package/src/commands.js +95 -95
- package/src/config-keys.js +144 -144
- package/src/config.js +1361 -1344
- package/src/content-hash.js +54 -54
- package/src/continuity.js +258 -258
- package/src/date-hint.js +32 -0
- package/src/diary/auto.js +190 -190
- package/src/diary/compose.js +440 -440
- package/src/diary/dir.js +59 -59
- package/src/diary/export.js +97 -97
- package/src/diary/index.js +26 -26
- package/src/diary/library.js +189 -189
- package/src/diary/qq-inbox.js +142 -142
- package/src/diary/rollover.js +61 -61
- package/src/diary/session-provider.js +122 -122
- package/src/document-index.js +94 -94
- package/src/document.js +322 -322
- package/src/dream/clustering.js +123 -123
- package/src/dream/decisions.js +945 -945
- package/src/dream/narratives.js +44 -44
- package/src/dream/sleep.js +2027 -2027
- package/src/dream/triage.js +139 -139
- package/src/dream.js +1879 -1879
- package/src/dsh-go/host.js +162 -162
- package/src/dsh-go/panel.js +2091 -2091
- package/src/dsh-go/text.js +342 -342
- package/src/dsh-go/views/common.js +68 -68
- package/src/dsh-go/views/entity.js +48 -48
- package/src/dsh-go/views/memory.js +198 -198
- package/src/dsh-go/views/root.js +30 -30
- package/src/dsh-go/views/settings.js +398 -398
- package/src/dsh-go/views/status.js +51 -51
- package/src/embedding.js +342 -342
- package/src/entities/extractor.js +285 -285
- package/src/fence.js +24 -24
- package/src/graph/anchoring.js +184 -184
- package/src/guide.js +74 -74
- package/src/heat.js +144 -144
- package/src/hot-memory.js +119 -119
- package/src/image-describe.js +158 -0
- package/src/index.js +852 -852
- package/src/inject.js +656 -651
- package/src/kb/index.js +309 -309
- package/src/kb/routes.js +219 -219
- package/src/kb/tools.js +148 -148
- package/src/lang.js +607 -595
- package/src/local-embedder.js +358 -358
- package/src/maintenance.js +162 -162
- package/src/memory-source.js +9 -9
- package/src/mirror.js +330 -330
- package/src/organize.js +456 -456
- package/src/peak-hours.js +172 -172
- package/src/pipeline-activities.js +178 -178
- package/src/pipeline-attribution.js +165 -165
- package/src/pipeline-command.js +279 -279
- package/src/pipeline-confirm.js +142 -142
- package/src/pipeline-exec.js +174 -174
- package/src/pipeline-nudge-auto.js +129 -129
- package/src/pipeline-nudge.js +1623 -1623
- package/src/pipeline-observations.js +181 -181
- package/src/pipeline-observe.js +133 -133
- package/src/pipeline-runner.js +361 -361
- package/src/pipeline-runs.js +442 -442
- package/src/pipeline.js +716 -716
- package/src/placement.js +13 -13
- package/src/pre-inject-gate.js +354 -354
- package/src/profile-extract.js +164 -164
- package/src/profile-facts.js +356 -356
- package/src/provenance-http.js +251 -251
- package/src/quality-filter.js +162 -162
- package/src/recall-stats.js +190 -190
- package/src/reclaim-http.js +150 -150
- package/src/reranker.js +269 -269
- package/src/runtime/adopt.js +176 -176
- package/src/runtime/closure.js +172 -172
- package/src/runtime/download.js +247 -247
- package/src/runtime/layout.js +265 -265
- package/src/runtime/loader.js +252 -252
- package/src/runtime/model-fetch.js +361 -361
- package/src/runtime/provision.js +237 -237
- package/src/runtime/tarball.js +130 -130
- package/src/runtime/verify.js +223 -223
- package/src/safe-slice.js +18 -18
- package/src/scope-state.js +277 -277
- package/src/scope.js +187 -187
- package/src/search/adaptive.js +60 -60
- package/src/search/bm25.js +96 -96
- package/src/semantic.js +572 -572
- package/src/sensitive-scan.js +209 -209
- package/src/serve.js +228 -228
- package/src/service.js +3268 -3268
- package/src/session-gate.js +91 -91
- package/src/session-usage.js +350 -350
- package/src/settings.js +827 -817
- package/src/share-http.js +281 -281
- package/src/share-import.js +234 -234
- package/src/share.js +335 -335
- package/src/store.js +5895 -5895
- package/src/summarize.js +1388 -1343
- package/src/tools.js +1370 -1356
- package/src/user-settings.js +230 -230
- package/src/vector-index.js +180 -180
- package/src/version-check.js +122 -122
- package/src/wiki/claims.js +267 -267
- package/src/wiki/cli-hint.js +90 -90
- package/src/wiki/inject.js +164 -164
- package/src/wiki/partition.js +200 -200
- package/src/wiki/plan.js +214 -214
- package/src/wiki/queries.js +640 -640
- package/src/wiki/render.js +261 -261
- package/src/wiki/scan.js +371 -371
- package/src/wiki/t0.js +500 -500
- package/src/wiki/t1-jobs.js +232 -232
- package/src/wiki/t1.js +609 -609
- package/src/write-admission.js +404 -404
- package/test/adaptive-inject-budget.test.js +85 -85
- package/test/api-hardening.test.js +173 -173
- package/test/api-nudge-route.test.js +259 -259
- package/test/api-routes-gaps.test.js +1092 -1092
- package/test/api.test.js +3007 -2998
- package/test/attachment-text.test.js +139 -139
- package/test/audit.test.js +448 -448
- package/test/baseline-persist.test.js +248 -248
- package/test/benchmark.test.js +94 -94
- package/test/bm25-corpus-cache.test.js +145 -145
- package/test/bootstrap.test.js +228 -228
- package/test/candidates.test.js +345 -345
- package/test/capabilities.test.js +577 -577
- package/test/capacity-warning.test.js +262 -262
- package/test/changelog-prep.test.js +125 -125
- package/test/choro-command.test.js +218 -218
- package/test/cli-enums.test.js +37 -37
- package/test/cli-flag-value.test.js +86 -86
- package/test/cli-receive.test.js +390 -390
- package/test/cli-share.test.js +437 -437
- package/test/client-share.test.js +225 -225
- package/test/client.test.js +4595 -4425
- package/test/clustering.test.js +100 -100
- package/test/commands.test.js +106 -106
- package/test/config-keys-routes.test.js +233 -233
- package/test/config.test.js +153 -153
- package/test/conflict-freeze.test.js +344 -344
- package/test/conflict-ledger-enforce.test.js +452 -452
- package/test/conflict-ledger.test.js +242 -242
- package/test/conflict-reviewed.test.js +79 -79
- package/test/content-hash.test.js +204 -204
- package/test/continuity.test.js +452 -452
- package/test/contrast.test.js +432 -432
- package/test/date-hint.test.js +156 -0
- package/test/dedupe-candidate-window.test.js +180 -180
- package/test/dependency-overrides.test.js +78 -78
- package/test/diary-library.test.js +187 -187
- package/test/diary.test.js +576 -576
- package/test/differentiate-feedback.test.js +248 -248
- package/test/distill-tx-embed-gap.test.js +110 -110
- package/test/docs-config-keys.test.js +65 -65
- package/test/document-dir.test.js +233 -233
- package/test/document.test.js +703 -703
- package/test/dream-archive-guardrail.test.js +116 -116
- package/test/dream-baseline-clamp.test.js +174 -174
- package/test/dream-candidate-hybrid.test.js +281 -281
- package/test/dream-coverage-degrade.test.js +86 -86
- package/test/dream-decision-evidence.test.js +314 -314
- package/test/dream-failure-backoff.test.js +173 -173
- package/test/dream-fence.test.js +207 -207
- package/test/dream-maxtokens-fallback.test.js +132 -132
- package/test/dream-merge-guardrail.test.js +219 -219
- package/test/dream-peak-hours.test.js +194 -194
- package/test/dream.test.js +1528 -1528
- package/test/dsh-go-host.test.js +134 -134
- package/test/dsh-go-panel-actions.test.js +854 -854
- package/test/dsh-go-panel.test.js +251 -251
- package/test/embed-ready-poll.test.js +94 -94
- package/test/embed-text-reasons.test.js +112 -112
- package/test/embedding-cache-f32.test.js +276 -276
- package/test/embedding-ready.test.js +226 -226
- package/test/entities.test.js +711 -711
- package/test/entity-recall.test.js +179 -179
- package/test/epistemic.test.js +325 -325
- package/test/failure-query.test.js +147 -147
- package/test/failure-retention.test.js +105 -105
- package/test/fnew-0112.test.js +311 -311
- package/test/fnew-03.test.js +422 -422
- package/test/forget-corrections.test.js +70 -70
- package/test/graph-anchoring.test.js +184 -184
- package/test/graph-api.test.js +333 -333
- package/test/graph-boosted-relations.test.js +189 -189
- package/test/graph-inject-budget.test.js +103 -103
- package/test/graph-multipath.test.js +269 -269
- package/test/graph-passive-confirm.test.js +91 -91
- package/test/graph-weight-evolution.test.js +104 -104
- package/test/heat.test.js +175 -175
- package/test/helpers/dream-mock.js +86 -86
- package/test/helpers/peer-worker.mjs +25 -25
- package/test/helpers/runtime-source.js +60 -60
- package/test/helpers/tar-builder.js +80 -80
- package/test/helpers/write-admission-samples.js +312 -312
- package/test/hot-memory.test.js +259 -259
- package/test/image-description.test.js +271 -0
- package/test/image-memory.test.js +170 -170
- package/test/inject-content-cap.test.js +91 -91
- package/test/inject-first-round-bm25.test.js +89 -89
- package/test/inject-heat.test.js +77 -77
- package/test/inject-parent-gate.test.js +134 -109
- package/test/inject-pin-explicit.test.js +300 -300
- package/test/inject-pin-vector-crowd.test.js +225 -225
- package/test/inject-pools.test.js +195 -195
- package/test/inject-recall.test.js +172 -172
- package/test/inject-rotation.test.js +161 -161
- package/test/inject.test.js +553 -553
- package/test/issue-617-step1-query-and-fusion.test.js +361 -361
- package/test/kb-api-wiring.test.js +128 -128
- package/test/kb-collections.test.js +272 -272
- package/test/kb-routes.test.js +379 -379
- package/test/lang.test.js +98 -98
- package/test/lastrunat-persist.test.js +101 -101
- package/test/lib-smoke.test.js +116 -116
- package/test/llm-audit.test.js +815 -815
- package/test/llm-message-source.test.js +207 -207
- package/test/local-embedder.test.js +292 -292
- package/test/maintenance.test.js +501 -501
- package/test/mcp-stdio.test.js +385 -385
- package/test/mint-source.test.js +311 -311
- package/test/mirror-dirty.test.js +424 -424
- package/test/mirror-edit-digest.test.js +187 -187
- package/test/mirror-generation.test.js +499 -499
- package/test/mirror-types.test.js +208 -208
- package/test/mirror.test.js +249 -249
- package/test/narrative-bars.test.js +162 -162
- package/test/organize-tool.test.js +232 -232
- package/test/organize.test.js +418 -418
- package/test/panel-chart-scale.test.js +90 -90
- package/test/panel-tokens.test.js +245 -245
- package/test/peak-hours-observability.test.js +70 -70
- package/test/peer-blockers.test.js +193 -193
- package/test/persona-addressing.test.js +83 -83
- package/test/persona-api.test.js +172 -172
- package/test/persona-by-session.test.js +568 -568
- package/test/persona-flag.test.js +36 -36
- package/test/persona-inject.test.js +145 -145
- package/test/persona-settings.test.js +198 -198
- package/test/pipeline-activities.test.js +155 -155
- package/test/pipeline-attribution.test.js +175 -175
- package/test/pipeline-command.test.js +243 -243
- package/test/pipeline-confirm.test.js +148 -148
- package/test/pipeline-exec.test.js +172 -172
- package/test/pipeline-nudge-auto.test.js +248 -248
- package/test/pipeline-nudge.test.js +1278 -1278
- package/test/pipeline-observations.test.js +157 -157
- package/test/pipeline-observe.test.js +127 -127
- package/test/pipeline-r1r2.test.js +278 -278
- package/test/pipeline-runner.test.js +468 -468
- package/test/pipeline-runs.test.js +767 -767
- package/test/pipeline.test.js +636 -636
- package/test/placement.test.js +36 -36
- package/test/policy-epoch.test.js +259 -259
- package/test/pre-inject-gate.test.js +444 -444
- package/test/profile-extract.test.js +269 -269
- package/test/profile-facts.test.js +492 -492
- package/test/prompt-stance.test.js +128 -128
- package/test/provenance-http.test.js +367 -367
- package/test/publish-gate.test.js +272 -272
- package/test/quality-backfill.test.js +290 -290
- package/test/quality-filter.test.js +295 -295
- package/test/readme-claims.test.js +113 -113
- package/test/reasoning-effort.test.js +752 -752
- package/test/recall-anti-update.test.js +82 -82
- package/test/recall-evals.test.js +253 -253
- package/test/recall-layer.test.js +326 -326
- package/test/recall-retention.test.js +128 -128
- package/test/recall-stats.test.js +274 -274
- package/test/receipt-chain.test.js +451 -451
- package/test/reclaim-http.test.js +209 -209
- package/test/reflection-update-gate.test.js +129 -129
- package/test/reflection.test.js +226 -226
- package/test/reindex-backfill.test.js +475 -475
- package/test/reindex-scheduler.test.js +369 -369
- package/test/release-docs.test.js +156 -156
- package/test/release-notes.test.js +265 -265
- package/test/release-workflow.test.js +93 -93
- package/test/reranker-single-logit.test.js +73 -73
- package/test/reranker.test.js +197 -197
- package/test/resident-status.test.js +83 -83
- package/test/route-policy.test.js +113 -113
- package/test/runtime-adopt.test.js +206 -206
- package/test/runtime-cli.test.js +89 -89
- package/test/runtime-closure.test.js +193 -193
- package/test/runtime-download.test.js +302 -302
- package/test/runtime-layout.test.js +163 -163
- package/test/runtime-loader.test.js +255 -255
- package/test/runtime-manifest.test.js +159 -159
- package/test/runtime-model-fetch.test.js +348 -348
- package/test/runtime-provision.test.js +101 -101
- package/test/runtime-tarball.test.js +81 -81
- package/test/runtime-verify.test.js +319 -319
- package/test/scope-candidates.test.js +491 -491
- package/test/scope-distill-stamp.test.js +134 -134
- package/test/scope-explicit.test.js +452 -452
- package/test/scope-inject-soft.test.js +106 -106
- package/test/scope-optional-service.test.js +110 -110
- package/test/scope-retrieval.test.js +197 -197
- package/test/scope-state.test.js +610 -610
- package/test/scope-storage.test.js +255 -255
- package/test/scope-strict.test.js +367 -367
- package/test/search-fusion.test.js +90 -90
- package/test/security-doc.test.js +188 -188
- package/test/semantic.test.js +124 -124
- package/test/sensitive-scan.test.js +251 -251
- package/test/serve-bin.test.js +121 -121
- package/test/serve.test.js +258 -258
- package/test/service-search.test.js +174 -174
- package/test/service.test.js +410 -410
- package/test/session-gate.test.js +264 -264
- package/test/session-usage.test.js +317 -317
- package/test/settings.test.js +273 -273
- package/test/share-foreign-rows.test.js +144 -144
- package/test/share-http.test.js +144 -144
- package/test/share-import.test.js +577 -577
- package/test/share-imported-guard.test.js +311 -311
- package/test/share-imported-identity.test.js +111 -111
- package/test/share-pack.test.js +511 -511
- package/test/share-receive-http.test.js +756 -756
- package/test/share-routes.test.js +337 -337
- package/test/share-store.test.js +133 -133
- package/test/share-validate.test.js +101 -101
- package/test/skip-invalid-restore.test.js +262 -262
- package/test/sleep-action-set.test.js +441 -441
- package/test/sleep-catchup.test.js +315 -315
- package/test/sleep-failure-backoff.test.js +156 -156
- package/test/sleep-heat.test.js +174 -174
- package/test/sleep-scheduler-rearm.test.js +89 -89
- package/test/sleep.test.js +1455 -1455
- package/test/standalone-api.test.js +1344 -1344
- package/test/store-vector-cache.test.js +98 -98
- package/test/store-write-path-columns.test.js +191 -191
- package/test/store.test.js +744 -744
- package/test/stress.test.js +209 -209
- package/test/summarize-occurred-at.test.js +127 -127
- package/test/summarize-parse-diagnostics.test.js +75 -75
- package/test/summarize-reasoning-effort.test.js +189 -189
- package/test/summarize.test.js +2251 -2251
- package/test/supersede-state-tracking.test.js +394 -394
- package/test/test-count-sync.test.js +71 -71
- package/test/tool-state-ignore.test.js +65 -65
- package/test/tools-dto-schema-matrix.test.js +398 -398
- package/test/tools-memory-get-schema.test.js +65 -65
- package/test/tools.test.js +585 -585
- package/test/updated-at-semantics.test.js +113 -113
- package/test/user-settings-preview.test.js +127 -127
- package/test/user-settings-segments.test.js +527 -527
- package/test/vector-index.test.js +334 -334
- package/test/version-check.test.js +152 -152
- package/test/webServer-optional.test.js +82 -82
- package/test/wiki-api.test.js +734 -734
- package/test/wiki-claims.test.js +194 -194
- package/test/wiki-cli-hint.test.js +118 -118
- package/test/wiki-inject.test.js +265 -265
- package/test/wiki-partition.test.js +112 -112
- package/test/wiki-plan.test.js +80 -80
- package/test/wiki-provenance.test.js +202 -202
- package/test/wiki-queries.test.js +398 -398
- package/test/wiki-scan.test.js +208 -208
- package/test/wiki-store.test.js +190 -190
- package/test/wiki-t0.test.js +456 -456
- package/test/wiki-t1-jobs.test.js +125 -125
- package/test/wiki-t1.test.js +460 -460
- package/test/wiki-tools.test.js +176 -176
- package/test/workflow-guards.test.js +155 -155
- package/test/write-admission.test.js +668 -668
package/src/dream/triage.js
CHANGED
|
@@ -1,139 +1,139 @@
|
|
|
1
|
-
// 冲突分诊(issue #641 beta 第一阶段,shadow 档):把 findPotentialConflicts 送进
|
|
2
|
-
// 冲突相位的每一对,先过确定性分诊,落进 conflict_ledger 账本。
|
|
3
|
-
//
|
|
4
|
-
// 为什么分诊先行:真实库 788 对人审队列的全量分类(只读挖掘,口径见 #641 正文)
|
|
5
|
-
// ——46% 近重复 + 20% 跨作用域重复 + 5% 时序演进,真矛盾只有 ~27%。前 71% 是该被
|
|
6
|
-
// 机械处置(merge / 去重 / 取代链)的工作量,现行窄 prompt(conflict/keep 二选一)
|
|
7
|
-
// 把它们全逼成了「输赢」,再由人来逐对裁决(≈30 条/天,且 92% 的对从未两侧同场)。
|
|
8
|
-
// 分诊把「谁该机械处理、谁才是真矛盾」从 LLM 手里拿回来:E13b 实测 winner-take-all
|
|
9
|
-
// 裁决 P(毒胜出)=86.8%,LLM 在这条链上只允许降级为分类器。
|
|
10
|
-
//
|
|
11
|
-
// 四档判据(全部确定性,本文件是唯一实现;enforce 阶段的处置接线另有 PR,本文件
|
|
12
|
-
// 在 shadow 档只产分类与信号,不做任何记忆行处置):
|
|
13
|
-
// cross-scope-dup 任一 scope 维键不同——同一内容落两个归属(#170 scopeReason 口径,
|
|
14
|
-
// 真实库占 20%)
|
|
15
|
-
// dup 同 scope + sim ≥ dupMin + created_at 差 < 24h——同日双录
|
|
16
|
-
// (真实库 76% 的对两侧差 <1 天;#616 实测 55-57% 的新条反而更短,
|
|
17
|
-
// 新鲜度对这类对无区分力,后续处置按信息量裁决)
|
|
18
|
-
// evolution 同 scope + created_at 差 ≥ 7 天——时序演进展期(T3 superseded_by
|
|
19
|
-
// 取代链的候选池,enforce 阶段接线;entity_attrs 失效信号并入也在
|
|
20
|
-
// 那一步,见 #585)
|
|
21
|
-
// conflict 其余——真矛盾残余(真实库 ~27%;账本标记,消解推迟到检索时/
|
|
22
|
-
// 会话纠正/巩固重蒸馏三时刻)
|
|
23
|
-
//
|
|
24
|
-
// 「未标注 scope」不算跨作用域:scopeKeyOf 把 NULL 归一成 null,两条都未标注时
|
|
25
|
-
// null !== null 为 false、判同档——#616 指出这个判据用于**自动归档**是洞(归属未知
|
|
26
|
-
// ≠归属相同),但在 shadow 分诊里零处置、无害;signals.annotated=false 显式落账,
|
|
27
|
-
// 让分析时能把「未标注」切出来,而不是让它静默混进同 scope 桶。
|
|
28
|
-
import { scopeKeyOf } from "../scope.js";
|
|
29
|
-
|
|
30
|
-
const DAY_MS = 86_400_000;
|
|
31
|
-
|
|
32
|
-
// T1(dup)与 T3(evolution)的时间界。24h 来自真实库分布(76% 的对 <1 天,且
|
|
33
|
-
// 1-7 天区间的「疑似同日双录」残留在 1-7 天档里很难与快速演进区分,宁保守归
|
|
34
|
-
// conflict——分诊错档在 shadow 期只是统计噪音,enforce 后错档会错杀);7 天是
|
|
35
|
-
// 演进展期的保守下限,真实库 7 天以上的对仅 0.5%(4/788)。
|
|
36
|
-
export const DUP_MAX_AGE_MS = DAY_MS;
|
|
37
|
-
export const EVOLUTION_MIN_AGE_MS = 7 * DAY_MS;
|
|
38
|
-
|
|
39
|
-
export const LEDGER_TIERS = ["dup", "cross-scope-dup", "evolution", "conflict"];
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Classify one candidate pair into a ledger tier. Pure function — no I/O, no
|
|
43
|
-
* config dependency beyond the tunables passed in, so the same verdict is
|
|
44
|
-
* reproducible from the recorded signals alone.
|
|
45
|
-
*
|
|
46
|
-
* @param {object} a candidate side A (needs agent_scope, workspace_scope, created_at)
|
|
47
|
-
* @param {object} b candidate side B
|
|
48
|
-
* @param {number} similarity detector cosine similarity (pair already passed the
|
|
49
|
-
* detection threshold, so ≥ ~0.75-0.92 depending on strictness)
|
|
50
|
-
* @param {{dupMinSimilarity?: number, now?: number}} opts dupMin 默认 0.90(#616
|
|
51
|
-
* 重测:0.95 在现库覆盖为 0,真实库 reason 相似度回声集中在 0.85-0.93,
|
|
52
|
-
* 0.90 是把回声带接进 dup 档的落点);now 仅测试注入
|
|
53
|
-
* @returns {{tier: string, signals: object}}
|
|
54
|
-
*/
|
|
55
|
-
export function triagePair(a, b, similarity, opts = {}) {
|
|
56
|
-
const dupMin = typeof opts.dupMinSimilarity === "number" ? opts.dupMinSimilarity : 0.9;
|
|
57
|
-
const now = typeof opts.now === "number" ? opts.now : Date.now();
|
|
58
|
-
|
|
59
|
-
const crossScope =
|
|
60
|
-
scopeKeyOf(a.agent_scope) !== scopeKeyOf(b.agent_scope) ||
|
|
61
|
-
scopeKeyOf(a.workspace_scope) !== scopeKeyOf(b.workspace_scope);
|
|
62
|
-
const annotated = (a.agent_scope != null || a.workspace_scope != null) &&
|
|
63
|
-
(b.agent_scope != null || b.workspace_scope != null);
|
|
64
|
-
|
|
65
|
-
// created_at 缺失不下结论:宁归 conflict(账本里最保守的一档),也不编造时间信号。
|
|
66
|
-
const createdA = Date.parse(a.created_at ?? "");
|
|
67
|
-
const createdB = Date.parse(b.created_at ?? "");
|
|
68
|
-
const gapKnown = Number.isFinite(createdA) && Number.isFinite(createdB);
|
|
69
|
-
const gapDays = gapKnown ? Math.abs(createdA - createdB) / DAY_MS : null;
|
|
70
|
-
|
|
71
|
-
let tier;
|
|
72
|
-
if (crossScope) {
|
|
73
|
-
tier = "cross-scope-dup";
|
|
74
|
-
} else if (gapKnown && typeof similarity === "number" && similarity >= dupMin && gapDays < DUP_MAX_AGE_MS / DAY_MS) {
|
|
75
|
-
tier = "dup";
|
|
76
|
-
} else if (gapKnown && gapDays * DAY_MS >= EVOLUTION_MIN_AGE_MS) {
|
|
77
|
-
tier = "evolution";
|
|
78
|
-
} else {
|
|
79
|
-
tier = "conflict";
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return {
|
|
83
|
-
tier,
|
|
84
|
-
signals: {
|
|
85
|
-
crossScope,
|
|
86
|
-
annotated,
|
|
87
|
-
gapDays: gapDays == null ? null : Math.round(gapDays * 1000) / 1000,
|
|
88
|
-
dupMin,
|
|
89
|
-
similarity: typeof similarity === "number" ? similarity : null
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Triage + record every selected pair into the conflict_ledger. Bookkeeping
|
|
96
|
-
* only: a store failure on one pair must never fail the phase (same
|
|
97
|
-
* best-effort discipline as saveConflictReviewed / saveDifferentiatedPair —
|
|
98
|
-
* 记账本身绝不能反过来把巩固打断)。
|
|
99
|
-
*
|
|
100
|
-
* 分块 + 让出(#643 review):候选池大时同步写完全部对会连续占用事件循环、
|
|
101
|
-
* 延迟用户活动与取消信号的处理——每块之间 setImmediate 让出一次,并在每块
|
|
102
|
-
* 开始前检查 signal.aborted。取消后停止记账,余下的对下一轮自然重见;**不用
|
|
103
|
-
* 固定上限裁剪观察样本**(shadow 的分母必须完整,截断只来自取消,且在
|
|
104
|
-
* tally.truncatedAt 可见——静默截断会让分布失真,比没有数据更糟)。
|
|
105
|
-
*
|
|
106
|
-
* @returns Promise<tally> {dup, cross-scope-dup, evolution, conflict, recorded,
|
|
107
|
-
* failed, truncatedAt} — truncatedAt 非 null 表示取消点(已处理的对数)
|
|
108
|
-
*/
|
|
109
|
-
export async function recordLedgerTriage(service, runId, pairs, opts = {}) {
|
|
110
|
-
const tally = { dup: 0, "cross-scope-dup": 0, evolution: 0, conflict: 0, recorded: 0, failed: 0, truncatedAt: null };
|
|
111
|
-
const CHUNK = 50;
|
|
112
|
-
for (let start = 0; start < pairs.length; start += CHUNK) {
|
|
113
|
-
// 块间让出事件循环(首块前不用——pairs 为空或单块时零额外宏任务)
|
|
114
|
-
if (start > 0) await new Promise((resolve) => setImmediate(resolve));
|
|
115
|
-
if (opts.signal?.aborted) {
|
|
116
|
-
tally.truncatedAt = start;
|
|
117
|
-
break;
|
|
118
|
-
}
|
|
119
|
-
for (const p of pairs.slice(start, start + CHUNK)) {
|
|
120
|
-
try {
|
|
121
|
-
const verdict = triagePair(p.a, p.b, p.similarity, opts);
|
|
122
|
-
service.saveConflictLedgerEntry({
|
|
123
|
-
run_id: runId,
|
|
124
|
-
memory_a: p.a.id,
|
|
125
|
-
memory_b: p.b.id,
|
|
126
|
-
tier: verdict.tier,
|
|
127
|
-
similarity: p.similarity,
|
|
128
|
-
signals: verdict.signals
|
|
129
|
-
});
|
|
130
|
-
tally[verdict.tier] += 1;
|
|
131
|
-
tally.recorded += 1;
|
|
132
|
-
} catch (error) {
|
|
133
|
-
tally.failed += 1;
|
|
134
|
-
opts.logger?.warn?.(`dsh-mneme sleep: failed to record ledger triage for ${p.a?.id}/${p.b?.id}: ${String(error)}`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return tally;
|
|
139
|
-
}
|
|
1
|
+
// 冲突分诊(issue #641 beta 第一阶段,shadow 档):把 findPotentialConflicts 送进
|
|
2
|
+
// 冲突相位的每一对,先过确定性分诊,落进 conflict_ledger 账本。
|
|
3
|
+
//
|
|
4
|
+
// 为什么分诊先行:真实库 788 对人审队列的全量分类(只读挖掘,口径见 #641 正文)
|
|
5
|
+
// ——46% 近重复 + 20% 跨作用域重复 + 5% 时序演进,真矛盾只有 ~27%。前 71% 是该被
|
|
6
|
+
// 机械处置(merge / 去重 / 取代链)的工作量,现行窄 prompt(conflict/keep 二选一)
|
|
7
|
+
// 把它们全逼成了「输赢」,再由人来逐对裁决(≈30 条/天,且 92% 的对从未两侧同场)。
|
|
8
|
+
// 分诊把「谁该机械处理、谁才是真矛盾」从 LLM 手里拿回来:E13b 实测 winner-take-all
|
|
9
|
+
// 裁决 P(毒胜出)=86.8%,LLM 在这条链上只允许降级为分类器。
|
|
10
|
+
//
|
|
11
|
+
// 四档判据(全部确定性,本文件是唯一实现;enforce 阶段的处置接线另有 PR,本文件
|
|
12
|
+
// 在 shadow 档只产分类与信号,不做任何记忆行处置):
|
|
13
|
+
// cross-scope-dup 任一 scope 维键不同——同一内容落两个归属(#170 scopeReason 口径,
|
|
14
|
+
// 真实库占 20%)
|
|
15
|
+
// dup 同 scope + sim ≥ dupMin + created_at 差 < 24h——同日双录
|
|
16
|
+
// (真实库 76% 的对两侧差 <1 天;#616 实测 55-57% 的新条反而更短,
|
|
17
|
+
// 新鲜度对这类对无区分力,后续处置按信息量裁决)
|
|
18
|
+
// evolution 同 scope + created_at 差 ≥ 7 天——时序演进展期(T3 superseded_by
|
|
19
|
+
// 取代链的候选池,enforce 阶段接线;entity_attrs 失效信号并入也在
|
|
20
|
+
// 那一步,见 #585)
|
|
21
|
+
// conflict 其余——真矛盾残余(真实库 ~27%;账本标记,消解推迟到检索时/
|
|
22
|
+
// 会话纠正/巩固重蒸馏三时刻)
|
|
23
|
+
//
|
|
24
|
+
// 「未标注 scope」不算跨作用域:scopeKeyOf 把 NULL 归一成 null,两条都未标注时
|
|
25
|
+
// null !== null 为 false、判同档——#616 指出这个判据用于**自动归档**是洞(归属未知
|
|
26
|
+
// ≠归属相同),但在 shadow 分诊里零处置、无害;signals.annotated=false 显式落账,
|
|
27
|
+
// 让分析时能把「未标注」切出来,而不是让它静默混进同 scope 桶。
|
|
28
|
+
import { scopeKeyOf } from "../scope.js";
|
|
29
|
+
|
|
30
|
+
const DAY_MS = 86_400_000;
|
|
31
|
+
|
|
32
|
+
// T1(dup)与 T3(evolution)的时间界。24h 来自真实库分布(76% 的对 <1 天,且
|
|
33
|
+
// 1-7 天区间的「疑似同日双录」残留在 1-7 天档里很难与快速演进区分,宁保守归
|
|
34
|
+
// conflict——分诊错档在 shadow 期只是统计噪音,enforce 后错档会错杀);7 天是
|
|
35
|
+
// 演进展期的保守下限,真实库 7 天以上的对仅 0.5%(4/788)。
|
|
36
|
+
export const DUP_MAX_AGE_MS = DAY_MS;
|
|
37
|
+
export const EVOLUTION_MIN_AGE_MS = 7 * DAY_MS;
|
|
38
|
+
|
|
39
|
+
export const LEDGER_TIERS = ["dup", "cross-scope-dup", "evolution", "conflict"];
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Classify one candidate pair into a ledger tier. Pure function — no I/O, no
|
|
43
|
+
* config dependency beyond the tunables passed in, so the same verdict is
|
|
44
|
+
* reproducible from the recorded signals alone.
|
|
45
|
+
*
|
|
46
|
+
* @param {object} a candidate side A (needs agent_scope, workspace_scope, created_at)
|
|
47
|
+
* @param {object} b candidate side B
|
|
48
|
+
* @param {number} similarity detector cosine similarity (pair already passed the
|
|
49
|
+
* detection threshold, so ≥ ~0.75-0.92 depending on strictness)
|
|
50
|
+
* @param {{dupMinSimilarity?: number, now?: number}} opts dupMin 默认 0.90(#616
|
|
51
|
+
* 重测:0.95 在现库覆盖为 0,真实库 reason 相似度回声集中在 0.85-0.93,
|
|
52
|
+
* 0.90 是把回声带接进 dup 档的落点);now 仅测试注入
|
|
53
|
+
* @returns {{tier: string, signals: object}}
|
|
54
|
+
*/
|
|
55
|
+
export function triagePair(a, b, similarity, opts = {}) {
|
|
56
|
+
const dupMin = typeof opts.dupMinSimilarity === "number" ? opts.dupMinSimilarity : 0.9;
|
|
57
|
+
const now = typeof opts.now === "number" ? opts.now : Date.now();
|
|
58
|
+
|
|
59
|
+
const crossScope =
|
|
60
|
+
scopeKeyOf(a.agent_scope) !== scopeKeyOf(b.agent_scope) ||
|
|
61
|
+
scopeKeyOf(a.workspace_scope) !== scopeKeyOf(b.workspace_scope);
|
|
62
|
+
const annotated = (a.agent_scope != null || a.workspace_scope != null) &&
|
|
63
|
+
(b.agent_scope != null || b.workspace_scope != null);
|
|
64
|
+
|
|
65
|
+
// created_at 缺失不下结论:宁归 conflict(账本里最保守的一档),也不编造时间信号。
|
|
66
|
+
const createdA = Date.parse(a.created_at ?? "");
|
|
67
|
+
const createdB = Date.parse(b.created_at ?? "");
|
|
68
|
+
const gapKnown = Number.isFinite(createdA) && Number.isFinite(createdB);
|
|
69
|
+
const gapDays = gapKnown ? Math.abs(createdA - createdB) / DAY_MS : null;
|
|
70
|
+
|
|
71
|
+
let tier;
|
|
72
|
+
if (crossScope) {
|
|
73
|
+
tier = "cross-scope-dup";
|
|
74
|
+
} else if (gapKnown && typeof similarity === "number" && similarity >= dupMin && gapDays < DUP_MAX_AGE_MS / DAY_MS) {
|
|
75
|
+
tier = "dup";
|
|
76
|
+
} else if (gapKnown && gapDays * DAY_MS >= EVOLUTION_MIN_AGE_MS) {
|
|
77
|
+
tier = "evolution";
|
|
78
|
+
} else {
|
|
79
|
+
tier = "conflict";
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return {
|
|
83
|
+
tier,
|
|
84
|
+
signals: {
|
|
85
|
+
crossScope,
|
|
86
|
+
annotated,
|
|
87
|
+
gapDays: gapDays == null ? null : Math.round(gapDays * 1000) / 1000,
|
|
88
|
+
dupMin,
|
|
89
|
+
similarity: typeof similarity === "number" ? similarity : null
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Triage + record every selected pair into the conflict_ledger. Bookkeeping
|
|
96
|
+
* only: a store failure on one pair must never fail the phase (same
|
|
97
|
+
* best-effort discipline as saveConflictReviewed / saveDifferentiatedPair —
|
|
98
|
+
* 记账本身绝不能反过来把巩固打断)。
|
|
99
|
+
*
|
|
100
|
+
* 分块 + 让出(#643 review):候选池大时同步写完全部对会连续占用事件循环、
|
|
101
|
+
* 延迟用户活动与取消信号的处理——每块之间 setImmediate 让出一次,并在每块
|
|
102
|
+
* 开始前检查 signal.aborted。取消后停止记账,余下的对下一轮自然重见;**不用
|
|
103
|
+
* 固定上限裁剪观察样本**(shadow 的分母必须完整,截断只来自取消,且在
|
|
104
|
+
* tally.truncatedAt 可见——静默截断会让分布失真,比没有数据更糟)。
|
|
105
|
+
*
|
|
106
|
+
* @returns Promise<tally> {dup, cross-scope-dup, evolution, conflict, recorded,
|
|
107
|
+
* failed, truncatedAt} — truncatedAt 非 null 表示取消点(已处理的对数)
|
|
108
|
+
*/
|
|
109
|
+
export async function recordLedgerTriage(service, runId, pairs, opts = {}) {
|
|
110
|
+
const tally = { dup: 0, "cross-scope-dup": 0, evolution: 0, conflict: 0, recorded: 0, failed: 0, truncatedAt: null };
|
|
111
|
+
const CHUNK = 50;
|
|
112
|
+
for (let start = 0; start < pairs.length; start += CHUNK) {
|
|
113
|
+
// 块间让出事件循环(首块前不用——pairs 为空或单块时零额外宏任务)
|
|
114
|
+
if (start > 0) await new Promise((resolve) => setImmediate(resolve));
|
|
115
|
+
if (opts.signal?.aborted) {
|
|
116
|
+
tally.truncatedAt = start;
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
for (const p of pairs.slice(start, start + CHUNK)) {
|
|
120
|
+
try {
|
|
121
|
+
const verdict = triagePair(p.a, p.b, p.similarity, opts);
|
|
122
|
+
service.saveConflictLedgerEntry({
|
|
123
|
+
run_id: runId,
|
|
124
|
+
memory_a: p.a.id,
|
|
125
|
+
memory_b: p.b.id,
|
|
126
|
+
tier: verdict.tier,
|
|
127
|
+
similarity: p.similarity,
|
|
128
|
+
signals: verdict.signals
|
|
129
|
+
});
|
|
130
|
+
tally[verdict.tier] += 1;
|
|
131
|
+
tally.recorded += 1;
|
|
132
|
+
} catch (error) {
|
|
133
|
+
tally.failed += 1;
|
|
134
|
+
opts.logger?.warn?.(`dsh-mneme sleep: failed to record ledger triage for ${p.a?.id}/${p.b?.id}: ${String(error)}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return tally;
|
|
139
|
+
}
|