@tenphi/akno-core 0.12.0 → 0.13.1

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 (302) hide show
  1. package/config/default.jsonc +12 -2
  2. package/dist/bench/graph.d.ts +2 -0
  3. package/dist/bench/graph.d.ts.map +1 -1
  4. package/dist/bench/graph.js +4 -0
  5. package/dist/bench/graph.js.map +1 -1
  6. package/dist/bench/language-corpus-v10.d.ts +4 -0
  7. package/dist/bench/language-corpus-v10.d.ts.map +1 -0
  8. package/dist/bench/language-corpus-v10.js +569 -0
  9. package/dist/bench/language-corpus-v10.js.map +1 -0
  10. package/dist/bench/language-corpus-v11.d.ts +4 -0
  11. package/dist/bench/language-corpus-v11.d.ts.map +1 -0
  12. package/dist/bench/language-corpus-v11.js +594 -0
  13. package/dist/bench/language-corpus-v11.js.map +1 -0
  14. package/dist/bench/language-corpus-v12.d.ts +4 -0
  15. package/dist/bench/language-corpus-v12.d.ts.map +1 -0
  16. package/dist/bench/language-corpus-v12.js +584 -0
  17. package/dist/bench/language-corpus-v12.js.map +1 -0
  18. package/dist/bench/language-corpus-v13.d.ts +4 -0
  19. package/dist/bench/language-corpus-v13.d.ts.map +1 -0
  20. package/dist/bench/language-corpus-v13.js +584 -0
  21. package/dist/bench/language-corpus-v13.js.map +1 -0
  22. package/dist/bench/language-corpus-v14.d.ts +4 -0
  23. package/dist/bench/language-corpus-v14.d.ts.map +1 -0
  24. package/dist/bench/language-corpus-v14.js +584 -0
  25. package/dist/bench/language-corpus-v14.js.map +1 -0
  26. package/dist/bench/language-corpus-v15.d.ts +4 -0
  27. package/dist/bench/language-corpus-v15.d.ts.map +1 -0
  28. package/dist/bench/language-corpus-v15.js +305 -0
  29. package/dist/bench/language-corpus-v15.js.map +1 -0
  30. package/dist/bench/language-corpus-v16.d.ts +4 -0
  31. package/dist/bench/language-corpus-v16.d.ts.map +1 -0
  32. package/dist/bench/language-corpus-v16.js +305 -0
  33. package/dist/bench/language-corpus-v16.js.map +1 -0
  34. package/dist/bench/language-corpus-v17.d.ts +4 -0
  35. package/dist/bench/language-corpus-v17.d.ts.map +1 -0
  36. package/dist/bench/language-corpus-v17.js +305 -0
  37. package/dist/bench/language-corpus-v17.js.map +1 -0
  38. package/dist/bench/language-corpus-v18.d.ts +4 -0
  39. package/dist/bench/language-corpus-v18.d.ts.map +1 -0
  40. package/dist/bench/language-corpus-v18.js +305 -0
  41. package/dist/bench/language-corpus-v18.js.map +1 -0
  42. package/dist/bench/language-corpus-v19.d.ts +4 -0
  43. package/dist/bench/language-corpus-v19.d.ts.map +1 -0
  44. package/dist/bench/language-corpus-v19.js +310 -0
  45. package/dist/bench/language-corpus-v19.js.map +1 -0
  46. package/dist/bench/language-corpus-v2.d.ts +12 -0
  47. package/dist/bench/language-corpus-v2.d.ts.map +1 -0
  48. package/dist/bench/language-corpus-v2.js +146 -0
  49. package/dist/bench/language-corpus-v2.js.map +1 -0
  50. package/dist/bench/language-corpus-v20.d.ts +4 -0
  51. package/dist/bench/language-corpus-v20.d.ts.map +1 -0
  52. package/dist/bench/language-corpus-v20.js +310 -0
  53. package/dist/bench/language-corpus-v20.js.map +1 -0
  54. package/dist/bench/language-corpus-v21.d.ts +4 -0
  55. package/dist/bench/language-corpus-v21.d.ts.map +1 -0
  56. package/dist/bench/language-corpus-v21.js +310 -0
  57. package/dist/bench/language-corpus-v21.js.map +1 -0
  58. package/dist/bench/language-corpus-v22.d.ts +4 -0
  59. package/dist/bench/language-corpus-v22.d.ts.map +1 -0
  60. package/dist/bench/language-corpus-v22.js +330 -0
  61. package/dist/bench/language-corpus-v22.js.map +1 -0
  62. package/dist/bench/language-corpus-v23.d.ts +4 -0
  63. package/dist/bench/language-corpus-v23.d.ts.map +1 -0
  64. package/dist/bench/language-corpus-v23.js +203 -0
  65. package/dist/bench/language-corpus-v23.js.map +1 -0
  66. package/dist/bench/language-corpus-v3.d.ts +4 -0
  67. package/dist/bench/language-corpus-v3.d.ts.map +1 -0
  68. package/dist/bench/language-corpus-v3.js +184 -0
  69. package/dist/bench/language-corpus-v3.js.map +1 -0
  70. package/dist/bench/language-corpus-v4.d.ts +4 -0
  71. package/dist/bench/language-corpus-v4.d.ts.map +1 -0
  72. package/dist/bench/language-corpus-v4.js +111 -0
  73. package/dist/bench/language-corpus-v4.js.map +1 -0
  74. package/dist/bench/language-corpus-v5.d.ts +4 -0
  75. package/dist/bench/language-corpus-v5.d.ts.map +1 -0
  76. package/dist/bench/language-corpus-v5.js +111 -0
  77. package/dist/bench/language-corpus-v5.js.map +1 -0
  78. package/dist/bench/language-corpus-v6.d.ts +4 -0
  79. package/dist/bench/language-corpus-v6.d.ts.map +1 -0
  80. package/dist/bench/language-corpus-v6.js +111 -0
  81. package/dist/bench/language-corpus-v6.js.map +1 -0
  82. package/dist/bench/language-corpus-v7.d.ts +4 -0
  83. package/dist/bench/language-corpus-v7.d.ts.map +1 -0
  84. package/dist/bench/language-corpus-v7.js +150 -0
  85. package/dist/bench/language-corpus-v7.js.map +1 -0
  86. package/dist/bench/language-corpus-v8.d.ts +4 -0
  87. package/dist/bench/language-corpus-v8.d.ts.map +1 -0
  88. package/dist/bench/language-corpus-v8.js +150 -0
  89. package/dist/bench/language-corpus-v8.js.map +1 -0
  90. package/dist/bench/language-corpus-v9.d.ts +4 -0
  91. package/dist/bench/language-corpus-v9.d.ts.map +1 -0
  92. package/dist/bench/language-corpus-v9.js +150 -0
  93. package/dist/bench/language-corpus-v9.js.map +1 -0
  94. package/dist/bench/language-corpus.d.ts +20 -0
  95. package/dist/bench/language-corpus.d.ts.map +1 -0
  96. package/dist/bench/language-corpus.js +205 -0
  97. package/dist/bench/language-corpus.js.map +1 -0
  98. package/dist/bench/language-review.d.ts +286 -0
  99. package/dist/bench/language-review.d.ts.map +1 -0
  100. package/dist/bench/language-review.js +605 -0
  101. package/dist/bench/language-review.js.map +1 -0
  102. package/dist/bench/language.d.ts +1221 -0
  103. package/dist/bench/language.d.ts.map +1 -0
  104. package/dist/bench/language.js +571 -0
  105. package/dist/bench/language.js.map +1 -0
  106. package/dist/config/load.js +5 -0
  107. package/dist/config/load.js.map +1 -1
  108. package/dist/config/schema.d.ts +3 -0
  109. package/dist/config/schema.d.ts.map +1 -1
  110. package/dist/config/schema.js +1 -0
  111. package/dist/config/schema.js.map +1 -1
  112. package/dist/index/derive.d.ts.map +1 -1
  113. package/dist/index/derive.js +14 -5
  114. package/dist/index/derive.js.map +1 -1
  115. package/dist/index/graph.d.ts.map +1 -1
  116. package/dist/index/graph.js +3 -0
  117. package/dist/index/graph.js.map +1 -1
  118. package/dist/index/indexer.d.ts.map +1 -1
  119. package/dist/index/indexer.js +6 -1
  120. package/dist/index/indexer.js.map +1 -1
  121. package/dist/ingest/extract.d.ts.map +1 -1
  122. package/dist/ingest/extract.js +3 -1
  123. package/dist/ingest/extract.js.map +1 -1
  124. package/dist/kb/line-facts.d.ts.map +1 -1
  125. package/dist/kb/line-facts.js +2 -0
  126. package/dist/kb/line-facts.js.map +1 -1
  127. package/dist/kb/managed-lines.d.ts.map +1 -1
  128. package/dist/kb/managed-lines.js +3 -2
  129. package/dist/kb/managed-lines.js.map +1 -1
  130. package/dist/kb/prose.d.ts +12 -0
  131. package/dist/kb/prose.d.ts.map +1 -0
  132. package/dist/kb/prose.js +323 -0
  133. package/dist/kb/prose.js.map +1 -0
  134. package/dist/maintenance/conflicts.d.ts +1 -1
  135. package/dist/maintenance/curate.d.ts +1 -0
  136. package/dist/maintenance/curate.d.ts.map +1 -1
  137. package/dist/maintenance/curate.js +28 -1
  138. package/dist/maintenance/curate.js.map +1 -1
  139. package/dist/maintenance/dream.d.ts.map +1 -1
  140. package/dist/maintenance/dream.js +6 -1
  141. package/dist/maintenance/dream.js.map +1 -1
  142. package/dist/maintenance/plans.d.ts.map +1 -1
  143. package/dist/maintenance/plans.js +2 -0
  144. package/dist/maintenance/plans.js.map +1 -1
  145. package/dist/maintenance/revision-language.d.ts +4 -0
  146. package/dist/maintenance/revision-language.d.ts.map +1 -0
  147. package/dist/maintenance/revision-language.js +50 -0
  148. package/dist/maintenance/revision-language.js.map +1 -0
  149. package/dist/memory/action-agency.d.ts +5 -0
  150. package/dist/memory/action-agency.d.ts.map +1 -0
  151. package/dist/memory/action-agency.js +76 -0
  152. package/dist/memory/action-agency.js.map +1 -0
  153. package/dist/memory/clause-ending.d.ts +4 -0
  154. package/dist/memory/clause-ending.d.ts.map +1 -0
  155. package/dist/memory/clause-ending.js +6 -0
  156. package/dist/memory/clause-ending.js.map +1 -0
  157. package/dist/memory/counterfactual-wording.d.ts +4 -0
  158. package/dist/memory/counterfactual-wording.d.ts.map +1 -0
  159. package/dist/memory/counterfactual-wording.js +101 -0
  160. package/dist/memory/counterfactual-wording.js.map +1 -0
  161. package/dist/memory/coverage-roles.d.ts +3 -0
  162. package/dist/memory/coverage-roles.d.ts.map +1 -0
  163. package/dist/memory/coverage-roles.js +28 -0
  164. package/dist/memory/coverage-roles.js.map +1 -0
  165. package/dist/memory/intent.d.ts +1 -0
  166. package/dist/memory/intent.d.ts.map +1 -1
  167. package/dist/memory/intent.js +88 -5
  168. package/dist/memory/intent.js.map +1 -1
  169. package/dist/memory/named-actor.d.ts +2 -0
  170. package/dist/memory/named-actor.d.ts.map +1 -0
  171. package/dist/memory/named-actor.js +9 -0
  172. package/dist/memory/named-actor.js.map +1 -0
  173. package/dist/memory/personal-negative-actions.d.ts +3 -0
  174. package/dist/memory/personal-negative-actions.d.ts.map +1 -0
  175. package/dist/memory/personal-negative-actions.js +67 -0
  176. package/dist/memory/personal-negative-actions.js.map +1 -0
  177. package/dist/memory/projection.d.ts.map +1 -1
  178. package/dist/memory/projection.js +10 -2
  179. package/dist/memory/projection.js.map +1 -1
  180. package/dist/memory/prose-projection.d.ts +6 -0
  181. package/dist/memory/prose-projection.d.ts.map +1 -0
  182. package/dist/memory/prose-projection.js +34 -0
  183. package/dist/memory/prose-projection.js.map +1 -0
  184. package/dist/memory/report-uncertainty.d.ts +3 -0
  185. package/dist/memory/report-uncertainty.d.ts.map +1 -0
  186. package/dist/memory/report-uncertainty.js +67 -0
  187. package/dist/memory/report-uncertainty.js.map +1 -0
  188. package/dist/memory/reporting-roles.d.ts +3 -0
  189. package/dist/memory/reporting-roles.d.ts.map +1 -0
  190. package/dist/memory/reporting-roles.js +39 -0
  191. package/dist/memory/reporting-roles.js.map +1 -0
  192. package/dist/memory/retention-source-frame.d.ts +8 -0
  193. package/dist/memory/retention-source-frame.d.ts.map +1 -0
  194. package/dist/memory/retention-source-frame.js +72 -0
  195. package/dist/memory/retention-source-frame.js.map +1 -0
  196. package/dist/models/client.d.ts +12 -3
  197. package/dist/models/client.d.ts.map +1 -1
  198. package/dist/models/client.js +142 -6
  199. package/dist/models/client.js.map +1 -1
  200. package/dist/models/language-audit.d.ts +78 -0
  201. package/dist/models/language-audit.d.ts.map +1 -0
  202. package/dist/models/language-audit.js +139 -0
  203. package/dist/models/language-audit.js.map +1 -0
  204. package/dist/models/language.d.ts +12 -0
  205. package/dist/models/language.d.ts.map +1 -0
  206. package/dist/models/language.js +106 -0
  207. package/dist/models/language.js.map +1 -0
  208. package/dist/models/semantic-verdict.d.ts +53 -0
  209. package/dist/models/semantic-verdict.d.ts.map +1 -0
  210. package/dist/models/semantic-verdict.js +190 -0
  211. package/dist/models/semantic-verdict.js.map +1 -0
  212. package/dist/ops/answer-record-rendering.d.ts +73 -0
  213. package/dist/ops/answer-record-rendering.d.ts.map +1 -0
  214. package/dist/ops/answer-record-rendering.js +149 -0
  215. package/dist/ops/answer-record-rendering.js.map +1 -0
  216. package/dist/ops/answer-source-audit.d.ts +354 -0
  217. package/dist/ops/answer-source-audit.d.ts.map +1 -0
  218. package/dist/ops/answer-source-audit.js +328 -0
  219. package/dist/ops/answer-source-audit.js.map +1 -0
  220. package/dist/ops/answer.d.ts +2 -2
  221. package/dist/ops/answer.d.ts.map +1 -1
  222. package/dist/ops/answer.js +1032 -114
  223. package/dist/ops/answer.js.map +1 -1
  224. package/dist/ops/context.d.ts.map +1 -1
  225. package/dist/ops/context.js +7 -0
  226. package/dist/ops/context.js.map +1 -1
  227. package/dist/ops/graph.d.ts.map +1 -1
  228. package/dist/ops/graph.js +35 -4
  229. package/dist/ops/graph.js.map +1 -1
  230. package/dist/ops/read.d.ts.map +1 -1
  231. package/dist/ops/read.js +5 -2
  232. package/dist/ops/read.js.map +1 -1
  233. package/dist/ops/recall.d.ts.map +1 -1
  234. package/dist/ops/recall.js +10 -0
  235. package/dist/ops/recall.js.map +1 -1
  236. package/dist/ops/remember.d.ts +2 -1
  237. package/dist/ops/remember.d.ts.map +1 -1
  238. package/dist/ops/remember.js +48 -33
  239. package/dist/ops/remember.js.map +1 -1
  240. package/dist/ops/retain.d.ts +3 -1
  241. package/dist/ops/retain.d.ts.map +1 -1
  242. package/dist/ops/retain.js +56 -44
  243. package/dist/ops/retain.js.map +1 -1
  244. package/dist/recall/assemble.d.ts +1 -0
  245. package/dist/recall/assemble.d.ts.map +1 -1
  246. package/dist/recall/assemble.js +19 -2
  247. package/dist/recall/assemble.js.map +1 -1
  248. package/dist/store/db.d.ts.map +1 -1
  249. package/dist/store/db.js +3 -1
  250. package/dist/store/db.js.map +1 -1
  251. package/dist/store/migrations.d.ts +2 -1
  252. package/dist/store/migrations.d.ts.map +1 -1
  253. package/dist/store/migrations.js +11 -1
  254. package/dist/store/migrations.js.map +1 -1
  255. package/dist/timeline/clock.d.ts.map +1 -1
  256. package/dist/timeline/clock.js +2 -0
  257. package/dist/timeline/clock.js.map +1 -1
  258. package/dist/timeline/eligibility.js +4 -4
  259. package/dist/timeline/eligibility.js.map +1 -1
  260. package/dist/timeline/source-clock.d.ts +5 -0
  261. package/dist/timeline/source-clock.d.ts.map +1 -0
  262. package/dist/timeline/source-clock.js +179 -0
  263. package/dist/timeline/source-clock.js.map +1 -0
  264. package/dist/write/fictional-case-identity.d.ts +10 -0
  265. package/dist/write/fictional-case-identity.d.ts.map +1 -0
  266. package/dist/write/fictional-case-identity.js +84 -0
  267. package/dist/write/fictional-case-identity.js.map +1 -0
  268. package/dist/write/managed-memory.js +1 -1
  269. package/dist/write/managed-memory.js.map +1 -1
  270. package/dist/write/retain-clock-repair.d.ts +48 -0
  271. package/dist/write/retain-clock-repair.d.ts.map +1 -0
  272. package/dist/write/retain-clock-repair.js +175 -0
  273. package/dist/write/retain-clock-repair.js.map +1 -0
  274. package/dist/write/retain.d.ts +21 -10
  275. package/dist/write/retain.d.ts.map +1 -1
  276. package/dist/write/retain.js +1220 -70
  277. package/dist/write/retain.js.map +1 -1
  278. package/dist/write/retained-relations.d.ts +7 -0
  279. package/dist/write/retained-relations.d.ts.map +1 -0
  280. package/dist/write/retained-relations.js +38 -0
  281. package/dist/write/retained-relations.js.map +1 -0
  282. package/dist/write/retained-spans.d.ts +5 -0
  283. package/dist/write/retained-spans.d.ts.map +1 -0
  284. package/dist/write/retained-spans.js +30 -0
  285. package/dist/write/retained-spans.js.map +1 -0
  286. package/dist/write/retained-time.d.ts +4 -0
  287. package/dist/write/retained-time.d.ts.map +1 -0
  288. package/dist/write/retained-time.js +10 -0
  289. package/dist/write/retained-time.js.map +1 -0
  290. package/dist/write/retention-frame-audit.d.ts +25 -0
  291. package/dist/write/retention-frame-audit.d.ts.map +1 -0
  292. package/dist/write/retention-frame-audit.js +43 -0
  293. package/dist/write/retention-frame-audit.js.map +1 -0
  294. package/dist/write/retention-negative-evidence.d.ts +222 -0
  295. package/dist/write/retention-negative-evidence.d.ts.map +1 -0
  296. package/dist/write/retention-negative-evidence.js +122 -0
  297. package/dist/write/retention-negative-evidence.js.map +1 -0
  298. package/dist/write/retention-report-limits.d.ts +65 -0
  299. package/dist/write/retention-report-limits.d.ts.map +1 -0
  300. package/dist/write/retention-report-limits.js +71 -0
  301. package/dist/write/retention-report-limits.js.map +1 -0
  302. package/package.json +3 -2
@@ -0,0 +1,323 @@
1
+ import { fromMarkdown } from 'mdast-util-from-markdown';
2
+ import { parseFrontmatter } from "./frontmatter.js";
3
+ import { sha256 } from "../store/ids.js";
4
+ export const PROSE_PROJECTION_VERSION = 'prose-v4';
5
+ const FACTUAL = { view: 'factual', reason: 'asserted' };
6
+ const CONDITIONAL = /\b(?:if|suppose|assuming|hypothetical|counterfactual|what if|would have)\b|(?:^|[^\p{L}])(?:если|предположим|допустим|гипотез\p{L}*|гипотетическ\p{L}*|контрфактическ\p{L}*)(?=$|[^\p{L}])/iu;
7
+ const TENTATIVE = /\b(?:might|maybe|perhaps|possibly|probably|suspect|uncertain|tentative|would|could)\b|(?:^|[^\p{L}])(?:возможно|вероятно|может быть|подозрева\p{L}*|не уверен\p{L}*)(?=$|[^\p{L}])/iu;
8
+ const REPORT = /\b(?:said|says|reported|reports|according to|quoted|quotation)\b|(?:^|[^\p{L}])(?:сказал\p{L}*|сообщил\p{L}*|по словам|цитат\p{L}*)(?=$|[^\p{L}])/iu;
9
+ const REJECTED = /\b(?:rejected|cancelled|canceled|not decided|not accepted|did not choose)\b|(?:отклон\p{L}*|отмен\p{L}*|не решено|не выбрал\p{L}*|решение не принято)/iu;
10
+ const PLANNED = /\b(?:plan(?:s|ned|ning)? to|propos(?:e|ed|al)|intend(?:s)? to)\b|(?:планиру\p{L}*|намерева\p{L}*|предлага\p{L}*)/iu;
11
+ const SPEAKER = /^\s*(?:[-*]\s*)?(?:\*\*)?(?:user|assistant|system|external|пользователь|ассистент|система)(?:\*\*)?\s*:/iu;
12
+ // The paragraph boundary and heading reader must agree, including empty sibling headings.
13
+ // Otherwise a recognized boundary can be skipped without opening or closing its scope.
14
+ const ATX_HEADING = /^ {0,3}(#{1,6})(?:[ \t]+(.*)|[ \t]*)\r?$/;
15
+ function expandTabs(text) {
16
+ let column = 0;
17
+ return [...text]
18
+ .map((char) => {
19
+ const value = char === '\t' ? ' '.repeat(4 - (column % 4)) : char;
20
+ column += value.length;
21
+ return value;
22
+ })
23
+ .join('');
24
+ }
25
+ /** CommonMark determines item boundaries: only paragraphs admit lazy continuation. */
26
+ function listHeadingScopes(lines, first) {
27
+ const scopes = new Map();
28
+ if (!lines.some((line) => /^(?:[ \t]+| {0,3}(?:[-+*]|\d{1,9}[.)])[ \t]+)#{1,6}(?:[ \t]|$)/.test(line)))
29
+ return scopes;
30
+ const root = fromMarkdown(lines.map((line, i) => (i < first ? '' : line)).join('\n'));
31
+ const items = [];
32
+ const pending = [{ node: root, parents: [] }];
33
+ while (pending.length) {
34
+ const { node, parents } = pending.pop();
35
+ let owners = parents;
36
+ if (node.type === 'listItem' && node.position) {
37
+ const item = {
38
+ start: node.position.start.line - 1,
39
+ end: node.position.end.line,
40
+ heading: false,
41
+ paragraph: null,
42
+ };
43
+ items.push(item);
44
+ owners = [...parents, item];
45
+ }
46
+ if (node.type === 'heading')
47
+ for (const owner of owners)
48
+ owner.heading = true;
49
+ if (node.type === 'paragraph')
50
+ for (const owner of owners)
51
+ owner.paragraph = node;
52
+ for (const child of [...(node.children ?? [])].reverse())
53
+ pending.push({ node: child, parents: owners });
54
+ }
55
+ for (const item of items) {
56
+ if (scopes.has(item.start))
57
+ continue;
58
+ const text = expandTabs(lines[item.start]);
59
+ const prefix = /^( *(?:[-+*]|\d{1,9}[.)]))( *)/.exec(text);
60
+ if (!prefix)
61
+ continue;
62
+ const padding = prefix[2].length;
63
+ const indent = prefix[1].length + (padding >= 1 && padding <= 4 ? padding : 1);
64
+ const content = lines.slice(item.start, item.end).map((line, i) => {
65
+ const expanded = expandTabs(line);
66
+ return i === 0 || /^ */.exec(expanded)[0].length >= indent ? expanded.slice(indent) : expanded;
67
+ });
68
+ // Heading-looking text in a list-contained code/comment block also needs container isolation.
69
+ if (!item.heading && !content.some((line) => ATX_HEADING.test(line)))
70
+ continue;
71
+ // Removing the bullet must not turn an unchecked task into an asserted statement.
72
+ if (/^\[ \](?:\s|$)/.test(content[0]))
73
+ content[0] = `- ${content[0]}`;
74
+ const paragraph = item.paragraph?.position;
75
+ const lastParagraph = paragraph?.end.line === item.end
76
+ ? Array.from({ length: paragraph.end.line - paragraph.start.line + 1 }, (_, i) => paragraph.start.line - 1 + i)
77
+ : [];
78
+ scopes.set(item.start, { content, lastParagraph });
79
+ }
80
+ return scopes;
81
+ }
82
+ function categoryHeading(text) {
83
+ const title = text
84
+ .trim()
85
+ .replace(/\s+#+\s*$/, '')
86
+ .replace(/^(\*{1,2}|_{1,2})(.+)\1$/u, '$2')
87
+ .replace(/[::]\s*$/, '')
88
+ .trim();
89
+ // Category titles establish scope; a token inside a document's descriptive title does not.
90
+ // For example, a report number is ordinary data, whereas an assistant report is attribution.
91
+ if (/^(?:(?:assistant|user|system|external|nested|attributed)\s+)?(?:reports?|retellings?)$/iu.test(title) ||
92
+ /^(?:(?:вложенный|внешний)\s+)?(?:пересказ|сообщение|сообщения)(?:\s+(?:ассистента|пользователя|системы))?$/iu.test(title))
93
+ return { view: 'reports', reason: 'heading_scope' };
94
+ if (/^(?:preliminary|tentative|possible|competing)\s+(?:versions?|explanations?|causes?|hypothes[ei]s)$/iu.test(title) ||
95
+ /^(?:предварительн\p{L}*|возможн\p{L}*)\s+(?:верси\p{L}*|объяснени\p{L}*|причин\p{L}*|гипотез\p{L}*)$/iu.test(title))
96
+ return { view: 'discussion', reason: 'heading_scope' };
97
+ return null;
98
+ }
99
+ function meaning(text, heading = false) {
100
+ if (heading)
101
+ text = text.replace(/\s+#+\s*$/, '').trim();
102
+ const category = heading ? categoryHeading(text) : null;
103
+ if (category)
104
+ return category;
105
+ if (CONDITIONAL.test(text))
106
+ return { view: 'discussion', reason: 'conditional' };
107
+ if (REJECTED.test(text))
108
+ return { view: 'history', reason: 'rejected' };
109
+ if (TENTATIVE.test(text))
110
+ return { view: 'discussion', reason: 'tentative' };
111
+ if (heading && /^(?:user|assistant|system|external|пользователь|ассистент|система)$/iu.test(text.trim()))
112
+ return { view: 'reports', reason: 'speaker' };
113
+ if (heading &&
114
+ /\b(?:scenario|alternatives?|discussion|hypothes[ei]s|assumptions?)\b|сценари\p{L}*|обсуждени\p{L}*|предположени\p{L}*/iu.test(text))
115
+ return { view: 'discussion', reason: 'heading_scope' };
116
+ if (heading &&
117
+ /\b(?:examples?|samples?|transcript|conversation|dialogue)\b|пример\p{L}*|переписк\p{L}*|диалог\p{L}*/iu.test(text))
118
+ return { view: 'reports', reason: 'heading_scope' };
119
+ if (heading && /\b(?:plans?|proposals?|intentions?)\b|план\p{L}*|предложени\p{L}*/iu.test(text))
120
+ return { view: 'planning', reason: 'heading_scope' };
121
+ if (heading && /\bquestions?\b|вопрос\p{L}*/iu.test(text))
122
+ return { view: 'questions', reason: 'heading_scope' };
123
+ if (SPEAKER.test(text) ||
124
+ /^\s*(?:>\s*)?(?:\*\*)?\p{Lu}[\p{L}’\x27-]+(?:[ \t]+\p{Lu}[\p{L}’\x27-]+){1,3}(?:\*\*)?:[ \t]+/u.test(text))
125
+ return { view: 'reports', reason: 'speaker' };
126
+ if (REPORT.test(text) || /^\s*(?:>|["“«])/.test(text))
127
+ return { view: 'reports', reason: 'quotation' };
128
+ if (PLANNED.test(text) || /^\s*[-*]\s*\[ \]/.test(text))
129
+ return { view: 'planning', reason: 'plan' };
130
+ if (/\?\s*$/.test(text))
131
+ return { view: 'questions', reason: 'question' };
132
+ return FACTUAL;
133
+ }
134
+ /**
135
+ * Interpret structural scope from the complete current file before selecting any line window.
136
+ * This bounded deterministic projection does not claim to understand arbitrary implicit discourse.
137
+ * Unresolved frames remain inspectable, but cannot acquire factual eligibility from truncation.
138
+ */
139
+ export function proseQualifications(fileLines) {
140
+ return projectProse(fileLines, fileLines, 0);
141
+ }
142
+ function projectProse(fileLines, authoredLines, listDepth, inherited, sourceScope = false) {
143
+ const content = fileLines.join('\n');
144
+ const first = parseFrontmatter(content).bodyLine - 1;
145
+ const hash = sha256(content);
146
+ const listScopes = listHeadingScopes(fileLines, first);
147
+ const result = new Map();
148
+ const headings = [];
149
+ let carried = null;
150
+ let source = sourceScope;
151
+ let commentStart = null;
152
+ let fenced = null;
153
+ let ownedPayload = false;
154
+ let previousParagraph = [];
155
+ const qualify = (indexes, selected, context, unresolved = false) => {
156
+ const frameIndexes = [...new Set(context)].sort((a, b) => a - b);
157
+ const tooLarge = frameIndexes.length > 12 || frameIndexes.reduce((sum, i) => sum + fileLines[i].length, 0) > 2400;
158
+ const status = unresolved || tooLarge ? 'unresolved' : 'qualified';
159
+ const frame = tooLarge ? [] : frameIndexes.map((i) => ({ n: i + 1, text: fileLines[i] }));
160
+ for (const index of indexes)
161
+ result.set(index + 1, {
162
+ status,
163
+ view: selected.view,
164
+ reason: tooLarge ? 'context_limit' : selected.reason,
165
+ answer_eligible: status === 'qualified' && selected.view === 'factual',
166
+ source_hash: hash,
167
+ frame,
168
+ });
169
+ };
170
+ for (let i = first; i < fileLines.length;) {
171
+ const text = fileLines[i];
172
+ if (commentStart !== null) {
173
+ qualify([i], { view: 'discussion', reason: 'comment' }, [commentStart]);
174
+ if (text.includes('-->'))
175
+ commentStart = null;
176
+ i++;
177
+ continue;
178
+ }
179
+ const fence = /^\s*(`{3,}|~{3,})/.exec(text);
180
+ if (fenced) {
181
+ qualify([i], { view: 'discussion', reason: 'example' }, [fenced.start]);
182
+ if (fence &&
183
+ fence[1][0] === fenced.char &&
184
+ fence[1].length >= fenced.length &&
185
+ /^\s*(?:`+|~+)\s*$/.test(text))
186
+ fenced = null;
187
+ i++;
188
+ continue;
189
+ }
190
+ if (fence) {
191
+ fenced = { char: fence[1][0], length: fence[1].length, start: i };
192
+ qualify([i], { view: 'discussion', reason: 'example' }, [i]);
193
+ i++;
194
+ continue;
195
+ }
196
+ // Normalizing a list marker cannot manufacture server-owned syntax from literal prose.
197
+ if (/^\s*<!--\s*source\s*-->\s*$/.test(authoredLines[i]))
198
+ source = true;
199
+ if (/^\s*<!--\s*akno:(?:item|observation)\b/.test(authoredLines[i])) {
200
+ ownedPayload = true;
201
+ i++;
202
+ continue;
203
+ }
204
+ if (!text.trim()) {
205
+ i++;
206
+ continue;
207
+ }
208
+ if (ownedPayload) {
209
+ ownedPayload = false;
210
+ i++;
211
+ continue;
212
+ }
213
+ if (/^\s*<!--/.test(text)) {
214
+ qualify([i], { view: 'discussion', reason: 'comment' }, [i]);
215
+ if (!text.includes('-->'))
216
+ commentStart = i;
217
+ i++;
218
+ continue;
219
+ }
220
+ const listScope = listScopes.get(i);
221
+ if (listScope) {
222
+ if (listDepth >= 12) {
223
+ qualify(Array.from({ length: listScope.content.length }, (_, n) => i + n), { view: 'discussion', reason: 'context_limit' }, [], true);
224
+ i += listScope.content.length;
225
+ previousParagraph = [];
226
+ continue;
227
+ }
228
+ const outer = source
229
+ ? { view: 'reports', reason: 'quotation' }
230
+ : ([...headings].reverse().find((entry) => entry.meaning.view !== 'factual')?.meaning ??
231
+ inherited ??
232
+ carried?.meaning);
233
+ const outerFrame = [...headings.map((entry) => entry.index), ...(carried ? [carried.index] : [])];
234
+ // The leading blank prevents list content from being mistaken for document frontmatter.
235
+ for (const [line, qualification] of projectProse(['', ...listScope.content], ['', ...authoredLines.slice(i, i + listScope.content.length)], listDepth + 1, outer, source)) {
236
+ const index = i + line - 2;
237
+ const selected = qualification;
238
+ qualify([index], selected, selected.view === 'factual'
239
+ ? []
240
+ : [...outerFrame, i, index, ...qualification.frame.map((entry) => i + entry.n - 2)], qualification.status === 'unresolved');
241
+ }
242
+ previousParagraph = listScope.lastParagraph;
243
+ i += listScope.content.length;
244
+ continue;
245
+ }
246
+ const setext = /^\s{0,3}(=+|-+)\s*$/.exec(fileLines[i + 1] ?? '');
247
+ const heading = ATX_HEADING.exec(text) ?? (setext ? ['', setext[1][0] === '=' ? '#' : '##', text] : null);
248
+ if (heading) {
249
+ while (headings.length && headings.at(-1).depth >= heading[1].length)
250
+ headings.pop();
251
+ headings.push({ depth: heading[1].length, index: i, meaning: meaning(heading[2] ?? '', true) });
252
+ carried = null;
253
+ previousParagraph = [];
254
+ // Headings supply context; by themselves they establish no proposition.
255
+ qualify(setext ? [i, i + 1] : [i], { view: 'discussion', reason: 'heading' }, [i]);
256
+ i += setext ? 2 : 1;
257
+ continue;
258
+ }
259
+ const start = i;
260
+ while (i < fileLines.length &&
261
+ fileLines[i].trim() &&
262
+ (i === start || !listScopes.has(i)) &&
263
+ !ATX_HEADING.test(fileLines[i]) &&
264
+ !/^\s*(?:<!--|`{3,}|~{3,})/.test(fileLines[i]))
265
+ i++;
266
+ if (i === start) {
267
+ i++;
268
+ continue;
269
+ }
270
+ const indexes = Array.from({ length: i - start }, (_, j) => start + j);
271
+ const explicit = indexes.map((index) => ({ index, meaning: meaning(fileLines[index]) }));
272
+ const scoped = [...headings].reverse().find((entry) => entry.meaning.view !== 'factual');
273
+ // One later qualifier can reverse an earlier sentence within the same paragraph.
274
+ const decisive = explicit.find((entry) => entry.meaning.reason === 'conditional') ??
275
+ explicit.find((entry) => entry.meaning.reason === 'rejected') ??
276
+ explicit.find((entry) => entry.meaning.view !== 'factual');
277
+ if (decisive?.meaning.reason === 'conditional' || decisive?.meaning.reason === 'speaker')
278
+ carried = decisive;
279
+ const selected = source
280
+ ? { view: 'reports', reason: 'quotation' }
281
+ : (scoped?.meaning ?? inherited ?? carried?.meaning ?? decisive?.meaning ?? FACTUAL);
282
+ const context = selected.view === 'factual'
283
+ ? []
284
+ : [...headings.map((entry) => entry.index), ...(carried ? [carried.index] : []), ...indexes];
285
+ // A following correction/qualification can refer back across a paragraph break.
286
+ // Keep both paragraphs in the deciding frame instead of making the first look independent.
287
+ if (selected.view !== 'factual' &&
288
+ previousParagraph.length > 0 &&
289
+ /(?:^|[.!?]\s*)(?:but |however,? )?(?:this|that|the above|the preceding|correction|actually|это|выше|исправление|однако)(?=$|[^\p{L}])/iu.test(fileLines[start])) {
290
+ qualify(previousParagraph, selected, [
291
+ ...previousParagraph,
292
+ ...previousParagraph.flatMap((index) => result.get(index + 1)?.frame.map((line) => line.n - 1) ?? []),
293
+ ...context,
294
+ ]);
295
+ }
296
+ qualify(indexes, selected, context);
297
+ previousParagraph = indexes;
298
+ }
299
+ return result;
300
+ }
301
+ export function qualifyProseLines(lines, fileLines) {
302
+ const qualifications = proseQualifications(fileLines);
303
+ return lines.map((line) => {
304
+ if (line.memory || line.observation)
305
+ return line;
306
+ const prose = qualifications.get(line.n);
307
+ return prose
308
+ ? { ...line, prose, ...(prose.answer_eligible ? {} : { fact: undefined, confidence: undefined }) }
309
+ : line;
310
+ });
311
+ }
312
+ export function proseEligibleForView(prose, view) {
313
+ if (view === 'all')
314
+ return true;
315
+ if (prose.status !== 'qualified')
316
+ return false;
317
+ return prose.answer_eligible || (view !== 'factual' && prose.view === view);
318
+ }
319
+ export function hasNonfactualProse(content) {
320
+ const lines = content.split('\n');
321
+ return [...proseQualifications(lines)].some(([, q]) => !q.answer_eligible && q.reason !== 'heading' && q.reason !== 'comment');
322
+ }
323
+ //# sourceMappingURL=prose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prose.js","sourceRoot":"","sources":["../../src/kb/prose.ts"],"names":[],"mappings":"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"}
@@ -68,8 +68,8 @@ export declare const CONFLICT_PROMPT_VERSION = "typed-v2-qualified";
68
68
  export declare const VERIFY_SCHEMA: z.ZodObject<{
69
69
  outcome: z.ZodEnum<{
70
70
  unresolved: "unresolved";
71
- superseded: "superseded";
72
71
  qualified: "qualified";
72
+ superseded: "superseded";
73
73
  not_a_conflict: "not_a_conflict";
74
74
  time_scoped: "time_scoped";
75
75
  }>;
@@ -6,6 +6,7 @@ export interface CuratedPage {
6
6
  slug: string;
7
7
  mode: 'hygiene' | 'synthesize';
8
8
  action: 'would-update' | 'updated' | 'unchanged' | 'rejected';
9
+ reason_code?: 'prose_discourse_held';
9
10
  splits: string[];
10
11
  extractions: string[];
11
12
  merges: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"curate.d.ts","sourceRoot":"","sources":["../../src/maintenance/curate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"curate.d.ts","sourceRoot":"","sources":["../../src/maintenance/curate.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import fs from 'node:fs';
2
+ import { hasNonfactualProse } from "../kb/prose.js";
1
3
  import fsp from 'node:fs/promises';
2
4
  import path from 'node:path';
3
5
  import { z } from 'zod';
@@ -266,6 +268,19 @@ export async function curatePages(ctx, options) {
266
268
  result.warnings.push(`${row.slug}: could not read page`);
267
269
  continue;
268
270
  }
271
+ if (hasNonfactualProse(before)) {
272
+ result.pages.push({
273
+ slug: row.slug,
274
+ mode: row.dream_management,
275
+ action: 'rejected',
276
+ reason_code: 'prose_discourse_held',
277
+ splits: [],
278
+ extractions: [],
279
+ merges: [],
280
+ issues: ['Whole-page rewriting is held because this page contains qualified discourse.'],
281
+ });
282
+ continue;
283
+ }
269
284
  const fm = parseFrontmatter(before);
270
285
  const body = before.slice(fm.bodyOffset);
271
286
  const inferenceInput = { slug: row.slug, title: row.title, frontmatter: fm.data, body };
@@ -860,6 +875,8 @@ async function inspectMergeCandidate(ctx, candidate) {
860
875
  const inverseIssue = inverseSplitMergeIssue(ctx, { relPath: candidate.canonical.rel_path, content: canonicalBefore }, { relPath: candidate.duplicate.rel_path, content: duplicateBefore });
861
876
  if (inverseIssue)
862
877
  issues.push(inverseIssue);
878
+ if (hasNonfactualProse(canonicalBefore) || hasNonfactualProse(duplicateBefore))
879
+ issues.push('Merging is held because a source contains qualified discourse.');
863
880
  if (Buffer.byteLength(canonical.body) + Buffer.byteLength(duplicate.body) > 80_000) {
864
881
  issues.push('merge inputs exceed the 80000-byte lossless planning limit');
865
882
  }
@@ -1290,7 +1307,17 @@ function evidenceFor(ctx, page) {
1290
1307
  const events = ctx.store.db.prepare(`SELECT date, summary FROM events
1291
1308
  WHERE source_page = ? AND target_slug = ?
1292
1309
  ORDER BY date DESC, line LIMIT 50`);
1293
- return rows.map((row) => {
1310
+ return rows
1311
+ .filter((row) => {
1312
+ // A neighboring summary may have been derived before its qualifier was edited.
1313
+ try {
1314
+ return !hasNonfactualProse(fs.readFileSync(path.join(ctx.config.aknoPath, row.rel_path), 'utf8'));
1315
+ }
1316
+ catch {
1317
+ return false;
1318
+ }
1319
+ })
1320
+ .map((row) => {
1294
1321
  const relationship = pageRelationship(row, page.slug);
1295
1322
  const allFacts = facts.all(row.id);
1296
1323
  return {