@tenphi/akno-core 0.12.0 → 0.13.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/config/default.jsonc +12 -2
- package/dist/bench/graph.d.ts +2 -0
- package/dist/bench/graph.d.ts.map +1 -1
- package/dist/bench/graph.js +4 -0
- package/dist/bench/graph.js.map +1 -1
- package/dist/bench/language-corpus-v10.d.ts +4 -0
- package/dist/bench/language-corpus-v10.d.ts.map +1 -0
- package/dist/bench/language-corpus-v10.js +569 -0
- package/dist/bench/language-corpus-v10.js.map +1 -0
- package/dist/bench/language-corpus-v11.d.ts +4 -0
- package/dist/bench/language-corpus-v11.d.ts.map +1 -0
- package/dist/bench/language-corpus-v11.js +594 -0
- package/dist/bench/language-corpus-v11.js.map +1 -0
- package/dist/bench/language-corpus-v12.d.ts +4 -0
- package/dist/bench/language-corpus-v12.d.ts.map +1 -0
- package/dist/bench/language-corpus-v12.js +584 -0
- package/dist/bench/language-corpus-v12.js.map +1 -0
- package/dist/bench/language-corpus-v13.d.ts +4 -0
- package/dist/bench/language-corpus-v13.d.ts.map +1 -0
- package/dist/bench/language-corpus-v13.js +584 -0
- package/dist/bench/language-corpus-v13.js.map +1 -0
- package/dist/bench/language-corpus-v14.d.ts +4 -0
- package/dist/bench/language-corpus-v14.d.ts.map +1 -0
- package/dist/bench/language-corpus-v14.js +584 -0
- package/dist/bench/language-corpus-v14.js.map +1 -0
- package/dist/bench/language-corpus-v15.d.ts +4 -0
- package/dist/bench/language-corpus-v15.d.ts.map +1 -0
- package/dist/bench/language-corpus-v15.js +305 -0
- package/dist/bench/language-corpus-v15.js.map +1 -0
- package/dist/bench/language-corpus-v16.d.ts +4 -0
- package/dist/bench/language-corpus-v16.d.ts.map +1 -0
- package/dist/bench/language-corpus-v16.js +305 -0
- package/dist/bench/language-corpus-v16.js.map +1 -0
- package/dist/bench/language-corpus-v17.d.ts +4 -0
- package/dist/bench/language-corpus-v17.d.ts.map +1 -0
- package/dist/bench/language-corpus-v17.js +305 -0
- package/dist/bench/language-corpus-v17.js.map +1 -0
- package/dist/bench/language-corpus-v18.d.ts +4 -0
- package/dist/bench/language-corpus-v18.d.ts.map +1 -0
- package/dist/bench/language-corpus-v18.js +305 -0
- package/dist/bench/language-corpus-v18.js.map +1 -0
- package/dist/bench/language-corpus-v19.d.ts +4 -0
- package/dist/bench/language-corpus-v19.d.ts.map +1 -0
- package/dist/bench/language-corpus-v19.js +310 -0
- package/dist/bench/language-corpus-v19.js.map +1 -0
- package/dist/bench/language-corpus-v2.d.ts +12 -0
- package/dist/bench/language-corpus-v2.d.ts.map +1 -0
- package/dist/bench/language-corpus-v2.js +146 -0
- package/dist/bench/language-corpus-v2.js.map +1 -0
- package/dist/bench/language-corpus-v20.d.ts +4 -0
- package/dist/bench/language-corpus-v20.d.ts.map +1 -0
- package/dist/bench/language-corpus-v20.js +310 -0
- package/dist/bench/language-corpus-v20.js.map +1 -0
- package/dist/bench/language-corpus-v21.d.ts +4 -0
- package/dist/bench/language-corpus-v21.d.ts.map +1 -0
- package/dist/bench/language-corpus-v21.js +310 -0
- package/dist/bench/language-corpus-v21.js.map +1 -0
- package/dist/bench/language-corpus-v22.d.ts +4 -0
- package/dist/bench/language-corpus-v22.d.ts.map +1 -0
- package/dist/bench/language-corpus-v22.js +330 -0
- package/dist/bench/language-corpus-v22.js.map +1 -0
- package/dist/bench/language-corpus-v3.d.ts +4 -0
- package/dist/bench/language-corpus-v3.d.ts.map +1 -0
- package/dist/bench/language-corpus-v3.js +184 -0
- package/dist/bench/language-corpus-v3.js.map +1 -0
- package/dist/bench/language-corpus-v4.d.ts +4 -0
- package/dist/bench/language-corpus-v4.d.ts.map +1 -0
- package/dist/bench/language-corpus-v4.js +111 -0
- package/dist/bench/language-corpus-v4.js.map +1 -0
- package/dist/bench/language-corpus-v5.d.ts +4 -0
- package/dist/bench/language-corpus-v5.d.ts.map +1 -0
- package/dist/bench/language-corpus-v5.js +111 -0
- package/dist/bench/language-corpus-v5.js.map +1 -0
- package/dist/bench/language-corpus-v6.d.ts +4 -0
- package/dist/bench/language-corpus-v6.d.ts.map +1 -0
- package/dist/bench/language-corpus-v6.js +111 -0
- package/dist/bench/language-corpus-v6.js.map +1 -0
- package/dist/bench/language-corpus-v7.d.ts +4 -0
- package/dist/bench/language-corpus-v7.d.ts.map +1 -0
- package/dist/bench/language-corpus-v7.js +150 -0
- package/dist/bench/language-corpus-v7.js.map +1 -0
- package/dist/bench/language-corpus-v8.d.ts +4 -0
- package/dist/bench/language-corpus-v8.d.ts.map +1 -0
- package/dist/bench/language-corpus-v8.js +150 -0
- package/dist/bench/language-corpus-v8.js.map +1 -0
- package/dist/bench/language-corpus-v9.d.ts +4 -0
- package/dist/bench/language-corpus-v9.d.ts.map +1 -0
- package/dist/bench/language-corpus-v9.js +150 -0
- package/dist/bench/language-corpus-v9.js.map +1 -0
- package/dist/bench/language-corpus.d.ts +20 -0
- package/dist/bench/language-corpus.d.ts.map +1 -0
- package/dist/bench/language-corpus.js +205 -0
- package/dist/bench/language-corpus.js.map +1 -0
- package/dist/bench/language-review.d.ts +260 -0
- package/dist/bench/language-review.d.ts.map +1 -0
- package/dist/bench/language-review.js +591 -0
- package/dist/bench/language-review.js.map +1 -0
- package/dist/bench/language.d.ts +371 -0
- package/dist/bench/language.d.ts.map +1 -0
- package/dist/bench/language.js +484 -0
- package/dist/bench/language.js.map +1 -0
- package/dist/config/load.js +5 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +3 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +1 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/index/derive.d.ts.map +1 -1
- package/dist/index/derive.js +14 -5
- package/dist/index/derive.js.map +1 -1
- package/dist/index/graph.d.ts.map +1 -1
- package/dist/index/graph.js +3 -0
- package/dist/index/graph.js.map +1 -1
- package/dist/index/indexer.d.ts.map +1 -1
- package/dist/index/indexer.js +6 -1
- package/dist/index/indexer.js.map +1 -1
- package/dist/ingest/extract.d.ts.map +1 -1
- package/dist/ingest/extract.js +3 -1
- package/dist/ingest/extract.js.map +1 -1
- package/dist/kb/line-facts.d.ts.map +1 -1
- package/dist/kb/line-facts.js +2 -0
- package/dist/kb/line-facts.js.map +1 -1
- package/dist/kb/managed-lines.d.ts.map +1 -1
- package/dist/kb/managed-lines.js +3 -2
- package/dist/kb/managed-lines.js.map +1 -1
- package/dist/kb/prose.d.ts +12 -0
- package/dist/kb/prose.d.ts.map +1 -0
- package/dist/kb/prose.js +213 -0
- package/dist/kb/prose.js.map +1 -0
- package/dist/maintenance/conflicts.d.ts +1 -1
- package/dist/maintenance/curate.d.ts +1 -0
- package/dist/maintenance/curate.d.ts.map +1 -1
- package/dist/maintenance/curate.js +28 -1
- package/dist/maintenance/curate.js.map +1 -1
- package/dist/maintenance/dream.d.ts.map +1 -1
- package/dist/maintenance/dream.js +6 -1
- package/dist/maintenance/dream.js.map +1 -1
- package/dist/maintenance/plans.d.ts.map +1 -1
- package/dist/maintenance/plans.js +2 -0
- package/dist/maintenance/plans.js.map +1 -1
- package/dist/maintenance/revision-language.d.ts +4 -0
- package/dist/maintenance/revision-language.d.ts.map +1 -0
- package/dist/maintenance/revision-language.js +50 -0
- package/dist/maintenance/revision-language.js.map +1 -0
- package/dist/memory/action-agency.d.ts +5 -0
- package/dist/memory/action-agency.d.ts.map +1 -0
- package/dist/memory/action-agency.js +76 -0
- package/dist/memory/action-agency.js.map +1 -0
- package/dist/memory/clause-ending.d.ts +4 -0
- package/dist/memory/clause-ending.d.ts.map +1 -0
- package/dist/memory/clause-ending.js +6 -0
- package/dist/memory/clause-ending.js.map +1 -0
- package/dist/memory/counterfactual-wording.d.ts +4 -0
- package/dist/memory/counterfactual-wording.d.ts.map +1 -0
- package/dist/memory/counterfactual-wording.js +101 -0
- package/dist/memory/counterfactual-wording.js.map +1 -0
- package/dist/memory/coverage-roles.d.ts +3 -0
- package/dist/memory/coverage-roles.d.ts.map +1 -0
- package/dist/memory/coverage-roles.js +28 -0
- package/dist/memory/coverage-roles.js.map +1 -0
- package/dist/memory/intent.d.ts +1 -0
- package/dist/memory/intent.d.ts.map +1 -1
- package/dist/memory/intent.js +52 -4
- package/dist/memory/intent.js.map +1 -1
- package/dist/memory/named-actor.d.ts +2 -0
- package/dist/memory/named-actor.d.ts.map +1 -0
- package/dist/memory/named-actor.js +9 -0
- package/dist/memory/named-actor.js.map +1 -0
- package/dist/memory/personal-negative-actions.d.ts +3 -0
- package/dist/memory/personal-negative-actions.d.ts.map +1 -0
- package/dist/memory/personal-negative-actions.js +67 -0
- package/dist/memory/personal-negative-actions.js.map +1 -0
- package/dist/memory/projection.d.ts.map +1 -1
- package/dist/memory/projection.js +10 -2
- package/dist/memory/projection.js.map +1 -1
- package/dist/memory/prose-projection.d.ts +6 -0
- package/dist/memory/prose-projection.d.ts.map +1 -0
- package/dist/memory/prose-projection.js +34 -0
- package/dist/memory/prose-projection.js.map +1 -0
- package/dist/memory/report-uncertainty.d.ts +3 -0
- package/dist/memory/report-uncertainty.d.ts.map +1 -0
- package/dist/memory/report-uncertainty.js +67 -0
- package/dist/memory/report-uncertainty.js.map +1 -0
- package/dist/memory/reporting-roles.d.ts +3 -0
- package/dist/memory/reporting-roles.d.ts.map +1 -0
- package/dist/memory/reporting-roles.js +39 -0
- package/dist/memory/reporting-roles.js.map +1 -0
- package/dist/memory/retention-source-frame.d.ts +8 -0
- package/dist/memory/retention-source-frame.d.ts.map +1 -0
- package/dist/memory/retention-source-frame.js +72 -0
- package/dist/memory/retention-source-frame.js.map +1 -0
- package/dist/models/client.d.ts +12 -3
- package/dist/models/client.d.ts.map +1 -1
- package/dist/models/client.js +142 -6
- package/dist/models/client.js.map +1 -1
- package/dist/models/language-audit.d.ts +78 -0
- package/dist/models/language-audit.d.ts.map +1 -0
- package/dist/models/language-audit.js +139 -0
- package/dist/models/language-audit.js.map +1 -0
- package/dist/models/language.d.ts +12 -0
- package/dist/models/language.d.ts.map +1 -0
- package/dist/models/language.js +106 -0
- package/dist/models/language.js.map +1 -0
- package/dist/models/semantic-verdict.d.ts +53 -0
- package/dist/models/semantic-verdict.d.ts.map +1 -0
- package/dist/models/semantic-verdict.js +190 -0
- package/dist/models/semantic-verdict.js.map +1 -0
- package/dist/ops/answer-record-rendering.d.ts +73 -0
- package/dist/ops/answer-record-rendering.d.ts.map +1 -0
- package/dist/ops/answer-record-rendering.js +149 -0
- package/dist/ops/answer-record-rendering.js.map +1 -0
- package/dist/ops/answer-source-audit.d.ts +354 -0
- package/dist/ops/answer-source-audit.d.ts.map +1 -0
- package/dist/ops/answer-source-audit.js +328 -0
- package/dist/ops/answer-source-audit.js.map +1 -0
- package/dist/ops/answer.d.ts +2 -2
- package/dist/ops/answer.d.ts.map +1 -1
- package/dist/ops/answer.js +1032 -114
- package/dist/ops/answer.js.map +1 -1
- package/dist/ops/context.d.ts.map +1 -1
- package/dist/ops/context.js +7 -0
- package/dist/ops/context.js.map +1 -1
- package/dist/ops/graph.d.ts.map +1 -1
- package/dist/ops/graph.js +35 -4
- package/dist/ops/graph.js.map +1 -1
- package/dist/ops/read.d.ts.map +1 -1
- package/dist/ops/read.js +5 -2
- package/dist/ops/read.js.map +1 -1
- package/dist/ops/recall.d.ts.map +1 -1
- package/dist/ops/recall.js +10 -0
- package/dist/ops/recall.js.map +1 -1
- package/dist/ops/remember.d.ts +2 -1
- package/dist/ops/remember.d.ts.map +1 -1
- package/dist/ops/remember.js +48 -33
- package/dist/ops/remember.js.map +1 -1
- package/dist/ops/retain.d.ts +3 -1
- package/dist/ops/retain.d.ts.map +1 -1
- package/dist/ops/retain.js +56 -44
- package/dist/ops/retain.js.map +1 -1
- package/dist/recall/assemble.d.ts +1 -0
- package/dist/recall/assemble.d.ts.map +1 -1
- package/dist/recall/assemble.js +19 -2
- package/dist/recall/assemble.js.map +1 -1
- package/dist/store/db.d.ts.map +1 -1
- package/dist/store/db.js +3 -1
- package/dist/store/db.js.map +1 -1
- package/dist/store/migrations.d.ts +2 -1
- package/dist/store/migrations.d.ts.map +1 -1
- package/dist/store/migrations.js +11 -1
- package/dist/store/migrations.js.map +1 -1
- package/dist/timeline/clock.d.ts.map +1 -1
- package/dist/timeline/clock.js +2 -0
- package/dist/timeline/clock.js.map +1 -1
- package/dist/timeline/eligibility.js +4 -4
- package/dist/timeline/eligibility.js.map +1 -1
- package/dist/timeline/source-clock.d.ts +5 -0
- package/dist/timeline/source-clock.d.ts.map +1 -0
- package/dist/timeline/source-clock.js +179 -0
- package/dist/timeline/source-clock.js.map +1 -0
- package/dist/write/fictional-case-identity.d.ts +10 -0
- package/dist/write/fictional-case-identity.d.ts.map +1 -0
- package/dist/write/fictional-case-identity.js +84 -0
- package/dist/write/fictional-case-identity.js.map +1 -0
- package/dist/write/managed-memory.js +1 -1
- package/dist/write/managed-memory.js.map +1 -1
- package/dist/write/retain-clock-repair.d.ts +48 -0
- package/dist/write/retain-clock-repair.d.ts.map +1 -0
- package/dist/write/retain-clock-repair.js +175 -0
- package/dist/write/retain-clock-repair.js.map +1 -0
- package/dist/write/retain.d.ts +21 -10
- package/dist/write/retain.d.ts.map +1 -1
- package/dist/write/retain.js +1220 -70
- package/dist/write/retain.js.map +1 -1
- package/dist/write/retained-relations.d.ts +7 -0
- package/dist/write/retained-relations.d.ts.map +1 -0
- package/dist/write/retained-relations.js +38 -0
- package/dist/write/retained-relations.js.map +1 -0
- package/dist/write/retained-spans.d.ts +5 -0
- package/dist/write/retained-spans.d.ts.map +1 -0
- package/dist/write/retained-spans.js +30 -0
- package/dist/write/retained-spans.js.map +1 -0
- package/dist/write/retained-time.d.ts +4 -0
- package/dist/write/retained-time.d.ts.map +1 -0
- package/dist/write/retained-time.js +10 -0
- package/dist/write/retained-time.js.map +1 -0
- package/dist/write/retention-frame-audit.d.ts +25 -0
- package/dist/write/retention-frame-audit.d.ts.map +1 -0
- package/dist/write/retention-frame-audit.js +43 -0
- package/dist/write/retention-frame-audit.js.map +1 -0
- package/dist/write/retention-negative-evidence.d.ts +222 -0
- package/dist/write/retention-negative-evidence.d.ts.map +1 -0
- package/dist/write/retention-negative-evidence.js +122 -0
- package/dist/write/retention-negative-evidence.js.map +1 -0
- package/dist/write/retention-report-limits.d.ts +65 -0
- package/dist/write/retention-report-limits.d.ts.map +1 -0
- package/dist/write/retention-report-limits.js +71 -0
- package/dist/write/retention-report-limits.js.map +1 -0
- package/package.json +2 -2
package/dist/kb/prose.js
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { parseFrontmatter } from "./frontmatter.js";
|
|
2
|
+
import { sha256 } from "../store/ids.js";
|
|
3
|
+
export const PROSE_PROJECTION_VERSION = 'prose-v2';
|
|
4
|
+
const FACTUAL = { view: 'factual', reason: 'asserted' };
|
|
5
|
+
const CONDITIONAL = /\b(?:if|suppose|assuming|hypothetical|counterfactual|what if|would have)\b|(?:^|[^\p{L}])(?:если|предположим|допустим|гипотез\p{L}*|гипотетическ\p{L}*|контрфактическ\p{L}*)(?=$|[^\p{L}])/iu;
|
|
6
|
+
const TENTATIVE = /\b(?:might|maybe|perhaps|possibly|probably|suspect|uncertain|tentative|would|could)\b|(?:^|[^\p{L}])(?:возможно|вероятно|может быть|подозрева\p{L}*|не уверен\p{L}*)(?=$|[^\p{L}])/iu;
|
|
7
|
+
const REPORT = /\b(?:said|says|reported|reports|according to|quoted|quotation)\b|(?:^|[^\p{L}])(?:сказал\p{L}*|сообщил\p{L}*|по словам|цитат\p{L}*)(?=$|[^\p{L}])/iu;
|
|
8
|
+
const REJECTED = /\b(?:rejected|cancelled|canceled|not decided|not accepted|did not choose)\b|(?:отклон\p{L}*|отмен\p{L}*|не решено|не выбрал\p{L}*|решение не принято)/iu;
|
|
9
|
+
const PLANNED = /\b(?:plan(?:s|ned|ning)? to|propos(?:e|ed|al)|intend(?:s)? to)\b|(?:планиру\p{L}*|намерева\p{L}*|предлага\p{L}*)/iu;
|
|
10
|
+
const SPEAKER = /^\s*(?:[-*]\s*)?(?:\*\*)?(?:user|assistant|system|external|пользователь|ассистент|система)(?:\*\*)?\s*:/iu;
|
|
11
|
+
function categoryHeading(text) {
|
|
12
|
+
const title = text
|
|
13
|
+
.trim()
|
|
14
|
+
.replace(/\s+#+\s*$/, '')
|
|
15
|
+
.replace(/^(\*{1,2}|_{1,2})(.+)\1$/u, '$2')
|
|
16
|
+
.replace(/[::]\s*$/, '')
|
|
17
|
+
.trim();
|
|
18
|
+
// Category titles establish scope; a token inside a document's descriptive title does not.
|
|
19
|
+
// For example, a report number is ordinary data, whereas an assistant report is attribution.
|
|
20
|
+
if (/^(?:(?:assistant|user|system|external|nested|attributed)\s+)?(?:reports?|retellings?)$/iu.test(title) ||
|
|
21
|
+
/^(?:(?:вложенный|внешний)\s+)?(?:пересказ|сообщение|сообщения)(?:\s+(?:ассистента|пользователя|системы))?$/iu.test(title))
|
|
22
|
+
return { view: 'reports', reason: 'heading_scope' };
|
|
23
|
+
if (/^(?:preliminary|tentative|possible|competing)\s+(?:versions?|explanations?|causes?|hypothes[ei]s)$/iu.test(title) ||
|
|
24
|
+
/^(?:предварительн\p{L}*|возможн\p{L}*)\s+(?:верси\p{L}*|объяснени\p{L}*|причин\p{L}*|гипотез\p{L}*)$/iu.test(title))
|
|
25
|
+
return { view: 'discussion', reason: 'heading_scope' };
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
function meaning(text, heading = false) {
|
|
29
|
+
const category = heading ? categoryHeading(text) : null;
|
|
30
|
+
if (category)
|
|
31
|
+
return category;
|
|
32
|
+
if (CONDITIONAL.test(text))
|
|
33
|
+
return { view: 'discussion', reason: 'conditional' };
|
|
34
|
+
if (REJECTED.test(text))
|
|
35
|
+
return { view: 'history', reason: 'rejected' };
|
|
36
|
+
if (TENTATIVE.test(text))
|
|
37
|
+
return { view: 'discussion', reason: 'tentative' };
|
|
38
|
+
if (heading && /^(?:user|assistant|system|external|пользователь|ассистент|система)$/iu.test(text.trim()))
|
|
39
|
+
return { view: 'reports', reason: 'speaker' };
|
|
40
|
+
if (heading &&
|
|
41
|
+
/\b(?:scenario|alternatives?|discussion|hypothes[ei]s|assumptions?)\b|сценари\p{L}*|обсуждени\p{L}*|предположени\p{L}*/iu.test(text))
|
|
42
|
+
return { view: 'discussion', reason: 'heading_scope' };
|
|
43
|
+
if (heading &&
|
|
44
|
+
/\b(?:examples?|samples?|transcript|conversation|dialogue)\b|пример\p{L}*|переписк\p{L}*|диалог\p{L}*/iu.test(text))
|
|
45
|
+
return { view: 'reports', reason: 'heading_scope' };
|
|
46
|
+
if (heading && /\b(?:plans?|proposals?|intentions?)\b|план\p{L}*|предложени\p{L}*/iu.test(text))
|
|
47
|
+
return { view: 'planning', reason: 'heading_scope' };
|
|
48
|
+
if (heading && /\bquestions?\b|вопрос\p{L}*/iu.test(text))
|
|
49
|
+
return { view: 'questions', reason: 'heading_scope' };
|
|
50
|
+
if (SPEAKER.test(text) ||
|
|
51
|
+
/^\s*(?:>\s*)?(?:\*\*)?\p{Lu}[\p{L}’\x27-]+(?:[ \t]+\p{Lu}[\p{L}’\x27-]+){1,3}(?:\*\*)?:[ \t]+/u.test(text))
|
|
52
|
+
return { view: 'reports', reason: 'speaker' };
|
|
53
|
+
if (REPORT.test(text) || /^\s*(?:>|["“«])/.test(text))
|
|
54
|
+
return { view: 'reports', reason: 'quotation' };
|
|
55
|
+
if (PLANNED.test(text) || /^\s*[-*]\s*\[ \]/.test(text))
|
|
56
|
+
return { view: 'planning', reason: 'plan' };
|
|
57
|
+
if (/\?\s*$/.test(text))
|
|
58
|
+
return { view: 'questions', reason: 'question' };
|
|
59
|
+
return FACTUAL;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Interpret structural scope from the complete current file before selecting any line window.
|
|
63
|
+
* This bounded deterministic projection does not claim to understand arbitrary implicit discourse.
|
|
64
|
+
* Unresolved frames remain inspectable, but cannot acquire factual eligibility from truncation.
|
|
65
|
+
*/
|
|
66
|
+
export function proseQualifications(fileLines) {
|
|
67
|
+
const content = fileLines.join('\n');
|
|
68
|
+
const first = parseFrontmatter(content).bodyLine - 1;
|
|
69
|
+
const hash = sha256(content);
|
|
70
|
+
const result = new Map();
|
|
71
|
+
const headings = [];
|
|
72
|
+
let carried = null;
|
|
73
|
+
let source = false;
|
|
74
|
+
let commentStart = null;
|
|
75
|
+
let fenced = null;
|
|
76
|
+
let ownedPayload = false;
|
|
77
|
+
let previousParagraph = [];
|
|
78
|
+
const qualify = (indexes, selected, context, unresolved = false) => {
|
|
79
|
+
const frameIndexes = [...new Set(context)].sort((a, b) => a - b);
|
|
80
|
+
const tooLarge = frameIndexes.length > 12 || frameIndexes.reduce((sum, i) => sum + fileLines[i].length, 0) > 2400;
|
|
81
|
+
const status = unresolved || tooLarge ? 'unresolved' : 'qualified';
|
|
82
|
+
const frame = tooLarge ? [] : frameIndexes.map((i) => ({ n: i + 1, text: fileLines[i] }));
|
|
83
|
+
for (const index of indexes)
|
|
84
|
+
result.set(index + 1, {
|
|
85
|
+
status,
|
|
86
|
+
...selected,
|
|
87
|
+
reason: tooLarge ? 'context_limit' : selected.reason,
|
|
88
|
+
answer_eligible: status === 'qualified' && selected.view === 'factual',
|
|
89
|
+
source_hash: hash,
|
|
90
|
+
frame,
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
for (let i = first; i < fileLines.length;) {
|
|
94
|
+
const text = fileLines[i];
|
|
95
|
+
if (commentStart !== null) {
|
|
96
|
+
qualify([i], { view: 'discussion', reason: 'comment' }, [commentStart]);
|
|
97
|
+
if (text.includes('-->'))
|
|
98
|
+
commentStart = null;
|
|
99
|
+
i++;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
const fence = /^\s*(`{3,}|~{3,})/.exec(text);
|
|
103
|
+
if (fenced) {
|
|
104
|
+
qualify([i], { view: 'discussion', reason: 'example' }, [fenced.start]);
|
|
105
|
+
if (fence &&
|
|
106
|
+
fence[1][0] === fenced.char &&
|
|
107
|
+
fence[1].length >= fenced.length &&
|
|
108
|
+
/^\s*(?:`+|~+)\s*$/.test(text))
|
|
109
|
+
fenced = null;
|
|
110
|
+
i++;
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (fence) {
|
|
114
|
+
fenced = { char: fence[1][0], length: fence[1].length, start: i };
|
|
115
|
+
qualify([i], { view: 'discussion', reason: 'example' }, [i]);
|
|
116
|
+
i++;
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (/^\s*<!--\s*source\s*-->\s*$/.test(text))
|
|
120
|
+
source = true;
|
|
121
|
+
if (/^\s*<!--\s*akno:(?:item|observation)\b/.test(text)) {
|
|
122
|
+
ownedPayload = true;
|
|
123
|
+
i++;
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (!text.trim()) {
|
|
127
|
+
i++;
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (ownedPayload) {
|
|
131
|
+
ownedPayload = false;
|
|
132
|
+
i++;
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (/^\s*<!--/.test(text)) {
|
|
136
|
+
qualify([i], { view: 'discussion', reason: 'comment' }, [i]);
|
|
137
|
+
if (!text.includes('-->'))
|
|
138
|
+
commentStart = i;
|
|
139
|
+
i++;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
const setext = /^\s{0,3}(=+|-+)\s*$/.exec(fileLines[i + 1] ?? '');
|
|
143
|
+
const heading = /^(#{1,6})\s+(.+)$/.exec(text) ?? (setext ? ['', setext[1][0] === '=' ? '#' : '##', text] : null);
|
|
144
|
+
if (heading) {
|
|
145
|
+
while (headings.length && headings.at(-1).depth >= heading[1].length)
|
|
146
|
+
headings.pop();
|
|
147
|
+
headings.push({ depth: heading[1].length, index: i, meaning: meaning(heading[2], true) });
|
|
148
|
+
carried = null;
|
|
149
|
+
previousParagraph = [];
|
|
150
|
+
// Headings supply context; by themselves they establish no proposition.
|
|
151
|
+
qualify(setext ? [i, i + 1] : [i], { view: 'discussion', reason: 'heading' }, [i]);
|
|
152
|
+
i += setext ? 2 : 1;
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
const start = i;
|
|
156
|
+
while (i < fileLines.length &&
|
|
157
|
+
fileLines[i].trim() &&
|
|
158
|
+
!/^\s*(?:#{1,6}\s|<!--|`{3,}|~{3,})/.test(fileLines[i]))
|
|
159
|
+
i++;
|
|
160
|
+
if (i === start) {
|
|
161
|
+
i++;
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
const indexes = Array.from({ length: i - start }, (_, j) => start + j);
|
|
165
|
+
const explicit = indexes.map((index) => ({ index, meaning: meaning(fileLines[index]) }));
|
|
166
|
+
const scoped = [...headings].reverse().find((entry) => entry.meaning.view !== 'factual');
|
|
167
|
+
// One later qualifier can reverse an earlier sentence within the same paragraph.
|
|
168
|
+
const decisive = explicit.find((entry) => entry.meaning.reason === 'conditional') ??
|
|
169
|
+
explicit.find((entry) => entry.meaning.reason === 'rejected') ??
|
|
170
|
+
explicit.find((entry) => entry.meaning.view !== 'factual');
|
|
171
|
+
if (decisive?.meaning.reason === 'conditional' || decisive?.meaning.reason === 'speaker')
|
|
172
|
+
carried = decisive;
|
|
173
|
+
const selected = source
|
|
174
|
+
? { view: 'reports', reason: 'quotation' }
|
|
175
|
+
: (scoped?.meaning ?? carried?.meaning ?? decisive?.meaning ?? FACTUAL);
|
|
176
|
+
const context = selected.view === 'factual'
|
|
177
|
+
? []
|
|
178
|
+
: [...headings.map((entry) => entry.index), ...(carried ? [carried.index] : []), ...indexes];
|
|
179
|
+
// A following correction/qualification can refer back across a paragraph break.
|
|
180
|
+
// Keep both paragraphs in the deciding frame instead of making the first look independent.
|
|
181
|
+
if (selected.view !== 'factual' &&
|
|
182
|
+
previousParagraph.length > 0 &&
|
|
183
|
+
/(?:^|[.!?]\s*)(?:but |however,? )?(?:this|that|the above|the preceding|correction|actually|это|выше|исправление|однако)(?=$|[^\p{L}])/iu.test(fileLines[start])) {
|
|
184
|
+
qualify(previousParagraph, selected, [...previousParagraph, ...context]);
|
|
185
|
+
}
|
|
186
|
+
qualify(indexes, selected, context);
|
|
187
|
+
previousParagraph = indexes;
|
|
188
|
+
}
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
export function qualifyProseLines(lines, fileLines) {
|
|
192
|
+
const qualifications = proseQualifications(fileLines);
|
|
193
|
+
return lines.map((line) => {
|
|
194
|
+
if (line.memory || line.observation)
|
|
195
|
+
return line;
|
|
196
|
+
const prose = qualifications.get(line.n);
|
|
197
|
+
return prose
|
|
198
|
+
? { ...line, prose, ...(prose.answer_eligible ? {} : { fact: undefined, confidence: undefined }) }
|
|
199
|
+
: line;
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
export function proseEligibleForView(prose, view) {
|
|
203
|
+
if (view === 'all')
|
|
204
|
+
return true;
|
|
205
|
+
if (prose.status !== 'qualified')
|
|
206
|
+
return false;
|
|
207
|
+
return prose.answer_eligible || (view !== 'factual' && prose.view === view);
|
|
208
|
+
}
|
|
209
|
+
export function hasNonfactualProse(content) {
|
|
210
|
+
const lines = content.split('\n');
|
|
211
|
+
return [...proseQualifications(lines)].some(([, q]) => !q.answer_eligible && q.reason !== 'heading' && q.reason !== 'comment');
|
|
212
|
+
}
|
|
213
|
+
//# 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
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curate.d.ts","sourceRoot":"","sources":["../../src/maintenance/curate.ts"],"names":[],"mappings":"
|
|
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
|
|
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 {
|