@tenphi/akno-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 +83 -0
- package/README.md +26 -0
- package/config/default.jsonc +548 -0
- package/dist/bench/answer-corpus.d.ts +48 -0
- package/dist/bench/answer-corpus.d.ts.map +1 -0
- package/dist/bench/answer-corpus.js +491 -0
- package/dist/bench/answer-corpus.js.map +1 -0
- package/dist/bench/answer.d.ts +156 -0
- package/dist/bench/answer.d.ts.map +1 -0
- package/dist/bench/answer.js +608 -0
- package/dist/bench/answer.js.map +1 -0
- package/dist/bench/auto-recall-answer-corpus.d.ts +21 -0
- package/dist/bench/auto-recall-answer-corpus.d.ts.map +1 -0
- package/dist/bench/auto-recall-answer-corpus.js +245 -0
- package/dist/bench/auto-recall-answer-corpus.js.map +1 -0
- package/dist/bench/auto-recall-answer.d.ts +198 -0
- package/dist/bench/auto-recall-answer.d.ts.map +1 -0
- package/dist/bench/auto-recall-answer.js +720 -0
- package/dist/bench/auto-recall-answer.js.map +1 -0
- package/dist/bench/auto-recall-corpus.d.ts +45 -0
- package/dist/bench/auto-recall-corpus.d.ts.map +1 -0
- package/dist/bench/auto-recall-corpus.js +221 -0
- package/dist/bench/auto-recall-corpus.js.map +1 -0
- package/dist/bench/auto-recall.d.ts +171 -0
- package/dist/bench/auto-recall.d.ts.map +1 -0
- package/dist/bench/auto-recall.js +651 -0
- package/dist/bench/auto-recall.js.map +1 -0
- package/dist/bench/entity-resolution.d.ts +37 -0
- package/dist/bench/entity-resolution.d.ts.map +1 -0
- package/dist/bench/entity-resolution.js +121 -0
- package/dist/bench/entity-resolution.js.map +1 -0
- package/dist/bench/graph.d.ts +57 -0
- package/dist/bench/graph.d.ts.map +1 -0
- package/dist/bench/graph.js +573 -0
- package/dist/bench/graph.js.map +1 -0
- package/dist/bench/llm-ranking-probe.d.ts +27 -0
- package/dist/bench/llm-ranking-probe.d.ts.map +1 -0
- package/dist/bench/llm-ranking-probe.js +105 -0
- package/dist/bench/llm-ranking-probe.js.map +1 -0
- package/dist/bench/merge-discovery-corpus.d.ts +26 -0
- package/dist/bench/merge-discovery-corpus.d.ts.map +1 -0
- package/dist/bench/merge-discovery-corpus.js +114 -0
- package/dist/bench/merge-discovery-corpus.js.map +1 -0
- package/dist/bench/merge-discovery-review.d.ts +81 -0
- package/dist/bench/merge-discovery-review.d.ts.map +1 -0
- package/dist/bench/merge-discovery-review.js +149 -0
- package/dist/bench/merge-discovery-review.js.map +1 -0
- package/dist/bench/merge-discovery.d.ts +122 -0
- package/dist/bench/merge-discovery.d.ts.map +1 -0
- package/dist/bench/merge-discovery.js +390 -0
- package/dist/bench/merge-discovery.js.map +1 -0
- package/dist/bench/mixed-retrieval.d.ts +35 -0
- package/dist/bench/mixed-retrieval.d.ts.map +1 -0
- package/dist/bench/mixed-retrieval.js +355 -0
- package/dist/bench/mixed-retrieval.js.map +1 -0
- package/dist/bench/ranking-corpus.d.ts +29 -0
- package/dist/bench/ranking-corpus.d.ts.map +1 -0
- package/dist/bench/ranking-corpus.js +514 -0
- package/dist/bench/ranking-corpus.js.map +1 -0
- package/dist/bench/ranking-end-to-end.d.ts +112 -0
- package/dist/bench/ranking-end-to-end.d.ts.map +1 -0
- package/dist/bench/ranking-end-to-end.js +479 -0
- package/dist/bench/ranking-end-to-end.js.map +1 -0
- package/dist/bench/ranking-latency.d.ts +71 -0
- package/dist/bench/ranking-latency.d.ts.map +1 -0
- package/dist/bench/ranking-latency.js +130 -0
- package/dist/bench/ranking-latency.js.map +1 -0
- package/dist/bench/ranking-matrix.d.ts +141 -0
- package/dist/bench/ranking-matrix.d.ts.map +1 -0
- package/dist/bench/ranking-matrix.js +526 -0
- package/dist/bench/ranking-matrix.js.map +1 -0
- package/dist/bench/ranking-review.d.ts +93 -0
- package/dist/bench/ranking-review.d.ts.map +1 -0
- package/dist/bench/ranking-review.js +249 -0
- package/dist/bench/ranking-review.js.map +1 -0
- package/dist/bench/ranking.d.ts +122 -0
- package/dist/bench/ranking.d.ts.map +1 -0
- package/dist/bench/ranking.js +547 -0
- package/dist/bench/ranking.js.map +1 -0
- package/dist/bench.d.ts +60 -0
- package/dist/bench.d.ts.map +1 -0
- package/dist/bench.js +167 -0
- package/dist/bench.js.map +1 -0
- package/dist/config/jsonc.d.ts +8 -0
- package/dist/config/jsonc.d.ts.map +1 -0
- package/dist/config/jsonc.js +85 -0
- package/dist/config/jsonc.js.map +1 -0
- package/dist/config/load.d.ts +43 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +608 -0
- package/dist/config/load.js.map +1 -0
- package/dist/config/paths.d.ts +10 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +38 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/schema.d.ts +698 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +394 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/write-rules.d.ts +41 -0
- package/dist/config/write-rules.d.ts.map +1 -0
- package/dist/config/write-rules.js +225 -0
- package/dist/config/write-rules.js.map +1 -0
- package/dist/config/write-setup.d.ts +42 -0
- package/dist/config/write-setup.d.ts.map +1 -0
- package/dist/config/write-setup.js +358 -0
- package/dist/config/write-setup.js.map +1 -0
- package/dist/context.d.ts +64 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +14 -0
- package/dist/context.js.map +1 -0
- package/dist/doctor.d.ts +115 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +388 -0
- package/dist/doctor.js.map +1 -0
- package/dist/index/chunk.d.ts +62 -0
- package/dist/index/chunk.d.ts.map +1 -0
- package/dist/index/chunk.js +307 -0
- package/dist/index/chunk.js.map +1 -0
- package/dist/index/defer.d.ts +32 -0
- package/dist/index/defer.d.ts.map +1 -0
- package/dist/index/defer.js +66 -0
- package/dist/index/defer.js.map +1 -0
- package/dist/index/derive.d.ts +99 -0
- package/dist/index/derive.d.ts.map +1 -0
- package/dist/index/derive.js +378 -0
- package/dist/index/derive.js.map +1 -0
- package/dist/index/entity-resolution.d.ts +68 -0
- package/dist/index/entity-resolution.d.ts.map +1 -0
- package/dist/index/entity-resolution.js +305 -0
- package/dist/index/entity-resolution.js.map +1 -0
- package/dist/index/graph.d.ts +46 -0
- package/dist/index/graph.d.ts.map +1 -0
- package/dist/index/graph.js +618 -0
- package/dist/index/graph.js.map +1 -0
- package/dist/index/indexer.d.ts +301 -0
- package/dist/index/indexer.d.ts.map +1 -0
- package/dist/index/indexer.js +1398 -0
- package/dist/index/indexer.js.map +1 -0
- package/dist/index/revision-barrier.d.ts +30 -0
- package/dist/index/revision-barrier.d.ts.map +1 -0
- package/dist/index/revision-barrier.js +140 -0
- package/dist/index/revision-barrier.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/ingest/adoption-eligibility.d.ts +4 -0
- package/dist/ingest/adoption-eligibility.d.ts.map +1 -0
- package/dist/ingest/adoption-eligibility.js +18 -0
- package/dist/ingest/adoption-eligibility.js.map +1 -0
- package/dist/ingest/availability.d.ts +15 -0
- package/dist/ingest/availability.d.ts.map +1 -0
- package/dist/ingest/availability.js +37 -0
- package/dist/ingest/availability.js.map +1 -0
- package/dist/ingest/extract.d.ts +58 -0
- package/dist/ingest/extract.d.ts.map +1 -0
- package/dist/ingest/extract.js +255 -0
- package/dist/ingest/extract.js.map +1 -0
- package/dist/ingest/fetch.d.ts +35 -0
- package/dist/ingest/fetch.d.ts.map +1 -0
- package/dist/ingest/fetch.js +142 -0
- package/dist/ingest/fetch.js.map +1 -0
- package/dist/ingest/inbox.d.ts +53 -0
- package/dist/ingest/inbox.d.ts.map +1 -0
- package/dist/ingest/inbox.js +110 -0
- package/dist/ingest/inbox.js.map +1 -0
- package/dist/ingest/name.d.ts +72 -0
- package/dist/ingest/name.d.ts.map +1 -0
- package/dist/ingest/name.js +208 -0
- package/dist/ingest/name.js.map +1 -0
- package/dist/ingest/parts.d.ts +78 -0
- package/dist/ingest/parts.d.ts.map +1 -0
- package/dist/ingest/parts.js +52 -0
- package/dist/ingest/parts.js.map +1 -0
- package/dist/ingest/rendition.d.ts +75 -0
- package/dist/ingest/rendition.d.ts.map +1 -0
- package/dist/ingest/rendition.js +92 -0
- package/dist/ingest/rendition.js.map +1 -0
- package/dist/ingest/store.d.ts +66 -0
- package/dist/ingest/store.d.ts.map +1 -0
- package/dist/ingest/store.js +92 -0
- package/dist/ingest/store.js.map +1 -0
- package/dist/kb/folders.d.ts +37 -0
- package/dist/kb/folders.d.ts.map +1 -0
- package/dist/kb/folders.js +133 -0
- package/dist/kb/folders.js.map +1 -0
- package/dist/kb/frontmatter.d.ts +91 -0
- package/dist/kb/frontmatter.d.ts.map +1 -0
- package/dist/kb/frontmatter.js +274 -0
- package/dist/kb/frontmatter.js.map +1 -0
- package/dist/kb/line-facts.d.ts +29 -0
- package/dist/kb/line-facts.d.ts.map +1 -0
- package/dist/kb/line-facts.js +23 -0
- package/dist/kb/line-facts.js.map +1 -0
- package/dist/kb/page.d.ts +92 -0
- package/dist/kb/page.d.ts.map +1 -0
- package/dist/kb/page.js +243 -0
- package/dist/kb/page.js.map +1 -0
- package/dist/kb/scan.d.ts +38 -0
- package/dist/kb/scan.d.ts.map +1 -0
- package/dist/kb/scan.js +109 -0
- package/dist/kb/scan.js.map +1 -0
- package/dist/kb/words.d.ts +30 -0
- package/dist/kb/words.d.ts.map +1 -0
- package/dist/kb/words.js +107 -0
- package/dist/kb/words.js.map +1 -0
- package/dist/maintenance/adopt.d.ts +65 -0
- package/dist/maintenance/adopt.d.ts.map +1 -0
- package/dist/maintenance/adopt.js +238 -0
- package/dist/maintenance/adopt.js.map +1 -0
- package/dist/maintenance/budget.d.ts +55 -0
- package/dist/maintenance/budget.d.ts.map +1 -0
- package/dist/maintenance/budget.js +61 -0
- package/dist/maintenance/budget.js.map +1 -0
- package/dist/maintenance/conflicts.d.ts +105 -0
- package/dist/maintenance/conflicts.d.ts.map +1 -0
- package/dist/maintenance/conflicts.js +368 -0
- package/dist/maintenance/conflicts.js.map +1 -0
- package/dist/maintenance/contradictions.d.ts +34 -0
- package/dist/maintenance/contradictions.d.ts.map +1 -0
- package/dist/maintenance/contradictions.js +199 -0
- package/dist/maintenance/contradictions.js.map +1 -0
- package/dist/maintenance/curate.d.ts +156 -0
- package/dist/maintenance/curate.d.ts.map +1 -0
- package/dist/maintenance/curate.js +2070 -0
- package/dist/maintenance/curate.js.map +1 -0
- package/dist/maintenance/dream.d.ts +139 -0
- package/dist/maintenance/dream.d.ts.map +1 -0
- package/dist/maintenance/dream.js +1632 -0
- package/dist/maintenance/dream.js.map +1 -0
- package/dist/maintenance/graph-candidates.d.ts +19 -0
- package/dist/maintenance/graph-candidates.d.ts.map +1 -0
- package/dist/maintenance/graph-candidates.js +120 -0
- package/dist/maintenance/graph-candidates.js.map +1 -0
- package/dist/maintenance/housekeeping.d.ts +81 -0
- package/dist/maintenance/housekeeping.d.ts.map +1 -0
- package/dist/maintenance/housekeeping.js +281 -0
- package/dist/maintenance/housekeeping.js.map +1 -0
- package/dist/maintenance/link-repairs.d.ts +58 -0
- package/dist/maintenance/link-repairs.d.ts.map +1 -0
- package/dist/maintenance/link-repairs.js +281 -0
- package/dist/maintenance/link-repairs.js.map +1 -0
- package/dist/maintenance/log.d.ts +41 -0
- package/dist/maintenance/log.d.ts.map +1 -0
- package/dist/maintenance/log.js +72 -0
- package/dist/maintenance/log.js.map +1 -0
- package/dist/maintenance/managed-item-routing.d.ts +48 -0
- package/dist/maintenance/managed-item-routing.d.ts.map +1 -0
- package/dist/maintenance/managed-item-routing.js +281 -0
- package/dist/maintenance/managed-item-routing.js.map +1 -0
- package/dist/maintenance/managed-item-sources.d.ts +38 -0
- package/dist/maintenance/managed-item-sources.d.ts.map +1 -0
- package/dist/maintenance/managed-item-sources.js +324 -0
- package/dist/maintenance/managed-item-sources.js.map +1 -0
- package/dist/maintenance/managed-items.d.ts +162 -0
- package/dist/maintenance/managed-items.d.ts.map +1 -0
- package/dist/maintenance/managed-items.js +1329 -0
- package/dist/maintenance/managed-items.js.map +1 -0
- package/dist/maintenance/merge-classifier.d.ts +19 -0
- package/dist/maintenance/merge-classifier.d.ts.map +1 -0
- package/dist/maintenance/merge-classifier.js +49 -0
- package/dist/maintenance/merge-classifier.js.map +1 -0
- package/dist/maintenance/model-telemetry.d.ts +45 -0
- package/dist/maintenance/model-telemetry.d.ts.map +1 -0
- package/dist/maintenance/model-telemetry.js +107 -0
- package/dist/maintenance/model-telemetry.js.map +1 -0
- package/dist/maintenance/observe.d.ts +72 -0
- package/dist/maintenance/observe.d.ts.map +1 -0
- package/dist/maintenance/observe.js +265 -0
- package/dist/maintenance/observe.js.map +1 -0
- package/dist/maintenance/path-policy.d.ts +83 -0
- package/dist/maintenance/path-policy.d.ts.map +1 -0
- package/dist/maintenance/path-policy.js +360 -0
- package/dist/maintenance/path-policy.js.map +1 -0
- package/dist/maintenance/plans.d.ts +366 -0
- package/dist/maintenance/plans.d.ts.map +1 -0
- package/dist/maintenance/plans.js +4060 -0
- package/dist/maintenance/plans.js.map +1 -0
- package/dist/maintenance/profile.d.ts +33 -0
- package/dist/maintenance/profile.d.ts.map +1 -0
- package/dist/maintenance/profile.js +99 -0
- package/dist/maintenance/profile.js.map +1 -0
- package/dist/maintenance/recovery.d.ts +38 -0
- package/dist/maintenance/recovery.d.ts.map +1 -0
- package/dist/maintenance/recovery.js +217 -0
- package/dist/maintenance/recovery.js.map +1 -0
- package/dist/maintenance/repair.d.ts +37 -0
- package/dist/maintenance/repair.d.ts.map +1 -0
- package/dist/maintenance/repair.js +183 -0
- package/dist/maintenance/repair.js.map +1 -0
- package/dist/maintenance/rule-drift.d.ts +104 -0
- package/dist/maintenance/rule-drift.d.ts.map +1 -0
- package/dist/maintenance/rule-drift.js +507 -0
- package/dist/maintenance/rule-drift.js.map +1 -0
- package/dist/maintenance/run-verification.d.ts +44 -0
- package/dist/maintenance/run-verification.d.ts.map +1 -0
- package/dist/maintenance/run-verification.js +253 -0
- package/dist/maintenance/run-verification.js.map +1 -0
- package/dist/maintenance/runs.d.ts +142 -0
- package/dist/maintenance/runs.d.ts.map +1 -0
- package/dist/maintenance/runs.js +439 -0
- package/dist/maintenance/runs.js.map +1 -0
- package/dist/maintenance/semantic-merge-discovery.d.ts +54 -0
- package/dist/maintenance/semantic-merge-discovery.d.ts.map +1 -0
- package/dist/maintenance/semantic-merge-discovery.js +308 -0
- package/dist/maintenance/semantic-merge-discovery.js.map +1 -0
- package/dist/maintenance/temporal.d.ts +44 -0
- package/dist/maintenance/temporal.d.ts.map +1 -0
- package/dist/maintenance/temporal.js +295 -0
- package/dist/maintenance/temporal.js.map +1 -0
- package/dist/models/client.d.ts +214 -0
- package/dist/models/client.d.ts.map +1 -0
- package/dist/models/client.js +904 -0
- package/dist/models/client.js.map +1 -0
- package/dist/models/provider-api.d.ts +28 -0
- package/dist/models/provider-api.d.ts.map +1 -0
- package/dist/models/provider-api.js +320 -0
- package/dist/models/provider-api.js.map +1 -0
- package/dist/open.d.ts +163 -0
- package/dist/open.d.ts.map +1 -0
- package/dist/open.js +382 -0
- package/dist/open.js.map +1 -0
- package/dist/ops/adopt.d.ts +12 -0
- package/dist/ops/adopt.d.ts.map +1 -0
- package/dist/ops/adopt.js +138 -0
- package/dist/ops/adopt.js.map +1 -0
- package/dist/ops/answer.d.ts +29 -0
- package/dist/ops/answer.d.ts.map +1 -0
- package/dist/ops/answer.js +557 -0
- package/dist/ops/answer.js.map +1 -0
- package/dist/ops/context.d.ts +18 -0
- package/dist/ops/context.d.ts.map +1 -0
- package/dist/ops/context.js +713 -0
- package/dist/ops/context.js.map +1 -0
- package/dist/ops/folder.d.ts +23 -0
- package/dist/ops/folder.d.ts.map +1 -0
- package/dist/ops/folder.js +130 -0
- package/dist/ops/folder.js.map +1 -0
- package/dist/ops/forget.d.ts +14 -0
- package/dist/ops/forget.d.ts.map +1 -0
- package/dist/ops/forget.js +212 -0
- package/dist/ops/forget.js.map +1 -0
- package/dist/ops/graph.d.ts +10 -0
- package/dist/ops/graph.d.ts.map +1 -0
- package/dist/ops/graph.js +480 -0
- package/dist/ops/graph.js.map +1 -0
- package/dist/ops/ingest.d.ts +40 -0
- package/dist/ops/ingest.d.ts.map +1 -0
- package/dist/ops/ingest.js +434 -0
- package/dist/ops/ingest.js.map +1 -0
- package/dist/ops/list.d.ts +9 -0
- package/dist/ops/list.d.ts.map +1 -0
- package/dist/ops/list.js +217 -0
- package/dist/ops/list.js.map +1 -0
- package/dist/ops/move.d.ts +20 -0
- package/dist/ops/move.d.ts.map +1 -0
- package/dist/ops/move.js +173 -0
- package/dist/ops/move.js.map +1 -0
- package/dist/ops/read.d.ts +9 -0
- package/dist/ops/read.d.ts.map +1 -0
- package/dist/ops/read.js +271 -0
- package/dist/ops/read.js.map +1 -0
- package/dist/ops/recall.d.ts +13 -0
- package/dist/ops/recall.d.ts.map +1 -0
- package/dist/ops/recall.js +297 -0
- package/dist/ops/recall.js.map +1 -0
- package/dist/ops/remember.d.ts +34 -0
- package/dist/ops/remember.d.ts.map +1 -0
- package/dist/ops/remember.js +660 -0
- package/dist/ops/remember.js.map +1 -0
- package/dist/ops/timeline.d.ts +11 -0
- package/dist/ops/timeline.d.ts.map +1 -0
- package/dist/ops/timeline.js +111 -0
- package/dist/ops/timeline.js.map +1 -0
- package/dist/ops/undo.d.ts +9 -0
- package/dist/ops/undo.d.ts.map +1 -0
- package/dist/ops/undo.js +38 -0
- package/dist/ops/undo.js.map +1 -0
- package/dist/ops/write.d.ts +55 -0
- package/dist/ops/write.d.ts.map +1 -0
- package/dist/ops/write.js +463 -0
- package/dist/ops/write.js.map +1 -0
- package/dist/recall/assemble.d.ts +81 -0
- package/dist/recall/assemble.d.ts.map +1 -0
- package/dist/recall/assemble.js +603 -0
- package/dist/recall/assemble.js.map +1 -0
- package/dist/recall/expand.d.ts +55 -0
- package/dist/recall/expand.d.ts.map +1 -0
- package/dist/recall/expand.js +282 -0
- package/dist/recall/expand.js.map +1 -0
- package/dist/recall/graph-arm.d.ts +17 -0
- package/dist/recall/graph-arm.d.ts.map +1 -0
- package/dist/recall/graph-arm.js +227 -0
- package/dist/recall/graph-arm.js.map +1 -0
- package/dist/recall/llm-rerank.d.ts +55 -0
- package/dist/recall/llm-rerank.d.ts.map +1 -0
- package/dist/recall/llm-rerank.js +213 -0
- package/dist/recall/llm-rerank.js.map +1 -0
- package/dist/recall/reranker-calibration.d.ts +23 -0
- package/dist/recall/reranker-calibration.d.ts.map +1 -0
- package/dist/recall/reranker-calibration.js +161 -0
- package/dist/recall/reranker-calibration.js.map +1 -0
- package/dist/recall/search.d.ts +107 -0
- package/dist/recall/search.d.ts.map +1 -0
- package/dist/recall/search.js +530 -0
- package/dist/recall/search.js.map +1 -0
- package/dist/reserved.d.ts +39 -0
- package/dist/reserved.d.ts.map +1 -0
- package/dist/reserved.js +63 -0
- package/dist/reserved.js.map +1 -0
- package/dist/rules/compile.d.ts +27 -0
- package/dist/rules/compile.d.ts.map +1 -0
- package/dist/rules/compile.js +105 -0
- package/dist/rules/compile.js.map +1 -0
- package/dist/setup/model-free.d.ts +15 -0
- package/dist/setup/model-free.d.ts.map +1 -0
- package/dist/setup/model-free.js +26 -0
- package/dist/setup/model-free.js.map +1 -0
- package/dist/setup/openai.d.ts +46 -0
- package/dist/setup/openai.d.ts.map +1 -0
- package/dist/setup/openai.js +165 -0
- package/dist/setup/openai.js.map +1 -0
- package/dist/store/db.d.ts +61 -0
- package/dist/store/db.d.ts.map +1 -0
- package/dist/store/db.js +265 -0
- package/dist/store/db.js.map +1 -0
- package/dist/store/ids.d.ts +29 -0
- package/dist/store/ids.d.ts.map +1 -0
- package/dist/store/ids.js +0 -0
- package/dist/store/ids.js.map +1 -0
- package/dist/store/migrations.d.ts +54 -0
- package/dist/store/migrations.d.ts.map +1 -0
- package/dist/store/migrations.js +923 -0
- package/dist/store/migrations.js.map +1 -0
- package/dist/store/vectors.d.ts +34 -0
- package/dist/store/vectors.d.ts.map +1 -0
- package/dist/store/vectors.js +158 -0
- package/dist/store/vectors.js.map +1 -0
- package/dist/timeline/documents.d.ts +23 -0
- package/dist/timeline/documents.d.ts.map +1 -0
- package/dist/timeline/documents.js +262 -0
- package/dist/timeline/documents.js.map +1 -0
- package/dist/watch/watcher.d.ts +43 -0
- package/dist/watch/watcher.d.ts.map +1 -0
- package/dist/watch/watcher.js +143 -0
- package/dist/watch/watcher.js.map +1 -0
- package/dist/write/atomic.d.ts +34 -0
- package/dist/write/atomic.d.ts.map +1 -0
- package/dist/write/atomic.js +58 -0
- package/dist/write/atomic.js.map +1 -0
- package/dist/write/conflict.d.ts +43 -0
- package/dist/write/conflict.d.ts.map +1 -0
- package/dist/write/conflict.js +149 -0
- package/dist/write/conflict.js.map +1 -0
- package/dist/write/edit.d.ts +59 -0
- package/dist/write/edit.d.ts.map +1 -0
- package/dist/write/edit.js +231 -0
- package/dist/write/edit.js.map +1 -0
- package/dist/write/gate.d.ts +59 -0
- package/dist/write/gate.d.ts.map +1 -0
- package/dist/write/gate.js +99 -0
- package/dist/write/gate.js.map +1 -0
- package/dist/write/journal.d.ts +90 -0
- package/dist/write/journal.d.ts.map +1 -0
- package/dist/write/journal.js +187 -0
- package/dist/write/journal.js.map +1 -0
- package/dist/write/ledger.d.ts +28 -0
- package/dist/write/ledger.d.ts.map +1 -0
- package/dist/write/ledger.js +141 -0
- package/dist/write/ledger.js.map +1 -0
- package/dist/write/placement.d.ts +29 -0
- package/dist/write/placement.d.ts.map +1 -0
- package/dist/write/placement.js +140 -0
- package/dist/write/placement.js.map +1 -0
- package/dist/write/remember-fallback.d.ts +18 -0
- package/dist/write/remember-fallback.d.ts.map +1 -0
- package/dist/write/remember-fallback.js +48 -0
- package/dist/write/remember-fallback.js.map +1 -0
- package/dist/write/retain.d.ts +61 -0
- package/dist/write/retain.d.ts.map +1 -0
- package/dist/write/retain.js +272 -0
- package/dist/write/retain.js.map +1 -0
- package/package.json +50 -0
- package/swift/extract.swift +232 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { parseJsonLoose } from "../models/client.js";
|
|
3
|
+
import { sha256 } from "../store/ids.js";
|
|
4
|
+
import { valuesConflict } from "../write/conflict.js";
|
|
5
|
+
/**
|
|
6
|
+
* Structural candidates: live facts from `full` pages, grouped by subject and attribute,
|
|
7
|
+
* where two pages carry values that disagree.
|
|
8
|
+
*
|
|
9
|
+
* No model call. That matters for the same reason it matters inline — the pass has to be
|
|
10
|
+
* runnable on a machine with no model at all, and a candidate list is useful on its own.
|
|
11
|
+
*/
|
|
12
|
+
export function findCrossPageConflicts(ctx, maxPairs) {
|
|
13
|
+
return findCrossPageConflictsInStore(ctx.store, maxPairs);
|
|
14
|
+
}
|
|
15
|
+
/** The model-free candidate pass, shared with graph eligibility rebuilding. */
|
|
16
|
+
export function findCrossPageConflictsInStore(store, maxPairs) {
|
|
17
|
+
const rows = store.db
|
|
18
|
+
.prepare(`SELECT p.slug, f.line_start, f.subject, f.attribute, f.value, f.claim, f.confidence, f.first_seen
|
|
19
|
+
FROM facts f JOIN pages p ON p.id = f.page_id
|
|
20
|
+
WHERE f.valid_to IS NULL
|
|
21
|
+
AND p.role = 'knowledge'
|
|
22
|
+
-- A structural write keeps old facts for retryability but moves body_hash ahead.
|
|
23
|
+
-- Those facts describe the previous bytes and cannot classify the current page.
|
|
24
|
+
AND p.derived_hash = p.body_hash
|
|
25
|
+
AND f.subject IS NOT NULL
|
|
26
|
+
AND f.attribute IS NOT NULL
|
|
27
|
+
AND f.value IS NOT NULL
|
|
28
|
+
-- A shaky claim must not fight a solid one; the same floor inline uses.
|
|
29
|
+
AND f.confidence >= 0.5
|
|
30
|
+
ORDER BY p.slug, f.line_start`)
|
|
31
|
+
.all();
|
|
32
|
+
const groups = new Map();
|
|
33
|
+
for (const row of rows) {
|
|
34
|
+
const key = `${normalize(row.subject)}|${normalize(row.attribute)}`;
|
|
35
|
+
const existing = groups.get(key);
|
|
36
|
+
if (existing)
|
|
37
|
+
existing.push(row);
|
|
38
|
+
else
|
|
39
|
+
groups.set(key, [row]);
|
|
40
|
+
}
|
|
41
|
+
const out = [];
|
|
42
|
+
for (const [key, facts] of groups) {
|
|
43
|
+
if (facts.length < 2)
|
|
44
|
+
continue;
|
|
45
|
+
// Same page, same attribute is inline's job and usually a list rather than a
|
|
46
|
+
// contradiction — two lines of one table, say.
|
|
47
|
+
if (new Set(facts.map((fact) => fact.slug)).size < 2)
|
|
48
|
+
continue;
|
|
49
|
+
const disagreeing = pickDisagreeing(facts);
|
|
50
|
+
if (disagreeing.length < 2)
|
|
51
|
+
continue;
|
|
52
|
+
const [subject, attribute] = key.split('|');
|
|
53
|
+
const conflict = {
|
|
54
|
+
fingerprint: '',
|
|
55
|
+
subject: subject,
|
|
56
|
+
attribute: attribute,
|
|
57
|
+
claims: disagreeing.map((fact) => ({
|
|
58
|
+
slug: fact.slug,
|
|
59
|
+
line: fact.line_start,
|
|
60
|
+
value: fact.value,
|
|
61
|
+
claim: fact.claim,
|
|
62
|
+
confidence: fact.confidence,
|
|
63
|
+
seen: fact.first_seen.slice(0, 10),
|
|
64
|
+
})),
|
|
65
|
+
verdict: 'unverified',
|
|
66
|
+
};
|
|
67
|
+
conflict.fingerprint = conflictFingerprint(conflict);
|
|
68
|
+
out.push(conflict);
|
|
69
|
+
if (out.length >= maxPairs)
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
/** The first pair that genuinely disagrees, plus anything else disagreeing with it. */
|
|
75
|
+
function pickDisagreeing(facts) {
|
|
76
|
+
for (let i = 0; i < facts.length; i++) {
|
|
77
|
+
const anchor = facts[i];
|
|
78
|
+
const against = facts.filter((other, index) => index !== i && other.slug !== anchor.slug && valuesConflict(anchor.value, other.value));
|
|
79
|
+
if (against.length > 0)
|
|
80
|
+
return [anchor, ...against];
|
|
81
|
+
}
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
84
|
+
export const CONFLICT_PROMPT_VERSION = 'typed-v2-qualified';
|
|
85
|
+
const VERIFY = `You classify structurally incompatible claims from a personal knowledge base.
|
|
86
|
+
|
|
87
|
+
Reply with JSON only:
|
|
88
|
+
{ "outcome": "unresolved", "current": null, "qualification": null, "reason": "brief content-safe reason" }
|
|
89
|
+
|
|
90
|
+
Allowed outcomes:
|
|
91
|
+
- not_a_conflict: different subjects, fields, scopes, equivalent values, or total-versus-part.
|
|
92
|
+
- time_scoped: both claims explicitly describe different periods and can remain true together.
|
|
93
|
+
- superseded: one claim explicitly establishes the current/effective value and the other is stale history.
|
|
94
|
+
- qualified: one broad claim is accurate only within a scope explicitly established by another supplied claim.
|
|
95
|
+
- unresolved: the claims are incompatible but the supplied text does not prove which one is current.
|
|
96
|
+
|
|
97
|
+
For superseded, "current" must be copied exactly from one supplied slug. Never infer recency from page order,
|
|
98
|
+
confidence, or the date Akno first indexed a page. Use superseded only when the claim text itself establishes
|
|
99
|
+
an exact YYYY-MM-DD boundary with as-of, effective, from, or since. When uncertain, use unresolved. The reason
|
|
100
|
+
must describe the class of evidence without repeating names, values, or claim text.
|
|
101
|
+
|
|
102
|
+
For qualified, set "current" to null and set "qualification" to:
|
|
103
|
+
{ "target": "slug:line", "evidence": "slug:line", "scope": "exact phrase copied from evidence" }
|
|
104
|
+
The target must be the broad claim. The evidence must be a different supplied claim that contains both the
|
|
105
|
+
target's exact value and the exact scope phrase. Scope is a short noun phrase such as "standard coverage", not
|
|
106
|
+
a sentence or an invented opposite. If those conditions are not explicit in the supplied claims, use
|
|
107
|
+
unresolved.`;
|
|
108
|
+
const QUALIFICATION_SCHEMA = z.object({
|
|
109
|
+
target: z.string(),
|
|
110
|
+
evidence: z.string(),
|
|
111
|
+
scope: z.string(),
|
|
112
|
+
});
|
|
113
|
+
export const VERIFY_SCHEMA = z.object({
|
|
114
|
+
outcome: z.enum(['not_a_conflict', 'time_scoped', 'superseded', 'qualified', 'unresolved']),
|
|
115
|
+
current: z.string().nullable(),
|
|
116
|
+
qualification: QUALIFICATION_SCHEMA.nullable(),
|
|
117
|
+
reason: z.string(),
|
|
118
|
+
});
|
|
119
|
+
/**
|
|
120
|
+
* Asks the derive model whether each candidate really is a contradiction.
|
|
121
|
+
*
|
|
122
|
+
* This belongs here rather than inline, because correctness that requires a model call per
|
|
123
|
+
* write belongs in the background. A verdict of `unverified` is left on anything
|
|
124
|
+
* the model could not judge, because dropping those would turn "we did not check" into "we
|
|
125
|
+
* checked and it was fine".
|
|
126
|
+
*/
|
|
127
|
+
export async function verifyConflicts(ctx, candidates) {
|
|
128
|
+
if (!ctx.models.derive.available || candidates.length === 0) {
|
|
129
|
+
return { conflicts: candidates, warnings: [] };
|
|
130
|
+
}
|
|
131
|
+
const warnings = [];
|
|
132
|
+
const conflicts = [];
|
|
133
|
+
for (const candidate of candidates) {
|
|
134
|
+
const cached = cachedConflictVerdict(ctx.store, candidate, ctx.models.derive.modelId);
|
|
135
|
+
if (cached) {
|
|
136
|
+
conflicts.push(cached);
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
const listed = candidate.claims
|
|
140
|
+
.map((claim) => `- slug="${claim.slug}" ref="${claimReference(claim)}" ${claim.claim} (recorded ${claim.seen})`)
|
|
141
|
+
.join('\n');
|
|
142
|
+
const result = await ctx.models.derive.chat([
|
|
143
|
+
{ role: 'system', content: VERIFY },
|
|
144
|
+
{ role: 'user', content: `Subject: ${candidate.subject} / ${candidate.attribute}\n\n${listed}` },
|
|
145
|
+
], { schema: VERIFY_SCHEMA, maxTokens: 200 });
|
|
146
|
+
if (!result.ok || !result.value) {
|
|
147
|
+
warnings.push(`could not verify the ${candidate.subject} / ${candidate.attribute} conflict: ${result.error ?? 'no reply'}`);
|
|
148
|
+
conflicts.push(candidate);
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const parsed = parseJsonLoose(result.value);
|
|
152
|
+
if (!parsed ||
|
|
153
|
+
!['not_a_conflict', 'time_scoped', 'superseded', 'qualified', 'unresolved'].includes(String(parsed.outcome)) ||
|
|
154
|
+
typeof parsed.reason !== 'string') {
|
|
155
|
+
ctx.models.derive.reportInvalidResponse();
|
|
156
|
+
conflicts.push(candidate);
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
const proposed = parsed.outcome;
|
|
160
|
+
let verdict = proposed;
|
|
161
|
+
const current = typeof parsed.current === 'string' && candidate.claims.some((claim) => claim.slug === parsed.current)
|
|
162
|
+
? parsed.current
|
|
163
|
+
: undefined;
|
|
164
|
+
const qualification = proposed === 'qualified' ? validatedQualification(candidate, parsed.qualification) : null;
|
|
165
|
+
// A model may recognize a likely chronology, but it cannot create the temporal evidence that
|
|
166
|
+
// authorizes an unattended rewrite. Downgrading keeps both claims and excludes them from inference.
|
|
167
|
+
if (verdict === 'superseded' &&
|
|
168
|
+
(!current ||
|
|
169
|
+
!candidate.claims.some((claim) => claim.slug === current && explicitCurrentBoundary(claim.claim) !== null))) {
|
|
170
|
+
verdict = 'unresolved';
|
|
171
|
+
}
|
|
172
|
+
if (verdict === 'time_scoped' && !candidate.claims.every((claim) => explicitTimeScope(claim.claim))) {
|
|
173
|
+
verdict = 'unresolved';
|
|
174
|
+
}
|
|
175
|
+
if (verdict === 'qualified' && !qualification)
|
|
176
|
+
verdict = 'unresolved';
|
|
177
|
+
const classified = {
|
|
178
|
+
...candidate,
|
|
179
|
+
verdict,
|
|
180
|
+
...(verdict === 'superseded' && current ? { likelyCurrent: current } : {}),
|
|
181
|
+
...(verdict === 'qualified' && qualification ? { qualification } : {}),
|
|
182
|
+
reason: verdict === proposed
|
|
183
|
+
? `classifier selected ${verdict}`
|
|
184
|
+
: `classifier selected ${proposed}, but deterministic supporting evidence was insufficient; treated as unresolved`,
|
|
185
|
+
};
|
|
186
|
+
conflicts.push(classified);
|
|
187
|
+
cacheVerdict(ctx, classified);
|
|
188
|
+
}
|
|
189
|
+
return { conflicts, warnings };
|
|
190
|
+
}
|
|
191
|
+
function conflictFingerprint(conflict) {
|
|
192
|
+
return sha256(JSON.stringify({
|
|
193
|
+
prompt: CONFLICT_PROMPT_VERSION,
|
|
194
|
+
subject: normalize(conflict.subject),
|
|
195
|
+
attribute: normalize(conflict.attribute),
|
|
196
|
+
claims: [...conflict.claims]
|
|
197
|
+
.map((claim) => ({
|
|
198
|
+
slug: claim.slug,
|
|
199
|
+
line: claim.line,
|
|
200
|
+
value: normalize(claim.value),
|
|
201
|
+
claim: normalize(claim.claim),
|
|
202
|
+
}))
|
|
203
|
+
.sort((a, b) => `${a.slug}:${a.line}`.localeCompare(`${b.slug}:${b.line}`)),
|
|
204
|
+
}));
|
|
205
|
+
}
|
|
206
|
+
/** Claims that must not support a new observation or principle in this run. */
|
|
207
|
+
export function ineligibleConflictClaims(conflicts) {
|
|
208
|
+
return new Set(conflictClaimIneligibility(conflicts).keys());
|
|
209
|
+
}
|
|
210
|
+
/** Typed reasons shared by inference and the evidence graph; callers never parse verdict prose. */
|
|
211
|
+
export function conflictClaimIneligibility(conflicts) {
|
|
212
|
+
const out = new Map();
|
|
213
|
+
for (const conflict of conflicts) {
|
|
214
|
+
if (conflict.verdict === 'unresolved' || conflict.verdict === 'unverified') {
|
|
215
|
+
for (const claim of conflict.claims) {
|
|
216
|
+
out.set(claimKey(claim.slug, claim.line), `conflict_${conflict.verdict}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
else if (conflict.verdict === 'qualified') {
|
|
220
|
+
for (const claim of conflict.claims)
|
|
221
|
+
out.set(claimKey(claim.slug, claim.line), 'conflict_qualified');
|
|
222
|
+
}
|
|
223
|
+
else if (conflict.verdict === 'superseded') {
|
|
224
|
+
for (const claim of conflict.claims) {
|
|
225
|
+
if (claim.slug !== conflict.likelyCurrent) {
|
|
226
|
+
out.set(claimKey(claim.slug, claim.line), 'conflict_superseded');
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return out;
|
|
232
|
+
}
|
|
233
|
+
function validatedQualification(conflict, raw) {
|
|
234
|
+
const parsed = QUALIFICATION_SCHEMA.safeParse(raw);
|
|
235
|
+
if (!parsed.success)
|
|
236
|
+
return null;
|
|
237
|
+
const target = conflict.claims.find((claim) => claimReference(claim) === parsed.data.target);
|
|
238
|
+
const evidence = conflict.claims.find((claim) => claimReference(claim) === parsed.data.evidence);
|
|
239
|
+
const scope = parsed.data.scope;
|
|
240
|
+
if (!target || !evidence || target.slug === evidence.slug || !validScopePhrase(scope))
|
|
241
|
+
return null;
|
|
242
|
+
if (!evidence.claim.includes(scope) || target.claim.includes(scope))
|
|
243
|
+
return null;
|
|
244
|
+
if (!containsExactValue(evidence.claim, target.value))
|
|
245
|
+
return null;
|
|
246
|
+
return {
|
|
247
|
+
targetSlug: target.slug,
|
|
248
|
+
targetLine: target.line,
|
|
249
|
+
evidenceSlug: evidence.slug,
|
|
250
|
+
evidenceLine: evidence.line,
|
|
251
|
+
scope,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
function containsExactValue(claim, value) {
|
|
255
|
+
let from = 0;
|
|
256
|
+
while (from <= claim.length - value.length) {
|
|
257
|
+
const at = claim.indexOf(value, from);
|
|
258
|
+
if (at < 0)
|
|
259
|
+
return false;
|
|
260
|
+
const first = value[0] ?? '';
|
|
261
|
+
const last = value.at(-1) ?? '';
|
|
262
|
+
const before = at > 0 ? claim[at - 1] : '';
|
|
263
|
+
const after = at + value.length < claim.length ? claim[at + value.length] : '';
|
|
264
|
+
const leftBounded = !isAlphaNumeric(first) || !isAlphaNumeric(before);
|
|
265
|
+
const rightBounded = !isAlphaNumeric(last) || !isAlphaNumeric(after);
|
|
266
|
+
if (leftBounded && rightBounded)
|
|
267
|
+
return true;
|
|
268
|
+
from = at + 1;
|
|
269
|
+
}
|
|
270
|
+
return false;
|
|
271
|
+
}
|
|
272
|
+
function isAlphaNumeric(value) {
|
|
273
|
+
return value !== '' && /[\p{L}\p{N}]/u.test(value);
|
|
274
|
+
}
|
|
275
|
+
function validScopePhrase(scope) {
|
|
276
|
+
if (scope !== scope.trim() ||
|
|
277
|
+
scope.length < 2 ||
|
|
278
|
+
scope.length > 80 ||
|
|
279
|
+
/[\r\n<>:{}]/.test(scope) ||
|
|
280
|
+
scope.includes('[') ||
|
|
281
|
+
scope.includes(']') ||
|
|
282
|
+
/^(?:for|in|on|under|within|during|when|while)\b/i.test(scope)) {
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
285
|
+
const words = scope.match(/[\p{L}\p{N}]+/gu) ?? [];
|
|
286
|
+
return words.length > 0 && words.length <= 12 && /\p{L}/u.test(scope);
|
|
287
|
+
}
|
|
288
|
+
function claimReference(claim) {
|
|
289
|
+
return `${claim.slug}:${claim.line}`;
|
|
290
|
+
}
|
|
291
|
+
export function claimKey(slug, line) {
|
|
292
|
+
return `${slug}\u0000${line}`;
|
|
293
|
+
}
|
|
294
|
+
/** A dated boundary that can be copied into retained history without inventing chronology. */
|
|
295
|
+
export function explicitCurrentBoundary(claim) {
|
|
296
|
+
const match = /\b(?:as\s+of|effective(?:\s+on)?|from|since)\s*:?[ \t]*(\d{4}-\d{2}-\d{2})\b/i.exec(claim);
|
|
297
|
+
return match?.[1] ?? null;
|
|
298
|
+
}
|
|
299
|
+
function explicitTimeScope(claim) {
|
|
300
|
+
return (/\b(?:before|after|until|during|between|from|since|previously|formerly|as\s+of|effective(?:ly)?|in\s+\d{4})\b/i.test(claim) || /\b\d{4}-\d{2}(?:-\d{2})?\b/.test(claim));
|
|
301
|
+
}
|
|
302
|
+
export function cachedConflictVerdict(store, candidate, modelId) {
|
|
303
|
+
if (!conflictCacheAvailable(store))
|
|
304
|
+
return null;
|
|
305
|
+
const row = store.db
|
|
306
|
+
.prepare(`SELECT verdict, current_slug, qualification, reason FROM conflict_verdicts
|
|
307
|
+
WHERE fingerprint = ? AND model_id = ? AND prompt_version = ?`)
|
|
308
|
+
.get(candidate.fingerprint, modelId ?? '', CONFLICT_PROMPT_VERSION);
|
|
309
|
+
if (!row || row.verdict === 'unverified')
|
|
310
|
+
return null;
|
|
311
|
+
const qualification = row.verdict === 'qualified'
|
|
312
|
+
? validatedQualification(candidate, parseQualification(row.qualification))
|
|
313
|
+
: null;
|
|
314
|
+
if (row.verdict === 'qualified' && !qualification)
|
|
315
|
+
return null;
|
|
316
|
+
return {
|
|
317
|
+
...candidate,
|
|
318
|
+
verdict: row.verdict,
|
|
319
|
+
...(row.current_slug ? { likelyCurrent: row.current_slug } : {}),
|
|
320
|
+
...(qualification ? { qualification } : {}),
|
|
321
|
+
...(row.reason ? { reason: row.reason } : {}),
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
function cacheVerdict(ctx, conflict) {
|
|
325
|
+
if (!ctx.writable || !conflictCacheAvailable(ctx.store) || conflict.verdict === 'unverified')
|
|
326
|
+
return;
|
|
327
|
+
ctx.store.db
|
|
328
|
+
.prepare(`INSERT INTO conflict_verdicts
|
|
329
|
+
(fingerprint, model_id, prompt_version, verdict, current_slug, qualification, reason, updated_at)
|
|
330
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
331
|
+
ON CONFLICT(fingerprint, model_id, prompt_version) DO UPDATE SET
|
|
332
|
+
verdict = excluded.verdict, current_slug = excluded.current_slug,
|
|
333
|
+
qualification = excluded.qualification, reason = excluded.reason,
|
|
334
|
+
updated_at = excluded.updated_at`)
|
|
335
|
+
.run(conflict.fingerprint, ctx.models.derive.modelId ?? '', CONFLICT_PROMPT_VERSION, conflict.verdict, conflict.likelyCurrent ?? null, conflict.qualification
|
|
336
|
+
? JSON.stringify({
|
|
337
|
+
target: claimReference({
|
|
338
|
+
slug: conflict.qualification.targetSlug,
|
|
339
|
+
line: conflict.qualification.targetLine,
|
|
340
|
+
}),
|
|
341
|
+
evidence: claimReference({
|
|
342
|
+
slug: conflict.qualification.evidenceSlug,
|
|
343
|
+
line: conflict.qualification.evidenceLine,
|
|
344
|
+
}),
|
|
345
|
+
scope: conflict.qualification.scope,
|
|
346
|
+
})
|
|
347
|
+
: null, conflict.reason ?? null, new Date().toISOString());
|
|
348
|
+
}
|
|
349
|
+
function parseQualification(value) {
|
|
350
|
+
if (!value)
|
|
351
|
+
return null;
|
|
352
|
+
try {
|
|
353
|
+
return JSON.parse(value);
|
|
354
|
+
}
|
|
355
|
+
catch {
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
function conflictCacheAvailable(store) {
|
|
360
|
+
const row = store.db
|
|
361
|
+
.prepare("SELECT 1 AS present FROM sqlite_master WHERE type = 'table' AND name = 'conflict_verdicts'")
|
|
362
|
+
.get();
|
|
363
|
+
return row?.present === 1;
|
|
364
|
+
}
|
|
365
|
+
function normalize(value) {
|
|
366
|
+
return value.toLowerCase().replace(/[*_`]/g, '').replace(/\s+/g, ' ').trim();
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=conflicts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflicts.js","sourceRoot":"","sources":["../../src/maintenance/conflicts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { AknoContext } from '../context.ts';
|
|
2
|
+
import { type CrossPageConflict } from './conflicts.ts';
|
|
3
|
+
interface ContradictionOperationDraft {
|
|
4
|
+
slug: string;
|
|
5
|
+
relPath: string;
|
|
6
|
+
before: string;
|
|
7
|
+
after: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ContradictionDraft {
|
|
10
|
+
kind: 'contradiction';
|
|
11
|
+
outcome: 'superseded' | 'qualified' | 'unresolved';
|
|
12
|
+
/** First replaced page; the generic plan contract uses it as the item subject. */
|
|
13
|
+
slug: string;
|
|
14
|
+
inputHash: string;
|
|
15
|
+
conflictFingerprint: string;
|
|
16
|
+
conflictSubject: string;
|
|
17
|
+
conflictAttribute: string;
|
|
18
|
+
likelyCurrent: string | null;
|
|
19
|
+
operations: ContradictionOperationDraft[];
|
|
20
|
+
claims: CrossPageConflict['claims'];
|
|
21
|
+
}
|
|
22
|
+
export interface ContradictionPlanResult {
|
|
23
|
+
drafts: ContradictionDraft[];
|
|
24
|
+
warnings: string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build exact, reversible contradiction items from typed conflict records.
|
|
28
|
+
*
|
|
29
|
+
* Classification alone never writes. Every affected page must independently opt into full synthesis,
|
|
30
|
+
* and completed/rejected work is remembered by the conflict fingerprint so an unchanged night converges.
|
|
31
|
+
*/
|
|
32
|
+
export declare function planContradictions(ctx: AknoContext, conflicts: CrossPageConflict[]): Promise<ContradictionPlanResult>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=contradictions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contradictions.d.ts","sourceRoot":"","sources":["../../src/maintenance/contradictions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAOjD,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGjF,UAAU,2BAA2B;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;IACnD,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAC1C,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAQD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,iBAAiB,EAAE,GAC7B,OAAO,CAAC,uBAAuB,CAAC,CAgClC"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import fsp from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { sha256 } from "../store/ids.js";
|
|
4
|
+
import { preservesAuthoredTokens, preservesValues, rewriteAsHistoryForTesting as rewriteAsHistory, } from "./repair.js";
|
|
5
|
+
import { explicitCurrentBoundary } from "./conflicts.js";
|
|
6
|
+
import { pageAllowsMaintenanceTransform } from "./path-policy.js";
|
|
7
|
+
/**
|
|
8
|
+
* Build exact, reversible contradiction items from typed conflict records.
|
|
9
|
+
*
|
|
10
|
+
* Classification alone never writes. Every affected page must independently opt into full synthesis,
|
|
11
|
+
* and completed/rejected work is remembered by the conflict fingerprint so an unchanged night converges.
|
|
12
|
+
*/
|
|
13
|
+
export async function planContradictions(ctx, conflicts) {
|
|
14
|
+
const drafts = [];
|
|
15
|
+
const warnings = [];
|
|
16
|
+
for (const conflict of conflicts) {
|
|
17
|
+
if (!['superseded', 'qualified', 'unresolved'].includes(conflict.verdict))
|
|
18
|
+
continue;
|
|
19
|
+
if (alreadyHandled(ctx, conflict.fingerprint))
|
|
20
|
+
continue;
|
|
21
|
+
const pages = await eligiblePages(ctx, conflict);
|
|
22
|
+
if (!pages) {
|
|
23
|
+
warnings.push(`contradiction ${shortFingerprint(conflict.fingerprint)} remains report-only because every affected page must be opted into dream: synthesize`);
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const draft = conflict.verdict === 'superseded'
|
|
27
|
+
? await supersededDraft(ctx, conflict, pages)
|
|
28
|
+
: conflict.verdict === 'qualified'
|
|
29
|
+
? qualifiedDraft(conflict, pages)
|
|
30
|
+
: unresolvedDraft(conflict, pages);
|
|
31
|
+
if (!draft) {
|
|
32
|
+
warnings.push(`contradiction ${shortFingerprint(conflict.fingerprint)} could not produce a lossless guarded rewrite`);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
drafts.push(draft);
|
|
36
|
+
}
|
|
37
|
+
return { drafts, warnings };
|
|
38
|
+
}
|
|
39
|
+
function qualifiedDraft(conflict, pages) {
|
|
40
|
+
const qualification = conflict.qualification;
|
|
41
|
+
if (!qualification)
|
|
42
|
+
return null;
|
|
43
|
+
const target = conflict.claims.find((claim) => claim.slug === qualification.targetSlug && claim.line === qualification.targetLine);
|
|
44
|
+
const evidence = conflict.claims.find((claim) => claim.slug === qualification.evidenceSlug && claim.line === qualification.evidenceLine);
|
|
45
|
+
if (!target || !evidence || target.slug === evidence.slug)
|
|
46
|
+
return null;
|
|
47
|
+
if (!evidence.claim.includes(qualification.scope) || !evidence.claim.includes(target.value))
|
|
48
|
+
return null;
|
|
49
|
+
const page = pages.get(target.slug);
|
|
50
|
+
if (!page)
|
|
51
|
+
return null;
|
|
52
|
+
const lines = page.before.split('\n');
|
|
53
|
+
const beforeLine = lines[target.line - 1];
|
|
54
|
+
if (beforeLine === undefined || !beforeLine.includes(target.value))
|
|
55
|
+
return null;
|
|
56
|
+
const rewritten = qualifyLine(beforeLine, qualification.scope);
|
|
57
|
+
if (!rewritten ||
|
|
58
|
+
rewritten === beforeLine ||
|
|
59
|
+
!rewritten.includes(qualification.scope) ||
|
|
60
|
+
!preservesValues(beforeLine, rewritten) ||
|
|
61
|
+
!preservesValues(rewritten, `${beforeLine} ${qualification.scope}`) ||
|
|
62
|
+
!preservesAuthoredTokens(beforeLine, rewritten)) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
lines[target.line - 1] = rewritten;
|
|
66
|
+
// Seal the distinct scope evidence as a no-op replacement. A concurrent edit to either the
|
|
67
|
+
// broad claim or the statement proving its scope must stale the whole atomic item.
|
|
68
|
+
const orderedPages = [page, ...[...pages.values()].filter((candidate) => candidate.slug !== target.slug)];
|
|
69
|
+
const operations = orderedPages.map((candidate) => ({
|
|
70
|
+
...candidate,
|
|
71
|
+
after: candidate.slug === target.slug ? lines.join('\n') : candidate.before,
|
|
72
|
+
}));
|
|
73
|
+
return asDraft(conflict, 'qualified', operations);
|
|
74
|
+
}
|
|
75
|
+
/** Add an evidence-backed scope without paraphrasing a single authored byte. */
|
|
76
|
+
function qualifyLine(line, scope) {
|
|
77
|
+
if (!scope || /[\r\n]/.test(scope))
|
|
78
|
+
return null;
|
|
79
|
+
const match = /^(\s*(?:(?:>\s*)+)?(?:(?:[-+*]|\d+[.)])\s+)?)(\S.*)$/.exec(line);
|
|
80
|
+
if (!match)
|
|
81
|
+
return null;
|
|
82
|
+
return `${match[1]}For ${scope}: ${match[2]}`;
|
|
83
|
+
}
|
|
84
|
+
function alreadyHandled(ctx, fingerprint) {
|
|
85
|
+
const row = ctx.store.db
|
|
86
|
+
.prepare(`SELECT 1 AS present FROM maintenance_items
|
|
87
|
+
WHERE kind = 'contradiction' AND input_hash = ? AND status IN ('applied', 'rejected')
|
|
88
|
+
LIMIT 1`)
|
|
89
|
+
.get(fingerprint);
|
|
90
|
+
return row?.present === 1;
|
|
91
|
+
}
|
|
92
|
+
async function eligiblePages(ctx, conflict) {
|
|
93
|
+
const pages = new Map();
|
|
94
|
+
for (const slug of new Set(conflict.claims.map((claim) => claim.slug))) {
|
|
95
|
+
const row = ctx.store.db
|
|
96
|
+
.prepare(`SELECT slug, rel_path, role, dream_management FROM pages WHERE slug = ?`)
|
|
97
|
+
.get(slug);
|
|
98
|
+
if (!row ||
|
|
99
|
+
!pageAllowsMaintenanceTransform(ctx.config, { slug: row.slug, role: row.role, dreamManagement: row.dream_management }, 'contradiction')) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
const before = await fsp.readFile(path.join(ctx.config.aknoPath, row.rel_path), 'utf8').catch(() => null);
|
|
103
|
+
if (before === null)
|
|
104
|
+
return null;
|
|
105
|
+
pages.set(slug, { slug, relPath: row.rel_path, before });
|
|
106
|
+
}
|
|
107
|
+
return pages;
|
|
108
|
+
}
|
|
109
|
+
async function supersededDraft(ctx, conflict, pages) {
|
|
110
|
+
const current = conflict.claims.filter((claim) => claim.slug === conflict.likelyCurrent);
|
|
111
|
+
const stale = conflict.claims.filter((claim) => claim.slug !== conflict.likelyCurrent);
|
|
112
|
+
if (current.length !== 1 || stale.length === 0)
|
|
113
|
+
return null;
|
|
114
|
+
const boundary = explicitCurrentBoundary(current[0].claim);
|
|
115
|
+
if (!boundary)
|
|
116
|
+
return null;
|
|
117
|
+
const afterBySlug = new Map([...pages].map(([slug, page]) => [slug, page.before]));
|
|
118
|
+
for (const claim of stale) {
|
|
119
|
+
const page = pages.get(claim.slug);
|
|
120
|
+
const held = afterBySlug.get(claim.slug);
|
|
121
|
+
if (!page || held === undefined)
|
|
122
|
+
return null;
|
|
123
|
+
const lines = held.split('\n');
|
|
124
|
+
const beforeLine = lines[claim.line - 1];
|
|
125
|
+
if (beforeLine === undefined || !beforeLine.includes(claim.value))
|
|
126
|
+
return null;
|
|
127
|
+
const rewritten = await rewriteAsHistory(ctx, beforeLine, current[0].claim, boundary);
|
|
128
|
+
if (!rewritten ||
|
|
129
|
+
rewritten === beforeLine ||
|
|
130
|
+
!rewritten.includes(boundary) ||
|
|
131
|
+
!preservesValues(beforeLine, rewritten) ||
|
|
132
|
+
!preservesValues(rewritten, `${beforeLine} ${boundary}`) ||
|
|
133
|
+
!preservesAuthoredTokens(beforeLine, rewritten)) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
lines[claim.line - 1] = rewritten;
|
|
137
|
+
afterBySlug.set(claim.slug, lines.join('\n'));
|
|
138
|
+
}
|
|
139
|
+
// The current page is sealed as a no-op replacement. That gives apply the same stale-byte check
|
|
140
|
+
// for the evidence selecting the winner as for the line it rewrites; otherwise the "current"
|
|
141
|
+
// claim could change after planning while the stale rewrite still applied.
|
|
142
|
+
const operations = [...pages.values()].map((page) => ({
|
|
143
|
+
...page,
|
|
144
|
+
after: afterBySlug.get(page.slug),
|
|
145
|
+
}));
|
|
146
|
+
return operations.some((operation) => operation.after !== operation.before)
|
|
147
|
+
? asDraft(conflict, 'superseded', operations)
|
|
148
|
+
: null;
|
|
149
|
+
}
|
|
150
|
+
function unresolvedDraft(conflict, pages) {
|
|
151
|
+
const markerId = shortFingerprint(conflict.fingerprint);
|
|
152
|
+
const slugs = [...pages.keys()].sort();
|
|
153
|
+
const label = `${safeLabel(conflict.subject)} / ${safeLabel(conflict.attribute)}`;
|
|
154
|
+
const operations = [...pages.values()].map((page) => {
|
|
155
|
+
const references = slugs
|
|
156
|
+
.filter((slug) => slug !== page.slug)
|
|
157
|
+
.map((slug) => `[[${slug}]]`)
|
|
158
|
+
.join(', ');
|
|
159
|
+
const block = `<!-- akno:conflict ${markerId} start -->\n` +
|
|
160
|
+
`> [!warning] Unresolved memory conflict\n` +
|
|
161
|
+
`> Akno found incompatible authored claims for **${label}** across this page and ${references}. ` +
|
|
162
|
+
`Both claims remain; neither supports new inferences until resolved.\n` +
|
|
163
|
+
`<!-- akno:conflict ${markerId} end -->`;
|
|
164
|
+
return {
|
|
165
|
+
...page,
|
|
166
|
+
after: page.before.includes(`<!-- akno:conflict ${markerId} start -->`)
|
|
167
|
+
? page.before
|
|
168
|
+
: `${page.before.replace(/\s+$/, '')}\n\n${block}\n`,
|
|
169
|
+
};
|
|
170
|
+
});
|
|
171
|
+
return operations.some((operation) => operation.after !== operation.before)
|
|
172
|
+
? asDraft(conflict, 'unresolved', operations)
|
|
173
|
+
: null;
|
|
174
|
+
}
|
|
175
|
+
function asDraft(conflict, outcome, operations) {
|
|
176
|
+
return {
|
|
177
|
+
kind: 'contradiction',
|
|
178
|
+
outcome,
|
|
179
|
+
slug: operations[0].slug,
|
|
180
|
+
inputHash: conflict.fingerprint,
|
|
181
|
+
conflictFingerprint: conflict.fingerprint,
|
|
182
|
+
conflictSubject: conflict.subject,
|
|
183
|
+
conflictAttribute: conflict.attribute,
|
|
184
|
+
likelyCurrent: conflict.likelyCurrent ?? null,
|
|
185
|
+
operations,
|
|
186
|
+
claims: conflict.claims,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function safeLabel(value) {
|
|
190
|
+
return (value
|
|
191
|
+
.replace(/[\r\n<>]/g, ' ')
|
|
192
|
+
.replace(/\s+/g, ' ')
|
|
193
|
+
.trim()
|
|
194
|
+
.slice(0, 120) || 'unknown field');
|
|
195
|
+
}
|
|
196
|
+
function shortFingerprint(value) {
|
|
197
|
+
return sha256(value).slice(0, 12);
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=contradictions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contradictions.js","sourceRoot":"","sources":["../../src/maintenance/contradictions.ts"],"names":[],"mappings":"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"}
|