@oomkapwn/enquire-mcp 3.11.5 → 3.11.6-rc.2
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/CHANGELOG.md +12 -0
- package/README.ar.md +3 -3
- package/README.de.md +4 -4
- package/README.es.md +2 -2
- package/README.fr.md +4 -4
- package/README.hi.md +3 -3
- package/README.ja.md +3 -3
- package/README.ko.md +4 -4
- package/README.md +4 -4
- package/README.pt.md +4 -4
- package/README.ru.md +4 -4
- package/README.zh.md +3 -3
- package/dist/fts5.d.ts.map +1 -1
- package/dist/fts5.js +7 -44
- package/dist/fts5.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/parser.d.ts +13 -0
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +41 -1
- package/dist/parser.js.map +1 -1
- package/dist/structure.d.ts +47 -0
- package/dist/structure.d.ts.map +1 -0
- package/dist/structure.js +86 -0
- package/dist/structure.js.map +1 -0
- package/dist/tools/meta.d.ts.map +1 -1
- package/dist/tools/meta.js +13 -39
- package/dist/tools/meta.js.map +1 -1
- package/dist/tools/read.d.ts +11 -0
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +3 -46
- package/dist/tools/read.js.map +1 -1
- package/docs/COMPARISON.md +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -40,7 +40,7 @@ import { main } from "./cli.js";
|
|
|
40
40
|
* + `McpServer({version})`) and `src/tool-registry.ts` (used in the
|
|
41
41
|
* `vault-info` resource payload).
|
|
42
42
|
*/
|
|
43
|
-
export const VERSION = "3.11.
|
|
43
|
+
export const VERSION = "3.11.6-rc.2";
|
|
44
44
|
// Re-exports — preserve the v3.5.x public surface so http-transport.ts and
|
|
45
45
|
// tests don't need to know about the new module layout. The set below
|
|
46
46
|
// exactly matches the v3.5.x `export` declarations: `main`,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,yEAAyE;AACzE,8EAA8E;AAC9E,EAAE;AACF,sEAAsE;AACtE,uEAAuE;AACvE,qEAAqE;AACrE,kEAAkE;AAClE,kEAAkE;AAClE,EAAE;AACF,kBAAkB;AAClB,iFAAiF;AACjF,2FAA2F;AAC3F,wFAAwF;AACxF,sFAAsF;AACtF,sFAAsF;AACtF,yFAAyF;AACzF,gEAAgE;AAChE,2EAA2E;AAC3E,sEAAsE;AACtE,uFAAuF;AACvF,sFAAsF;AACtF,EAAE;AACF,yEAAyE;AACzE,wBAAwB;AACxB,2EAA2E;AAC3E,yEAAyE;AACzE,6EAA6E;AAC7E,+DAA+D;AAC/D,sFAAsF;AACtF,0EAA0E;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,yEAAyE;AACzE,8EAA8E;AAC9E,EAAE;AACF,sEAAsE;AACtE,uEAAuE;AACvE,qEAAqE;AACrE,kEAAkE;AAClE,kEAAkE;AAClE,EAAE;AACF,kBAAkB;AAClB,iFAAiF;AACjF,2FAA2F;AAC3F,wFAAwF;AACxF,sFAAsF;AACtF,sFAAsF;AACtF,yFAAyF;AACzF,gEAAgE;AAChE,2EAA2E;AAC3E,sEAAsE;AACtE,uFAAuF;AACvF,sFAAsF;AACtF,EAAE;AACF,yEAAyE;AACzE,wBAAwB;AACxB,2EAA2E;AAC3E,yEAAyE;AACzE,6EAA6E;AAC7E,+DAA+D;AAC/D,sFAAsF;AACtF,0EAA0E;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;AAErC,2EAA2E;AAC3E,sEAAsE;AACtE,4DAA4D;AAC5D,6EAA6E;AAC7E,sEAAsE;AACtE,sEAAsE;AACtE,2EAA2E;AAC3E,4EAA4E;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EAGjB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,4DAA4D;AAC5D,yEAAyE;AACzE,wEAAwE;AACxE,6EAA6E;AAC7E,sDAAsD;AACtD,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;IACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,CAAC;QACH,oEAAoE;QACpE,mEAAmE;QACnE,wEAAwE;QACxE,2EAA2E;QAC3E,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,IAAI,KAAK,IAAI,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,IAAI,UAAU,EAAE,CAAC;IACf,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/parser.d.ts
CHANGED
|
@@ -157,6 +157,19 @@ export declare function extractFrontmatterTags(fm: Record<string, unknown>): str
|
|
|
157
157
|
* Exported in v3.11.5-rc.3 (post-rc.2 re-sweep, PARSER-DESYNC class) — several always-on
|
|
158
158
|
* tools (query_base, get_communities, validate_note_proposal) re-extracted from the RAW
|
|
159
159
|
* body and disagreed with this sanitizer; guarded by `tests/parser-desync-invariant.test.ts`.
|
|
160
|
+
*
|
|
161
|
+
* v3.11.6-rc.1 — reconciled with the char-aware line-walkers on the UNCLOSED-fence shape:
|
|
162
|
+
* the paired regexes require a closing fence, so an unclosed ` ``` ` used to leak its body
|
|
163
|
+
* (phantom links/tags), while the walkers correctly treat it as code-to-EOF. `dropUnclosedBlockFence`
|
|
164
|
+
* closes that divergence up front. Now covered by `tests/canonical-parser-agreement.test.ts`.
|
|
165
|
+
*
|
|
166
|
+
* KNOWN RESIDUAL (pre-existing, deferred): the non-greedy paired regexes still diverge from the
|
|
167
|
+
* char-aware walkers on an EXOTIC shape — a line-leading self-contained inline `` ``` `` span
|
|
168
|
+
* *inside* a fenced block makes the regex pair fences early, so a `[[link]]`/`#tag` still inside the
|
|
169
|
+
* block can surface as a phantom (a read-side false positive in `buildWikilinkGraph`/`queryBase`/
|
|
170
|
+
* `validateNoteProposal`; not DoS, not data loss). This is the regex-vs-char-aware gap the meta-audit
|
|
171
|
+
* named for the deferred canonical structure accessors (a fence-aware iterator on `ParsedNote`), not a
|
|
172
|
+
* v3.11.6-rc.1 regression — the behavior is byte-identical to prior stable on that shape.
|
|
160
173
|
*/
|
|
161
174
|
export declare function stripCodeAndInline(text: string): string;
|
|
162
175
|
//# sourceMappingURL=parser.d.ts.map
|
package/dist/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB;wEACoE;IACpE,GAAG,EAAE,MAAM,CAAC;IACZ;+DAC2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;wDACwD;AACxD,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;AAE7B;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb;;;;oCAIgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,wEAAwE;IACxE,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB;8EAC0E;IAC1E,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CA8BpD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,MAAM,EAAE,CA6CxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAEzD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,CAEnD;AAmCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,QAA+C,CAAC;AAE1E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxD;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAiB5E;AAyCD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvD"}
|
package/dist/parser.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { advanceFence } from "./fence.js";
|
|
1
2
|
import { parseFrontmatter } from "./frontmatter.js";
|
|
2
3
|
import { lookupFoldedAny, nfc } from "./name-fold.js";
|
|
3
4
|
import { splitLines } from "./wildcard-match.js";
|
|
@@ -256,6 +257,32 @@ function collectTags(fm, body) {
|
|
|
256
257
|
out.add(t);
|
|
257
258
|
return [...out];
|
|
258
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* Drop an UNCLOSED block code fence (an opening ` ``` ` / `~~~` line with no matching close
|
|
262
|
+
* before EOF) and everything after it. Per CommonMark §4.5 an unclosed fence runs to
|
|
263
|
+
* end-of-document, so its body is code — exactly what the char-aware line-walkers
|
|
264
|
+
* (`advanceFence`, used by read.ts / meta.ts / fts5.ts / write.ts) already do. The paired-fence
|
|
265
|
+
* regexes in `stripCodeAndInline` REQUIRE a closing fence, so without this an unclosed fence's
|
|
266
|
+
* body would survive and every parser-based always-on tool (`buildWikilinkGraph`, `queryBase`,
|
|
267
|
+
* `validateNoteProposal`) would surface phantom wikilinks / tags / questions from inside it.
|
|
268
|
+
* Shares the fence primitive with the walkers so the two can never diverge on this shape.
|
|
269
|
+
* Well-formed notes (all fences paired) are returned byte-unchanged.
|
|
270
|
+
*/
|
|
271
|
+
function dropUnclosedBlockFence(text) {
|
|
272
|
+
const lines = splitLines(text); // terminator-aware (CR/LS/PS), matches the walkers + rc.23 inventory
|
|
273
|
+
let marker = null;
|
|
274
|
+
let openLine = -1;
|
|
275
|
+
for (let i = 0; i < lines.length; i++) {
|
|
276
|
+
const wasOutside = marker === null;
|
|
277
|
+
const st = advanceFence(lines[i] ?? "", marker);
|
|
278
|
+
marker = st.marker;
|
|
279
|
+
if (wasOutside && marker !== null)
|
|
280
|
+
openLine = i; // this line opened a block fence
|
|
281
|
+
else if (marker === null)
|
|
282
|
+
openLine = -1; // a matching close returned us outside
|
|
283
|
+
}
|
|
284
|
+
return marker !== null && openLine >= 0 ? lines.slice(0, openLine).join("\n") : text;
|
|
285
|
+
}
|
|
259
286
|
/**
|
|
260
287
|
* Strip fenced (` ``` ` / `~~~`) and inline (`` `…` ``) code from Markdown so that
|
|
261
288
|
* `[[wikilinks]]`, `#tags`, and `![[embeds]]` inside code are NOT treated as real —
|
|
@@ -266,9 +293,22 @@ function collectTags(fm, body) {
|
|
|
266
293
|
* Exported in v3.11.5-rc.3 (post-rc.2 re-sweep, PARSER-DESYNC class) — several always-on
|
|
267
294
|
* tools (query_base, get_communities, validate_note_proposal) re-extracted from the RAW
|
|
268
295
|
* body and disagreed with this sanitizer; guarded by `tests/parser-desync-invariant.test.ts`.
|
|
296
|
+
*
|
|
297
|
+
* v3.11.6-rc.1 — reconciled with the char-aware line-walkers on the UNCLOSED-fence shape:
|
|
298
|
+
* the paired regexes require a closing fence, so an unclosed ` ``` ` used to leak its body
|
|
299
|
+
* (phantom links/tags), while the walkers correctly treat it as code-to-EOF. `dropUnclosedBlockFence`
|
|
300
|
+
* closes that divergence up front. Now covered by `tests/canonical-parser-agreement.test.ts`.
|
|
301
|
+
*
|
|
302
|
+
* KNOWN RESIDUAL (pre-existing, deferred): the non-greedy paired regexes still diverge from the
|
|
303
|
+
* char-aware walkers on an EXOTIC shape — a line-leading self-contained inline `` ``` `` span
|
|
304
|
+
* *inside* a fenced block makes the regex pair fences early, so a `[[link]]`/`#tag` still inside the
|
|
305
|
+
* block can surface as a phantom (a read-side false positive in `buildWikilinkGraph`/`queryBase`/
|
|
306
|
+
* `validateNoteProposal`; not DoS, not data loss). This is the regex-vs-char-aware gap the meta-audit
|
|
307
|
+
* named for the deferred canonical structure accessors (a fence-aware iterator on `ParsedNote`), not a
|
|
308
|
+
* v3.11.6-rc.1 regression — the behavior is byte-identical to prior stable on that shape.
|
|
269
309
|
*/
|
|
270
310
|
export function stripCodeAndInline(text) {
|
|
271
|
-
return text
|
|
311
|
+
return dropUnclosedBlockFence(text)
|
|
272
312
|
.replace(/```[\s\S]*?```/g, "")
|
|
273
313
|
.replace(/~~~[\s\S]*?~~~/g, "")
|
|
274
314
|
.replace(/`[^`\n]*`/g, "");
|
package/dist/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ParsedNote } from "./parser.js";
|
|
2
|
+
/** One line of a note, fence-classified, with its heading + breadcrumb context. */
|
|
3
|
+
export interface StructLine {
|
|
4
|
+
/** The line text, terminator-stripped (identical to `splitLines(text)[index]`). */
|
|
5
|
+
text: string;
|
|
6
|
+
/** The exact terminator that followed this line (`""` for the last line) — for byte-faithful write-back. */
|
|
7
|
+
end: string;
|
|
8
|
+
/** 0-based index into the walked string. */
|
|
9
|
+
index: number;
|
|
10
|
+
/** 1-based FILE-absolute line number (= base + index). */
|
|
11
|
+
line: number;
|
|
12
|
+
/** True iff this line is a block-fence DELIMITER or is INSIDE a block fence (i.e. not eligible to be a heading). */
|
|
13
|
+
inFence: boolean;
|
|
14
|
+
/** True iff this line opened/closed a matching block fence. */
|
|
15
|
+
isFenceDelimiter: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* The ATX heading on this line, iff it is OUTSIDE a fence and matches {@link HEADING_RE}. `text`
|
|
18
|
+
* is the stripped heading text and MAY be `""` for a degenerate all-hashes heading (`# ###`) —
|
|
19
|
+
* callers decide: read/meta treat empty text as "not a real heading" (`if (l.heading?.text)`),
|
|
20
|
+
* fts5 pushes it to the breadcrumb stack regardless (its long-standing behavior, preserved here).
|
|
21
|
+
*/
|
|
22
|
+
heading?: {
|
|
23
|
+
level: number;
|
|
24
|
+
text: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* The full H1 > H2 > H3 heading stack in scope AT this line (a heading line includes itself),
|
|
28
|
+
* computed with fts5's exact semantics (pushes even a degenerate empty heading). `breadcrumb.at(-1)`
|
|
29
|
+
* is the nearest-heading text; `breadcrumb.join(" > ")` is fts5's per-line breadcrumb.
|
|
30
|
+
*/
|
|
31
|
+
breadcrumb: string[];
|
|
32
|
+
}
|
|
33
|
+
/** Fence-aware line iterator over a note BODY (line numbers file-absolute via `parsed.bodyStartLine`). */
|
|
34
|
+
export declare function iterateBodyLines(parsed: ParsedNote): Generator<StructLine>;
|
|
35
|
+
/** Fence-aware line iterator over full note CONTENT (frontmatter included; line 1 = content line 1). */
|
|
36
|
+
export declare function iterateContentLines(content: string): Generator<StructLine>;
|
|
37
|
+
/**
|
|
38
|
+
* The ATX headings of a note body, file-absolute line numbers, in document order. A degenerate
|
|
39
|
+
* all-hashes heading (`# ###` → empty text) is skipped (byte-identical to read.ts extractHeadings /
|
|
40
|
+
* meta.ts's real-heading check). Headings inside code fences are excluded.
|
|
41
|
+
*/
|
|
42
|
+
export declare function noteHeadings(parsed: ParsedNote): Array<{
|
|
43
|
+
level: number;
|
|
44
|
+
text: string;
|
|
45
|
+
line: number;
|
|
46
|
+
}>;
|
|
47
|
+
//# sourceMappingURL=structure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../src/structure.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ9C,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,4GAA4G;IAC5G,GAAG,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,oHAAoH;IACpH,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C;;;;OAIG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AA0CD,0GAA0G;AAC1G,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAE1E;AAED,wGAAwG;AACxG,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAMrG"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Canonical note-STRUCTURE accessors — v3.11.6-rc.2.
|
|
2
|
+
//
|
|
3
|
+
// The fence/parser-desync class (~6 RCs) had one root cause the meta-audit named: src/parser.ts
|
|
4
|
+
// exposed only {frontmatter, body, wikilinks, embeds, tags} — NO canonical line-structure accessor.
|
|
5
|
+
// So every tool that must walk lines fence-aware (write ×2 rewriters, read heading map, meta
|
|
6
|
+
// open-questions, fts5 breadcrumb) HAND-ROLLED the identical loop:
|
|
7
|
+
// const lines = splitLines(body); let marker = null;
|
|
8
|
+
// for (…) { const st = advanceFence(line, marker); marker = st.marker;
|
|
9
|
+
// if (st.delimiter || marker !== null) …; else if (heading) … }
|
|
10
|
+
// copied 5× — and stripCodeAndInline used a DIFFERENT mechanism (paired non-greedy regexes), which
|
|
11
|
+
// is why they could diverge. This module is the single line-structure authority: ONE fence walk
|
|
12
|
+
// (via fence.ts advanceFence) + ONE heading parse (the CRLF/ReDoS-safe helpers), consumed by all.
|
|
13
|
+
//
|
|
14
|
+
// EXPOSED AS FREE FUNCTIONS over text / ParsedNote — never as methods/getters on ParsedNote. That
|
|
15
|
+
// is load-bearing, not stylistic: the disk cache JSON.stringify's `cached.parsed` and JSON.parse's
|
|
16
|
+
// it back as a PLAIN object (vault.ts), so a method/getter would be lost on reload and a new
|
|
17
|
+
// enumerable field would inflate every cached row + force a DISK_CACHE_VERSION bump that
|
|
18
|
+
// invalidates every user's persisted cache. Free functions keep ParsedNote's 6 fields
|
|
19
|
+
// byte-identical → zero cache impact, no version bump.
|
|
20
|
+
import { advanceFence } from "./fence.js";
|
|
21
|
+
import { splitLinesWithEnds, stripTrailingHashes, stripTrailingLineEnds } from "./wildcard-match.js";
|
|
22
|
+
/** The ATX-heading shape shared by read.ts / meta.ts / fts5.ts (a single anchored capture — NOT
|
|
23
|
+
* the combined `(.+?)\s*#*\s*$` form, which is the CodeQL js/polynomial-redos class the walkers
|
|
24
|
+
* split out; text is trimmed of trailing ATX-close `#` via the linear `stripTrailingHashes`). */
|
|
25
|
+
const HEADING_RE = /^(#{1,6})\s+(.+)$/;
|
|
26
|
+
/**
|
|
27
|
+
* Walk `text` line by line, fence-aware, yielding a {@link StructLine} per line. `base` is the
|
|
28
|
+
* 1-based file line number of the FIRST line (body walks pass `bodyStartLine`; content walks pass 1).
|
|
29
|
+
* INTERNAL — callers use {@link iterateBodyLines} / {@link iterateContentLines} so `base` is never a
|
|
30
|
+
* per-call decision (a wrong base silently shifts every line number — the rc.47 range-arithmetic class).
|
|
31
|
+
*/
|
|
32
|
+
function* iterateLines(text, base) {
|
|
33
|
+
const { lines, ends } = splitLinesWithEnds(text);
|
|
34
|
+
let marker = null;
|
|
35
|
+
const stack = []; // index = depth-1, value = heading text (fts5-exact)
|
|
36
|
+
for (let i = 0; i < lines.length; i++) {
|
|
37
|
+
const t = lines[i] ?? "";
|
|
38
|
+
const st = advanceFence(t, marker);
|
|
39
|
+
marker = st.marker;
|
|
40
|
+
const inFence = st.delimiter || marker !== null;
|
|
41
|
+
let heading;
|
|
42
|
+
if (!inFence) {
|
|
43
|
+
const m = HEADING_RE.exec(stripTrailingLineEnds(t));
|
|
44
|
+
if (m?.[1] && m[2]) {
|
|
45
|
+
const level = m[1].length;
|
|
46
|
+
const htext = stripTrailingHashes(m[2].trim()).trim();
|
|
47
|
+
heading = { level, text: htext };
|
|
48
|
+
// fts5-exact breadcrumb stack: push on any heading-SHAPED line, even if htext === "".
|
|
49
|
+
stack.length = level - 1;
|
|
50
|
+
stack.push(htext);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
yield {
|
|
54
|
+
text: t,
|
|
55
|
+
end: ends[i] ?? "",
|
|
56
|
+
index: i,
|
|
57
|
+
line: base + i,
|
|
58
|
+
inFence,
|
|
59
|
+
isFenceDelimiter: st.delimiter,
|
|
60
|
+
heading,
|
|
61
|
+
breadcrumb: [...stack]
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Fence-aware line iterator over a note BODY (line numbers file-absolute via `parsed.bodyStartLine`). */
|
|
66
|
+
export function iterateBodyLines(parsed) {
|
|
67
|
+
return iterateLines(parsed.body, parsed.bodyStartLine);
|
|
68
|
+
}
|
|
69
|
+
/** Fence-aware line iterator over full note CONTENT (frontmatter included; line 1 = content line 1). */
|
|
70
|
+
export function iterateContentLines(content) {
|
|
71
|
+
return iterateLines(content, 1);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The ATX headings of a note body, file-absolute line numbers, in document order. A degenerate
|
|
75
|
+
* all-hashes heading (`# ###` → empty text) is skipped (byte-identical to read.ts extractHeadings /
|
|
76
|
+
* meta.ts's real-heading check). Headings inside code fences are excluded.
|
|
77
|
+
*/
|
|
78
|
+
export function noteHeadings(parsed) {
|
|
79
|
+
const out = [];
|
|
80
|
+
for (const l of iterateBodyLines(parsed)) {
|
|
81
|
+
if (l.heading?.text)
|
|
82
|
+
out.push({ level: l.heading.level, text: l.heading.text, line: l.line });
|
|
83
|
+
}
|
|
84
|
+
return out;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=structure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structure.js","sourceRoot":"","sources":["../src/structure.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/meta.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/tools/meta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/tools/meta.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/meta.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as path from "node:path";
|
|
2
2
|
import { Worker } from "node:worker_threads";
|
|
3
|
-
import { advanceFence } from "../fence.js";
|
|
4
3
|
import { parseFrontmatter } from "../frontmatter.js";
|
|
5
4
|
import { foldName, foldTag, lookupFoldedAny, lookupFoldedKey } from "../name-fold.js";
|
|
6
5
|
import { INLINE_TAG_RE, scanWikilinkInners, stripCodeAndInline } from "../parser.js";
|
|
7
|
-
import {
|
|
6
|
+
import { iterateBodyLines } from "../structure.js";
|
|
7
|
+
import { stripTrailingLineEnds } from "../wildcard-match.js";
|
|
8
8
|
import { capScanEntries } from "./limits.js";
|
|
9
9
|
import { getBacklinks, getRecentEdits, listTags } from "./read.js";
|
|
10
10
|
import { searchHybrid } from "./search.js";
|
|
@@ -1366,50 +1366,24 @@ export async function getOpenQuestions(vault, args) {
|
|
|
1366
1366
|
const candidates = [];
|
|
1367
1367
|
for (const e of entries) {
|
|
1368
1368
|
const { parsed, mtimeMs } = await vault.readNote(e.absPath, e.mtimeMs);
|
|
1369
|
-
|
|
1369
|
+
// v3.11.6-rc.2 — the fence-aware line walk + ATX-heading parse now come from the canonical
|
|
1370
|
+
// structure iterator (src/structure.ts): `l.text` === the former `splitLines(parsed.body)[i]`,
|
|
1371
|
+
// `l.line` === `bodyStartLine + i`, and `l.heading` mirrors the old headingMatch (a degenerate
|
|
1372
|
+
// `# ###` yields `l.heading` with empty text, so it still `continue`s as a non-hit heading line).
|
|
1370
1373
|
let currentHeading = null;
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
const line = lines[i] ?? "";
|
|
1374
|
-
// v3.11.5-rc.3 (PARSER-DESYNC) — track code fences so a fenced line is neither surfaced
|
|
1375
|
-
// as a real open question (a `Q:` / `TODO?` inside a ``` block is example text) nor
|
|
1376
|
-
// mistaken for an ATX heading that mis-sets the next question's context_heading. Line
|
|
1377
|
-
// numbers are preserved (we still advance `i`; fenced lines just aren't candidates).
|
|
1378
|
-
// v3.11.5-rc.5 (meta-audit) — track the fence CHAR via advanceFence so a `~~~` line
|
|
1379
|
-
// inside a ``` block (or vice versa) is literal code, not a spurious toggle (the
|
|
1380
|
-
// char-blind `inFence = !inFence` surfaced a fenced Q: and could suppress a real one).
|
|
1381
|
-
const st = advanceFence(line, fenceMarker);
|
|
1382
|
-
fenceMarker = st.marker;
|
|
1383
|
-
if (st.delimiter)
|
|
1374
|
+
for (const l of iterateBodyLines(parsed)) {
|
|
1375
|
+
if (l.inFence)
|
|
1384
1376
|
continue;
|
|
1385
|
-
if (
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
// capture (parity with fts5.ts:796 + read.ts extractHeadings; see those for
|
|
1389
|
-
// the empirical-linearity note). A heading line still `continue`s (never a
|
|
1390
|
-
// candidate) even when its text is degenerate (all-`#` ATX close → empty).
|
|
1391
|
-
// v3.11.0-rc.17 (rc.16 re-audit, CRLF regression) — strip the trailing line
|
|
1392
|
-
// terminator first so a CRLF note's headings still set `currentHeading`
|
|
1393
|
-
// (otherwise `(.+)$` fails on the trailing `\r` and questions lose their
|
|
1394
|
-
// section breadcrumb). Same fix as readNote map + fts5 heading enrichment.
|
|
1395
|
-
const headingMatch = /^(#{1,6})\s+(.+)$/.exec(stripTrailingLineEnds(line));
|
|
1396
|
-
if (headingMatch?.[2]) {
|
|
1397
|
-
const ht = stripTrailingHashes(headingMatch[2].trim()).trim();
|
|
1398
|
-
if (ht)
|
|
1399
|
-
currentHeading = ht; // track for context; heading lines aren't hits
|
|
1377
|
+
if (l.heading) {
|
|
1378
|
+
if (l.heading.text)
|
|
1379
|
+
currentHeading = l.heading.text; // heading lines set context, aren't hits
|
|
1400
1380
|
continue;
|
|
1401
1381
|
}
|
|
1402
1382
|
candidates.push({
|
|
1403
|
-
line,
|
|
1383
|
+
line: l.text,
|
|
1404
1384
|
relPath: e.relPath,
|
|
1405
1385
|
basename: e.basename,
|
|
1406
|
-
|
|
1407
|
-
// indexes `parsed.body` (frontmatter-stripped), so `i + 1` was BODY-relative
|
|
1408
|
-
// and off by the frontmatter length for any note with YAML — an agent jumping
|
|
1409
|
-
// to `line` in the file would land too early. `bodyStartLine` is the file line
|
|
1410
|
-
// where the body begins (1 when there's no frontmatter), so body line `i` maps
|
|
1411
|
-
// to file line `bodyStartLine + i`.
|
|
1412
|
-
lineNo: parsed.bodyStartLine + i,
|
|
1386
|
+
lineNo: l.line,
|
|
1413
1387
|
heading: currentHeading,
|
|
1414
1388
|
mtimeMs
|
|
1415
1389
|
});
|