@tenphi/akno-core 0.5.0 → 0.7.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 +7 -5
- package/dist/bench/answer.js +5 -2
- package/dist/bench/answer.js.map +1 -1
- package/dist/config/schema.d.ts +8 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +2 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/index/derive.d.ts.map +1 -1
- package/dist/index/derive.js +19 -2
- package/dist/index/derive.js.map +1 -1
- package/dist/index/graph.d.ts +1 -0
- package/dist/index/graph.d.ts.map +1 -1
- package/dist/index/graph.js +50 -0
- package/dist/index/graph.js.map +1 -1
- package/dist/index/indexer.d.ts +6 -0
- package/dist/index/indexer.d.ts.map +1 -1
- package/dist/index/indexer.js +67 -6
- package/dist/index/indexer.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kb/managed-lines.d.ts +4 -1
- package/dist/kb/managed-lines.d.ts.map +1 -1
- package/dist/kb/managed-lines.js +19 -4
- package/dist/kb/managed-lines.js.map +1 -1
- package/dist/kb/page.d.ts +4 -1
- package/dist/kb/page.d.ts.map +1 -1
- package/dist/kb/page.js +5 -0
- package/dist/kb/page.js.map +1 -1
- package/dist/maintenance/dream.d.ts +1 -1
- package/dist/maintenance/dream.d.ts.map +1 -1
- package/dist/maintenance/dream.js +547 -198
- package/dist/maintenance/dream.js.map +1 -1
- package/dist/maintenance/observation-migration.d.ts +17 -0
- package/dist/maintenance/observation-migration.d.ts.map +1 -0
- package/dist/maintenance/observation-migration.js +217 -0
- package/dist/maintenance/observation-migration.js.map +1 -0
- package/dist/maintenance/observe.d.ts +20 -3
- package/dist/maintenance/observe.d.ts.map +1 -1
- package/dist/maintenance/observe.js +95 -24
- package/dist/maintenance/observe.js.map +1 -1
- package/dist/maintenance/path-policy.d.ts.map +1 -1
- package/dist/maintenance/path-policy.js +2 -2
- package/dist/maintenance/path-policy.js.map +1 -1
- package/dist/maintenance/plans.d.ts +28 -1
- package/dist/maintenance/plans.d.ts.map +1 -1
- package/dist/maintenance/plans.js +360 -17
- package/dist/maintenance/plans.js.map +1 -1
- package/dist/observations/marker.d.ts +27 -0
- package/dist/observations/marker.d.ts.map +1 -0
- package/dist/observations/marker.js +238 -0
- package/dist/observations/marker.js.map +1 -0
- package/dist/observations/projection.d.ts +23 -0
- package/dist/observations/projection.d.ts.map +1 -0
- package/dist/observations/projection.js +349 -0
- package/dist/observations/projection.js.map +1 -0
- package/dist/open.d.ts +3 -0
- package/dist/open.d.ts.map +1 -1
- package/dist/open.js +2 -0
- package/dist/open.js.map +1 -1
- package/dist/ops/answer.d.ts.map +1 -1
- package/dist/ops/answer.js +107 -12
- package/dist/ops/answer.js.map +1 -1
- package/dist/ops/context.d.ts.map +1 -1
- package/dist/ops/context.js +52 -20
- package/dist/ops/context.js.map +1 -1
- package/dist/ops/graph.d.ts.map +1 -1
- package/dist/ops/graph.js +22 -2
- package/dist/ops/graph.js.map +1 -1
- package/dist/ops/read.d.ts.map +1 -1
- package/dist/ops/read.js +9 -3
- package/dist/ops/read.js.map +1 -1
- package/dist/ops/retain.js +19 -0
- package/dist/ops/retain.js.map +1 -1
- package/dist/ops/timeline.d.ts +2 -5
- package/dist/ops/timeline.d.ts.map +1 -1
- package/dist/ops/timeline.js +334 -82
- package/dist/ops/timeline.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 +18 -7
- package/dist/recall/assemble.js.map +1 -1
- package/dist/store/db.d.ts.map +1 -1
- package/dist/store/db.js +7 -1
- package/dist/store/db.js.map +1 -1
- package/dist/store/migrations.d.ts +3 -1
- package/dist/store/migrations.d.ts.map +1 -1
- package/dist/store/migrations.js +97 -1
- package/dist/store/migrations.js.map +1 -1
- package/dist/timeline/clock.d.ts +25 -0
- package/dist/timeline/clock.d.ts.map +1 -0
- package/dist/timeline/clock.js +257 -0
- package/dist/timeline/clock.js.map +1 -0
- package/dist/timeline/documents.d.ts +2 -0
- package/dist/timeline/documents.d.ts.map +1 -1
- package/dist/timeline/documents.js +28 -0
- package/dist/timeline/documents.js.map +1 -1
- package/dist/timeline/eligibility.d.ts +16 -0
- package/dist/timeline/eligibility.d.ts.map +1 -0
- package/dist/timeline/eligibility.js +31 -0
- package/dist/timeline/eligibility.js.map +1 -0
- package/dist/timeline/projection.d.ts +11 -0
- package/dist/timeline/projection.d.ts.map +1 -0
- package/dist/timeline/projection.js +77 -0
- package/dist/timeline/projection.js.map +1 -0
- package/dist/timeline/recurrence.d.ts +14 -0
- package/dist/timeline/recurrence.d.ts.map +1 -0
- package/dist/timeline/recurrence.js +238 -0
- package/dist/timeline/recurrence.js.map +1 -0
- package/dist/write/managed-memory.d.ts +2 -0
- package/dist/write/managed-memory.d.ts.map +1 -1
- package/dist/write/managed-memory.js +5 -1
- package/dist/write/managed-memory.js.map +1 -1
- package/dist/write/retain.d.ts +2 -2
- package/dist/write/retain.d.ts.map +1 -1
- package/dist/write/retain.js +3 -2
- package/dist/write/retain.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ObservationDisposition } from '@tenphi/akno-protocol';
|
|
2
|
+
export interface ObservationEvidenceLocator {
|
|
3
|
+
factId: string;
|
|
4
|
+
sourceLineHash: string;
|
|
5
|
+
proofGroups: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface ObservationMarker {
|
|
8
|
+
id: string;
|
|
9
|
+
subject: string;
|
|
10
|
+
disposition: ObservationDisposition;
|
|
11
|
+
evidence: ObservationEvidenceLocator[];
|
|
12
|
+
proofCount: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function observationId(subject: string, pattern: string): string;
|
|
15
|
+
export declare function renderObservationMarker(marker: ObservationMarker): string;
|
|
16
|
+
export declare function parseObservationMarker(line: string): ObservationMarker | null;
|
|
17
|
+
export declare function observationMarkerIssue(marker: ObservationMarker): string | null;
|
|
18
|
+
export declare function observationPayloadIssue(payload: string, evidenceSlugs: string[]): string | null;
|
|
19
|
+
export declare function observationBlock(marker: ObservationMarker, pattern: string, evidenceSlugs: string[]): string;
|
|
20
|
+
/** Insert one owned block while preserving every pre-existing byte in order. */
|
|
21
|
+
export declare function insertObservationBlock(current: string, block: string): string | null;
|
|
22
|
+
export declare function replaceObservationBlock(current: string, id: string, replacement: string): string | null;
|
|
23
|
+
/** Marker-looking examples inside fenced code are authored text, not Akno-owned blocks. */
|
|
24
|
+
export declare function structuralObservationMarkerIndexes(lines: string[], includesFrontmatter?: boolean, stopAtSourceFence?: boolean): Set<number>;
|
|
25
|
+
export declare function observationMarkerIndexes(lines: string[], id: string, includesFrontmatter?: boolean): number[];
|
|
26
|
+
export declare function independentProofGroups(evidence: ObservationEvidenceLocator[]): Set<string>;
|
|
27
|
+
//# sourceMappingURL=marker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marker.d.ts","sourceRoot":"","sources":["../../src/observations/marker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGpE,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,sBAAsB,CAAC;IACpC,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;CACpB;AASD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAQzE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CA4B7E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAa/E;AAQD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAa/F;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EAAE,GACtB,MAAM,CAER;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmCpF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOvG;AAED,2FAA2F;AAC3F,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,MAAM,EAAE,EACf,mBAAmB,UAAQ,EAC3B,iBAAiB,UAAO,GACvB,GAAG,CAAC,MAAM,CAAC,CAwBb;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,mBAAmB,UAAQ,GAAG,MAAM,EAAE,CAI3G;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,0BAA0B,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAE1F"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { sha256 } from "../store/ids.js";
|
|
2
|
+
const ID = /^obs_[A-Za-z0-9_-]{8,72}$/;
|
|
3
|
+
const ENTITY = /^ent_[A-Za-z0-9_-]{4,80}$/;
|
|
4
|
+
const FACT = /^[A-Za-z0-9_-]{4,160}$/;
|
|
5
|
+
const HASH = /^[a-f0-9]{32,64}$/;
|
|
6
|
+
const PROOF = /^[A-Za-z0-9:_-]{4,180}$/;
|
|
7
|
+
const DISPOSITIONS = new Set(['active', 'weakened', 'retracted', 'superseded']);
|
|
8
|
+
export function observationId(subject, pattern) {
|
|
9
|
+
return `obs_${sha256(`${subject}\0${normalisePattern(pattern)}`).slice(0, 24)}`;
|
|
10
|
+
}
|
|
11
|
+
export function renderObservationMarker(marker) {
|
|
12
|
+
const issue = observationMarkerIssue(marker);
|
|
13
|
+
if (issue)
|
|
14
|
+
throw new Error(`invalid observation marker: ${issue}`);
|
|
15
|
+
return (`<!-- akno:observation ${marker.id} v=1 level=2 subject=${marker.subject} ` +
|
|
16
|
+
`disposition=${marker.disposition} evidence=${marker.evidence.map(renderLocator).join(',')} ` +
|
|
17
|
+
`proofs=${marker.proofCount} -->`);
|
|
18
|
+
}
|
|
19
|
+
export function parseObservationMarker(line) {
|
|
20
|
+
const match = /^\s*<!--\s*akno:observation\s+(obs_[A-Za-z0-9_-]{8,72})\s+(.+?)\s*-->\s*$/i.exec(line);
|
|
21
|
+
if (!match)
|
|
22
|
+
return null;
|
|
23
|
+
const tokens = match[2].split(/\s+/);
|
|
24
|
+
let cursor = 0;
|
|
25
|
+
const take = (name) => {
|
|
26
|
+
const token = tokens[cursor];
|
|
27
|
+
if (!token?.startsWith(`${name}=`))
|
|
28
|
+
return null;
|
|
29
|
+
cursor += 1;
|
|
30
|
+
return token.slice(name.length + 1);
|
|
31
|
+
};
|
|
32
|
+
if (take('v') !== '1' || take('level') !== '2')
|
|
33
|
+
return null;
|
|
34
|
+
const subject = take('subject');
|
|
35
|
+
const disposition = take('disposition');
|
|
36
|
+
const evidenceRaw = take('evidence');
|
|
37
|
+
const proofCountRaw = take('proofs');
|
|
38
|
+
if (!subject || !disposition || !evidenceRaw || !proofCountRaw || cursor !== tokens.length)
|
|
39
|
+
return null;
|
|
40
|
+
const evidence = evidenceRaw.split(',').map(parseLocator);
|
|
41
|
+
const proofCount = Number(proofCountRaw);
|
|
42
|
+
if (evidence.some((entry) => entry === null) || !Number.isInteger(proofCount))
|
|
43
|
+
return null;
|
|
44
|
+
const marker = {
|
|
45
|
+
id: match[1],
|
|
46
|
+
subject,
|
|
47
|
+
disposition: disposition,
|
|
48
|
+
evidence: evidence,
|
|
49
|
+
proofCount,
|
|
50
|
+
};
|
|
51
|
+
return observationMarkerIssue(marker) ? null : marker;
|
|
52
|
+
}
|
|
53
|
+
export function observationMarkerIssue(marker) {
|
|
54
|
+
if (!ID.test(marker.id))
|
|
55
|
+
return 'invalid id';
|
|
56
|
+
if (!ENTITY.test(marker.subject))
|
|
57
|
+
return 'unresolved subject';
|
|
58
|
+
if (!DISPOSITIONS.has(marker.disposition))
|
|
59
|
+
return 'invalid disposition';
|
|
60
|
+
if (marker.evidence.length < 2 || marker.evidence.length > 12)
|
|
61
|
+
return 'invalid evidence count';
|
|
62
|
+
if (new Set(marker.evidence.map((entry) => entry.factId)).size !== marker.evidence.length) {
|
|
63
|
+
return 'duplicate evidence';
|
|
64
|
+
}
|
|
65
|
+
if (marker.evidence.some(locatorIssue))
|
|
66
|
+
return 'invalid evidence locator';
|
|
67
|
+
const proofs = independentProofGroups(marker.evidence);
|
|
68
|
+
if (marker.proofCount !== proofs.size)
|
|
69
|
+
return 'proof-count mismatch';
|
|
70
|
+
if (marker.proofCount < 2)
|
|
71
|
+
return 'insufficient independent proof';
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
function renderObservationPayload(pattern, evidenceSlugs) {
|
|
75
|
+
const body = pattern.trim().replace(/^[-*]\s+/, '');
|
|
76
|
+
const links = [...new Set(evidenceSlugs)].map((slug) => `[[${slug}]]`).join(' ');
|
|
77
|
+
return `- **Observation:** ${body} Evidence: ${links}`;
|
|
78
|
+
}
|
|
79
|
+
export function observationPayloadIssue(payload, evidenceSlugs) {
|
|
80
|
+
const match = /^- \*\*Observation:\*\* (.+?) Evidence: ((?:\[\[[^\]]+\]\](?:\s+|$))+)$/u.exec(payload);
|
|
81
|
+
if (!payload.startsWith('- **Observation:** '))
|
|
82
|
+
return 'missing visible observation label';
|
|
83
|
+
if (!payload.includes(' Evidence: '))
|
|
84
|
+
return 'missing visible evidence label';
|
|
85
|
+
if (!match?.[1]?.trim())
|
|
86
|
+
return 'invalid visible observation payload';
|
|
87
|
+
const linked = [...match[2].matchAll(/\[\[([^\]|#]+)(?:[#|][^\]]*)?\]\]/g)].map((entry) => entry[1]);
|
|
88
|
+
const links = new Set(linked);
|
|
89
|
+
const expected = new Set(evidenceSlugs);
|
|
90
|
+
return linked.length === links.size &&
|
|
91
|
+
links.size === expected.size &&
|
|
92
|
+
[...expected].every((slug) => links.has(slug))
|
|
93
|
+
? null
|
|
94
|
+
: 'visible evidence links do not match lineage';
|
|
95
|
+
}
|
|
96
|
+
export function observationBlock(marker, pattern, evidenceSlugs) {
|
|
97
|
+
return `${renderObservationMarker(marker)}\n${renderObservationPayload(pattern, evidenceSlugs)}`;
|
|
98
|
+
}
|
|
99
|
+
/** Insert one owned block while preserving every pre-existing byte in order. */
|
|
100
|
+
export function insertObservationBlock(current, block) {
|
|
101
|
+
const newline = current.includes('\r\n') ? '\r\n' : '\n';
|
|
102
|
+
const normalisedBlock = block.replaceAll('\n', newline);
|
|
103
|
+
const structure = markdownStructure(current);
|
|
104
|
+
const headings = structure.headings;
|
|
105
|
+
const matches = headings.filter((heading) => heading.level === 2 && /^Observed patterns$/i.test(heading.text));
|
|
106
|
+
if (matches.length > 1)
|
|
107
|
+
return null;
|
|
108
|
+
const match = matches[0];
|
|
109
|
+
if (!match && structure.sourceFence === null) {
|
|
110
|
+
const separator = current.length === 0
|
|
111
|
+
? ''
|
|
112
|
+
: current.endsWith(`${newline}${newline}`)
|
|
113
|
+
? ''
|
|
114
|
+
: current.endsWith(newline)
|
|
115
|
+
? newline
|
|
116
|
+
: `${newline}${newline}`;
|
|
117
|
+
return `${current}${separator}## Observed patterns${newline}${newline}${normalisedBlock}${newline}`;
|
|
118
|
+
}
|
|
119
|
+
const nextHeading = match
|
|
120
|
+
? headings.find((heading) => heading.index > match.index && heading.level <= 2)
|
|
121
|
+
: undefined;
|
|
122
|
+
const insertionAt = nextHeading?.index ?? structure.sourceFence ?? current.length;
|
|
123
|
+
const before = current.slice(0, insertionAt);
|
|
124
|
+
const after = current.slice(insertionAt);
|
|
125
|
+
const insertion = match ? normalisedBlock : `## Observed patterns${newline}${newline}${normalisedBlock}`;
|
|
126
|
+
const prefix = before.endsWith(`${newline}${newline}`)
|
|
127
|
+
? ''
|
|
128
|
+
: before.endsWith(newline)
|
|
129
|
+
? newline
|
|
130
|
+
: `${newline}${newline}`;
|
|
131
|
+
const suffix = after.length === 0 || after.startsWith(newline) ? newline : `${newline}${newline}`;
|
|
132
|
+
return `${before}${prefix}${insertion}${suffix}${after}`;
|
|
133
|
+
}
|
|
134
|
+
export function replaceObservationBlock(current, id, replacement) {
|
|
135
|
+
const newline = current.includes('\r\n') ? '\r\n' : '\n';
|
|
136
|
+
const lines = current.split(/\r?\n/);
|
|
137
|
+
const markerIndexes = observationMarkerIndexes(lines, id, true);
|
|
138
|
+
if (markerIndexes.length !== 1 || lines[markerIndexes[0] + 1] === undefined)
|
|
139
|
+
return null;
|
|
140
|
+
lines.splice(markerIndexes[0], 2, ...replacement.replaceAll('\n', newline).split(newline));
|
|
141
|
+
return lines.join(newline);
|
|
142
|
+
}
|
|
143
|
+
/** Marker-looking examples inside fenced code are authored text, not Akno-owned blocks. */
|
|
144
|
+
export function structuralObservationMarkerIndexes(lines, includesFrontmatter = false, stopAtSourceFence = true) {
|
|
145
|
+
const indexes = new Set();
|
|
146
|
+
let frontmatter = includesFrontmatter && lines[0]?.replace(/\r$/, '') === '---';
|
|
147
|
+
let fence = null;
|
|
148
|
+
for (let index = 0; index < lines.length; index++) {
|
|
149
|
+
const raw = lines[index];
|
|
150
|
+
if (frontmatter) {
|
|
151
|
+
if (index > 0 && raw.replace(/\r$/, '') === '---')
|
|
152
|
+
frontmatter = false;
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (fence) {
|
|
156
|
+
const closing = /^\s*(`{3,}|~{3,})\s*$/.exec(raw)?.[1];
|
|
157
|
+
if (closing?.[0] === fence.character && closing.length >= fence.length)
|
|
158
|
+
fence = null;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
const opening = /^\s*(`{3,}|~{3,})/.exec(raw)?.[1];
|
|
162
|
+
if (opening) {
|
|
163
|
+
fence = { character: opening[0], length: opening.length };
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
if (stopAtSourceFence && /^\s*<!--\s*source\s*-->\s*$/i.test(raw))
|
|
167
|
+
break;
|
|
168
|
+
if (/^\s*<!--\s*akno:observation\b/i.test(raw))
|
|
169
|
+
indexes.add(index);
|
|
170
|
+
}
|
|
171
|
+
return indexes;
|
|
172
|
+
}
|
|
173
|
+
export function observationMarkerIndexes(lines, id, includesFrontmatter = false) {
|
|
174
|
+
return [...structuralObservationMarkerIndexes(lines, includesFrontmatter, true)].filter((index) => parseObservationMarker(lines[index])?.id === id);
|
|
175
|
+
}
|
|
176
|
+
export function independentProofGroups(evidence) {
|
|
177
|
+
return new Set(evidence.flatMap((entry) => entry.proofGroups));
|
|
178
|
+
}
|
|
179
|
+
function renderLocator(locator) {
|
|
180
|
+
return `${locator.factId}@${locator.sourceLineHash}@${locator.proofGroups.join('+')}`;
|
|
181
|
+
}
|
|
182
|
+
function parseLocator(value) {
|
|
183
|
+
const [factId, sourceLineHash, proofRaw, extra] = value.split('@');
|
|
184
|
+
if (!factId || !sourceLineHash || !proofRaw || extra !== undefined)
|
|
185
|
+
return null;
|
|
186
|
+
const proofGroups = proofRaw.split('+');
|
|
187
|
+
const locator = { factId, sourceLineHash, proofGroups };
|
|
188
|
+
return locatorIssue(locator) ? null : locator;
|
|
189
|
+
}
|
|
190
|
+
function locatorIssue(locator) {
|
|
191
|
+
return (!FACT.test(locator.factId) ||
|
|
192
|
+
!HASH.test(locator.sourceLineHash) ||
|
|
193
|
+
locator.proofGroups.length === 0 ||
|
|
194
|
+
locator.proofGroups.length > 8 ||
|
|
195
|
+
new Set(locator.proofGroups).size !== locator.proofGroups.length ||
|
|
196
|
+
locator.proofGroups.some((group) => !PROOF.test(group)));
|
|
197
|
+
}
|
|
198
|
+
function normalisePattern(value) {
|
|
199
|
+
return value.normalize('NFKC').toLowerCase().replace(/\s+/g, ' ').trim();
|
|
200
|
+
}
|
|
201
|
+
/** Headings that are Markdown structure, excluding frontmatter and fenced examples. */
|
|
202
|
+
function markdownStructure(content) {
|
|
203
|
+
const headings = [];
|
|
204
|
+
let sourceFence = null;
|
|
205
|
+
const lines = [...content.matchAll(/.*?(?:\r\n|\n|$)/g)].filter((match) => match[0].length > 0);
|
|
206
|
+
let frontmatter = lines[0]?.[0].replace(/\r?\n$/, '') === '---';
|
|
207
|
+
let fence = null;
|
|
208
|
+
for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
|
|
209
|
+
const match = lines[lineIndex];
|
|
210
|
+
const raw = match[0].replace(/\r?\n$/, '');
|
|
211
|
+
if (frontmatter) {
|
|
212
|
+
if (lineIndex > 0 && raw === '---')
|
|
213
|
+
frontmatter = false;
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
if (fence) {
|
|
217
|
+
const closing = /^\s*(`{3,}|~{3,})\s*$/.exec(raw)?.[1];
|
|
218
|
+
if (closing?.[0] === fence.character && closing.length >= fence.length)
|
|
219
|
+
fence = null;
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
const opening = /^\s*(`{3,}|~{3,})/.exec(raw)?.[1];
|
|
223
|
+
if (opening) {
|
|
224
|
+
fence = { character: opening[0], length: opening.length };
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (/^<!--\s*source\s*-->\s*$/i.test(raw)) {
|
|
228
|
+
sourceFence = match.index;
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
const heading = /^(#{1,6})\s+(.+?)\s*#*\s*$/.exec(raw);
|
|
232
|
+
if (heading) {
|
|
233
|
+
headings.push({ index: match.index, level: heading[1].length, text: heading[2].trim() });
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return { headings, sourceFence };
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=marker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marker.js","sourceRoot":"","sources":["../../src/observations/marker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Line } from '@tenphi/akno-protocol';
|
|
2
|
+
import type { Store } from '../store/db.ts';
|
|
3
|
+
import type { ParsedPage } from '../kb/page.ts';
|
|
4
|
+
import { type ObservationMarker } from './marker.ts';
|
|
5
|
+
export declare const OBSERVATION_PROJECTION_VERSION = "observation-v1";
|
|
6
|
+
export interface ObservationProjectionReport {
|
|
7
|
+
indexed: number;
|
|
8
|
+
issues: number;
|
|
9
|
+
}
|
|
10
|
+
/** Parse only owned blocks here. Evidence becomes eligible after the fact graph is rebuilt. */
|
|
11
|
+
export declare function replaceObservationEntries(store: Store, pageId: string, page: ParsedPage): ObservationProjectionReport;
|
|
12
|
+
/**
|
|
13
|
+
* Recompute authority and lineage from current facts. Query paths trust only this result,
|
|
14
|
+
* so a retracted source stops supporting an observation in the same index pass even when
|
|
15
|
+
* policy prevents rewriting the visible block.
|
|
16
|
+
*/
|
|
17
|
+
export declare function qualifyObservationEntries(store: Store, minEvidence?: number): ObservationProjectionReport;
|
|
18
|
+
export declare function qualifyObservationLines<T extends Line>(store: Store, pageId: string, lines: T[], allLines?: string[]): T[];
|
|
19
|
+
export declare function proofGroupsForFact(store: Store, factId: string, pageId?: string, itemId?: string | null): Set<string>;
|
|
20
|
+
/** Current independently owned support that still matches an observation's exact subject and line. */
|
|
21
|
+
export declare function liveObservationProofGroups(store: Store, marker: ObservationMarker): Set<string>;
|
|
22
|
+
export declare function markerFromProjection(store: Store, id: string): ObservationMarker | null;
|
|
23
|
+
//# sourceMappingURL=projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../src/observations/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAiD,MAAM,uBAAuB,CAAC;AAEjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAE/D,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+FAA+F;AAC/F,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GACf,2BAA2B,CA+E7B;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,SAAI,GAAG,2BAA2B,CAmCpG;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,IAAI,EACpD,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,CAAC,EAAE,CAiGL;AAuHD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACrB,GAAG,CAAC,MAAM,CAAC,CAkBb;AAED,sGAAsG;AACtG,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,CA0C/F;AAiDD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAWvF"}
|