@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":"write-setup.js","sourceRoot":"","sources":["../../src/config/write-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { DegradedReason } from '@tenphi/akno-protocol';
|
|
2
|
+
import type { AknoConfig } from './config/schema.ts';
|
|
3
|
+
import type { Store } from './store/db.ts';
|
|
4
|
+
import type { ModelClient } from './models/client.ts';
|
|
5
|
+
import type { Assembler } from './recall/assemble.ts';
|
|
6
|
+
import type { Indexer } from './index/indexer.ts';
|
|
7
|
+
import type { Journal } from './write/journal.ts';
|
|
8
|
+
import type { Gate } from './write/gate.ts';
|
|
9
|
+
/** The write path can queue model-backed indexing without depending on its concrete worker. */
|
|
10
|
+
export interface DeriveScheduler {
|
|
11
|
+
schedule(relPaths: string[]): void;
|
|
12
|
+
flush(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
/** Everything an op needs, assembled once per process by `open()`. */
|
|
15
|
+
export interface AknoContext {
|
|
16
|
+
config: AknoConfig;
|
|
17
|
+
store: Store;
|
|
18
|
+
models: {
|
|
19
|
+
embedding: ModelClient;
|
|
20
|
+
reranker: ModelClient;
|
|
21
|
+
/** Quality work off the hot path: facts, summaries, naming, remember, the cycle. */
|
|
22
|
+
derive: ModelClient;
|
|
23
|
+
/** The recall path only, where latency is felt on every question. */
|
|
24
|
+
expansion: ModelClient;
|
|
25
|
+
/** Direct grounded synthesis over bounded recall evidence. */
|
|
26
|
+
answer: ModelClient;
|
|
27
|
+
vision: ModelClient;
|
|
28
|
+
};
|
|
29
|
+
assembler: Assembler;
|
|
30
|
+
/** The write path needs it to reconcile immediately after its own write. */
|
|
31
|
+
indexer: Indexer;
|
|
32
|
+
/**
|
|
33
|
+
* Model-backed indexing of pages a write just changed, run after the answer goes out.
|
|
34
|
+
*
|
|
35
|
+
* A write is done when the Markdown is on disk; deriving facts from it is a reading of a file
|
|
36
|
+
* that is already correct. Awaiting that put a cold local deriver — a minute to load — inside
|
|
37
|
+
* every `remember`, past the timeout of the tool calling it.
|
|
38
|
+
*/
|
|
39
|
+
derive: DeriveScheduler;
|
|
40
|
+
journal: Journal;
|
|
41
|
+
gate: Gate;
|
|
42
|
+
/**
|
|
43
|
+
* **The user is never gated; only agents are.** Which one is asking is a
|
|
44
|
+
* property of the caller, not of the op — so it lives here rather than in every
|
|
45
|
+
* write's input, where a caller could simply claim to be the user.
|
|
46
|
+
*/
|
|
47
|
+
actor: 'user' | 'agent' | 'akno';
|
|
48
|
+
/** False when another process holds the write handle. */
|
|
49
|
+
writable: boolean;
|
|
50
|
+
lockHeldBy: number | null;
|
|
51
|
+
/**
|
|
52
|
+
* Why this handle cannot write, when it cannot. `requested` is a caller asking for a
|
|
53
|
+
* read-only handle — `doctor` does, so that inspecting a knowledge base never takes the
|
|
54
|
+
* write lock away from a running service. It is not a problem, and reporting it as one
|
|
55
|
+
* ("another process holds the write handle") named a process that was never there.
|
|
56
|
+
*/
|
|
57
|
+
readOnlyReason: 'requested' | 'held' | 'unwritable' | null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A partially embedded index gives real but weaker recall, and saying so is the
|
|
61
|
+
* difference between "not recorded" and "I could not check properly".
|
|
62
|
+
*/
|
|
63
|
+
export declare function indexDegradation(store: Store): DegradedReason[];
|
|
64
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,+FAA+F;AAC/F,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE;QACN,SAAS,EAAE,WAAW,CAAC;QACvB,QAAQ,EAAE,WAAW,CAAC;QACtB,oFAAoF;QACpF,MAAM,EAAE,WAAW,CAAC;QACpB,qEAAqE;QACrE,SAAS,EAAE,WAAW,CAAC;QACvB,8DAA8D;QAC9D,MAAM,EAAE,WAAW,CAAC;QACpB,MAAM,EAAE,WAAW,CAAC;KACrB,CAAC;IACF,SAAS,EAAE,SAAS,CAAC;IACrB,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACjC,yDAAyD;IACzD,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;;OAKG;IACH,cAAc,EAAE,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;CAC5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,EAAE,CAS/D"}
|
package/dist/context.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A partially embedded index gives real but weaker recall, and saying so is the
|
|
3
|
+
* difference between "not recorded" and "I could not check properly".
|
|
4
|
+
*/
|
|
5
|
+
export function indexDegradation(store) {
|
|
6
|
+
const out = [];
|
|
7
|
+
const row = store.db.prepare('SELECT count(*) AS total, sum(embedded) AS embedded FROM chunks').get();
|
|
8
|
+
if (row.total > 0 && (row.embedded ?? 0) < row.total)
|
|
9
|
+
out.push('partial_index');
|
|
10
|
+
if (store.vectors.count() === 0 && row.total > 0)
|
|
11
|
+
out.push('no_vector_index');
|
|
12
|
+
return out;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AA6DA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAY;IAC3C,MAAM,GAAG,GAAqB,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC,GAAG,EAGlG,CAAC;IACF,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK;QAAE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAChF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9E,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/doctor.d.ts
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { AknoContext } from './context.ts';
|
|
2
|
+
import { type ProviderApiResolution } from './models/provider-api.ts';
|
|
3
|
+
import { type AnswerCapabilityProbe } from './ops/answer.ts';
|
|
4
|
+
import { type RememberFallbackResolution } from './write/remember-fallback.ts';
|
|
5
|
+
/**
|
|
6
|
+
* What's present, what's degraded, and **what that costs.** The last
|
|
7
|
+
* part is the one that matters: "no reranker" means nothing to a reader, and
|
|
8
|
+
* "hybrid score ordering instead of cross-encoder reranking" means something.
|
|
9
|
+
*
|
|
10
|
+
* Model latency and index latency are reported separately, because a memory system which
|
|
11
|
+
* feels slow after idling is almost never suffering from its storage engine — and conflating
|
|
12
|
+
* the two hides that.
|
|
13
|
+
*/
|
|
14
|
+
export interface RoleReport {
|
|
15
|
+
role: string;
|
|
16
|
+
configured: boolean;
|
|
17
|
+
available: boolean;
|
|
18
|
+
model: string | null;
|
|
19
|
+
endpoint: string | null;
|
|
20
|
+
latencyMs: number | null;
|
|
21
|
+
error: string | null;
|
|
22
|
+
/** Plain-language consequence of this role being unavailable. */
|
|
23
|
+
withoutIt: string;
|
|
24
|
+
/** Production-shaped probes are reported separately from a generic transport ping. */
|
|
25
|
+
checks?: AnswerCapabilityProbe;
|
|
26
|
+
}
|
|
27
|
+
export interface AdmissionPreview {
|
|
28
|
+
/** The proposal preserves today's default-deny behavior; it does not grant writes. */
|
|
29
|
+
effect: 'preserve_read_only';
|
|
30
|
+
implicitPages: number;
|
|
31
|
+
/** Root pages cannot receive a folder-scoped rule without inventing a broad `**` policy. */
|
|
32
|
+
rootPages: number;
|
|
33
|
+
proposedRules: {
|
|
34
|
+
glob: string;
|
|
35
|
+
pages: number;
|
|
36
|
+
patch: {
|
|
37
|
+
remember: 'deny';
|
|
38
|
+
};
|
|
39
|
+
}[];
|
|
40
|
+
}
|
|
41
|
+
export interface DoctorOptions {
|
|
42
|
+
probeModels?: boolean;
|
|
43
|
+
/** Include folder names in an explicitly requested, content-free admission upgrade preview. */
|
|
44
|
+
admissionPreview?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface DoctorReport {
|
|
47
|
+
aknoPath: string;
|
|
48
|
+
stateDir: string;
|
|
49
|
+
configSources: string[];
|
|
50
|
+
writable: boolean;
|
|
51
|
+
lockHeldBy: number | null;
|
|
52
|
+
readOnlyReason: 'requested' | 'held' | 'unwritable' | null;
|
|
53
|
+
vectorBackend: 'vec0' | 'fallback';
|
|
54
|
+
counts: {
|
|
55
|
+
pages: number;
|
|
56
|
+
chunks: number;
|
|
57
|
+
chunksEmbedded: number;
|
|
58
|
+
facts: number;
|
|
59
|
+
factsSuperseded: number;
|
|
60
|
+
events: number;
|
|
61
|
+
documents: number;
|
|
62
|
+
/** Originals absent from disk while their durable indexed identity is retained. */
|
|
63
|
+
documentsMissing: number;
|
|
64
|
+
documentsExtracted: number;
|
|
65
|
+
/** Extracted text with no searchable chunk. Ownership no longer affects this count. */
|
|
66
|
+
documentsUnsearchable: number;
|
|
67
|
+
/** `<file>.txt` written beside a document. Counted apart: they are not documents of their own. */
|
|
68
|
+
renditions: number;
|
|
69
|
+
links: number;
|
|
70
|
+
brokenLinks: number;
|
|
71
|
+
ignoredRules: number;
|
|
72
|
+
};
|
|
73
|
+
byRole: Record<string, number>;
|
|
74
|
+
/** Searchability and automatic fact-injection permission are independent. */
|
|
75
|
+
factInjection: {
|
|
76
|
+
admittedPages: number;
|
|
77
|
+
readOnlyPages: number;
|
|
78
|
+
/** Read-only because neither page nor folder made a decision; useful during upgrades. */
|
|
79
|
+
implicitReadOnlyPages: number;
|
|
80
|
+
/** Opt-in structural preview; omitted by default so routine diagnostics retain no folder names. */
|
|
81
|
+
admissionPreview?: AdmissionPreview;
|
|
82
|
+
/** Explicit catch-all availability; null means no fallback is configured. */
|
|
83
|
+
fallback: RememberFallbackResolution | null;
|
|
84
|
+
};
|
|
85
|
+
index: {
|
|
86
|
+
/** Time to open the handle and run one point lookup. Not a model number. */
|
|
87
|
+
openMs: number;
|
|
88
|
+
lexicalMs: number;
|
|
89
|
+
vectorMs: number | null;
|
|
90
|
+
};
|
|
91
|
+
models: RoleReport[];
|
|
92
|
+
/** Content-free resolution state for each provider's generative transport. */
|
|
93
|
+
providerApis: ProviderApiResolution[];
|
|
94
|
+
/** The extraction path. A missing capability must be visible, not surprising. */
|
|
95
|
+
extraction: {
|
|
96
|
+
swift: boolean;
|
|
97
|
+
textutil: boolean;
|
|
98
|
+
note: string | null;
|
|
99
|
+
};
|
|
100
|
+
reserved: {
|
|
101
|
+
path: string;
|
|
102
|
+
state: 'ok' | 'missing' | 'occupied';
|
|
103
|
+
note?: string;
|
|
104
|
+
}[];
|
|
105
|
+
warnings: string[];
|
|
106
|
+
}
|
|
107
|
+
export declare function doctor(ctx: AknoContext, options?: DoctorOptions): Promise<DoctorReport>;
|
|
108
|
+
/**
|
|
109
|
+
* The first source file modified after `since`, relative to the package root, or null.
|
|
110
|
+
*
|
|
111
|
+
* Returns on the first hit: the message names one file to make the point, and walking the rest buys
|
|
112
|
+
* nothing once the answer is "run the build".
|
|
113
|
+
*/
|
|
114
|
+
export declare function firstNewerThan(dir: string, srcRoot: string, since: number): string | null;
|
|
115
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.js
ADDED
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { isReserved, looksLikeLedger } from "./reserved.js";
|
|
4
|
+
import { extractionCapabilities } from "./ingest/extract.js";
|
|
5
|
+
import { readOnlyExplanation } from "./open.js";
|
|
6
|
+
import { ModelClient } from "./models/client.js";
|
|
7
|
+
import { generativeModelIds, providerApiReport } from "./models/provider-api.js";
|
|
8
|
+
import { probeAnswerModel } from "./ops/answer.js";
|
|
9
|
+
import { effectiveRule } from "./rules/compile.js";
|
|
10
|
+
import { pageDeclarations } from "./maintenance/path-policy.js";
|
|
11
|
+
import { resolveRememberFallback } from "./write/remember-fallback.js";
|
|
12
|
+
export async function doctor(ctx, options = {}) {
|
|
13
|
+
const db = ctx.store.db;
|
|
14
|
+
const warnings = [];
|
|
15
|
+
const count = (sql, ...params) => db.prepare(sql).get(...params).c;
|
|
16
|
+
const counts = {
|
|
17
|
+
pages: count('SELECT count(*) AS c FROM pages'),
|
|
18
|
+
chunks: count('SELECT count(*) AS c FROM chunks'),
|
|
19
|
+
chunksEmbedded: count('SELECT count(*) AS c FROM chunks WHERE embedded = 1'),
|
|
20
|
+
facts: count('SELECT count(*) AS c FROM facts WHERE valid_to IS NULL'),
|
|
21
|
+
factsSuperseded: count('SELECT count(*) AS c FROM facts WHERE valid_to IS NOT NULL'),
|
|
22
|
+
events: count('SELECT count(*) AS c FROM events'),
|
|
23
|
+
// Renditions are left out of all three. A `.txt` beside a contract is that contract in
|
|
24
|
+
// another format, not a fourteenth attachment with nothing readable in it — counting it
|
|
25
|
+
// as one would report the feature working as a knowledge base full of unreadable files.
|
|
26
|
+
documents: count('SELECT count(*) AS c FROM documents WHERE renders IS NULL'),
|
|
27
|
+
documentsMissing: count("SELECT count(*) AS c FROM documents WHERE renders IS NULL AND availability = 'missing'"),
|
|
28
|
+
documentsExtracted: count('SELECT count(*) AS c FROM documents WHERE renders IS NULL AND text IS NOT NULL'),
|
|
29
|
+
documentsUnsearchable: count(`SELECT count(*) AS c FROM documents d
|
|
30
|
+
WHERE d.renders IS NULL AND d.text IS NOT NULL
|
|
31
|
+
AND NOT EXISTS (SELECT 1 FROM chunks c WHERE c.document_id = d.id)`),
|
|
32
|
+
renditions: count('SELECT count(*) AS c FROM documents WHERE renders IS NOT NULL'),
|
|
33
|
+
links: count('SELECT count(*) AS c FROM links'),
|
|
34
|
+
brokenLinks: count('SELECT count(*) AS c FROM links WHERE broken = 1'),
|
|
35
|
+
ignoredRules: ctx.config.rules.filter((rule) => rule.role === 'ignored').length,
|
|
36
|
+
};
|
|
37
|
+
const byRole = {};
|
|
38
|
+
for (const row of db.prepare('SELECT role, count(*) AS c FROM pages GROUP BY role').all()) {
|
|
39
|
+
byRole[row.role] = row.c;
|
|
40
|
+
}
|
|
41
|
+
const factInjection = { admittedPages: 0, readOnlyPages: 0, implicitReadOnlyPages: 0 };
|
|
42
|
+
const implicitFolders = new Map();
|
|
43
|
+
let implicitRootPages = 0;
|
|
44
|
+
for (const row of db.prepare('SELECT slug, role, frontmatter FROM pages').all()) {
|
|
45
|
+
const declarations = pageDeclarations(row.frontmatter);
|
|
46
|
+
const rule = effectiveRule(row.slug, ctx.config.rules);
|
|
47
|
+
const role = declarations.role ?? rule.role ?? row.role;
|
|
48
|
+
if (role !== 'knowledge')
|
|
49
|
+
continue;
|
|
50
|
+
const remember = declarations.remember ?? rule.remember ?? 'deny';
|
|
51
|
+
if (remember === 'integrate')
|
|
52
|
+
factInjection.admittedPages++;
|
|
53
|
+
else {
|
|
54
|
+
factInjection.readOnlyPages++;
|
|
55
|
+
if (declarations.remember === undefined &&
|
|
56
|
+
rule.remember === undefined &&
|
|
57
|
+
!isReserved(row.slug, ctx.config)) {
|
|
58
|
+
factInjection.implicitReadOnlyPages++;
|
|
59
|
+
const separator = row.slug.indexOf('/');
|
|
60
|
+
if (separator === -1)
|
|
61
|
+
implicitRootPages++;
|
|
62
|
+
else {
|
|
63
|
+
const folder = row.slug.slice(0, separator);
|
|
64
|
+
implicitFolders.set(folder, (implicitFolders.get(folder) ?? 0) + 1);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const admissionPreview = options.admissionPreview
|
|
70
|
+
? {
|
|
71
|
+
effect: 'preserve_read_only',
|
|
72
|
+
implicitPages: factInjection.implicitReadOnlyPages,
|
|
73
|
+
rootPages: implicitRootPages,
|
|
74
|
+
proposedRules: [...implicitFolders.entries()]
|
|
75
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
76
|
+
.map(([folder, pages]) => ({ glob: `${folder}/**`, pages, patch: { remember: 'deny' } })),
|
|
77
|
+
}
|
|
78
|
+
: undefined;
|
|
79
|
+
const rememberFallback = await resolveRememberFallback(ctx);
|
|
80
|
+
if (rememberFallback?.status === 'unavailable') {
|
|
81
|
+
warnings.push(`the configured remember fallback is unavailable: ${rememberFallback.reason.replaceAll('_', ' ')}`);
|
|
82
|
+
}
|
|
83
|
+
// ── Index latency, isolated from any model ───────────────────────────────
|
|
84
|
+
const openStart = performance.now();
|
|
85
|
+
db.prepare('SELECT id FROM pages LIMIT 1').get();
|
|
86
|
+
const openMs = performance.now() - openStart;
|
|
87
|
+
const lexStart = performance.now();
|
|
88
|
+
try {
|
|
89
|
+
db.prepare('SELECT rowid FROM chunks_fts WHERE chunks_fts MATCH ? LIMIT 10').all('"the"');
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// An empty index has nothing to match; the number is still meaningful.
|
|
93
|
+
}
|
|
94
|
+
const lexicalMs = performance.now() - lexStart;
|
|
95
|
+
let vectorMs = null;
|
|
96
|
+
if (counts.chunksEmbedded > 0) {
|
|
97
|
+
const probe = new Float32Array(ctx.store.vectors.dimensions);
|
|
98
|
+
probe[0] = 1;
|
|
99
|
+
const vecStart = performance.now();
|
|
100
|
+
ctx.store.vectors.search(probe, 10);
|
|
101
|
+
vectorMs = performance.now() - vecStart;
|
|
102
|
+
}
|
|
103
|
+
// ── Models ───────────────────────────────────────────────────────────────
|
|
104
|
+
const consequences = {
|
|
105
|
+
embedding: 'lexical search only — no semantic matching, and question-mode hypothetical expansion is inert',
|
|
106
|
+
reranker: 'hybrid score ordering instead of cross-encoder reranking; recall still works, ordering is coarser',
|
|
107
|
+
derive: 'no summaries, keywords, fact derivation, remember, ingest naming or observations — recall still works',
|
|
108
|
+
expansion: 'recall searches the words you typed and nothing more: no synonyms, no hypothetical answer for a question',
|
|
109
|
+
answer: 'direct grounded answer generation is unavailable; recall still returns inspectable evidence',
|
|
110
|
+
vision: 'photos with no text yield no page; OCR still covers scans and screenshots, which is most arrivals',
|
|
111
|
+
};
|
|
112
|
+
const models = [];
|
|
113
|
+
for (const [role, client] of Object.entries(ctx.models)) {
|
|
114
|
+
const resolved = ctx.config.models[role];
|
|
115
|
+
const report = {
|
|
116
|
+
role,
|
|
117
|
+
configured: resolved.id !== null,
|
|
118
|
+
available: client.available,
|
|
119
|
+
model: resolved.id,
|
|
120
|
+
endpoint: resolved.provider?.baseUrl ?? null,
|
|
121
|
+
latencyMs: null,
|
|
122
|
+
error: client.unavailableReason,
|
|
123
|
+
withoutIt: consequences[role] ?? '',
|
|
124
|
+
};
|
|
125
|
+
if (options.probeModels !== false && client.available) {
|
|
126
|
+
if (role === 'answer') {
|
|
127
|
+
const checks = await probeAnswerModel(client);
|
|
128
|
+
report.checks = checks;
|
|
129
|
+
report.latencyMs = capabilityLatency(checks);
|
|
130
|
+
const failed = Object.entries(checks).find(([, check]) => check.status !== 'ok');
|
|
131
|
+
if (failed) {
|
|
132
|
+
report.available = false;
|
|
133
|
+
report.error = `${failed[0]} check ${failed[1].status}: ${failed[1].error ?? 'unknown failure'}`;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const ping = await client.ping();
|
|
138
|
+
report.latencyMs = Math.round(ping.latencyMs);
|
|
139
|
+
if (!ping.ok) {
|
|
140
|
+
report.available = false;
|
|
141
|
+
report.error = ping.error ?? 'ping failed';
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
models.push(report);
|
|
146
|
+
}
|
|
147
|
+
const providerApis = Object.values(ctx.config.providers).map((provider) => providerApiReport(provider, generativeModelIds(ctx.config, provider)));
|
|
148
|
+
// The cycle's own model, when a knowledge base points the maintenance tiers somewhere else.
|
|
149
|
+
// Probed here or nowhere: without this, a typo in it surfaces at 03:00 in a log nobody reads.
|
|
150
|
+
if (ctx.config.maintenance.model) {
|
|
151
|
+
const resolved = ctx.config.maintenance.model;
|
|
152
|
+
const client = new ModelClient(resolved);
|
|
153
|
+
const report = {
|
|
154
|
+
role: 'derive (maintenance)',
|
|
155
|
+
configured: resolved.id !== null,
|
|
156
|
+
available: client.available,
|
|
157
|
+
model: resolved.id,
|
|
158
|
+
endpoint: resolved.provider?.baseUrl ?? null,
|
|
159
|
+
latencyMs: null,
|
|
160
|
+
error: client.unavailableReason,
|
|
161
|
+
withoutIt: 'the maintenance cycle falls back to nothing — observe and reflect cannot run',
|
|
162
|
+
};
|
|
163
|
+
if (options.probeModels !== false && client.available) {
|
|
164
|
+
const ping = await client.ping();
|
|
165
|
+
report.latencyMs = Math.round(ping.latencyMs);
|
|
166
|
+
if (!ping.ok) {
|
|
167
|
+
report.available = false;
|
|
168
|
+
report.error = ping.error ?? 'ping failed';
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
models.push(report);
|
|
172
|
+
}
|
|
173
|
+
// ── Extraction ───────────────────────────────────────────────────────────
|
|
174
|
+
const extraction = await extractionCapabilities();
|
|
175
|
+
// ── Reserved paths ───────────────────────────────────────────────────────
|
|
176
|
+
// If a reserved path already exists and isn't what Akno expects, it is
|
|
177
|
+
// left completely alone. Warn, point at the config key, refuse to adopt it.
|
|
178
|
+
const reserved = [];
|
|
179
|
+
const timelineAbs = path.join(ctx.config.aknoPath, ctx.config.paths.timeline);
|
|
180
|
+
if (!fs.existsSync(timelineAbs)) {
|
|
181
|
+
reserved.push({ path: ctx.config.paths.timeline, state: 'missing', note: 'no event ledger yet' });
|
|
182
|
+
}
|
|
183
|
+
else if (!looksLikeLedger(timelineAbs)) {
|
|
184
|
+
reserved.push({
|
|
185
|
+
path: ctx.config.paths.timeline,
|
|
186
|
+
state: 'occupied',
|
|
187
|
+
note: 'exists but holds no event lines — remap with paths.timeline if this file means something else',
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
reserved.push({ path: ctx.config.paths.timeline, state: 'ok' });
|
|
192
|
+
}
|
|
193
|
+
const inboxAbs = path.join(ctx.config.aknoPath, ctx.config.paths.inbox);
|
|
194
|
+
reserved.push({
|
|
195
|
+
path: `${ctx.config.paths.inbox}/`,
|
|
196
|
+
state: fs.existsSync(inboxAbs) ? 'ok' : 'missing',
|
|
197
|
+
...(fs.existsSync(inboxAbs)
|
|
198
|
+
? {}
|
|
199
|
+
: { note: 'no drop folder yet — create it, or set `paths.inbox`, and dropped files file themselves' }),
|
|
200
|
+
});
|
|
201
|
+
// ── Warnings ─────────────────────────────────────────────────────────────
|
|
202
|
+
if (counts.chunks > 0 && counts.chunksEmbedded < counts.chunks) {
|
|
203
|
+
warnings.push(`${counts.chunks - counts.chunksEmbedded} of ${counts.chunks} chunks are not embedded — ` +
|
|
204
|
+
'recall is running partly lexical. Run `akno index` again once the embedding endpoint is up.');
|
|
205
|
+
}
|
|
206
|
+
if (counts.documents > counts.documentsExtracted) {
|
|
207
|
+
warnings.push(`${counts.documents - counts.documentsExtracted} attachments have no readable text — a photo with ` +
|
|
208
|
+
'nothing written in it, or a format with no extractor. They remain visible by filename.');
|
|
209
|
+
}
|
|
210
|
+
if (counts.documentsMissing > 0) {
|
|
211
|
+
warnings.push(`${counts.documentsMissing} document originals are missing — retained indexed text remains ` +
|
|
212
|
+
'searchable but is reported as degraded. Restore the files or explicitly forget them.');
|
|
213
|
+
}
|
|
214
|
+
if (counts.documentsUnsearchable > 0) {
|
|
215
|
+
warnings.push(`${counts.documentsUnsearchable} attachments have extracted text but no search chunks. ` +
|
|
216
|
+
'Run `akno index` to repair the derived index.');
|
|
217
|
+
}
|
|
218
|
+
if (extraction.note)
|
|
219
|
+
warnings.push(extraction.note);
|
|
220
|
+
if (counts.brokenLinks > 0) {
|
|
221
|
+
warnings.push(`${counts.brokenLinks} wikilinks point at pages that do not exist.`);
|
|
222
|
+
}
|
|
223
|
+
// Only a *surprise* is a warning. `doctor` itself asks for a read-only handle so that
|
|
224
|
+
// inspecting a knowledge base never takes the write lock from a running service, and
|
|
225
|
+
// announcing that as a problem — naming a process that does not exist — sent the reader
|
|
226
|
+
// hunting for a second Akno there was no evidence of.
|
|
227
|
+
if (!ctx.writable && ctx.readOnlyReason !== 'requested') {
|
|
228
|
+
warnings.push(`this instance is read-only: ${readOnlyExplanation(ctx.readOnlyReason, ctx.lockHeldBy)}`);
|
|
229
|
+
}
|
|
230
|
+
if (ctx.store.vectors.kind === 'fallback') {
|
|
231
|
+
warnings.push('sqlite-vec could not be loaded, so vector search is running in the JS fallback. ' +
|
|
232
|
+
'Correct, but slower on a large knowledge base.');
|
|
233
|
+
}
|
|
234
|
+
if (counts.chunks === 0) {
|
|
235
|
+
warnings.push('the index is empty — run `akno index`.');
|
|
236
|
+
}
|
|
237
|
+
const stale = staleBuild();
|
|
238
|
+
if (stale)
|
|
239
|
+
warnings.push(stale);
|
|
240
|
+
// A rule is matched against a page's *slug*, which carries no extension, so a glob
|
|
241
|
+
// ending in `.md` can never match anything. `akno rules` lists it like any other rule,
|
|
242
|
+
// which makes it look applied — the one thing a config guard should never do.
|
|
243
|
+
for (const rule of ctx.config.rules) {
|
|
244
|
+
const extension = ctx.config.pageExtensions.find((ext) => rule.glob.toLowerCase().endsWith(ext));
|
|
245
|
+
if (!extension)
|
|
246
|
+
continue;
|
|
247
|
+
warnings.push(`the rule '${rule.glob}' (${rule.source}) can never match: rules apply to slugs, which have no ` +
|
|
248
|
+
`extension. Write '${rule.glob.slice(0, -extension.length)}' instead.`);
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
aknoPath: ctx.config.aknoPath,
|
|
252
|
+
stateDir: ctx.config.stateDir,
|
|
253
|
+
configSources: ctx.config.sources,
|
|
254
|
+
writable: ctx.writable,
|
|
255
|
+
lockHeldBy: ctx.lockHeldBy,
|
|
256
|
+
readOnlyReason: ctx.readOnlyReason,
|
|
257
|
+
vectorBackend: ctx.store.vectors.kind,
|
|
258
|
+
counts,
|
|
259
|
+
byRole,
|
|
260
|
+
factInjection: {
|
|
261
|
+
...factInjection,
|
|
262
|
+
...(admissionPreview ? { admissionPreview } : {}),
|
|
263
|
+
fallback: rememberFallback,
|
|
264
|
+
},
|
|
265
|
+
index: {
|
|
266
|
+
openMs: round(openMs),
|
|
267
|
+
lexicalMs: round(lexicalMs),
|
|
268
|
+
vectorMs: vectorMs === null ? null : round(vectorMs),
|
|
269
|
+
},
|
|
270
|
+
models,
|
|
271
|
+
providerApis,
|
|
272
|
+
extraction,
|
|
273
|
+
reserved,
|
|
274
|
+
warnings,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
function capabilityLatency(checks) {
|
|
278
|
+
return Object.values(checks).reduce((total, check) => total + (check.latencyMs ?? 0), 0);
|
|
279
|
+
}
|
|
280
|
+
function round(value) {
|
|
281
|
+
return Math.round(value * 1000) / 1000;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* **Has the build run since the source last changed?**
|
|
285
|
+
*
|
|
286
|
+
* Here because the failure it catches is invisible everywhere else. `serve-cmd.ts` imports
|
|
287
|
+
* `@tenphi/akno-core`, whose `exports` point at `dist/index.js`, so the running service executes built
|
|
288
|
+
* JavaScript — while `vitest` imports `./*.ts` directly. That combination lets a fix be committed, the
|
|
289
|
+
* service restarted, the tests green, and the old code still serving: the suite proves the change is
|
|
290
|
+
* right and says nothing about whether it is loaded. It happened, and the afternoon went into
|
|
291
|
+
* suspecting the fix.
|
|
292
|
+
*
|
|
293
|
+
* **Measured against `tsconfig.tsbuildinfo`, not against the emitted `.js`.** Two earlier versions of
|
|
294
|
+
* this got it wrong in opposite ways, and both would have been ignored inside a day:
|
|
295
|
+
*
|
|
296
|
+
* - against `dist/index.js`: `tsc --build` rewrites that file only when `index.ts` changes, so it read
|
|
297
|
+
* as stale immediately after a successful build.
|
|
298
|
+
* - against each file's own output: TypeScript decides what to emit from content, not mtime, so a
|
|
299
|
+
* `touch` — or a `git checkout` restamping files — emits nothing and the warning stuck forever.
|
|
300
|
+
*
|
|
301
|
+
* `tsbuildinfo` is rewritten on every successful build run whether or not anything is emitted, which
|
|
302
|
+
* is exactly the question here: *did the build run after I edited this?* Verified rather than assumed —
|
|
303
|
+
* a touch-then-build leaves `dist/models/client.js` untouched and moves `tsconfig.tsbuildinfo`.
|
|
304
|
+
*
|
|
305
|
+
* mtime, not content: a cheap stat on a diagnostics path. A touched file with no real change warns
|
|
306
|
+
* harmlessly, and one build clears it.
|
|
307
|
+
*/
|
|
308
|
+
function staleBuild() {
|
|
309
|
+
// The package root, found by walking up to the `package.json` that declares this package.
|
|
310
|
+
//
|
|
311
|
+
// Not by looking for a `src/` or `dist/` segment in the path: this module runs from both — `dist`
|
|
312
|
+
// under the service and the CLI, which is the whole point of the check, and `src` under `vitest` —
|
|
313
|
+
// and as the *last* segment neither has a trailing separator to match on. That was the first
|
|
314
|
+
// version, and it silently found nothing in the one place it matters, which is the same class of
|
|
315
|
+
// mistake it exists to catch.
|
|
316
|
+
const root = packageRoot(path.dirname(new URL(import.meta.url).pathname));
|
|
317
|
+
if (!root)
|
|
318
|
+
return null;
|
|
319
|
+
const srcDir = path.join(root, 'src');
|
|
320
|
+
if (!fs.existsSync(srcDir))
|
|
321
|
+
return null;
|
|
322
|
+
if (!fs.existsSync(path.join(root, 'dist'))) {
|
|
323
|
+
return '`packages/core/dist` has never been built — a host importing @tenphi/akno-core gets nothing. Run `akno redeploy`.';
|
|
324
|
+
}
|
|
325
|
+
let builtAt;
|
|
326
|
+
try {
|
|
327
|
+
builtAt = fs.statSync(path.join(root, 'tsconfig.tsbuildinfo')).mtimeMs;
|
|
328
|
+
}
|
|
329
|
+
catch {
|
|
330
|
+
// No incremental record — a published package, or a build configured without one. Nothing
|
|
331
|
+
// reliable to compare against, and a guess here is worse than silence.
|
|
332
|
+
return null;
|
|
333
|
+
}
|
|
334
|
+
const stale = firstNewerThan(srcDir, srcDir, builtAt);
|
|
335
|
+
if (!stale)
|
|
336
|
+
return null;
|
|
337
|
+
return (`\`${stale}\` has changed since the last build. The service runs the built JavaScript, so this ` +
|
|
338
|
+
'change is not loaded however often it restarts — run `akno redeploy`.');
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* The first source file modified after `since`, relative to the package root, or null.
|
|
342
|
+
*
|
|
343
|
+
* Returns on the first hit: the message names one file to make the point, and walking the rest buys
|
|
344
|
+
* nothing once the answer is "run the build".
|
|
345
|
+
*/
|
|
346
|
+
export function firstNewerThan(dir, srcRoot, since) {
|
|
347
|
+
let entries;
|
|
348
|
+
try {
|
|
349
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
return null;
|
|
353
|
+
}
|
|
354
|
+
for (const entry of entries) {
|
|
355
|
+
const full = path.join(dir, entry.name);
|
|
356
|
+
if (entry.isDirectory()) {
|
|
357
|
+
const found = firstNewerThan(full, srcRoot, since);
|
|
358
|
+
if (found)
|
|
359
|
+
return found;
|
|
360
|
+
continue;
|
|
361
|
+
}
|
|
362
|
+
// Tests are not emitted, so editing one cannot leave the service behind.
|
|
363
|
+
if (!entry.name.endsWith('.ts') || entry.name.endsWith('.test.ts'))
|
|
364
|
+
continue;
|
|
365
|
+
try {
|
|
366
|
+
if (fs.statSync(full).mtimeMs > since)
|
|
367
|
+
return path.join('src', path.relative(srcRoot, full));
|
|
368
|
+
}
|
|
369
|
+
catch {
|
|
370
|
+
// A file that vanished between readdir and stat is not a stale build.
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return null;
|
|
374
|
+
}
|
|
375
|
+
/** Nearest ancestor directory holding a `package.json`, or null. */
|
|
376
|
+
function packageRoot(from) {
|
|
377
|
+
let dir = from;
|
|
378
|
+
for (let up = 0; up < 8; up++) {
|
|
379
|
+
if (fs.existsSync(path.join(dir, 'package.json')))
|
|
380
|
+
return dir;
|
|
381
|
+
const parent = path.dirname(dir);
|
|
382
|
+
if (parent === dir)
|
|
383
|
+
return null;
|
|
384
|
+
dir = parent;
|
|
385
|
+
}
|
|
386
|
+
return null;
|
|
387
|
+
}
|
|
388
|
+
//# sourceMappingURL=doctor.js.map
|