@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 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { ParsedPage } from '../kb/page.ts';
|
|
2
|
+
export interface Chunk {
|
|
3
|
+
ord: number;
|
|
4
|
+
/** A chunk below the source fence is evidence, never mined. */
|
|
5
|
+
kind: 'knowledge' | 'source';
|
|
6
|
+
/** `Car insurance 2026 › Policy`. Prepended to the embedded text and shown as
|
|
7
|
+
* a breadcrumb on the card, because a heading is the author saying where a
|
|
8
|
+
* topic starts. */
|
|
9
|
+
headingPath: string;
|
|
10
|
+
text: string;
|
|
11
|
+
lineStart: number;
|
|
12
|
+
lineEnd: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ChunkOptions {
|
|
15
|
+
targetChars: number;
|
|
16
|
+
maxChars: number;
|
|
17
|
+
overlapChars: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Chunks follow the document's own structure:
|
|
21
|
+
*
|
|
22
|
+
* 1. Split at `##`. One section, one chunk.
|
|
23
|
+
* 2. A section over the size cap splits at `###`.
|
|
24
|
+
* 3. Still over the cap — split at paragraph boundaries with a small overlap.
|
|
25
|
+
* 4. A page with no headings under the cap is one chunk. Most pages are.
|
|
26
|
+
*/
|
|
27
|
+
export declare function chunkPage(page: ParsedPage, options: ChunkOptions): Chunk[];
|
|
28
|
+
/**
|
|
29
|
+
* Marks chunks below the source fence. Done after chunking rather than during
|
|
30
|
+
* so the fence position is the single thing that decides it.
|
|
31
|
+
*/
|
|
32
|
+
export declare function applySourceFence(chunks: Chunk[], fenceLine: number | null): Chunk[];
|
|
33
|
+
/**
|
|
34
|
+
* The heading path is prepended to the embedded text. Without it a chunk
|
|
35
|
+
* reading "Premium: €33/month" embeds with no idea what it is the premium *of*.
|
|
36
|
+
*/
|
|
37
|
+
export declare function embeddingText(chunk: Chunk): string;
|
|
38
|
+
/** A document's chunk: its text, plus the page inside the document it came from. */
|
|
39
|
+
export interface DocumentChunk {
|
|
40
|
+
ord: number;
|
|
41
|
+
text: string;
|
|
42
|
+
/** Page within the document, or null for a format with no pages. */
|
|
43
|
+
docPage: number | null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Chunks a document's extracted text so a PDF is searchable by its own content and a
|
|
47
|
+
* hit can name the page it is on.
|
|
48
|
+
*
|
|
49
|
+
* Page boundaries are honoured before size: a chunk that straddles two pages cannot be
|
|
50
|
+
* cited as being on either, and "page 9 of the contract" is the part of the citation a
|
|
51
|
+
* reader actually uses to check it. Within a page, long text is split on blank lines and
|
|
52
|
+
* then on sentence ends, because a document has no headings to follow — which is exactly
|
|
53
|
+
* what distinguishes this from `chunkPage`.
|
|
54
|
+
*/
|
|
55
|
+
export declare function chunkDocument(extraction: {
|
|
56
|
+
text: string;
|
|
57
|
+
sections?: {
|
|
58
|
+
page: number;
|
|
59
|
+
text: string;
|
|
60
|
+
}[];
|
|
61
|
+
}, options: Pick<ChunkOptions, 'targetChars' | 'maxChars'>): DocumentChunk[];
|
|
62
|
+
//# sourceMappingURL=chunk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk.d.ts","sourceRoot":"","sources":["../../src/index/chunk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,IAAI,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC7B;;wBAEoB;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AASD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAE,CA0B1E;AAoND;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,EAAE,CAGnF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAElD;AAED,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,EACzE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,UAAU,CAAC,GACtD,aAAa,EAAE,CAUjB"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chunks follow the document's own structure:
|
|
3
|
+
*
|
|
4
|
+
* 1. Split at `##`. One section, one chunk.
|
|
5
|
+
* 2. A section over the size cap splits at `###`.
|
|
6
|
+
* 3. Still over the cap — split at paragraph boundaries with a small overlap.
|
|
7
|
+
* 4. A page with no headings under the cap is one chunk. Most pages are.
|
|
8
|
+
*/
|
|
9
|
+
export function chunkPage(page, options) {
|
|
10
|
+
const chunks = [];
|
|
11
|
+
for (const section of splitByHeading(page, 2)) {
|
|
12
|
+
if (measure(section) <= options.maxChars) {
|
|
13
|
+
chunks.push(toChunk(section));
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
// Step 2, and it is the step worth having: an oversized `##` section usually
|
|
17
|
+
// has `###` subsections, and the author put them there to say where topics
|
|
18
|
+
// start. Splitting on them instead of on blank lines keeps each chunk's
|
|
19
|
+
// breadcrumb specific — `Policy › Excess` rather than a second anonymous
|
|
20
|
+
// slice of `Policy` — which is what a reader sees on the card.
|
|
21
|
+
const subsections = splitSection(section, 3);
|
|
22
|
+
for (const subsection of subsections) {
|
|
23
|
+
if (measure(subsection) <= options.maxChars)
|
|
24
|
+
chunks.push(toChunk(subsection));
|
|
25
|
+
// Step 3: still over the cap, so fall back to paragraph boundaries.
|
|
26
|
+
else
|
|
27
|
+
chunks.push(...splitByParagraph(subsection, options));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return chunks
|
|
31
|
+
.flatMap((chunk) => enforceCap(chunk, options))
|
|
32
|
+
.filter((chunk) => chunk.text.trim().length > 0)
|
|
33
|
+
.map((chunk, index) => ({ ...chunk, ord: index }));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The spec's three steps all split on structure the author supplied — headings,
|
|
37
|
+
* then blank lines. None of them can divide a *single* line longer than the cap,
|
|
38
|
+
* and those exist: a pasted paragraph with no wrapping, a wide markdown table row,
|
|
39
|
+
* an inlined data URI. Without this the "hard cap" is not hard, and a chunk can
|
|
40
|
+
* arrive at the embedding endpoint over its context length, where it is silently
|
|
41
|
+
* truncated — losing the tail of a page with no indication that it happened.
|
|
42
|
+
*
|
|
43
|
+
* So sentence boundaries first, and a blunt character cut only when there are
|
|
44
|
+
* none. Line addressing survives either way: every piece keeps the line range it
|
|
45
|
+
* came from, because it came from one line.
|
|
46
|
+
*/
|
|
47
|
+
function enforceCap(chunk, options) {
|
|
48
|
+
if (chunk.text.length <= options.maxChars)
|
|
49
|
+
return [chunk];
|
|
50
|
+
const pieces = [];
|
|
51
|
+
let rest = chunk.text;
|
|
52
|
+
while (rest.length > options.maxChars) {
|
|
53
|
+
const window = rest.slice(0, options.maxChars);
|
|
54
|
+
// Prefer the last sentence end in the back half of the window: cutting at the
|
|
55
|
+
// very first one would produce a stream of tiny chunks.
|
|
56
|
+
const boundary = lastSentenceEnd(window, Math.floor(options.maxChars / 2));
|
|
57
|
+
const cut = boundary ?? lastSpace(window, Math.floor(options.maxChars / 2)) ?? options.maxChars;
|
|
58
|
+
pieces.push(rest.slice(0, cut).trim());
|
|
59
|
+
rest = rest.slice(cut).trim();
|
|
60
|
+
}
|
|
61
|
+
if (rest.length > 0)
|
|
62
|
+
pieces.push(rest);
|
|
63
|
+
return pieces.map((text) => ({ ...chunk, text }));
|
|
64
|
+
}
|
|
65
|
+
function lastSentenceEnd(text, minimum) {
|
|
66
|
+
for (let i = text.length - 1; i >= minimum; i--) {
|
|
67
|
+
const char = text[i];
|
|
68
|
+
if ((char === '.' || char === '?' || char === '!' || char === ';') && /\s/.test(text[i + 1] ?? ' ')) {
|
|
69
|
+
return i + 1;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
function lastSpace(text, minimum) {
|
|
75
|
+
const index = text.lastIndexOf(' ');
|
|
76
|
+
return index >= minimum ? index + 1 : null;
|
|
77
|
+
}
|
|
78
|
+
function measure(section) {
|
|
79
|
+
return section.lines.reduce((total, line) => total + line.text.length + 1, -1);
|
|
80
|
+
}
|
|
81
|
+
function toChunk(section) {
|
|
82
|
+
return {
|
|
83
|
+
ord: 0,
|
|
84
|
+
kind: 'knowledge',
|
|
85
|
+
headingPath: section.headings.join(' › '),
|
|
86
|
+
text: section.lines.map((line) => line.text).join('\n'),
|
|
87
|
+
lineStart: section.lines[0].line,
|
|
88
|
+
lineEnd: section.lines.at(-1).line,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Re-splits one already-extracted section on a deeper heading level. Lines before
|
|
93
|
+
* the first subheading stay with the parent, so a section's own introduction is
|
|
94
|
+
* not orphaned onto whichever subsection happens to follow it.
|
|
95
|
+
*/
|
|
96
|
+
function splitSection(section, depth) {
|
|
97
|
+
const out = [];
|
|
98
|
+
const headings = [...section.headings];
|
|
99
|
+
let current = { headings: [...headings], lines: [], depth: section.depth };
|
|
100
|
+
for (const entry of section.lines) {
|
|
101
|
+
const heading = /^(#{1,6})\s+(.*)$/.exec(entry.text);
|
|
102
|
+
if (heading && heading[1].length === depth) {
|
|
103
|
+
if (current.lines.length > 0)
|
|
104
|
+
out.push(current);
|
|
105
|
+
const label = heading[2].replace(/[#*`]/g, '').trim();
|
|
106
|
+
current = { headings: [...headings, label], lines: [entry], depth };
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
current.lines.push(entry);
|
|
110
|
+
}
|
|
111
|
+
if (current.lines.length > 0)
|
|
112
|
+
out.push(current);
|
|
113
|
+
// No subheadings found: hand the section back unchanged so the caller falls
|
|
114
|
+
// through to paragraph splitting rather than looping.
|
|
115
|
+
return out.length > 1 ? out : [section];
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Splits on headings at `depth`, carrying the enclosing heading path so a
|
|
119
|
+
* `###` chunk still knows which `##` and `#` it sits under.
|
|
120
|
+
*/
|
|
121
|
+
function splitByHeading(page, depth) {
|
|
122
|
+
const sections = [];
|
|
123
|
+
// Index 0 is the `#` level; the stack tracks the current path at every depth.
|
|
124
|
+
const headingStack = [];
|
|
125
|
+
let current = null;
|
|
126
|
+
const fenceLine = page.sourceFenceLine;
|
|
127
|
+
for (let i = 0; i < page.lines.length; i++) {
|
|
128
|
+
const text = page.lines[i];
|
|
129
|
+
const line = page.bodyLine + i;
|
|
130
|
+
const heading = /^(#{1,6})\s+(.*)$/.exec(text);
|
|
131
|
+
if (heading) {
|
|
132
|
+
const level = heading[1].length;
|
|
133
|
+
const label = heading[2].replace(/[#*`]/g, '').trim();
|
|
134
|
+
headingStack.length = Math.max(0, level - 1);
|
|
135
|
+
headingStack[level - 1] = label;
|
|
136
|
+
if (level <= depth) {
|
|
137
|
+
current = { headings: compactHeadings(headingStack), lines: [], depth: level };
|
|
138
|
+
sections.push(current);
|
|
139
|
+
// The heading itself belongs to its section — it is often the most
|
|
140
|
+
// search-relevant text on the page.
|
|
141
|
+
current.lines.push({ text, line });
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (!current) {
|
|
146
|
+
current = { headings: compactHeadings(headingStack), lines: [], depth: 1 };
|
|
147
|
+
sections.push(current);
|
|
148
|
+
}
|
|
149
|
+
current.lines.push({ text, line });
|
|
150
|
+
// A fence line starts a new section: the role changes, so the chunk must.
|
|
151
|
+
if (fenceLine !== null && line === fenceLine) {
|
|
152
|
+
current = { headings: compactHeadings(headingStack), lines: [], depth };
|
|
153
|
+
sections.push(current);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return sections.filter((section) => section.lines.some((l) => l.text.trim().length > 0));
|
|
157
|
+
}
|
|
158
|
+
function compactHeadings(stack) {
|
|
159
|
+
return stack.filter((entry) => typeof entry === 'string' && entry.length > 0);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Step 3. Paragraph boundaries with a small overlap: splitting mid-sentence costs
|
|
163
|
+
* retrieval quality for no gain, and a blank line is the author's own boundary —
|
|
164
|
+
* the same reason headings are trusted above.
|
|
165
|
+
*/
|
|
166
|
+
function splitByParagraph(section, options) {
|
|
167
|
+
const headingPath = section.headings.join(' › ');
|
|
168
|
+
const chunks = [];
|
|
169
|
+
let buffer = [];
|
|
170
|
+
let bufferChars = 0;
|
|
171
|
+
const flush = () => {
|
|
172
|
+
if (buffer.length === 0)
|
|
173
|
+
return;
|
|
174
|
+
chunks.push({
|
|
175
|
+
ord: 0,
|
|
176
|
+
kind: 'knowledge',
|
|
177
|
+
headingPath,
|
|
178
|
+
text: buffer.map((l) => l.text).join('\n'),
|
|
179
|
+
lineStart: buffer[0].line,
|
|
180
|
+
lineEnd: buffer.at(-1).line,
|
|
181
|
+
});
|
|
182
|
+
// Overlap: keep trailing lines up to overlapChars so a claim straddling a
|
|
183
|
+
// boundary is retrievable from either side.
|
|
184
|
+
const overlap = [];
|
|
185
|
+
let overlapChars = 0;
|
|
186
|
+
for (let i = buffer.length - 1; i >= 0 && overlapChars < options.overlapChars; i--) {
|
|
187
|
+
overlap.unshift(buffer[i]);
|
|
188
|
+
overlapChars += buffer[i].text.length + 1;
|
|
189
|
+
}
|
|
190
|
+
// An overlap that kept *everything* makes no progress, and the final flush
|
|
191
|
+
// then emits the same text a second time — duplicating content in the index,
|
|
192
|
+
// where one line can match twice and inflate a page's apparent relevance. It
|
|
193
|
+
// happens whenever a single line is longer than overlapChars, which is most
|
|
194
|
+
// long lines.
|
|
195
|
+
if (overlap.length === buffer.length) {
|
|
196
|
+
buffer = [];
|
|
197
|
+
bufferChars = 0;
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
buffer = overlap;
|
|
201
|
+
bufferChars = overlapChars;
|
|
202
|
+
};
|
|
203
|
+
for (const line of section.lines) {
|
|
204
|
+
const isBlank = line.text.trim().length === 0;
|
|
205
|
+
buffer.push(line);
|
|
206
|
+
bufferChars += line.text.length + 1;
|
|
207
|
+
if (bufferChars >= options.targetChars && isBlank)
|
|
208
|
+
flush();
|
|
209
|
+
else if (bufferChars >= options.maxChars)
|
|
210
|
+
flush();
|
|
211
|
+
}
|
|
212
|
+
// The final flush must not leave an overlap-only tail behind as a chunk.
|
|
213
|
+
if (buffer.length > 0) {
|
|
214
|
+
const remaining = buffer.map((l) => l.text).join('\n');
|
|
215
|
+
if (remaining.trim().length > 0) {
|
|
216
|
+
chunks.push({
|
|
217
|
+
ord: 0,
|
|
218
|
+
kind: 'knowledge',
|
|
219
|
+
headingPath,
|
|
220
|
+
text: remaining,
|
|
221
|
+
lineStart: buffer[0].line,
|
|
222
|
+
lineEnd: buffer.at(-1).line,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return chunks;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Marks chunks below the source fence. Done after chunking rather than during
|
|
230
|
+
* so the fence position is the single thing that decides it.
|
|
231
|
+
*/
|
|
232
|
+
export function applySourceFence(chunks, fenceLine) {
|
|
233
|
+
if (fenceLine === null)
|
|
234
|
+
return chunks;
|
|
235
|
+
return chunks.map((chunk) => (chunk.lineStart >= fenceLine ? { ...chunk, kind: 'source' } : chunk));
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* The heading path is prepended to the embedded text. Without it a chunk
|
|
239
|
+
* reading "Premium: €33/month" embeds with no idea what it is the premium *of*.
|
|
240
|
+
*/
|
|
241
|
+
export function embeddingText(chunk) {
|
|
242
|
+
return chunk.headingPath ? `${chunk.headingPath}\n\n${chunk.text}` : chunk.text;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Chunks a document's extracted text so a PDF is searchable by its own content and a
|
|
246
|
+
* hit can name the page it is on.
|
|
247
|
+
*
|
|
248
|
+
* Page boundaries are honoured before size: a chunk that straddles two pages cannot be
|
|
249
|
+
* cited as being on either, and "page 9 of the contract" is the part of the citation a
|
|
250
|
+
* reader actually uses to check it. Within a page, long text is split on blank lines and
|
|
251
|
+
* then on sentence ends, because a document has no headings to follow — which is exactly
|
|
252
|
+
* what distinguishes this from `chunkPage`.
|
|
253
|
+
*/
|
|
254
|
+
export function chunkDocument(extraction, options) {
|
|
255
|
+
const pages = extraction.sections?.length ? extraction.sections : [{ page: 0, text: extraction.text }];
|
|
256
|
+
const out = [];
|
|
257
|
+
for (const page of pages) {
|
|
258
|
+
for (const text of splitText(page.text, options)) {
|
|
259
|
+
out.push({ ord: out.length, text, docPage: page.page > 0 ? page.page : null });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return out;
|
|
263
|
+
}
|
|
264
|
+
/** Blank lines first, then sentence ends, then a hard cut — in that order of preference. */
|
|
265
|
+
function splitText(text, options) {
|
|
266
|
+
const trimmed = text.trim();
|
|
267
|
+
if (trimmed.length === 0)
|
|
268
|
+
return [];
|
|
269
|
+
if (trimmed.length <= options.maxChars)
|
|
270
|
+
return [trimmed];
|
|
271
|
+
const out = [];
|
|
272
|
+
let current = '';
|
|
273
|
+
const flush = () => {
|
|
274
|
+
const value = current.trim();
|
|
275
|
+
if (value.length > 0)
|
|
276
|
+
out.push(value);
|
|
277
|
+
current = '';
|
|
278
|
+
};
|
|
279
|
+
for (const paragraph of trimmed.split(/\n\s*\n/)) {
|
|
280
|
+
for (const piece of paragraph.length > options.maxChars ? sentences(paragraph, options) : [paragraph]) {
|
|
281
|
+
if (current.length > 0 && current.length + piece.length > options.targetChars)
|
|
282
|
+
flush();
|
|
283
|
+
current = current.length > 0 ? `${current}\n\n${piece}` : piece;
|
|
284
|
+
if (current.length >= options.targetChars)
|
|
285
|
+
flush();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
flush();
|
|
289
|
+
return out;
|
|
290
|
+
}
|
|
291
|
+
function sentences(text, options) {
|
|
292
|
+
const parts = text.split(/(?<=[.!?])\s+/);
|
|
293
|
+
const out = [];
|
|
294
|
+
for (const part of parts) {
|
|
295
|
+
if (part.length <= options.maxChars) {
|
|
296
|
+
out.push(part);
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
// Scanned text can be one unbroken run with no punctuation at all. A hard cut is the
|
|
300
|
+
// honest last resort: better a chunk boundary mid-sentence than a chunk the embedder
|
|
301
|
+
// silently truncates.
|
|
302
|
+
for (let i = 0; i < part.length; i += options.maxChars)
|
|
303
|
+
out.push(part.slice(i, i + options.maxChars));
|
|
304
|
+
}
|
|
305
|
+
return out;
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../src/index/chunk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Indexer } from './indexer.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Deriving the facts on a page that was just written, without making the writer wait for it.
|
|
4
|
+
*
|
|
5
|
+
* A write is finished when the Markdown is on disk. Everything after that — the summary, the
|
|
6
|
+
* keywords, the claims a deriver reads back out of the sentence — is a *reading* of a file that is
|
|
7
|
+
* already correct, and the caller has nothing to do with the answer.
|
|
8
|
+
*
|
|
9
|
+
* It used to be awaited, and on a knowledge base whose deriver is a local model that unloads
|
|
10
|
+
* between calls, that meant a `remember` took eighty-five seconds: sixty of them a model loading to
|
|
11
|
+
* re-read one line the caller had already been told was written. The tool calling it timed out at
|
|
12
|
+
* the client's default sixty, so the write landed and the user was told it had failed.
|
|
13
|
+
*
|
|
14
|
+
* So the structural pass stays synchronous — a page is searchable by its own text immediately, and
|
|
15
|
+
* a link to it resolves — and the model pass runs after the answer goes out. `flush` exists for
|
|
16
|
+
* one-shot commands, which would otherwise exit while it was still going.
|
|
17
|
+
*/
|
|
18
|
+
export declare class DeferredDerive {
|
|
19
|
+
#private;
|
|
20
|
+
constructor(indexer: Indexer, onError: (err: unknown) => void);
|
|
21
|
+
/**
|
|
22
|
+
* Queue paths for derivation. Returns immediately.
|
|
23
|
+
*
|
|
24
|
+
* Paths queued while a pass is running are picked up by the next one rather than starting a
|
|
25
|
+
* second: two derivers on one page is two model calls for one answer, and on a cold local model
|
|
26
|
+
* that is two minutes.
|
|
27
|
+
*/
|
|
28
|
+
schedule(relPaths: string[]): void;
|
|
29
|
+
/** Wait for everything queued, including anything queued while draining. */
|
|
30
|
+
flush(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=defer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defer.d.ts","sourceRoot":"","sources":["../../src/index/defer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;;gBAMb,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI;IAK7D;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAQlC,4EAA4E;IACtE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB7B"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deriving the facts on a page that was just written, without making the writer wait for it.
|
|
3
|
+
*
|
|
4
|
+
* A write is finished when the Markdown is on disk. Everything after that — the summary, the
|
|
5
|
+
* keywords, the claims a deriver reads back out of the sentence — is a *reading* of a file that is
|
|
6
|
+
* already correct, and the caller has nothing to do with the answer.
|
|
7
|
+
*
|
|
8
|
+
* It used to be awaited, and on a knowledge base whose deriver is a local model that unloads
|
|
9
|
+
* between calls, that meant a `remember` took eighty-five seconds: sixty of them a model loading to
|
|
10
|
+
* re-read one line the caller had already been told was written. The tool calling it timed out at
|
|
11
|
+
* the client's default sixty, so the write landed and the user was told it had failed.
|
|
12
|
+
*
|
|
13
|
+
* So the structural pass stays synchronous — a page is searchable by its own text immediately, and
|
|
14
|
+
* a link to it resolves — and the model pass runs after the answer goes out. `flush` exists for
|
|
15
|
+
* one-shot commands, which would otherwise exit while it was still going.
|
|
16
|
+
*/
|
|
17
|
+
export class DeferredDerive {
|
|
18
|
+
#indexer;
|
|
19
|
+
#onError;
|
|
20
|
+
#pending = new Set();
|
|
21
|
+
#running = null;
|
|
22
|
+
constructor(indexer, onError) {
|
|
23
|
+
this.#indexer = indexer;
|
|
24
|
+
this.#onError = onError;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Queue paths for derivation. Returns immediately.
|
|
28
|
+
*
|
|
29
|
+
* Paths queued while a pass is running are picked up by the next one rather than starting a
|
|
30
|
+
* second: two derivers on one page is two model calls for one answer, and on a cold local model
|
|
31
|
+
* that is two minutes.
|
|
32
|
+
*/
|
|
33
|
+
schedule(relPaths) {
|
|
34
|
+
for (const relPath of relPaths)
|
|
35
|
+
this.#pending.add(relPath);
|
|
36
|
+
if (this.#pending.size === 0 || this.#running)
|
|
37
|
+
return;
|
|
38
|
+
this.#running = this.#drain().finally(() => {
|
|
39
|
+
this.#running = null;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/** Wait for everything queued, including anything queued while draining. */
|
|
43
|
+
async flush() {
|
|
44
|
+
while (this.#running || this.#pending.size > 0) {
|
|
45
|
+
if (!this.#running)
|
|
46
|
+
this.schedule([]);
|
|
47
|
+
await this.#running;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async #drain() {
|
|
51
|
+
while (this.#pending.size > 0) {
|
|
52
|
+
const batch = [...this.#pending];
|
|
53
|
+
this.#pending.clear();
|
|
54
|
+
try {
|
|
55
|
+
// `only` keeps the structural work to these paths; `modelPaths` is what actually costs.
|
|
56
|
+
await this.#indexer.run({ only: batch, modelPaths: batch, reindexUnchanged: true });
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
// A failed derivation loses a summary, not a write. Reported, never thrown at nobody:
|
|
60
|
+
// this runs after the caller has gone.
|
|
61
|
+
this.#onError(err);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=defer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defer.js","sourceRoot":"","sources":["../../src/index/defer.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,cAAc;IAChB,QAAQ,CAAU;IAClB,QAAQ,CAAyB;IAC1C,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7B,QAAQ,GAAyB,IAAI,CAAC;IAEtC,YAAY,OAAgB,EAAE,OAA+B;QAC3D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,QAAkB;QACzB,KAAK,MAAM,OAAO,IAAI,QAAQ;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,wFAAwF;gBACxF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;YACtF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,sFAAsF;gBACtF,uCAAuC;gBACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type ModelClient } from '../models/client.ts';
|
|
3
|
+
import { type ParsedPage } from '../kb/page.ts';
|
|
4
|
+
/**
|
|
5
|
+
* Deriving structure from text already in the knowledge base — facts,
|
|
6
|
+
* summaries, keywords — is a pure function of the Markdown. Akno does it
|
|
7
|
+
* alone; it never needs an extraction cycle from the agent.
|
|
8
|
+
*/
|
|
9
|
+
export interface DerivedFact {
|
|
10
|
+
claim: string;
|
|
11
|
+
subject: string | null;
|
|
12
|
+
attribute: string | null;
|
|
13
|
+
value: string | null;
|
|
14
|
+
line: number;
|
|
15
|
+
sourceLineHash: string;
|
|
16
|
+
itemId: string | null;
|
|
17
|
+
confidence: number;
|
|
18
|
+
}
|
|
19
|
+
export interface DerivedPage {
|
|
20
|
+
summary: string | null;
|
|
21
|
+
keywords: string[];
|
|
22
|
+
facts: DerivedFact[];
|
|
23
|
+
/** Set when the model was unavailable or returned nothing usable. */
|
|
24
|
+
error: string | null;
|
|
25
|
+
/** Set when some of the derivation succeeded and some did not. Reported, not thrown. */
|
|
26
|
+
partial?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The same shape the prompt above describes, in the form an endpoint can enforce.
|
|
30
|
+
*
|
|
31
|
+
* It is a mirror of the prompt and has to stay one — the prompt is what a model reads and this
|
|
32
|
+
* is what constrains what it may emit, so a field added to one and not the other is a field
|
|
33
|
+
* the model is told to produce and then forbidden from producing. Everything is deliberately
|
|
34
|
+
* permissive about *content*: `cleanFacts` still drops a fact whose line was never shown, and
|
|
35
|
+
* no grammar can express that.
|
|
36
|
+
*/
|
|
37
|
+
export declare const DERIVED_SCHEMA: z.ZodObject<{
|
|
38
|
+
summary: z.ZodString;
|
|
39
|
+
keywords: z.ZodArray<z.ZodString>;
|
|
40
|
+
facts: z.ZodArray<z.ZodObject<{
|
|
41
|
+
line: z.ZodNumber;
|
|
42
|
+
claim: z.ZodString;
|
|
43
|
+
subject: z.ZodNullable<z.ZodString>;
|
|
44
|
+
attribute: z.ZodNullable<z.ZodString>;
|
|
45
|
+
value: z.ZodNullable<z.ZodString>;
|
|
46
|
+
}, z.core.$strip>>;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
export declare const SUMMARY_ONLY_SCHEMA: z.ZodObject<{
|
|
49
|
+
summary: z.ZodString;
|
|
50
|
+
keywords: z.ZodArray<z.ZodString>;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
/**
|
|
53
|
+
* One call per page returning summary, keywords and facts together — the model
|
|
54
|
+
* is reading the page once either way, so three calls would be three times the
|
|
55
|
+
* cost for the same tokens read (the same argument that makes naming a file nearly free).
|
|
56
|
+
*/
|
|
57
|
+
export declare function derivePage(page: ParsedPage, model: ModelClient, options: {
|
|
58
|
+
summaries: boolean;
|
|
59
|
+
facts: boolean;
|
|
60
|
+
}): Promise<DerivedPage>;
|
|
61
|
+
/**
|
|
62
|
+
* The hash of every non-blank line of the page body, trimmed exactly as the deriver sees a
|
|
63
|
+
* line before hashing it.
|
|
64
|
+
*
|
|
65
|
+
* This is what tells "the sentence that made this claim is gone" apart from "this
|
|
66
|
+
* derivation did not repeat it" — the first is a supersession, the second is not, and the
|
|
67
|
+
* difference between retiring a fact and deleting it hangs on exactly that. Answered
|
|
68
|
+
* from the page rather than from the incoming facts, because a derivation that returns
|
|
69
|
+
* nothing at all says nothing about whether the page still says what it said.
|
|
70
|
+
*/
|
|
71
|
+
export declare function bodyLineHashes(page: ParsedPage): Set<string>;
|
|
72
|
+
export declare function bodyItemIds(page: ParsedPage): Set<string>;
|
|
73
|
+
/**
|
|
74
|
+
* Confidence answers one narrow question: how sure is the deriver that
|
|
75
|
+
* this line states a well-formed, *durable* claim? Not whether the claim is
|
|
76
|
+
* true.
|
|
77
|
+
*
|
|
78
|
+
* How confidence should be produced is genuinely open, and it is worth noting
|
|
79
|
+
* that a model self-reporting certainty is famously badly calibrated. So this is
|
|
80
|
+
* built from cheap structural signals instead — hedge words, a resolvable
|
|
81
|
+
* subject, whether the line is a complete statement, whether it carries a value
|
|
82
|
+
* worth pinning. Deterministic, explainable, and free.
|
|
83
|
+
*/
|
|
84
|
+
export declare function scoreConfidence(sourceText: string, claim: string, record?: Record<string, unknown>): number;
|
|
85
|
+
export declare const DOCUMENT_SUMMARY_SCHEMA: z.ZodObject<{
|
|
86
|
+
summary: z.ZodString;
|
|
87
|
+
}, z.core.$strip>;
|
|
88
|
+
/**
|
|
89
|
+
* A stored document has extracted text, a summary and embeddings of its own.
|
|
90
|
+
*
|
|
91
|
+
* One summary per *document*, not per file: a passport split into `passport.pdf` and
|
|
92
|
+
* `passport-2.pdf` is one thing, and two half-summaries describe neither. The caller joins
|
|
93
|
+
* the parts' text before calling, so what is summarized is the whole document.
|
|
94
|
+
*/
|
|
95
|
+
export declare function summarizeDocument(text: string, model: ModelClient): Promise<{
|
|
96
|
+
summary: string | null;
|
|
97
|
+
error: string | null;
|
|
98
|
+
}>;
|
|
99
|
+
//# sourceMappingURL=derive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/index/derive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5D;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,qEAAqE;IACrE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoBD;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;iBAczB,CAAC;AAOH,eAAO,MAAM,mBAAmB;;;iBAAmE,CAAC;AAEpG;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC9C,OAAO,CAAC,WAAW,CAAC,CAkFtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAO5D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAEzD;AAyHD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,MAAM,CAgER;AAWD,eAAO,MAAM,uBAAuB;;iBAAoC,CAAC;AAEzE;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAyB3D"}
|