@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,265 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { parseJsonLoose } from "../models/client.js";
|
|
3
|
+
import { contentWords } from "../kb/words.js";
|
|
4
|
+
/**
|
|
5
|
+
* **Observe: combine repeated facts into stable patterns and habits. Never restate the
|
|
6
|
+
* facts.**
|
|
7
|
+
*
|
|
8
|
+
* This tier is an inference engine writing prose into a knowledge base, and in a prose
|
|
9
|
+
* knowledge base a bad write is recalled later **as truth**. So the guardrails are
|
|
10
|
+
* enforced here in code, not asked for in the prompt:
|
|
11
|
+
*
|
|
12
|
+
* - **Evidence or nothing.** At least `min_evidence` distinct source pages, and every slug
|
|
13
|
+
* checked against the pages actually shown to the model. A model citing a page it was
|
|
14
|
+
* never given is the failure mode this exists for.
|
|
15
|
+
* - **No hedged language, ever.** "might", "seems", "possibly" — a hedge written as prose
|
|
16
|
+
* reads as an assertion three months later, when nobody remembers it was a guess.
|
|
17
|
+
* - **Never restate the facts.** A line that repeats a source line adds nothing and costs a
|
|
18
|
+
* recall slot; the point of the tier is the pattern *across* facts.
|
|
19
|
+
* - **Nothing about a person's health, relationships, finances, beliefs or character.** The
|
|
20
|
+
* canonical example of what this tier must not do. The prompt says it too, and a real run wrote
|
|
21
|
+
* "X lives with a wife" anyway — which is why it is a guard and not only an instruction.
|
|
22
|
+
* - **Nothing about the records themselves.** "Each location is described by a street address"
|
|
23
|
+
* is an observation about a knowledge base, not about a life, and it is what a model reaches
|
|
24
|
+
* for when the facts have nothing else in common.
|
|
25
|
+
* - **Missions are additive.** The mission string appends emphasis to this fixed prompt and
|
|
26
|
+
* never replaces it, because every rule above lives in the fixed part.
|
|
27
|
+
*
|
|
28
|
+
* The caller enforces the two guards that need the knowledge base rather than the text:
|
|
29
|
+
* `full` pages only, and no observation as evidence for another observation.
|
|
30
|
+
*/
|
|
31
|
+
const SYSTEM = `You look for stable patterns across facts already recorded in a personal knowledge base.
|
|
32
|
+
|
|
33
|
+
You are given facts grouped by subject, each tagged with the page it came from. Reply with JSON only:
|
|
34
|
+
|
|
35
|
+
{
|
|
36
|
+
"observations": [
|
|
37
|
+
{ "pattern": "one sentence stating a stable pattern, habit, or tendency",
|
|
38
|
+
"evidence": ["page/slug", "another/slug"],
|
|
39
|
+
"confidence": 0.0 }
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
What counts as a pattern:
|
|
44
|
+
- A habit visible across several separate records: a recurring choice, a repeated interval, a consistent preference.
|
|
45
|
+
- A tendency the facts agree on: how something is usually done, what is usually chosen, what keeps happening.
|
|
46
|
+
|
|
47
|
+
Hard rules:
|
|
48
|
+
- Every observation needs at least two DIFFERENT pages in "evidence", quoting their slugs exactly as given.
|
|
49
|
+
- Never restate a fact. If your sentence is one of the facts reworded, drop it.
|
|
50
|
+
- Never hedge. No "might", "seems", "possibly", "appears to", "probably". If you are not sure, leave it out.
|
|
51
|
+
- Never infer about someone's health, finances, beliefs, relationships or character. Patterns about
|
|
52
|
+
practices and preferences only.
|
|
53
|
+
- State the pattern, not the reasoning, and never mention "the facts" or "the pages".
|
|
54
|
+
- Fewer, better. An empty list is the correct answer for facts that share only a subject, and is much
|
|
55
|
+
better than a vague pattern nobody can act on.
|
|
56
|
+
- You may be shown patterns already recorded for this subject. Never repeat one, and never reword one.
|
|
57
|
+
Report only what those lines do not already say. If they cover it, return an empty list — that is the
|
|
58
|
+
expected answer on most nights, because the facts rarely change between one night and the next.`;
|
|
59
|
+
/**
|
|
60
|
+
* Shape only. Every rule this tier actually depends on — two distinct pages of evidence,
|
|
61
|
+
* slugs that exist, no hedging, nothing about health or finances — is enforced after the
|
|
62
|
+
* call, because those are the guards that exist precisely because a prompt could not be
|
|
63
|
+
* trusted to carry them.
|
|
64
|
+
*/
|
|
65
|
+
export const OBSERVE_SCHEMA = z.object({
|
|
66
|
+
observations: z.array(z.object({
|
|
67
|
+
pattern: z.string(),
|
|
68
|
+
evidence: z.array(z.string()),
|
|
69
|
+
confidence: z.number(),
|
|
70
|
+
})),
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* The forbidden ground, as a guard rather than an instruction. A real run produced "X lives
|
|
74
|
+
* with a wife" from two people's pages with the prompt rule in place: an inference about a
|
|
75
|
+
* relationship, written as prose, recalled later as truth.
|
|
76
|
+
*
|
|
77
|
+
* Deliberately narrow. It cannot catch every sensitive inference, and its job is not to — it is
|
|
78
|
+
* to make the *named categories* impossible to write, so a miss is a gap and never a
|
|
79
|
+
* licence.
|
|
80
|
+
*/
|
|
81
|
+
const SENSITIVE = /\b(wife|husband|spouse|partner|married|divorced|dating|girlfriend|boyfriend|sibling\w*|brother\w*|sister\w*|son|daughter|children|kids|parents?|family|pregnan\w*|ill|illness|disease|diagnos\w*|depress\w*|anxiet\w*|therapy|medication|salary|debt|broke|wealthy|poor|religio\w*|believes?|faith|prays?|votes?|political|lazy|careless|impulsive|honest|dishonest)\b/i;
|
|
82
|
+
/**
|
|
83
|
+
* A "pattern" about the shape of the records rather than about anything that happened. What a
|
|
84
|
+
* model reaches for when the facts under one heading have nothing else in common.
|
|
85
|
+
*/
|
|
86
|
+
const ABOUT_THE_RECORDS = /\b(each (entry|page|record|item|location|line)|every (entry|page|record|item)|is (described|recorded|listed|documented|stored)|these (pages|records|entries|notes)|the (pages|records|entries|dataset|data))\b/i;
|
|
87
|
+
/**
|
|
88
|
+
* "The records consistently say X" — a single fact with a preamble bolted on.
|
|
89
|
+
*
|
|
90
|
+
* Real runs produced "Employment documents consistently record the employee's date of birth as 3
|
|
91
|
+
* March 1911" and "Employment records consistently identify Vulpine Mutual B.V. as the employer".
|
|
92
|
+
* Neither is a pattern across facts; each is one fact, restated, with the agreement of the sources
|
|
93
|
+
* offered as if it were the insight. The first also copies a personal identifier onto a derived page
|
|
94
|
+
* that nobody asked for it to be on.
|
|
95
|
+
*
|
|
96
|
+
* `ABOUT_THE_RECORDS` misses these because the sentence is grammatically about the subject — it is
|
|
97
|
+
* the *documents* that do the identifying — so the shape has to be matched directly.
|
|
98
|
+
*/
|
|
99
|
+
const RECORDS_SAY = /\b(records?|documents?|entries|files?|statements?|pages?)\b[^.]{0,40}\b(consistently|always|all|repeatedly)?\s*\b(record|records|identify|identifies|show|shows|list|lists|state|states|confirm|confirms|indicate|indicates)\b/i;
|
|
100
|
+
/**
|
|
101
|
+
* A template rather than a claim. A real run produced "Italian cities are often located at Via
|
|
102
|
+
* [number] [street name] [zip code]" — a description of how an address is written, dressed as a
|
|
103
|
+
* fact about cities.
|
|
104
|
+
*/
|
|
105
|
+
const TEMPLATE = /\[[a-z ]{3,20}\]/i;
|
|
106
|
+
/** A hedge in prose is an assertion by the time anyone reads it back. */
|
|
107
|
+
const HEDGES = /\b(might|may|maybe|seems?|appears?|possibly|probably|perhaps|likely|unlikely|could be|suggests?|apparently|tends? to suggest)\b/i;
|
|
108
|
+
export async function runObserveMission(input) {
|
|
109
|
+
const empty = { observations: [], error: null, rejected: [] };
|
|
110
|
+
if (!input.model.available) {
|
|
111
|
+
return { ...empty, error: input.model.unavailableReason ?? 'the model is unavailable' };
|
|
112
|
+
}
|
|
113
|
+
const allowed = new Set(input.facts.map((fact) => fact.slug));
|
|
114
|
+
// Below the floor there is nothing to observe *across*, so the call is skipped rather than
|
|
115
|
+
// made and then rejected.
|
|
116
|
+
if (allowed.size < input.minEvidence)
|
|
117
|
+
return empty;
|
|
118
|
+
const system = input.mission ? `${SYSTEM}\n\nAdditional emphasis: ${input.mission}` : SYSTEM;
|
|
119
|
+
const listed = input.facts.map((fact) => `- [${fact.slug}] ${fact.claim}`).join('\n');
|
|
120
|
+
const known = (input.existing ?? []).slice(0, 20);
|
|
121
|
+
const alreadyRecorded = known.length > 0
|
|
122
|
+
? `\n\nAlready recorded for this subject — do not repeat or reword:\n${known.map((line) => `- ${line}`).join('\n')}`
|
|
123
|
+
: '';
|
|
124
|
+
const result = await input.model.chat([
|
|
125
|
+
{ role: 'system', content: system },
|
|
126
|
+
{ role: 'user', content: `Subject: ${input.subject}\n\nFacts:\n${listed}${alreadyRecorded}` },
|
|
127
|
+
], { schema: OBSERVE_SCHEMA, maxTokens: 700 });
|
|
128
|
+
if (!result.ok || !result.value)
|
|
129
|
+
return { ...empty, error: result.error ?? 'the observe mission failed' };
|
|
130
|
+
const parsed = parseJsonLoose(result.value);
|
|
131
|
+
if (!parsed || !Array.isArray(parsed.observations)) {
|
|
132
|
+
input.model.reportInvalidResponse();
|
|
133
|
+
return { ...empty, error: 'the observe mission did not return usable JSON' };
|
|
134
|
+
}
|
|
135
|
+
const observations = [];
|
|
136
|
+
const rejected = [];
|
|
137
|
+
for (const entry of parsed.observations.slice(0, 8)) {
|
|
138
|
+
if (typeof entry !== 'object' || entry === null)
|
|
139
|
+
continue;
|
|
140
|
+
const record = entry;
|
|
141
|
+
const pattern = typeof record.pattern === 'string' ? record.pattern.trim().replace(/\s+/g, ' ') : '';
|
|
142
|
+
if (pattern.length < 12 || pattern.length > 400)
|
|
143
|
+
continue;
|
|
144
|
+
if (HEDGES.test(pattern)) {
|
|
145
|
+
rejected.push({ pattern, reason: 'hedged language' });
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (SENSITIVE.test(pattern)) {
|
|
149
|
+
rejected.push({ pattern, reason: "inferring about a person's private life is out of bounds" });
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (ABOUT_THE_RECORDS.test(pattern)) {
|
|
153
|
+
rejected.push({ pattern, reason: 'describes the records rather than what they record' });
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (RECORDS_SAY.test(pattern)) {
|
|
157
|
+
rejected.push({ pattern, reason: 'one fact restated as "the records consistently say it"' });
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
if (TEMPLATE.test(pattern)) {
|
|
161
|
+
rejected.push({ pattern, reason: 'a template with placeholders, not a claim' });
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
// The model was asked not to repeat itself; this is what happens when it does anyway. Only
|
|
165
|
+
// catches near-identical wording — real rewrites share too few words for any threshold that
|
|
166
|
+
// would not also merge genuinely different observations, which is why the prompt does the work
|
|
167
|
+
// and this only backstops it.
|
|
168
|
+
if (known.some((line) => nearlyTheSame(line, pattern))) {
|
|
169
|
+
rejected.push({ pattern, reason: 'already recorded for this subject' });
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
// The same thing said on somebody else's page. Grouping is by folder and subject, so two
|
|
173
|
+
// groups can reach one conclusion from overlapping facts and each write it to its own page —
|
|
174
|
+
// where neither looks like a duplicate, because neither page contains the other.
|
|
175
|
+
if ((input.otherObservations ?? []).some((line) => nearlyTheSame(line, pattern))) {
|
|
176
|
+
rejected.push({ pattern, reason: 'already recorded on another observation page' });
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
// Only slugs the model was actually shown. Anything else is invention, and an invented
|
|
180
|
+
// citation is worse than no observation because it looks checkable.
|
|
181
|
+
const evidence = [
|
|
182
|
+
...new Set((Array.isArray(record.evidence) ? record.evidence : [])
|
|
183
|
+
.filter((slug) => typeof slug === 'string')
|
|
184
|
+
.map((slug) => slug.trim())
|
|
185
|
+
.filter((slug) => allowed.has(slug))),
|
|
186
|
+
];
|
|
187
|
+
if (evidence.length < input.minEvidence) {
|
|
188
|
+
rejected.push({
|
|
189
|
+
pattern,
|
|
190
|
+
reason: `cited ${evidence.length} usable source page(s), needs ${input.minEvidence}`,
|
|
191
|
+
});
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
if (restatesAFact(pattern, input.facts.map((fact) => fact.claim).concat(input.knownFacts ?? []))) {
|
|
195
|
+
rejected.push({ pattern, reason: 'restates a fact rather than observing across them' });
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
const confidence = typeof record.confidence === 'number' ? clamp(record.confidence) : 0.6;
|
|
199
|
+
observations.push({ pattern, evidence, confidence });
|
|
200
|
+
}
|
|
201
|
+
// One per subject per run, the best the model was willing to stand behind.
|
|
202
|
+
//
|
|
203
|
+
// Not a token saving: given a subject with nothing much in common, a model produces three
|
|
204
|
+
// variations on the same weak idea — a real run wrote three separate "Italian cities are
|
|
205
|
+
// often located…" lines for one folder. Keeping the strongest makes a thin subject cost one
|
|
206
|
+
// line instead of three, and the advice for this tier is fewer and better.
|
|
207
|
+
observations.sort((a, b) => b.confidence - a.confidence);
|
|
208
|
+
return { observations: observations.slice(0, 1), error: null, rejected };
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* **Never restate the facts.** Judged by word overlap against each source claim rather
|
|
212
|
+
* than by asking the model, because "did you just reword one of these" is exactly the
|
|
213
|
+
* question a model that rewrote one will answer wrongly.
|
|
214
|
+
*/
|
|
215
|
+
function restatesAFact(pattern, claims) {
|
|
216
|
+
const patternWords = contentWords(pattern);
|
|
217
|
+
if (patternWords.size === 0)
|
|
218
|
+
return true;
|
|
219
|
+
for (const claim of claims) {
|
|
220
|
+
const factWords = contentWords(claim);
|
|
221
|
+
if (factWords.size === 0)
|
|
222
|
+
continue;
|
|
223
|
+
let shared = 0;
|
|
224
|
+
for (const word of patternWords)
|
|
225
|
+
if (factWords.has(word))
|
|
226
|
+
shared++;
|
|
227
|
+
// Four fifths of one claim's content words, in a sentence that is meant to say something
|
|
228
|
+
// no single claim does.
|
|
229
|
+
if (shared / patternWords.size >= 0.8)
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
function clamp(value) {
|
|
235
|
+
if (!Number.isFinite(value))
|
|
236
|
+
return 0.6;
|
|
237
|
+
return Math.min(1, Math.max(0, value));
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Two patterns that differ only in wording.
|
|
241
|
+
*
|
|
242
|
+
* Content words only, compared as a set — "Total spending declined in each successive period" and
|
|
243
|
+
* "…in each recorded period" differ by one word out of nine and are plainly the same observation.
|
|
244
|
+
* The bar is high on purpose: on a page scoped to one subject, every line is about that subject, so
|
|
245
|
+
* a loose threshold would merge two real patterns about it. Anything a genuine rewrite gets past is
|
|
246
|
+
* the prompt's job, not this one's.
|
|
247
|
+
*/
|
|
248
|
+
function nearlyTheSame(a, b) {
|
|
249
|
+
const words = (text) => new Set(text
|
|
250
|
+
.toLowerCase()
|
|
251
|
+
.replace(/\[\[[^\]]*\]\]/g, ' ')
|
|
252
|
+
.replace(/[^a-z0-9\s]/g, ' ')
|
|
253
|
+
.split(/\s+/)
|
|
254
|
+
.filter((word) => word.length > 3));
|
|
255
|
+
const left = words(a);
|
|
256
|
+
const right = words(b);
|
|
257
|
+
if (left.size === 0 || right.size === 0)
|
|
258
|
+
return false;
|
|
259
|
+
let shared = 0;
|
|
260
|
+
for (const word of right)
|
|
261
|
+
if (left.has(word))
|
|
262
|
+
shared += 1;
|
|
263
|
+
return shared / new Set([...left, ...right]).size >= 0.75;
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=observe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/maintenance/observe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { type DreamManagement, type PageRole, type RememberManagement } from '@tenphi/akno-protocol';
|
|
2
|
+
import type { AknoConfig, MaintenanceLimits, MaintenancePolicy, MaintenanceProfile, MaintenanceTransform } from '../config/schema.ts';
|
|
3
|
+
import type { AknoContext } from '../context.ts';
|
|
4
|
+
import type { MaintenanceMode } from './plans.ts';
|
|
5
|
+
declare const PAGE_MAINTENANCE_TRANSFORMS: readonly ["hygiene", "managed_item", "synthesis", "split", "extract", "merge", "contradiction", "broken_link", "rule_drift"];
|
|
6
|
+
export type PageMaintenanceTransform = (typeof PAGE_MAINTENANCE_TRANSFORMS)[number];
|
|
7
|
+
export type MaintenancePathState = 'indexed_page' | 'not_indexed' | 'non_page' | 'ignored';
|
|
8
|
+
type MaintenancePolicySource = 'frontmatter' | 'folder_rule' | 'provenance' | 'default';
|
|
9
|
+
export type MaintenancePathOutcome = 'ineligible' | 'off' | 'audit_only' | 'awaiting_human' | 'curator_then_apply' | 'apply_blocked';
|
|
10
|
+
export interface MaintenancePathReason {
|
|
11
|
+
layer: 'path' | 'page' | 'configuration' | 'policy' | 'budget' | 'model';
|
|
12
|
+
code: string;
|
|
13
|
+
message: string;
|
|
14
|
+
}
|
|
15
|
+
export interface MaintenancePathTransformPolicy {
|
|
16
|
+
kind: PageMaintenanceTransform;
|
|
17
|
+
configuredPolicy: MaintenancePolicy;
|
|
18
|
+
effectivePolicy: MaintenancePolicy;
|
|
19
|
+
outcome: MaintenancePathOutcome;
|
|
20
|
+
canInspect: boolean;
|
|
21
|
+
decision: 'none' | 'human' | 'curator';
|
|
22
|
+
automaticApplyPossible: boolean;
|
|
23
|
+
blockers: MaintenancePathReason[];
|
|
24
|
+
applyBlockers: MaintenancePathReason[];
|
|
25
|
+
}
|
|
26
|
+
export interface MaintenancePathPolicy {
|
|
27
|
+
slug: string;
|
|
28
|
+
state: MaintenancePathState;
|
|
29
|
+
exists: boolean;
|
|
30
|
+
profile: MaintenanceProfile;
|
|
31
|
+
runMode: MaintenanceMode;
|
|
32
|
+
maintenanceModel: {
|
|
33
|
+
id: string | null;
|
|
34
|
+
configured: boolean;
|
|
35
|
+
};
|
|
36
|
+
page: {
|
|
37
|
+
role: PageRole;
|
|
38
|
+
roleSource: MaintenancePolicySource;
|
|
39
|
+
remember: RememberManagement;
|
|
40
|
+
rememberSource: MaintenancePolicySource;
|
|
41
|
+
dream: DreamManagement;
|
|
42
|
+
dreamSource: 'frontmatter' | 'default';
|
|
43
|
+
bytes: number | null;
|
|
44
|
+
reserved: boolean;
|
|
45
|
+
};
|
|
46
|
+
rules: {
|
|
47
|
+
effective: Record<string, unknown>;
|
|
48
|
+
candidates: {
|
|
49
|
+
glob: string;
|
|
50
|
+
source: string;
|
|
51
|
+
}[];
|
|
52
|
+
};
|
|
53
|
+
transformations: MaintenancePathTransformPolicy[];
|
|
54
|
+
pathIndependent: {
|
|
55
|
+
kind: Extract<MaintenanceTransform, 'observe' | 'reflect' | 'adopt'>;
|
|
56
|
+
policy: MaintenancePolicy;
|
|
57
|
+
enabled: boolean;
|
|
58
|
+
reason: string;
|
|
59
|
+
}[];
|
|
60
|
+
limits: MaintenanceLimits;
|
|
61
|
+
remainingChecks: string[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Explain the default scheduled authority for one page path without inspecting page content.
|
|
65
|
+
* The answer describes permission and eligibility, not whether tonight will discover a candidate.
|
|
66
|
+
*/
|
|
67
|
+
export declare function explainMaintenancePath(ctx: AknoContext, rawPath: string, requestedMode?: MaintenanceMode): MaintenancePathPolicy;
|
|
68
|
+
/** The page-owned structural boundary used by both planners and the explanation above. */
|
|
69
|
+
export declare function pageAllowsMaintenanceTransform(config: AknoConfig, page: {
|
|
70
|
+
slug: string;
|
|
71
|
+
role: string;
|
|
72
|
+
dreamManagement: string;
|
|
73
|
+
rememberManagement?: string;
|
|
74
|
+
}, kind: PageMaintenanceTransform): boolean;
|
|
75
|
+
/** Exact folder allowlist semantics shared with merge candidate discovery. */
|
|
76
|
+
export declare function mergePathAllowed(slug: string, folders: string[]): boolean;
|
|
77
|
+
export declare function pageDeclarations(frontmatter: string): {
|
|
78
|
+
role?: PageRole;
|
|
79
|
+
remember?: RememberManagement;
|
|
80
|
+
dream?: DreamManagement;
|
|
81
|
+
};
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=path-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-policy.d.ts","sourceRoot":"","sources":["../../src/maintenance/path-policy.ts"],"names":[],"mappings":"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"}
|