@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.
Files changed (485) hide show
  1. package/LICENSE +83 -0
  2. package/README.md +26 -0
  3. package/config/default.jsonc +548 -0
  4. package/dist/bench/answer-corpus.d.ts +48 -0
  5. package/dist/bench/answer-corpus.d.ts.map +1 -0
  6. package/dist/bench/answer-corpus.js +491 -0
  7. package/dist/bench/answer-corpus.js.map +1 -0
  8. package/dist/bench/answer.d.ts +156 -0
  9. package/dist/bench/answer.d.ts.map +1 -0
  10. package/dist/bench/answer.js +608 -0
  11. package/dist/bench/answer.js.map +1 -0
  12. package/dist/bench/auto-recall-answer-corpus.d.ts +21 -0
  13. package/dist/bench/auto-recall-answer-corpus.d.ts.map +1 -0
  14. package/dist/bench/auto-recall-answer-corpus.js +245 -0
  15. package/dist/bench/auto-recall-answer-corpus.js.map +1 -0
  16. package/dist/bench/auto-recall-answer.d.ts +198 -0
  17. package/dist/bench/auto-recall-answer.d.ts.map +1 -0
  18. package/dist/bench/auto-recall-answer.js +720 -0
  19. package/dist/bench/auto-recall-answer.js.map +1 -0
  20. package/dist/bench/auto-recall-corpus.d.ts +45 -0
  21. package/dist/bench/auto-recall-corpus.d.ts.map +1 -0
  22. package/dist/bench/auto-recall-corpus.js +221 -0
  23. package/dist/bench/auto-recall-corpus.js.map +1 -0
  24. package/dist/bench/auto-recall.d.ts +171 -0
  25. package/dist/bench/auto-recall.d.ts.map +1 -0
  26. package/dist/bench/auto-recall.js +651 -0
  27. package/dist/bench/auto-recall.js.map +1 -0
  28. package/dist/bench/entity-resolution.d.ts +37 -0
  29. package/dist/bench/entity-resolution.d.ts.map +1 -0
  30. package/dist/bench/entity-resolution.js +121 -0
  31. package/dist/bench/entity-resolution.js.map +1 -0
  32. package/dist/bench/graph.d.ts +57 -0
  33. package/dist/bench/graph.d.ts.map +1 -0
  34. package/dist/bench/graph.js +573 -0
  35. package/dist/bench/graph.js.map +1 -0
  36. package/dist/bench/llm-ranking-probe.d.ts +27 -0
  37. package/dist/bench/llm-ranking-probe.d.ts.map +1 -0
  38. package/dist/bench/llm-ranking-probe.js +105 -0
  39. package/dist/bench/llm-ranking-probe.js.map +1 -0
  40. package/dist/bench/merge-discovery-corpus.d.ts +26 -0
  41. package/dist/bench/merge-discovery-corpus.d.ts.map +1 -0
  42. package/dist/bench/merge-discovery-corpus.js +114 -0
  43. package/dist/bench/merge-discovery-corpus.js.map +1 -0
  44. package/dist/bench/merge-discovery-review.d.ts +81 -0
  45. package/dist/bench/merge-discovery-review.d.ts.map +1 -0
  46. package/dist/bench/merge-discovery-review.js +149 -0
  47. package/dist/bench/merge-discovery-review.js.map +1 -0
  48. package/dist/bench/merge-discovery.d.ts +122 -0
  49. package/dist/bench/merge-discovery.d.ts.map +1 -0
  50. package/dist/bench/merge-discovery.js +390 -0
  51. package/dist/bench/merge-discovery.js.map +1 -0
  52. package/dist/bench/mixed-retrieval.d.ts +35 -0
  53. package/dist/bench/mixed-retrieval.d.ts.map +1 -0
  54. package/dist/bench/mixed-retrieval.js +355 -0
  55. package/dist/bench/mixed-retrieval.js.map +1 -0
  56. package/dist/bench/ranking-corpus.d.ts +29 -0
  57. package/dist/bench/ranking-corpus.d.ts.map +1 -0
  58. package/dist/bench/ranking-corpus.js +514 -0
  59. package/dist/bench/ranking-corpus.js.map +1 -0
  60. package/dist/bench/ranking-end-to-end.d.ts +112 -0
  61. package/dist/bench/ranking-end-to-end.d.ts.map +1 -0
  62. package/dist/bench/ranking-end-to-end.js +479 -0
  63. package/dist/bench/ranking-end-to-end.js.map +1 -0
  64. package/dist/bench/ranking-latency.d.ts +71 -0
  65. package/dist/bench/ranking-latency.d.ts.map +1 -0
  66. package/dist/bench/ranking-latency.js +130 -0
  67. package/dist/bench/ranking-latency.js.map +1 -0
  68. package/dist/bench/ranking-matrix.d.ts +141 -0
  69. package/dist/bench/ranking-matrix.d.ts.map +1 -0
  70. package/dist/bench/ranking-matrix.js +526 -0
  71. package/dist/bench/ranking-matrix.js.map +1 -0
  72. package/dist/bench/ranking-review.d.ts +93 -0
  73. package/dist/bench/ranking-review.d.ts.map +1 -0
  74. package/dist/bench/ranking-review.js +249 -0
  75. package/dist/bench/ranking-review.js.map +1 -0
  76. package/dist/bench/ranking.d.ts +122 -0
  77. package/dist/bench/ranking.d.ts.map +1 -0
  78. package/dist/bench/ranking.js +547 -0
  79. package/dist/bench/ranking.js.map +1 -0
  80. package/dist/bench.d.ts +60 -0
  81. package/dist/bench.d.ts.map +1 -0
  82. package/dist/bench.js +167 -0
  83. package/dist/bench.js.map +1 -0
  84. package/dist/config/jsonc.d.ts +8 -0
  85. package/dist/config/jsonc.d.ts.map +1 -0
  86. package/dist/config/jsonc.js +85 -0
  87. package/dist/config/jsonc.js.map +1 -0
  88. package/dist/config/load.d.ts +43 -0
  89. package/dist/config/load.d.ts.map +1 -0
  90. package/dist/config/load.js +608 -0
  91. package/dist/config/load.js.map +1 -0
  92. package/dist/config/paths.d.ts +10 -0
  93. package/dist/config/paths.d.ts.map +1 -0
  94. package/dist/config/paths.js +38 -0
  95. package/dist/config/paths.js.map +1 -0
  96. package/dist/config/schema.d.ts +698 -0
  97. package/dist/config/schema.d.ts.map +1 -0
  98. package/dist/config/schema.js +394 -0
  99. package/dist/config/schema.js.map +1 -0
  100. package/dist/config/write-rules.d.ts +41 -0
  101. package/dist/config/write-rules.d.ts.map +1 -0
  102. package/dist/config/write-rules.js +225 -0
  103. package/dist/config/write-rules.js.map +1 -0
  104. package/dist/config/write-setup.d.ts +42 -0
  105. package/dist/config/write-setup.d.ts.map +1 -0
  106. package/dist/config/write-setup.js +358 -0
  107. package/dist/config/write-setup.js.map +1 -0
  108. package/dist/context.d.ts +64 -0
  109. package/dist/context.d.ts.map +1 -0
  110. package/dist/context.js +14 -0
  111. package/dist/context.js.map +1 -0
  112. package/dist/doctor.d.ts +115 -0
  113. package/dist/doctor.d.ts.map +1 -0
  114. package/dist/doctor.js +388 -0
  115. package/dist/doctor.js.map +1 -0
  116. package/dist/index/chunk.d.ts +62 -0
  117. package/dist/index/chunk.d.ts.map +1 -0
  118. package/dist/index/chunk.js +307 -0
  119. package/dist/index/chunk.js.map +1 -0
  120. package/dist/index/defer.d.ts +32 -0
  121. package/dist/index/defer.d.ts.map +1 -0
  122. package/dist/index/defer.js +66 -0
  123. package/dist/index/defer.js.map +1 -0
  124. package/dist/index/derive.d.ts +99 -0
  125. package/dist/index/derive.d.ts.map +1 -0
  126. package/dist/index/derive.js +378 -0
  127. package/dist/index/derive.js.map +1 -0
  128. package/dist/index/entity-resolution.d.ts +68 -0
  129. package/dist/index/entity-resolution.d.ts.map +1 -0
  130. package/dist/index/entity-resolution.js +305 -0
  131. package/dist/index/entity-resolution.js.map +1 -0
  132. package/dist/index/graph.d.ts +46 -0
  133. package/dist/index/graph.d.ts.map +1 -0
  134. package/dist/index/graph.js +618 -0
  135. package/dist/index/graph.js.map +1 -0
  136. package/dist/index/indexer.d.ts +301 -0
  137. package/dist/index/indexer.d.ts.map +1 -0
  138. package/dist/index/indexer.js +1398 -0
  139. package/dist/index/indexer.js.map +1 -0
  140. package/dist/index/revision-barrier.d.ts +30 -0
  141. package/dist/index/revision-barrier.d.ts.map +1 -0
  142. package/dist/index/revision-barrier.js +140 -0
  143. package/dist/index/revision-barrier.js.map +1 -0
  144. package/dist/index.d.ts +55 -0
  145. package/dist/index.d.ts.map +1 -0
  146. package/dist/index.js +37 -0
  147. package/dist/index.js.map +1 -0
  148. package/dist/ingest/adoption-eligibility.d.ts +4 -0
  149. package/dist/ingest/adoption-eligibility.d.ts.map +1 -0
  150. package/dist/ingest/adoption-eligibility.js +18 -0
  151. package/dist/ingest/adoption-eligibility.js.map +1 -0
  152. package/dist/ingest/availability.d.ts +15 -0
  153. package/dist/ingest/availability.d.ts.map +1 -0
  154. package/dist/ingest/availability.js +37 -0
  155. package/dist/ingest/availability.js.map +1 -0
  156. package/dist/ingest/extract.d.ts +58 -0
  157. package/dist/ingest/extract.d.ts.map +1 -0
  158. package/dist/ingest/extract.js +255 -0
  159. package/dist/ingest/extract.js.map +1 -0
  160. package/dist/ingest/fetch.d.ts +35 -0
  161. package/dist/ingest/fetch.d.ts.map +1 -0
  162. package/dist/ingest/fetch.js +142 -0
  163. package/dist/ingest/fetch.js.map +1 -0
  164. package/dist/ingest/inbox.d.ts +53 -0
  165. package/dist/ingest/inbox.d.ts.map +1 -0
  166. package/dist/ingest/inbox.js +110 -0
  167. package/dist/ingest/inbox.js.map +1 -0
  168. package/dist/ingest/name.d.ts +72 -0
  169. package/dist/ingest/name.d.ts.map +1 -0
  170. package/dist/ingest/name.js +208 -0
  171. package/dist/ingest/name.js.map +1 -0
  172. package/dist/ingest/parts.d.ts +78 -0
  173. package/dist/ingest/parts.d.ts.map +1 -0
  174. package/dist/ingest/parts.js +52 -0
  175. package/dist/ingest/parts.js.map +1 -0
  176. package/dist/ingest/rendition.d.ts +75 -0
  177. package/dist/ingest/rendition.d.ts.map +1 -0
  178. package/dist/ingest/rendition.js +92 -0
  179. package/dist/ingest/rendition.js.map +1 -0
  180. package/dist/ingest/store.d.ts +66 -0
  181. package/dist/ingest/store.d.ts.map +1 -0
  182. package/dist/ingest/store.js +92 -0
  183. package/dist/ingest/store.js.map +1 -0
  184. package/dist/kb/folders.d.ts +37 -0
  185. package/dist/kb/folders.d.ts.map +1 -0
  186. package/dist/kb/folders.js +133 -0
  187. package/dist/kb/folders.js.map +1 -0
  188. package/dist/kb/frontmatter.d.ts +91 -0
  189. package/dist/kb/frontmatter.d.ts.map +1 -0
  190. package/dist/kb/frontmatter.js +274 -0
  191. package/dist/kb/frontmatter.js.map +1 -0
  192. package/dist/kb/line-facts.d.ts +29 -0
  193. package/dist/kb/line-facts.d.ts.map +1 -0
  194. package/dist/kb/line-facts.js +23 -0
  195. package/dist/kb/line-facts.js.map +1 -0
  196. package/dist/kb/page.d.ts +92 -0
  197. package/dist/kb/page.d.ts.map +1 -0
  198. package/dist/kb/page.js +243 -0
  199. package/dist/kb/page.js.map +1 -0
  200. package/dist/kb/scan.d.ts +38 -0
  201. package/dist/kb/scan.d.ts.map +1 -0
  202. package/dist/kb/scan.js +109 -0
  203. package/dist/kb/scan.js.map +1 -0
  204. package/dist/kb/words.d.ts +30 -0
  205. package/dist/kb/words.d.ts.map +1 -0
  206. package/dist/kb/words.js +107 -0
  207. package/dist/kb/words.js.map +1 -0
  208. package/dist/maintenance/adopt.d.ts +65 -0
  209. package/dist/maintenance/adopt.d.ts.map +1 -0
  210. package/dist/maintenance/adopt.js +238 -0
  211. package/dist/maintenance/adopt.js.map +1 -0
  212. package/dist/maintenance/budget.d.ts +55 -0
  213. package/dist/maintenance/budget.d.ts.map +1 -0
  214. package/dist/maintenance/budget.js +61 -0
  215. package/dist/maintenance/budget.js.map +1 -0
  216. package/dist/maintenance/conflicts.d.ts +105 -0
  217. package/dist/maintenance/conflicts.d.ts.map +1 -0
  218. package/dist/maintenance/conflicts.js +368 -0
  219. package/dist/maintenance/conflicts.js.map +1 -0
  220. package/dist/maintenance/contradictions.d.ts +34 -0
  221. package/dist/maintenance/contradictions.d.ts.map +1 -0
  222. package/dist/maintenance/contradictions.js +199 -0
  223. package/dist/maintenance/contradictions.js.map +1 -0
  224. package/dist/maintenance/curate.d.ts +156 -0
  225. package/dist/maintenance/curate.d.ts.map +1 -0
  226. package/dist/maintenance/curate.js +2070 -0
  227. package/dist/maintenance/curate.js.map +1 -0
  228. package/dist/maintenance/dream.d.ts +139 -0
  229. package/dist/maintenance/dream.d.ts.map +1 -0
  230. package/dist/maintenance/dream.js +1632 -0
  231. package/dist/maintenance/dream.js.map +1 -0
  232. package/dist/maintenance/graph-candidates.d.ts +19 -0
  233. package/dist/maintenance/graph-candidates.d.ts.map +1 -0
  234. package/dist/maintenance/graph-candidates.js +120 -0
  235. package/dist/maintenance/graph-candidates.js.map +1 -0
  236. package/dist/maintenance/housekeeping.d.ts +81 -0
  237. package/dist/maintenance/housekeeping.d.ts.map +1 -0
  238. package/dist/maintenance/housekeeping.js +281 -0
  239. package/dist/maintenance/housekeeping.js.map +1 -0
  240. package/dist/maintenance/link-repairs.d.ts +58 -0
  241. package/dist/maintenance/link-repairs.d.ts.map +1 -0
  242. package/dist/maintenance/link-repairs.js +281 -0
  243. package/dist/maintenance/link-repairs.js.map +1 -0
  244. package/dist/maintenance/log.d.ts +41 -0
  245. package/dist/maintenance/log.d.ts.map +1 -0
  246. package/dist/maintenance/log.js +72 -0
  247. package/dist/maintenance/log.js.map +1 -0
  248. package/dist/maintenance/managed-item-routing.d.ts +48 -0
  249. package/dist/maintenance/managed-item-routing.d.ts.map +1 -0
  250. package/dist/maintenance/managed-item-routing.js +281 -0
  251. package/dist/maintenance/managed-item-routing.js.map +1 -0
  252. package/dist/maintenance/managed-item-sources.d.ts +38 -0
  253. package/dist/maintenance/managed-item-sources.d.ts.map +1 -0
  254. package/dist/maintenance/managed-item-sources.js +324 -0
  255. package/dist/maintenance/managed-item-sources.js.map +1 -0
  256. package/dist/maintenance/managed-items.d.ts +162 -0
  257. package/dist/maintenance/managed-items.d.ts.map +1 -0
  258. package/dist/maintenance/managed-items.js +1329 -0
  259. package/dist/maintenance/managed-items.js.map +1 -0
  260. package/dist/maintenance/merge-classifier.d.ts +19 -0
  261. package/dist/maintenance/merge-classifier.d.ts.map +1 -0
  262. package/dist/maintenance/merge-classifier.js +49 -0
  263. package/dist/maintenance/merge-classifier.js.map +1 -0
  264. package/dist/maintenance/model-telemetry.d.ts +45 -0
  265. package/dist/maintenance/model-telemetry.d.ts.map +1 -0
  266. package/dist/maintenance/model-telemetry.js +107 -0
  267. package/dist/maintenance/model-telemetry.js.map +1 -0
  268. package/dist/maintenance/observe.d.ts +72 -0
  269. package/dist/maintenance/observe.d.ts.map +1 -0
  270. package/dist/maintenance/observe.js +265 -0
  271. package/dist/maintenance/observe.js.map +1 -0
  272. package/dist/maintenance/path-policy.d.ts +83 -0
  273. package/dist/maintenance/path-policy.d.ts.map +1 -0
  274. package/dist/maintenance/path-policy.js +360 -0
  275. package/dist/maintenance/path-policy.js.map +1 -0
  276. package/dist/maintenance/plans.d.ts +366 -0
  277. package/dist/maintenance/plans.d.ts.map +1 -0
  278. package/dist/maintenance/plans.js +4060 -0
  279. package/dist/maintenance/plans.js.map +1 -0
  280. package/dist/maintenance/profile.d.ts +33 -0
  281. package/dist/maintenance/profile.d.ts.map +1 -0
  282. package/dist/maintenance/profile.js +99 -0
  283. package/dist/maintenance/profile.js.map +1 -0
  284. package/dist/maintenance/recovery.d.ts +38 -0
  285. package/dist/maintenance/recovery.d.ts.map +1 -0
  286. package/dist/maintenance/recovery.js +217 -0
  287. package/dist/maintenance/recovery.js.map +1 -0
  288. package/dist/maintenance/repair.d.ts +37 -0
  289. package/dist/maintenance/repair.d.ts.map +1 -0
  290. package/dist/maintenance/repair.js +183 -0
  291. package/dist/maintenance/repair.js.map +1 -0
  292. package/dist/maintenance/rule-drift.d.ts +104 -0
  293. package/dist/maintenance/rule-drift.d.ts.map +1 -0
  294. package/dist/maintenance/rule-drift.js +507 -0
  295. package/dist/maintenance/rule-drift.js.map +1 -0
  296. package/dist/maintenance/run-verification.d.ts +44 -0
  297. package/dist/maintenance/run-verification.d.ts.map +1 -0
  298. package/dist/maintenance/run-verification.js +253 -0
  299. package/dist/maintenance/run-verification.js.map +1 -0
  300. package/dist/maintenance/runs.d.ts +142 -0
  301. package/dist/maintenance/runs.d.ts.map +1 -0
  302. package/dist/maintenance/runs.js +439 -0
  303. package/dist/maintenance/runs.js.map +1 -0
  304. package/dist/maintenance/semantic-merge-discovery.d.ts +54 -0
  305. package/dist/maintenance/semantic-merge-discovery.d.ts.map +1 -0
  306. package/dist/maintenance/semantic-merge-discovery.js +308 -0
  307. package/dist/maintenance/semantic-merge-discovery.js.map +1 -0
  308. package/dist/maintenance/temporal.d.ts +44 -0
  309. package/dist/maintenance/temporal.d.ts.map +1 -0
  310. package/dist/maintenance/temporal.js +295 -0
  311. package/dist/maintenance/temporal.js.map +1 -0
  312. package/dist/models/client.d.ts +214 -0
  313. package/dist/models/client.d.ts.map +1 -0
  314. package/dist/models/client.js +904 -0
  315. package/dist/models/client.js.map +1 -0
  316. package/dist/models/provider-api.d.ts +28 -0
  317. package/dist/models/provider-api.d.ts.map +1 -0
  318. package/dist/models/provider-api.js +320 -0
  319. package/dist/models/provider-api.js.map +1 -0
  320. package/dist/open.d.ts +163 -0
  321. package/dist/open.d.ts.map +1 -0
  322. package/dist/open.js +382 -0
  323. package/dist/open.js.map +1 -0
  324. package/dist/ops/adopt.d.ts +12 -0
  325. package/dist/ops/adopt.d.ts.map +1 -0
  326. package/dist/ops/adopt.js +138 -0
  327. package/dist/ops/adopt.js.map +1 -0
  328. package/dist/ops/answer.d.ts +29 -0
  329. package/dist/ops/answer.d.ts.map +1 -0
  330. package/dist/ops/answer.js +557 -0
  331. package/dist/ops/answer.js.map +1 -0
  332. package/dist/ops/context.d.ts +18 -0
  333. package/dist/ops/context.d.ts.map +1 -0
  334. package/dist/ops/context.js +713 -0
  335. package/dist/ops/context.js.map +1 -0
  336. package/dist/ops/folder.d.ts +23 -0
  337. package/dist/ops/folder.d.ts.map +1 -0
  338. package/dist/ops/folder.js +130 -0
  339. package/dist/ops/folder.js.map +1 -0
  340. package/dist/ops/forget.d.ts +14 -0
  341. package/dist/ops/forget.d.ts.map +1 -0
  342. package/dist/ops/forget.js +212 -0
  343. package/dist/ops/forget.js.map +1 -0
  344. package/dist/ops/graph.d.ts +10 -0
  345. package/dist/ops/graph.d.ts.map +1 -0
  346. package/dist/ops/graph.js +480 -0
  347. package/dist/ops/graph.js.map +1 -0
  348. package/dist/ops/ingest.d.ts +40 -0
  349. package/dist/ops/ingest.d.ts.map +1 -0
  350. package/dist/ops/ingest.js +434 -0
  351. package/dist/ops/ingest.js.map +1 -0
  352. package/dist/ops/list.d.ts +9 -0
  353. package/dist/ops/list.d.ts.map +1 -0
  354. package/dist/ops/list.js +217 -0
  355. package/dist/ops/list.js.map +1 -0
  356. package/dist/ops/move.d.ts +20 -0
  357. package/dist/ops/move.d.ts.map +1 -0
  358. package/dist/ops/move.js +173 -0
  359. package/dist/ops/move.js.map +1 -0
  360. package/dist/ops/read.d.ts +9 -0
  361. package/dist/ops/read.d.ts.map +1 -0
  362. package/dist/ops/read.js +271 -0
  363. package/dist/ops/read.js.map +1 -0
  364. package/dist/ops/recall.d.ts +13 -0
  365. package/dist/ops/recall.d.ts.map +1 -0
  366. package/dist/ops/recall.js +297 -0
  367. package/dist/ops/recall.js.map +1 -0
  368. package/dist/ops/remember.d.ts +34 -0
  369. package/dist/ops/remember.d.ts.map +1 -0
  370. package/dist/ops/remember.js +660 -0
  371. package/dist/ops/remember.js.map +1 -0
  372. package/dist/ops/timeline.d.ts +11 -0
  373. package/dist/ops/timeline.d.ts.map +1 -0
  374. package/dist/ops/timeline.js +111 -0
  375. package/dist/ops/timeline.js.map +1 -0
  376. package/dist/ops/undo.d.ts +9 -0
  377. package/dist/ops/undo.d.ts.map +1 -0
  378. package/dist/ops/undo.js +38 -0
  379. package/dist/ops/undo.js.map +1 -0
  380. package/dist/ops/write.d.ts +55 -0
  381. package/dist/ops/write.d.ts.map +1 -0
  382. package/dist/ops/write.js +463 -0
  383. package/dist/ops/write.js.map +1 -0
  384. package/dist/recall/assemble.d.ts +81 -0
  385. package/dist/recall/assemble.d.ts.map +1 -0
  386. package/dist/recall/assemble.js +603 -0
  387. package/dist/recall/assemble.js.map +1 -0
  388. package/dist/recall/expand.d.ts +55 -0
  389. package/dist/recall/expand.d.ts.map +1 -0
  390. package/dist/recall/expand.js +282 -0
  391. package/dist/recall/expand.js.map +1 -0
  392. package/dist/recall/graph-arm.d.ts +17 -0
  393. package/dist/recall/graph-arm.d.ts.map +1 -0
  394. package/dist/recall/graph-arm.js +227 -0
  395. package/dist/recall/graph-arm.js.map +1 -0
  396. package/dist/recall/llm-rerank.d.ts +55 -0
  397. package/dist/recall/llm-rerank.d.ts.map +1 -0
  398. package/dist/recall/llm-rerank.js +213 -0
  399. package/dist/recall/llm-rerank.js.map +1 -0
  400. package/dist/recall/reranker-calibration.d.ts +23 -0
  401. package/dist/recall/reranker-calibration.d.ts.map +1 -0
  402. package/dist/recall/reranker-calibration.js +161 -0
  403. package/dist/recall/reranker-calibration.js.map +1 -0
  404. package/dist/recall/search.d.ts +107 -0
  405. package/dist/recall/search.d.ts.map +1 -0
  406. package/dist/recall/search.js +530 -0
  407. package/dist/recall/search.js.map +1 -0
  408. package/dist/reserved.d.ts +39 -0
  409. package/dist/reserved.d.ts.map +1 -0
  410. package/dist/reserved.js +63 -0
  411. package/dist/reserved.js.map +1 -0
  412. package/dist/rules/compile.d.ts +27 -0
  413. package/dist/rules/compile.d.ts.map +1 -0
  414. package/dist/rules/compile.js +105 -0
  415. package/dist/rules/compile.js.map +1 -0
  416. package/dist/setup/model-free.d.ts +15 -0
  417. package/dist/setup/model-free.d.ts.map +1 -0
  418. package/dist/setup/model-free.js +26 -0
  419. package/dist/setup/model-free.js.map +1 -0
  420. package/dist/setup/openai.d.ts +46 -0
  421. package/dist/setup/openai.d.ts.map +1 -0
  422. package/dist/setup/openai.js +165 -0
  423. package/dist/setup/openai.js.map +1 -0
  424. package/dist/store/db.d.ts +61 -0
  425. package/dist/store/db.d.ts.map +1 -0
  426. package/dist/store/db.js +265 -0
  427. package/dist/store/db.js.map +1 -0
  428. package/dist/store/ids.d.ts +29 -0
  429. package/dist/store/ids.d.ts.map +1 -0
  430. package/dist/store/ids.js +0 -0
  431. package/dist/store/ids.js.map +1 -0
  432. package/dist/store/migrations.d.ts +54 -0
  433. package/dist/store/migrations.d.ts.map +1 -0
  434. package/dist/store/migrations.js +923 -0
  435. package/dist/store/migrations.js.map +1 -0
  436. package/dist/store/vectors.d.ts +34 -0
  437. package/dist/store/vectors.d.ts.map +1 -0
  438. package/dist/store/vectors.js +158 -0
  439. package/dist/store/vectors.js.map +1 -0
  440. package/dist/timeline/documents.d.ts +23 -0
  441. package/dist/timeline/documents.d.ts.map +1 -0
  442. package/dist/timeline/documents.js +262 -0
  443. package/dist/timeline/documents.js.map +1 -0
  444. package/dist/watch/watcher.d.ts +43 -0
  445. package/dist/watch/watcher.d.ts.map +1 -0
  446. package/dist/watch/watcher.js +143 -0
  447. package/dist/watch/watcher.js.map +1 -0
  448. package/dist/write/atomic.d.ts +34 -0
  449. package/dist/write/atomic.d.ts.map +1 -0
  450. package/dist/write/atomic.js +58 -0
  451. package/dist/write/atomic.js.map +1 -0
  452. package/dist/write/conflict.d.ts +43 -0
  453. package/dist/write/conflict.d.ts.map +1 -0
  454. package/dist/write/conflict.js +149 -0
  455. package/dist/write/conflict.js.map +1 -0
  456. package/dist/write/edit.d.ts +59 -0
  457. package/dist/write/edit.d.ts.map +1 -0
  458. package/dist/write/edit.js +231 -0
  459. package/dist/write/edit.js.map +1 -0
  460. package/dist/write/gate.d.ts +59 -0
  461. package/dist/write/gate.d.ts.map +1 -0
  462. package/dist/write/gate.js +99 -0
  463. package/dist/write/gate.js.map +1 -0
  464. package/dist/write/journal.d.ts +90 -0
  465. package/dist/write/journal.d.ts.map +1 -0
  466. package/dist/write/journal.js +187 -0
  467. package/dist/write/journal.js.map +1 -0
  468. package/dist/write/ledger.d.ts +28 -0
  469. package/dist/write/ledger.d.ts.map +1 -0
  470. package/dist/write/ledger.js +141 -0
  471. package/dist/write/ledger.js.map +1 -0
  472. package/dist/write/placement.d.ts +29 -0
  473. package/dist/write/placement.d.ts.map +1 -0
  474. package/dist/write/placement.js +140 -0
  475. package/dist/write/placement.js.map +1 -0
  476. package/dist/write/remember-fallback.d.ts +18 -0
  477. package/dist/write/remember-fallback.d.ts.map +1 -0
  478. package/dist/write/remember-fallback.js +48 -0
  479. package/dist/write/remember-fallback.js.map +1 -0
  480. package/dist/write/retain.d.ts +61 -0
  481. package/dist/write/retain.d.ts.map +1 -0
  482. package/dist/write/retain.js +272 -0
  483. package/dist/write/retain.js.map +1 -0
  484. package/package.json +50 -0
  485. 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
@@ -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"}