@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
package/dist/open.js
ADDED
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { AknoError, OPS, } from '@tenphi/akno-protocol';
|
|
4
|
+
import { loadConfig } from "./config/load.js";
|
|
5
|
+
import { acquireWriteLock, openStore } from "./store/db.js";
|
|
6
|
+
import { DeferredDerive } from "./index/defer.js";
|
|
7
|
+
import { ModelClient } from "./models/client.js";
|
|
8
|
+
import { resolveAutoProviderApis } from "./models/provider-api.js";
|
|
9
|
+
import { Assembler } from "./recall/assemble.js";
|
|
10
|
+
import { Indexer } from "./index/indexer.js";
|
|
11
|
+
import { Watcher } from "./watch/watcher.js";
|
|
12
|
+
import { doctor } from "./doctor.js";
|
|
13
|
+
import { effectiveRule, matchRules } from "./rules/compile.js";
|
|
14
|
+
import { looksLikeLedger } from "./reserved.js";
|
|
15
|
+
import { Journal } from "./write/journal.js";
|
|
16
|
+
import { Gate } from "./write/gate.js";
|
|
17
|
+
import { recall } from "./ops/recall.js";
|
|
18
|
+
import { answer as answerOp } from "./ops/answer.js";
|
|
19
|
+
import { read } from "./ops/read.js";
|
|
20
|
+
import { list } from "./ops/list.js";
|
|
21
|
+
import { timeline } from "./ops/timeline.js";
|
|
22
|
+
import { context as contextOp } from "./ops/context.js";
|
|
23
|
+
import { graph as graphOp } from "./ops/graph.js";
|
|
24
|
+
import { write as writeOp } from "./ops/write.js";
|
|
25
|
+
import { folder as folderOp } from "./ops/folder.js";
|
|
26
|
+
import { remember as rememberOp } from "./ops/remember.js";
|
|
27
|
+
import { forget as forgetOp } from "./ops/forget.js";
|
|
28
|
+
import { undo as undoOp } from "./ops/undo.js";
|
|
29
|
+
import { move as moveOp } from "./ops/move.js";
|
|
30
|
+
import { ingest as ingestOp } from "./ops/ingest.js";
|
|
31
|
+
import { adopt as adoptOp } from "./ops/adopt.js";
|
|
32
|
+
import { isInInbox, processInbox } from "./ingest/inbox.js";
|
|
33
|
+
import { dream } from "./maintenance/dream.js";
|
|
34
|
+
import { applyMaintenancePlan, decideMaintenanceItem, getMaintenancePlan, listMaintenancePlans, maintenanceStatus, pruneMaintenancePlans, renderStoredMaintenanceDiff, reviseMaintenanceItem, supersedeMaintenancePlan, } from "./maintenance/plans.js";
|
|
35
|
+
import { recoverInterruptedDreamRuns } from "./maintenance/runs.js";
|
|
36
|
+
import { explainMaintenancePath } from "./maintenance/path-policy.js";
|
|
37
|
+
import { resumeMaintenanceRecovery, } from "./maintenance/recovery.js";
|
|
38
|
+
/**
|
|
39
|
+
* One sentence for each way a handle can be read-only. Kept in one place because the same
|
|
40
|
+
* explanation belongs in a thrown error, in `doctor`, and in the CLI, and three copies
|
|
41
|
+
* would drift into three different claims about what is happening.
|
|
42
|
+
*/
|
|
43
|
+
export function readOnlyExplanation(reason, heldByPid) {
|
|
44
|
+
switch (reason) {
|
|
45
|
+
case 'held':
|
|
46
|
+
return `pid ${heldByPid} holds it. Do not run two Aknos against one knowledge base.`;
|
|
47
|
+
case 'unwritable':
|
|
48
|
+
return 'the lock file could not be written — check the permissions on the state directory.';
|
|
49
|
+
case 'requested':
|
|
50
|
+
return 'this handle was opened read-only.';
|
|
51
|
+
default:
|
|
52
|
+
return 'this handle cannot write.';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* **The library is the product.** One op registry, one schema per op, three
|
|
57
|
+
* transports over it — so the doors cannot drift into different behaviour.
|
|
58
|
+
*
|
|
59
|
+
* import { open } from '@tenphi/akno-core';
|
|
60
|
+
* const mem = await open({ aknoPath: '~/Notes' });
|
|
61
|
+
* const { results } = await mem.recall({ query: 'car insurance renewal' });
|
|
62
|
+
*
|
|
63
|
+
* Swapping `open()` for `connect()` from `@tenphi/akno-client` is the only difference
|
|
64
|
+
* between embedding and connecting to a running service, so the decision is
|
|
65
|
+
* reversible and nothing above the call site knows which is in use.
|
|
66
|
+
*/
|
|
67
|
+
export async function open(options = {}) {
|
|
68
|
+
const config = loadConfig(options);
|
|
69
|
+
fs.mkdirSync(config.stateDir, { recursive: true });
|
|
70
|
+
fs.mkdirSync(config.logDir, { recursive: true });
|
|
71
|
+
if (options.resolveProviderApis !== false) {
|
|
72
|
+
await resolveAutoProviderApis(config, { refresh: options.refreshProviderApis });
|
|
73
|
+
}
|
|
74
|
+
// Exactly one process may hold the write handle. A second one opens read-only
|
|
75
|
+
// and says so, rather than racing two watchers over one directory.
|
|
76
|
+
let lock = null;
|
|
77
|
+
let writable = options.writable !== false;
|
|
78
|
+
let lockHeldBy = null;
|
|
79
|
+
let readOnlyReason = writable ? null : 'requested';
|
|
80
|
+
if (writable) {
|
|
81
|
+
lock = acquireWriteLock(config.lockPath, options.writeLockWaitMs ?? 0);
|
|
82
|
+
if (!lock.acquired) {
|
|
83
|
+
writable = false;
|
|
84
|
+
lockHeldBy = lock.heldByPid;
|
|
85
|
+
readOnlyReason = lock.failure ?? 'held';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const dimensions = config.models.embedding.dimensions ?? 1024;
|
|
89
|
+
const store = openStore({ dbPath: config.dbPath, embeddingDimensions: dimensions, readOnly: !writable });
|
|
90
|
+
const models = {
|
|
91
|
+
embedding: new ModelClient(config.models.embedding),
|
|
92
|
+
reranker: new ModelClient(config.models.reranker),
|
|
93
|
+
derive: new ModelClient(config.models.derive),
|
|
94
|
+
expansion: new ModelClient(config.models.expansion),
|
|
95
|
+
answer: new ModelClient(config.models.answer),
|
|
96
|
+
vision: new ModelClient(config.models.vision),
|
|
97
|
+
};
|
|
98
|
+
const indexer = new Indexer(config, store, { embedding: models.embedding, derive: models.derive });
|
|
99
|
+
const deferredDerive = new DeferredDerive(indexer, (err) => {
|
|
100
|
+
// After the caller has gone, so there is nobody to throw at. A lost derivation costs a summary
|
|
101
|
+
// and some facts until the next pass over the page; it never costs the write.
|
|
102
|
+
options.watchEvents?.onError?.(err instanceof Error ? err : new Error(String(err)));
|
|
103
|
+
});
|
|
104
|
+
const ctx = {
|
|
105
|
+
config,
|
|
106
|
+
store,
|
|
107
|
+
models,
|
|
108
|
+
derive: deferredDerive,
|
|
109
|
+
assembler: new Assembler(config, store),
|
|
110
|
+
indexer,
|
|
111
|
+
journal: new Journal(store, config.aknoPath, config.trashDir),
|
|
112
|
+
gate: new Gate(store, config),
|
|
113
|
+
actor: options.actor ?? 'agent',
|
|
114
|
+
writable,
|
|
115
|
+
lockHeldBy,
|
|
116
|
+
readOnlyReason,
|
|
117
|
+
};
|
|
118
|
+
// The write handle proves that no predecessor is still applying. Finalize its unfinished
|
|
119
|
+
// lifecycle rows before status or scheduling can mistake a crashed run for a live one.
|
|
120
|
+
recoverInterruptedDreamRuns(ctx);
|
|
121
|
+
if (writable && config.createReservedPaths)
|
|
122
|
+
ensureReservedPaths(config);
|
|
123
|
+
let watcher = null;
|
|
124
|
+
if (options.watch && writable && config.watch.enabled) {
|
|
125
|
+
watcher = new Watcher(config, indexer, {
|
|
126
|
+
...(options.watchEvents ?? {}),
|
|
127
|
+
// Dropping a file in the inbox is the whole interface. Indexing it where it
|
|
128
|
+
// landed would leave it sitting there forever, which is the one thing an inbox
|
|
129
|
+
// must not do.
|
|
130
|
+
onArrival: async (changed) => {
|
|
131
|
+
const arrivals = changed.filter((relPath) => isInInbox(ctx, relPath));
|
|
132
|
+
if (arrivals.length === 0)
|
|
133
|
+
return;
|
|
134
|
+
const result = await processInbox(ctx, { only: arrivals });
|
|
135
|
+
options.watchEvents?.onInbox?.(result);
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
watcher.start();
|
|
139
|
+
}
|
|
140
|
+
const implementations = {
|
|
141
|
+
recall,
|
|
142
|
+
answer: answerOp,
|
|
143
|
+
read,
|
|
144
|
+
list,
|
|
145
|
+
timeline,
|
|
146
|
+
context: contextOp,
|
|
147
|
+
graph: graphOp,
|
|
148
|
+
write: writeOp,
|
|
149
|
+
folder: folderOp,
|
|
150
|
+
remember: rememberOp,
|
|
151
|
+
forget: forgetOp,
|
|
152
|
+
undo: undoOp,
|
|
153
|
+
move: moveOp,
|
|
154
|
+
ingest: ingestOp,
|
|
155
|
+
adopt: adoptOp,
|
|
156
|
+
};
|
|
157
|
+
async function call(op, input, callOptions = {}) {
|
|
158
|
+
const definition = OPS[op];
|
|
159
|
+
if (!definition)
|
|
160
|
+
throw new AknoError('invalid', `unknown op: ${String(op)}`);
|
|
161
|
+
// Every door validates against the same schema, so a bad call fails the same
|
|
162
|
+
// way whether it came in-process, over a socket, or from MCP.
|
|
163
|
+
const parsed = definition.input.safeParse(input);
|
|
164
|
+
if (!parsed.success) {
|
|
165
|
+
throw new AknoError('invalid', `invalid input for ${op}`, {
|
|
166
|
+
issues: parsed.error.issues.map((issue) => ({
|
|
167
|
+
path: issue.path.join('.'),
|
|
168
|
+
message: issue.message,
|
|
169
|
+
})),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
if (definition.kind === 'write' && !writable) {
|
|
173
|
+
throw new AknoError('read_only', `${op} needs the write handle — ${readOnlyExplanation(readOnlyReason, lockHeldBy)}`);
|
|
174
|
+
}
|
|
175
|
+
const implementation = implementations[op];
|
|
176
|
+
if (!implementation || !definition.implemented) {
|
|
177
|
+
throw new AknoError('not_implemented', `${op} is not implemented in this build. Its schema is final; the body lands with the write path.`);
|
|
178
|
+
}
|
|
179
|
+
// One call, one actor. The gate reads it, and the journal records it for undo attribution, so
|
|
180
|
+
// shadowing the context here is the whole mechanism — the same one `approve` uses to replay a
|
|
181
|
+
// proposal as the person who answered it.
|
|
182
|
+
const forCall = callOptions.actor && callOptions.actor !== ctx.actor ? { ...ctx, actor: callOptions.actor } : ctx;
|
|
183
|
+
return implementation(forCall, parsed.data);
|
|
184
|
+
}
|
|
185
|
+
const akno = {
|
|
186
|
+
config,
|
|
187
|
+
writable,
|
|
188
|
+
lockHeldBy,
|
|
189
|
+
recall: (input) => call('recall', input),
|
|
190
|
+
answer: (input) => call('answer', input),
|
|
191
|
+
read: (input) => call('read', input),
|
|
192
|
+
list: (input) => call('list', input),
|
|
193
|
+
timeline: (input) => call('timeline', input),
|
|
194
|
+
context: (input) => call('context', input),
|
|
195
|
+
graph: (input) => call('graph', input),
|
|
196
|
+
write: (input) => call('write', input),
|
|
197
|
+
folder: (input) => call('folder', input),
|
|
198
|
+
remember: (input) => call('remember', input),
|
|
199
|
+
forget: (input) => call('forget', input),
|
|
200
|
+
undo: (input) => call('undo', input),
|
|
201
|
+
move: (input) => call('move', input),
|
|
202
|
+
ingest: (input) => call('ingest', input),
|
|
203
|
+
adopt: (input) => call('adopt', input),
|
|
204
|
+
call,
|
|
205
|
+
async index(indexOptions = {}) {
|
|
206
|
+
if (!writable) {
|
|
207
|
+
throw new AknoError('read_only', `cannot index — ${readOnlyExplanation(readOnlyReason, lockHeldBy)}`);
|
|
208
|
+
}
|
|
209
|
+
return indexer.run(indexOptions);
|
|
210
|
+
},
|
|
211
|
+
doctor: (doctorOptions) => doctor(ctx, doctorOptions ?? {}),
|
|
212
|
+
rules(slug) {
|
|
213
|
+
const match = matchRules(slug, config.rules);
|
|
214
|
+
return {
|
|
215
|
+
effective: effectiveRule(slug, config.rules),
|
|
216
|
+
candidates: match.candidates.map((rule) => ({ glob: rule.glob, source: rule.source })),
|
|
217
|
+
};
|
|
218
|
+
},
|
|
219
|
+
maintenancePolicy: (slug, mode) => explainMaintenancePath(ctx, slug, mode),
|
|
220
|
+
changes: (limit) => ctx.journal.list(limit),
|
|
221
|
+
proposals: () => ctx.gate.pending(),
|
|
222
|
+
plans: (limit, statuses) => listMaintenancePlans(ctx, limit, statuses),
|
|
223
|
+
plan: (planId) => getMaintenancePlan(ctx, planId),
|
|
224
|
+
maintenanceDiff: (planId, itemId, revision) => renderStoredMaintenanceDiff(ctx, planId, itemId, revision),
|
|
225
|
+
async revisePlan(planId, itemId, input) {
|
|
226
|
+
if (!writable) {
|
|
227
|
+
throw new AknoError('read_only', `revising a maintenance plan needs the write handle — ${readOnlyExplanation(readOnlyReason, lockHeldBy)}`);
|
|
228
|
+
}
|
|
229
|
+
return reviseMaintenanceItem(ctx, planId, itemId, input);
|
|
230
|
+
},
|
|
231
|
+
decidePlan(planId, itemId, outcome, reason = '', actionOptions = {}) {
|
|
232
|
+
if (!writable) {
|
|
233
|
+
throw new AknoError('read_only', `deciding a maintenance plan needs the write handle — ${readOnlyExplanation(readOnlyReason, lockHeldBy)}`);
|
|
234
|
+
}
|
|
235
|
+
return decideMaintenanceItem(ctx, planId, itemId, outcome, 'human', reason, actionOptions);
|
|
236
|
+
},
|
|
237
|
+
async applyPlan(planId, actionOptions = {}) {
|
|
238
|
+
if (!writable) {
|
|
239
|
+
throw new AknoError('read_only', `applying a maintenance plan needs the write handle — ${readOnlyExplanation(readOnlyReason, lockHeldBy)}`);
|
|
240
|
+
}
|
|
241
|
+
return applyMaintenancePlan(ctx, planId, undefined, actionOptions);
|
|
242
|
+
},
|
|
243
|
+
supersedePlan(planId, reason) {
|
|
244
|
+
if (!writable) {
|
|
245
|
+
throw new AknoError('read_only', `superseding a maintenance plan needs the write handle — ${readOnlyExplanation(readOnlyReason, lockHeldBy)}`);
|
|
246
|
+
}
|
|
247
|
+
return supersedeMaintenancePlan(ctx, planId, reason);
|
|
248
|
+
},
|
|
249
|
+
prunePlans(retentionOptions = {}) {
|
|
250
|
+
if (retentionOptions.apply && !writable) {
|
|
251
|
+
throw new AknoError('read_only', `pruning maintenance plans needs the write handle — ${readOnlyExplanation(readOnlyReason, lockHeldBy)}`);
|
|
252
|
+
}
|
|
253
|
+
return pruneMaintenancePlans(ctx, retentionOptions);
|
|
254
|
+
},
|
|
255
|
+
maintenanceStatus: (query) => maintenanceStatus(ctx, query),
|
|
256
|
+
resumeMaintenance(scope) {
|
|
257
|
+
if (!writable) {
|
|
258
|
+
throw new AknoError('read_only', `resuming automatic maintenance needs the write handle — ${readOnlyExplanation(readOnlyReason, lockHeldBy)}`);
|
|
259
|
+
}
|
|
260
|
+
return resumeMaintenanceRecovery(ctx, scope);
|
|
261
|
+
},
|
|
262
|
+
async approve(proposalId, answer = {}) {
|
|
263
|
+
const proposal = ctx.gate.get(proposalId);
|
|
264
|
+
if (!proposal)
|
|
265
|
+
throw new AknoError('not_found', `no proposal with id ${proposalId}`);
|
|
266
|
+
if (proposal.status !== 'pending') {
|
|
267
|
+
throw new AknoError('invalid', `${proposalId} was already ${proposal.status}`);
|
|
268
|
+
}
|
|
269
|
+
// Replayed as the *user*, which is what makes approval work: the gate that
|
|
270
|
+
// stopped the agent does not apply to the person answering it.
|
|
271
|
+
const asUser = { ...ctx, actor: 'user' };
|
|
272
|
+
// An ingest proposal holds the source, not a page write. Treat the answer as its folder and
|
|
273
|
+
// run ingest again with that explicit destination. Replaying every proposal through `write`
|
|
274
|
+
// stripped the source path and made file-placement proposals impossible to resolve.
|
|
275
|
+
if (proposal.kind === 'ingest') {
|
|
276
|
+
const folder = answer.slug?.trim();
|
|
277
|
+
if (!folder) {
|
|
278
|
+
const nearest = JSON.parse(proposal.nearest);
|
|
279
|
+
const candidates = nearest.length > 0 ? ` Nearest: ${nearest.join(', ')}.` : '';
|
|
280
|
+
throw new AknoError('invalid', `${proposalId} has no destination — approve it with a folder.${candidates}`);
|
|
281
|
+
}
|
|
282
|
+
const held = JSON.parse(proposal.payload);
|
|
283
|
+
const result = await ingestOp(asUser, { ...held, folder });
|
|
284
|
+
if (result.outcome === 'ok' || result.outcome === 'duplicate') {
|
|
285
|
+
ctx.gate.resolve(proposalId, 'approved', result.change_id);
|
|
286
|
+
}
|
|
287
|
+
return { subject: proposal.subject, ingest: result };
|
|
288
|
+
}
|
|
289
|
+
const held = JSON.parse(proposal.payload);
|
|
290
|
+
const payload = answer.slug ? { ...held, slug: answer.slug } : held;
|
|
291
|
+
// A `route` proposal holds a claim and no destination — that *is* the question it asks. Left
|
|
292
|
+
// unanswered the replay fails deep inside `write` with "requires a slug", which reads as a bug
|
|
293
|
+
// in the approval rather than a missing answer, so it is refused here with the fix in the
|
|
294
|
+
// message. The nearest pages travel on the proposal for exactly this choice.
|
|
295
|
+
if (!payload.slug && !payload.propose_slug && !payload.event) {
|
|
296
|
+
const nearest = JSON.parse(proposal.nearest);
|
|
297
|
+
const candidates = nearest.length > 0 ? ` Nearest: ${nearest.join(', ')}.` : '';
|
|
298
|
+
throw new AknoError('invalid', `${proposalId} has no destination — approve it with a page to write to.${candidates}`);
|
|
299
|
+
}
|
|
300
|
+
const result = await writeOp(asUser, proposal.kind === 'conflict' ? { ...payload, resolve_conflict: true } : payload);
|
|
301
|
+
ctx.gate.resolve(proposalId, 'approved', result.change_id);
|
|
302
|
+
return { subject: proposal.subject, write: result };
|
|
303
|
+
},
|
|
304
|
+
async decline(proposalId) {
|
|
305
|
+
const proposal = ctx.gate.get(proposalId);
|
|
306
|
+
if (!proposal)
|
|
307
|
+
throw new AknoError('not_found', `no proposal with id ${proposalId}`);
|
|
308
|
+
ctx.gate.resolve(proposalId, 'declined');
|
|
309
|
+
return { subject: proposal.subject };
|
|
310
|
+
},
|
|
311
|
+
inbox: (inboxOptions) => processInbox(ctx, inboxOptions ?? {}),
|
|
312
|
+
async dream(dreamOptions = {}) {
|
|
313
|
+
// A dry run reads and reports; only a real one needs the handle. Refusing both would
|
|
314
|
+
// make "what would the cycle write?" unanswerable from a second process.
|
|
315
|
+
if (!writable && !dreamOptions.dryRun) {
|
|
316
|
+
throw new AknoError('read_only', `dream needs the write handle — ${readOnlyExplanation(readOnlyReason, lockHeldBy)}`);
|
|
317
|
+
}
|
|
318
|
+
return dream(ctx, dreamOptions);
|
|
319
|
+
},
|
|
320
|
+
async reconcile() {
|
|
321
|
+
if (watcher)
|
|
322
|
+
await watcher.reconcileNow();
|
|
323
|
+
else
|
|
324
|
+
await indexer.run({ verify: true });
|
|
325
|
+
},
|
|
326
|
+
async close() {
|
|
327
|
+
// A one-shot command would otherwise exit with its own write still underived.
|
|
328
|
+
await deferredDerive.flush();
|
|
329
|
+
await watcher?.stop();
|
|
330
|
+
store.close();
|
|
331
|
+
lock?.release();
|
|
332
|
+
},
|
|
333
|
+
};
|
|
334
|
+
return akno;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* On startup Akno creates `timeline.md` (with a header and the current
|
|
338
|
+
* year) and `inbox/` (with a short README) **if they are missing** — and only
|
|
339
|
+
* when the user has opted in. Nothing else is created ahead of need.
|
|
340
|
+
*
|
|
341
|
+
* If a reserved path already exists and isn't what Akno expects, it is left
|
|
342
|
+
* completely alone; `doctor` reports it and points at the config key.
|
|
343
|
+
*/
|
|
344
|
+
function ensureReservedPaths(config) {
|
|
345
|
+
const timelineAbs = path.join(config.aknoPath, config.paths.timeline);
|
|
346
|
+
// The rule here is absolute: if a reserved path already exists and isn't what Akno
|
|
347
|
+
// expects — a `timeline.md` that is somebody's project plan — Akno warns,
|
|
348
|
+
// points at the config key, and **refuses to start** rather than adopting a file
|
|
349
|
+
// the user meant something else by. Silently treating it as a ledger would start
|
|
350
|
+
// appending event lines into the middle of their document.
|
|
351
|
+
if (fs.existsSync(timelineAbs) && !looksLikeLedger(timelineAbs)) {
|
|
352
|
+
throw new AknoError('invalid', `${config.paths.timeline} already exists and does not look like an event ledger — it has no ` +
|
|
353
|
+
'`- **YYYY-MM-DD** | …` lines. Akno will not adopt a file you meant something else by. ' +
|
|
354
|
+
'Point it elsewhere with `paths.timeline`, or set `create_reserved_paths: false`.');
|
|
355
|
+
}
|
|
356
|
+
if (!fs.existsSync(timelineAbs)) {
|
|
357
|
+
const year = new Date().getFullYear();
|
|
358
|
+
fs.mkdirSync(path.dirname(timelineAbs), { recursive: true });
|
|
359
|
+
fs.writeFileSync(timelineAbs, `---\ntype: timeline\ntitle: Timeline\n---\n\n# Timeline\n\n` +
|
|
360
|
+
`What actually happened, newest first. One line per event; the detail lives on the linked\n` +
|
|
361
|
+
`page, so this stays an index and never a second copy of a fact.\n\n` +
|
|
362
|
+
`Append-only: never edit or remove a line, correct it with a new one. Each line reads\n` +
|
|
363
|
+
`\`- **YYYY-MM-DD** | what happened. [[page/with/detail]]\` — that exact shape is what\n` +
|
|
364
|
+
`makes a line an event, and prose Akno cannot match is invisible to search.\n\n` +
|
|
365
|
+
`## ${year}\n`, 'utf8');
|
|
366
|
+
}
|
|
367
|
+
const inboxAbs = path.join(config.aknoPath, config.paths.inbox);
|
|
368
|
+
if (fs.existsSync(inboxAbs) && !fs.statSync(inboxAbs).isDirectory()) {
|
|
369
|
+
throw new AknoError('invalid', `${config.paths.inbox} exists and is not a directory. Remap it with \`paths.inbox\`.`);
|
|
370
|
+
}
|
|
371
|
+
if (!fs.existsSync(inboxAbs)) {
|
|
372
|
+
fs.mkdirSync(inboxAbs, { recursive: true });
|
|
373
|
+
fs.writeFileSync(path.join(inboxAbs, 'README.md'), `---\ntitle: Inbox\n---\n\n# Inbox\n\n` +
|
|
374
|
+
`Drop anything here and it files itself: Akno extracts the text, OCRs it if there is no\n` +
|
|
375
|
+
`text layer, gives it a name from its contents, summarizes it, and moves it to where it\n` +
|
|
376
|
+
`belongs.\n\n` +
|
|
377
|
+
`If it cannot work out where that is, the file **stays here** with a proposal attached —\n` +
|
|
378
|
+
`deliberately. An inbox with three things in it is a to-do list. A misfiled document is a\n` +
|
|
379
|
+
`lost one.\n`, 'utf8');
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
//# sourceMappingURL=open.js.map
|
package/dist/open.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../src/open.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type AdoptOutput } from '@tenphi/akno-protocol';
|
|
2
|
+
import type { AknoContext } from '../context.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Plan one document group's filing page through the configured trust policy.
|
|
5
|
+
*
|
|
6
|
+
* This is intentionally separate from the bulk dream phase. A recall card names one stable
|
|
7
|
+
* document, and invoking its action must not turn every other orphan in the knowledge base into
|
|
8
|
+
* an implicit batch. Review decisions remain outside the op surface, so an agent can propose a
|
|
9
|
+
* guarded change but cannot approve its own review-mode plan.
|
|
10
|
+
*/
|
|
11
|
+
export declare function adopt(ctx: AknoContext, rawInput: unknown): Promise<AdoptOutput>;
|
|
12
|
+
//# sourceMappingURL=adopt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../src/ops/adopt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAqBjD;;;;;;;GAOG;AACH,wBAAsB,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAuGrF"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { AdoptInput, AknoError } from '@tenphi/akno-protocol';
|
|
2
|
+
import { planOrphanAdoptions } from "../maintenance/adopt.js";
|
|
3
|
+
import { applyMaintenancePlan, createAdoptionPlan, decideMaintenancePlanWithCurator, } from "../maintenance/plans.js";
|
|
4
|
+
import { captureMaintenanceSnapshot } from "../maintenance/runs.js";
|
|
5
|
+
import { effectiveTransformPolicy, policyMode } from "../maintenance/profile.js";
|
|
6
|
+
/**
|
|
7
|
+
* Plan one document group's filing page through the configured trust policy.
|
|
8
|
+
*
|
|
9
|
+
* This is intentionally separate from the bulk dream phase. A recall card names one stable
|
|
10
|
+
* document, and invoking its action must not turn every other orphan in the knowledge base into
|
|
11
|
+
* an implicit batch. Review decisions remain outside the op surface, so an agent can propose a
|
|
12
|
+
* guarded change but cannot approve its own review-mode plan.
|
|
13
|
+
*/
|
|
14
|
+
export async function adopt(ctx, rawInput) {
|
|
15
|
+
const input = AdoptInput.parse(rawInput);
|
|
16
|
+
const document = ctx.store.db
|
|
17
|
+
.prepare(`SELECT d.id, d.page_id, d.text IS NOT NULL AS readable, p.slug AS page_slug,
|
|
18
|
+
d.availability,
|
|
19
|
+
EXISTS(
|
|
20
|
+
SELECT 1 FROM documents peer
|
|
21
|
+
WHERE peer.renders IS NULL
|
|
22
|
+
AND COALESCE(peer.group_key, peer.rel_path) = COALESCE(d.group_key, d.rel_path)
|
|
23
|
+
AND peer.availability = 'missing'
|
|
24
|
+
) AS group_missing
|
|
25
|
+
FROM documents d LEFT JOIN pages p ON p.id = d.page_id
|
|
26
|
+
WHERE d.id = ?`)
|
|
27
|
+
.get(input.documentId);
|
|
28
|
+
if (!document)
|
|
29
|
+
throw new AknoError('not_found', `no document with id ${input.documentId}`);
|
|
30
|
+
if (document.page_id) {
|
|
31
|
+
return {
|
|
32
|
+
status: 'ok',
|
|
33
|
+
outcome: 'noop',
|
|
34
|
+
document_id: document.id,
|
|
35
|
+
...(document.page_slug ? { slug: document.page_slug } : {}),
|
|
36
|
+
reason: 'the document already belongs to a page',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (document.availability !== 'available' || document.group_missing === 1) {
|
|
40
|
+
return {
|
|
41
|
+
status: 'ok',
|
|
42
|
+
outcome: 'blocked',
|
|
43
|
+
document_id: document.id,
|
|
44
|
+
reason: 'one or more original document files are missing; restore them before creating a filing page',
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (document.readable !== 1) {
|
|
48
|
+
return {
|
|
49
|
+
status: 'ok',
|
|
50
|
+
outcome: 'blocked',
|
|
51
|
+
document_id: document.id,
|
|
52
|
+
reason: 'the document has no readable indexed text from which to make a filing page',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const itemPolicy = policyMode(effectiveTransformPolicy(ctx.config, 'adopt'));
|
|
56
|
+
const mode = itemPolicy;
|
|
57
|
+
if (!mode) {
|
|
58
|
+
return {
|
|
59
|
+
status: 'ok',
|
|
60
|
+
outcome: 'disabled',
|
|
61
|
+
document_id: document.id,
|
|
62
|
+
reason: 'document adoption policy is off',
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const planned = await planOrphanAdoptions(ctx, { limit: 1, documentId: document.id });
|
|
66
|
+
const report = planned.adopted[0];
|
|
67
|
+
const draft = planned.drafts[0];
|
|
68
|
+
if (!report || !draft) {
|
|
69
|
+
return {
|
|
70
|
+
status: 'ok',
|
|
71
|
+
outcome: report?.action === 'rejected' ? 'rejected' : 'blocked',
|
|
72
|
+
document_id: document.id,
|
|
73
|
+
...(report?.slug ? { slug: report.slug } : {}),
|
|
74
|
+
reason: report?.reason ?? 'the selected document is no longer an eligible readable orphan',
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const modelId = ctx.config.maintenance.model?.id ?? ctx.config.models.derive.id;
|
|
78
|
+
let plan = createAdoptionPlan(ctx, mode, [draft], captureMaintenanceSnapshot(ctx, ['adopt'], modelId), itemPolicy);
|
|
79
|
+
if (!plan) {
|
|
80
|
+
throw new AknoError('internal', 'the selected adoption produced no maintenance plan');
|
|
81
|
+
}
|
|
82
|
+
if (mode === 'auto' && plan.items.some((item) => item.status === 'proposed' && item.policy === 'auto')) {
|
|
83
|
+
plan = await decideMaintenancePlanWithCurator(ctx, plan.id);
|
|
84
|
+
}
|
|
85
|
+
if (mode === 'auto' &&
|
|
86
|
+
plan.items.some((item) => ['approved', 'applying', 'verification_pending'].includes(item.status))) {
|
|
87
|
+
plan = (await applyMaintenancePlan(ctx, plan.id)).plan;
|
|
88
|
+
}
|
|
89
|
+
const item = plan.items.find((candidate) => candidate.evidence.some((evidence) => evidence.type === 'document' && evidence.documentId === document.id));
|
|
90
|
+
if (!item)
|
|
91
|
+
throw new AknoError('internal', 'the adoption plan lost the selected document identity');
|
|
92
|
+
return adoptionResult(document.id, draft.documents.map((entry) => entry.id), draft.relPath, plan, item);
|
|
93
|
+
}
|
|
94
|
+
function adoptionResult(documentId, documentIds, relPath, plan, item) {
|
|
95
|
+
const common = {
|
|
96
|
+
status: 'ok',
|
|
97
|
+
document_id: documentId,
|
|
98
|
+
document_ids: documentIds,
|
|
99
|
+
slug: item.subject,
|
|
100
|
+
rel_path: relPath,
|
|
101
|
+
...(item.changeId ? { change_id: item.changeId } : {}),
|
|
102
|
+
plan: {
|
|
103
|
+
id: plan.id,
|
|
104
|
+
mode: plan.mode,
|
|
105
|
+
status: plan.status,
|
|
106
|
+
item_id: item.id,
|
|
107
|
+
item_status: item.status,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
const reason = item.verification?.detail ?? item.decision?.reason ?? item.statusReason ?? undefined;
|
|
111
|
+
switch (item.status) {
|
|
112
|
+
case 'applied':
|
|
113
|
+
return { ...common, outcome: 'created', ...(reason ? { reason } : {}) };
|
|
114
|
+
case 'verification_pending':
|
|
115
|
+
return { ...common, outcome: 'verification_pending', ...(reason ? { reason } : {}) };
|
|
116
|
+
case 'rejected':
|
|
117
|
+
return { ...common, outcome: 'rejected', ...(reason ? { reason } : {}) };
|
|
118
|
+
case 'blocked':
|
|
119
|
+
case 'stale':
|
|
120
|
+
case 'verification_failed':
|
|
121
|
+
return {
|
|
122
|
+
...common,
|
|
123
|
+
outcome: 'blocked',
|
|
124
|
+
reason: reason ?? `the maintenance item is ${item.status}`,
|
|
125
|
+
};
|
|
126
|
+
case 'proposed':
|
|
127
|
+
return plan.mode === 'review'
|
|
128
|
+
? { ...common, outcome: 'requires_review' }
|
|
129
|
+
: { ...common, outcome: 'planned' };
|
|
130
|
+
default:
|
|
131
|
+
return {
|
|
132
|
+
...common,
|
|
133
|
+
outcome: 'blocked',
|
|
134
|
+
reason: reason ?? `the maintenance item is ${item.status}`,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=adopt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adopt.js","sourceRoot":"","sources":["../../src/ops/adopt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type AnswerOutput } from '@tenphi/akno-protocol';
|
|
2
|
+
import type { AknoContext } from '../context.ts';
|
|
3
|
+
import { type ModelClient, type ModelUsage } from '../models/client.ts';
|
|
4
|
+
export declare const ANSWER_PROMPT_VERSION = "answer-generation-v3";
|
|
5
|
+
export declare const ANSWER_VERIFIER_PROMPT_VERSION = "answer-verifier-v1";
|
|
6
|
+
export interface AnswerCapabilityCheck {
|
|
7
|
+
status: 'ok' | 'failed' | 'skipped';
|
|
8
|
+
latencyMs: number | null;
|
|
9
|
+
usage: ModelUsage | null;
|
|
10
|
+
error: string | null;
|
|
11
|
+
}
|
|
12
|
+
export interface AnswerCapabilityProbe {
|
|
13
|
+
generation: AnswerCapabilityCheck;
|
|
14
|
+
verification: AnswerCapabilityCheck;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Direct answering composes over recall; it never owns a second search path.
|
|
18
|
+
*
|
|
19
|
+
* Answer retrieval deliberately skips reranking unless the caller opts in. The answer model already has to
|
|
20
|
+
* select evidence, while a second generative ranking request is the dominant interactive latency cost. Recall
|
|
21
|
+
* keeps reranking by default because ordering and qualification are its actual output.
|
|
22
|
+
*/
|
|
23
|
+
export declare function answer(ctx: AknoContext, rawInput: unknown): Promise<AnswerOutput>;
|
|
24
|
+
/**
|
|
25
|
+
* Exercises both production answer contracts without reading the configured knowledge base.
|
|
26
|
+
* The prompt and evidence are intentionally tiny, wholly invented, and stable across runs.
|
|
27
|
+
*/
|
|
28
|
+
export declare function probeAnswerModel(model: ModelClient): Promise<AnswerCapabilityProbe>;
|
|
29
|
+
//# sourceMappingURL=answer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer.d.ts","sourceRoot":"","sources":["../../src/ops/answer.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,YAAY,EAGlB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,WAAW,EAAqB,KAAK,UAAU,EAAkB,MAAM,qBAAqB,CAAC;AAG3G,eAAO,MAAM,qBAAqB,yBAAyB,CAAC;AAC5D,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AAkCnE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,qBAAqB,CAAC;IAClC,YAAY,EAAE,qBAAqB,CAAC;CACrC;AA2BD;;;;;;GAMG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAuMvF;AA0ED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwDzF"}
|