markdown-lsp 1.2.1 → 1.3.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.
- package/README.md +108 -41
- package/dist/ai/granular.d.ts +32 -0
- package/dist/ai/granular.d.ts.map +1 -0
- package/dist/ai/granular.js +109 -0
- package/dist/ai/granular.js.map +1 -0
- package/dist/cli.js +300 -84
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
[](https://github.com/Docsbook-io/markdown-lsp/blob/main/LICENSE)
|
|
7
7
|
[](https://www.npmjs.com/package/markdown-lsp)
|
|
8
8
|
|
|
9
|
-
CLI and library for querying Markdown documentation graphs. Point it at a folder of `.md` files and get instant full-text search, outline, link analysis, symbol lookup, interactive HTML graphs, and AI-powered semantic search — all as JSON.
|
|
9
|
+
CLI and library for querying Markdown documentation graphs. Point it at a folder of `.md` files and get instant full-text search, outline, link analysis, symbol lookup, interactive HTML graphs, and AI-powered semantic search at page, heading, or paragraph granularity — all as JSON.
|
|
10
10
|
|
|
11
|
-
**Status: v1.
|
|
11
|
+
**Status: v1.3.0. CLI is the default interface. LSP stdio mode available as a subcommand.**
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -44,11 +44,20 @@ npx markdown-lsp graph ./docs --format json --pretty
|
|
|
44
44
|
npx markdown-lsp graph ./docs --format dot | dot -Tsvg > graph.svg
|
|
45
45
|
npx markdown-lsp graph ./docs --format mermaid
|
|
46
46
|
|
|
47
|
-
#
|
|
48
|
-
|
|
47
|
+
# ── Token-saving workflow: index once, search cheap ──────────────────────────
|
|
48
|
+
|
|
49
|
+
# Step 1: build the semantic index once (embeds all heading-level sections)
|
|
50
|
+
OPENROUTER_API_KEY=sk-or-... npx markdown-lsp index ./docs --granularity heading
|
|
49
51
|
|
|
50
|
-
#
|
|
51
|
-
OPENROUTER_API_KEY=sk-or-... npx markdown-lsp semantic-search ./docs "how to configure webhooks"
|
|
52
|
+
# Step 2: search is now cheap — only the query is embedded (1 API round-trip)
|
|
53
|
+
OPENROUTER_API_KEY=sk-or-... npx markdown-lsp semantic-search ./docs "how to configure webhooks" --granularity heading
|
|
54
|
+
OPENROUTER_API_KEY=sk-or-... npx markdown-lsp semantic-search ./docs "rate limit error" --granularity line
|
|
55
|
+
|
|
56
|
+
# Semantic graph — heading-level nodes (sections as graph nodes)
|
|
57
|
+
OPENROUTER_API_KEY=sk-or-... npx markdown-lsp graph ./docs --format html --semantic --granularity heading --out graph-headings.html
|
|
58
|
+
|
|
59
|
+
# Page-level semantic graph (classic)
|
|
60
|
+
OPENROUTER_API_KEY=sk-or-... npx markdown-lsp graph ./docs --format html --semantic --out graph.html
|
|
52
61
|
|
|
53
62
|
# LSP server (for editors)
|
|
54
63
|
npx markdown-lsp lsp --stdio
|
|
@@ -83,8 +92,9 @@ All subcommands accept a **`--pretty`** flag for indented JSON output (compact b
|
|
|
83
92
|
| `links-from` | `<docs-dir> <page>` | All links originating from `<page>` |
|
|
84
93
|
| `resolve-link` | `<docs-dir> <from-page> <link-text>` | Resolve a specific link text from a page |
|
|
85
94
|
| `get-section` | `<docs-dir> <page> <anchor>` | Get a section by anchor slug |
|
|
86
|
-
| `
|
|
87
|
-
| `
|
|
95
|
+
| `index` | `<docs-dir> [--granularity page\|heading\|line] [--model m]` | Build persistent semantic index (cache all embeddings once) |
|
|
96
|
+
| `graph` | `<docs-dir> [--format json\|dot\|mermaid\|html] [--out file] [--semantic] [--granularity page\|heading] [--sim-threshold n] [--sim-top-k n] [--model m]` | Export doc link graph; `--semantic` adds AI similarity edges |
|
|
97
|
+
| `semantic-search` | `<docs-dir> <query> [--limit n] [--model m] [--granularity page\|heading\|line]` | AI semantic search via embeddings |
|
|
88
98
|
| `lsp` / `serve` | `[--stdio]` | Start the LSP stdio server |
|
|
89
99
|
|
|
90
100
|
### search-text modes
|
|
@@ -164,59 +174,74 @@ JSON output shape:
|
|
|
164
174
|
|
|
165
175
|
---
|
|
166
176
|
|
|
167
|
-
##
|
|
177
|
+
## Token-saving workflow: index once, search cheap
|
|
168
178
|
|
|
169
|
-
|
|
179
|
+
The `index` command pre-builds and caches all document embeddings at the chosen granularity.
|
|
180
|
+
After indexing, `semantic-search` and `graph --semantic` only need to embed the query — **1 API round-trip** instead of N.
|
|
170
181
|
|
|
171
182
|
```bash
|
|
172
|
-
# Build
|
|
173
|
-
OPENROUTER_API_KEY=sk-or-... markdown-lsp
|
|
183
|
+
# Build the index once (heading = section-level, best precision)
|
|
184
|
+
OPENROUTER_API_KEY=sk-or-... markdown-lsp index ./docs --granularity heading
|
|
174
185
|
|
|
175
|
-
#
|
|
176
|
-
OPENROUTER_API_KEY=sk-or-... markdown-lsp
|
|
177
|
-
|
|
186
|
+
# Now search is cheap — only the query is sent to the API
|
|
187
|
+
OPENROUTER_API_KEY=sk-or-... markdown-lsp semantic-search ./docs "how does auth work" --granularity heading
|
|
188
|
+
OPENROUTER_API_KEY=sk-or-... markdown-lsp semantic-search ./docs "rate limit error" --granularity line
|
|
178
189
|
```
|
|
179
190
|
|
|
180
|
-
**
|
|
191
|
+
**Why it works:** embeddings are cached by `sha256(model + text)` in `.markdown-lsp-cache/embeddings/`.
|
|
192
|
+
On the second run, every doc unit is a cache hit — only the query vector is fetched from the API.
|
|
193
|
+
If a file changes, its hash changes, so it is re-embedded automatically (no stale results).
|
|
181
194
|
|
|
182
|
-
|
|
183
|
-
- **Checkboxes** in the toolbar to toggle each edge type independently
|
|
184
|
-
- **Click any node** to open a side-panel showing: title, path, sections, outgoing links, incoming links, and top semantically similar pages with scores
|
|
185
|
-
- Clicking a linked page in the side-panel focuses the graph on that node
|
|
186
|
-
- Background click closes the panel and clears selection
|
|
187
|
-
- Drag and zoom preserved from v1.1
|
|
188
|
-
|
|
189
|
-
**Semantic flags:**
|
|
195
|
+
**Token cost comparison:**
|
|
190
196
|
|
|
191
|
-
|
|
|
197
|
+
| Scenario | API round-trips | Relative cost |
|
|
192
198
|
|---|---|---|
|
|
193
|
-
|
|
|
194
|
-
|
|
|
195
|
-
|
|
|
196
|
-
|
|
|
199
|
+
| First `semantic-search` (78 pages, cold cache) | 2 (batch docs + query) | baseline |
|
|
200
|
+
| Repeat `semantic-search` after warm cache | 1 (query only) | ~1/78 |
|
|
201
|
+
| After `index --granularity heading` (~1190 sections) | 1 (query only) | ~1/1190 |
|
|
202
|
+
| `index` re-run with no changes | 0 | free |
|
|
197
203
|
|
|
198
|
-
|
|
204
|
+
### Incremental & token-saving: re-run `index` anytime
|
|
199
205
|
|
|
200
|
-
|
|
206
|
+
`index ./docs` is incremental by design — only changed units are re-embedded, unchanged ones are
|
|
207
|
+
served from the local cache (`.markdown-lsp-cache/embeddings/`). You can call it as frequently as
|
|
208
|
+
you like without wasting API tokens on content that hasn't changed.
|
|
209
|
+
|
|
210
|
+
To automate re-indexing, the recommended approach is a **git hook** (no extra deps, no debounce
|
|
211
|
+
complexity): a `post-merge` or `post-checkout` hook runs `npx markdown-lsp index ./docs` automatically
|
|
212
|
+
after pulls and branch switches. For real-time updates while writing docs, a debounced watch script
|
|
213
|
+
(stdlib `fs.watch` with a 3-5 s debounce) works well. CI users can cache `.markdown-lsp-cache/`
|
|
214
|
+
via `actions/cache` so the index survives across runs. See the [skill file](.claude/skills/markdown-lsp/SKILL.md)
|
|
215
|
+
for ready-to-use snippets for all three patterns.
|
|
201
216
|
|
|
202
217
|
---
|
|
203
218
|
|
|
204
|
-
## Semantic search
|
|
219
|
+
## Semantic search with granularity
|
|
205
220
|
|
|
206
|
-
AI-powered semantic search using text embeddings — finds conceptually related
|
|
207
|
-
|
|
221
|
+
AI-powered semantic search using text embeddings — finds conceptually related content even if it
|
|
222
|
+
doesn't contain the exact query words.
|
|
208
223
|
|
|
209
224
|
```bash
|
|
210
|
-
#
|
|
225
|
+
# Page-level (default) — searches whole pages
|
|
211
226
|
OPENROUTER_API_KEY=sk-or-... markdown-lsp semantic-search ./docs "how to configure webhooks" --limit 5
|
|
212
227
|
|
|
228
|
+
# Heading-level — searches within sections (returns anchor + headingPath)
|
|
229
|
+
OPENROUTER_API_KEY=sk-or-... markdown-lsp semantic-search ./docs "webhook authentication" \
|
|
230
|
+
--granularity heading --limit 10
|
|
231
|
+
|
|
232
|
+
# Line-level — searches paragraph blocks (returns line number)
|
|
233
|
+
OPENROUTER_API_KEY=sk-or-... markdown-lsp semantic-search ./docs "set OPENROUTER_API_KEY" \
|
|
234
|
+
--granularity line --limit 5
|
|
235
|
+
|
|
213
236
|
# Override embedding model
|
|
214
237
|
markdown-lsp semantic-search ./docs "authentication" --model openai/text-embedding-3-small --limit 3
|
|
215
238
|
```
|
|
216
239
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
-
|
|
240
|
+
**Result shape by granularity:**
|
|
241
|
+
|
|
242
|
+
- `page`: `[{ level: "page", pagePath, pageTitle, score, snippet }]`
|
|
243
|
+
- `heading`: `[{ level: "heading", pagePath, pageTitle, anchor, headingPath, score, snippet }]`
|
|
244
|
+
- `line`: `[{ level: "line", pagePath, pageTitle, line, score, snippet }]`
|
|
220
245
|
|
|
221
246
|
**Environment variables:**
|
|
222
247
|
|
|
@@ -228,6 +253,45 @@ markdown-lsp semantic-search ./docs "authentication" --model openai/text-embeddi
|
|
|
228
253
|
|
|
229
254
|
---
|
|
230
255
|
|
|
256
|
+
## Semantic graph (v1.2+)
|
|
257
|
+
|
|
258
|
+
Overlay AI-powered semantic similarity edges on top of the link graph.
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
# Page-level semantic graph (classic)
|
|
262
|
+
OPENROUTER_API_KEY=sk-or-... markdown-lsp graph ./docs --format html --semantic --out graph.html
|
|
263
|
+
|
|
264
|
+
# Heading-level: graph nodes = sections, semantic edges between sections
|
|
265
|
+
OPENROUTER_API_KEY=sk-or-... markdown-lsp graph ./docs --format html --semantic \
|
|
266
|
+
--granularity heading --sim-threshold 0.75 --sim-top-k 5 --out graph-headings.html
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**What you get in the HTML:**
|
|
270
|
+
|
|
271
|
+
- Two types of edges — **solid lines** (explicit markdown links) and **dashed amber lines** (semantic similarity)
|
|
272
|
+
- **Checkboxes** in the toolbar to toggle each edge type independently
|
|
273
|
+
- **Click any node** to open a side-panel showing: title, path, sections, outgoing links, incoming links, and top semantically similar pages/sections with scores
|
|
274
|
+
- Clicking a linked page in the side-panel focuses the graph on that node
|
|
275
|
+
- Background click closes the panel and clears selection
|
|
276
|
+
|
|
277
|
+
**Semantic flags:**
|
|
278
|
+
|
|
279
|
+
| Flag | Default | Description |
|
|
280
|
+
|---|---|---|
|
|
281
|
+
| `--semantic` | off | Enable AI similarity edges |
|
|
282
|
+
| `--granularity` | `page` | `page` (nodes = pages) or `heading` (nodes = sections) |
|
|
283
|
+
| `--sim-threshold` | `0.75` | Minimum cosine similarity score to draw an edge |
|
|
284
|
+
| `--sim-top-k` | `5` | Max semantic neighbours per node |
|
|
285
|
+
| `--model` | `openai/text-embedding-3-small` | Embedding model override |
|
|
286
|
+
|
|
287
|
+
**Note:** `--granularity line` is not supported for `graph` (too many nodes). Use `page` or `heading`.
|
|
288
|
+
|
|
289
|
+
**Caching:** embeddings are cached in `.markdown-lsp-cache/embeddings/` — the second run is instant with 0 API calls.
|
|
290
|
+
|
|
291
|
+
**OpenRouter model naming:** when using `OPENROUTER_API_KEY`, the model name requires the `openai/` prefix (e.g. `openai/text-embedding-3-small`). When using `AI_GATEWAY_API_KEY` (Vercel AI Gateway), use the bare name (`text-embedding-3-small`). If the model is rejected, the CLI outputs a clear hint to try the other form.
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
231
295
|
## LSP mode (editor integration)
|
|
232
296
|
|
|
233
297
|
`markdown-lsp` also works as a Language Server Protocol server for editors (VS Code, Zed, Neovim, etc.).
|
|
@@ -301,7 +365,9 @@ export AI_GATEWAY_API_KEY=... # Vercel AI Gateway
|
|
|
301
365
|
|
|
302
366
|
- **CLI** — `node:util parseArgs`, zero extra deps, reads `.md` files into an in-memory graph
|
|
303
367
|
- **Graph** — pure TypeScript, no DB needed; `buildGraph(docsRoot)` walks the directory tree
|
|
304
|
-
- **
|
|
368
|
+
- **Granular semantics** — `unitize(pages, granularity)` splits docs into page/heading/line units; `splitParagraphs()` groups by blank lines
|
|
369
|
+
- **Persistent index** — `index` command pre-caches all embeddings; `embedTexts()` checks sha256 cache per unit before hitting the API
|
|
370
|
+
- **Semantic graph** — in-memory cosine similarity; heading mode replaces page-nodes with section-nodes; embeddings via OpenRouter or Vercel AI Gateway; disk-cached per sha256(model+text)
|
|
305
371
|
- **LSP** — `vscode-languageserver/node` over stdio; requires Postgres (Drizzle ORM, `mdlsp_` prefix)
|
|
306
372
|
- **AI layer** (opt-in) — pgvector cosine search on canonical-term embeddings; `text-embedding-3-small` via Vercel AI Gateway
|
|
307
373
|
- **Bridge** — pure in-memory search (searchText, searchTextRanked, searchSymbols, searchPaths, listPages)
|
|
@@ -326,8 +392,9 @@ pnpm test
|
|
|
326
392
|
- **M3 — CLI-first interface** ✅ (v1.0.0)
|
|
327
393
|
- **M4 — Graph export + HTML D3 visualisation** ✅ (v1.1.0)
|
|
328
394
|
- **M5 — Turnkey semantic graph (graph --semantic)** ✅ (v1.2.0)
|
|
329
|
-
- M6 —
|
|
330
|
-
- M7 —
|
|
395
|
+
- **M6 — Granular semantics + persistent index** ✅ (v1.3.0)
|
|
396
|
+
- M7 — User overrides for the glossary (merge / split / rename / add_synonym)
|
|
397
|
+
- M8 — Docsbook integration
|
|
331
398
|
|
|
332
399
|
---
|
|
333
400
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Granular semantic units — splits doc pages into heading-level or paragraph-level units
|
|
3
|
+
* for fine-grained semantic search and heading-level graph nodes.
|
|
4
|
+
*/
|
|
5
|
+
import type { GraphPage } from "../bridge/inMemoryGraph.js";
|
|
6
|
+
export type GranularityLevel = "page" | "heading" | "line";
|
|
7
|
+
export interface SemanticUnit {
|
|
8
|
+
level: GranularityLevel;
|
|
9
|
+
/** Stable unique ID. page: pagePath. heading: pagePath#anchor. line: pagePath#L<startLine> */
|
|
10
|
+
id: string;
|
|
11
|
+
pagePath: string;
|
|
12
|
+
/** Page title (null if page has no title) */
|
|
13
|
+
pageTitle: string | null;
|
|
14
|
+
/** heading/line only */
|
|
15
|
+
anchor?: string | null;
|
|
16
|
+
/** heading only — breadcrumb path e.g. ["Parent", "Child"] */
|
|
17
|
+
headingPath?: string[];
|
|
18
|
+
/** line only — 0-based start line of the paragraph block */
|
|
19
|
+
line?: number;
|
|
20
|
+
/** The text to embed */
|
|
21
|
+
text: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function unitizePages(page: GraphPage): SemanticUnit[];
|
|
24
|
+
export declare function unitizeHeadings(page: GraphPage): SemanticUnit[];
|
|
25
|
+
/** Split page content into paragraph blocks (groups of lines separated by blank lines). */
|
|
26
|
+
export declare function splitParagraphs(content: string): Array<{
|
|
27
|
+
text: string;
|
|
28
|
+
startLine: number;
|
|
29
|
+
}>;
|
|
30
|
+
export declare function unitizeLines(page: GraphPage): SemanticUnit[];
|
|
31
|
+
export declare function unitize(pages: GraphPage[], granularity: GranularityLevel): SemanticUnit[];
|
|
32
|
+
//# sourceMappingURL=granular.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"granular.d.ts","sourceRoot":"","sources":["../../src/ai/granular.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,4BAA4B,CAAA;AAIzE,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;AAE1D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,gBAAgB,CAAA;IACvB,8FAA8F;IAC9F,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAA;CACb;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,EAAE,CAW5D;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,EAAE,CAqB/D;AAID,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAwB3F;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,EAAE,CAe5D;AAID,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAgBzF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Granular semantic units — splits doc pages into heading-level or paragraph-level units
|
|
3
|
+
* for fine-grained semantic search and heading-level graph nodes.
|
|
4
|
+
*/
|
|
5
|
+
// ── Page-level units (current behaviour) ─────────────────────────────────────
|
|
6
|
+
export function unitizePages(page) {
|
|
7
|
+
const titlePart = page.title ? page.title + "\n\n" : "";
|
|
8
|
+
return [
|
|
9
|
+
{
|
|
10
|
+
level: "page",
|
|
11
|
+
id: page.path,
|
|
12
|
+
pagePath: page.path,
|
|
13
|
+
pageTitle: page.title,
|
|
14
|
+
text: (titlePart + page.content).slice(0, 6000),
|
|
15
|
+
},
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
// ── Heading-level units ───────────────────────────────────────────────────────
|
|
19
|
+
export function unitizeHeadings(page) {
|
|
20
|
+
if (page.sections.length === 0) {
|
|
21
|
+
// Fallback to page unit if no sections
|
|
22
|
+
return unitizePages(page);
|
|
23
|
+
}
|
|
24
|
+
return page.sections.map((s) => {
|
|
25
|
+
const anchor = s.anchor ?? slugifyHeading(s.headingPath[s.headingPath.length - 1] ?? "section");
|
|
26
|
+
const id = `${page.path}#${anchor}`;
|
|
27
|
+
const breadcrumb = s.headingPath.join(" > ");
|
|
28
|
+
const text = (breadcrumb ? breadcrumb + "\n\n" : "") + s.content;
|
|
29
|
+
return {
|
|
30
|
+
level: "heading",
|
|
31
|
+
id,
|
|
32
|
+
pagePath: page.path,
|
|
33
|
+
pageTitle: page.title,
|
|
34
|
+
anchor: s.anchor,
|
|
35
|
+
headingPath: s.headingPath,
|
|
36
|
+
text: text.slice(0, 6000),
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// ── Line-level units (paragraph blocks) ──────────────────────────────────────
|
|
41
|
+
/** Split page content into paragraph blocks (groups of lines separated by blank lines). */
|
|
42
|
+
export function splitParagraphs(content) {
|
|
43
|
+
const lines = content.split("\n");
|
|
44
|
+
const paras = [];
|
|
45
|
+
let buf = [];
|
|
46
|
+
let startLine = 0;
|
|
47
|
+
for (let i = 0; i < lines.length; i++) {
|
|
48
|
+
const line = lines[i];
|
|
49
|
+
if (line.trim() === "") {
|
|
50
|
+
if (buf.length > 0) {
|
|
51
|
+
paras.push({ text: buf.join("\n").trim(), startLine });
|
|
52
|
+
buf = [];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
if (buf.length === 0)
|
|
57
|
+
startLine = i;
|
|
58
|
+
buf.push(line);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (buf.length > 0) {
|
|
62
|
+
paras.push({ text: buf.join("\n").trim(), startLine });
|
|
63
|
+
}
|
|
64
|
+
// Filter out very short paragraphs (titles only, fences, etc.)
|
|
65
|
+
return paras.filter((p) => p.text.length > 20);
|
|
66
|
+
}
|
|
67
|
+
export function unitizeLines(page) {
|
|
68
|
+
const paras = splitParagraphs(page.content);
|
|
69
|
+
if (paras.length === 0)
|
|
70
|
+
return unitizePages(page);
|
|
71
|
+
return paras.map((para) => {
|
|
72
|
+
const id = `${page.path}#L${para.startLine}`;
|
|
73
|
+
return {
|
|
74
|
+
level: "line",
|
|
75
|
+
id,
|
|
76
|
+
pagePath: page.path,
|
|
77
|
+
pageTitle: page.title,
|
|
78
|
+
line: para.startLine,
|
|
79
|
+
text: para.text.slice(0, 6000),
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// ── Dispatcher ────────────────────────────────────────────────────────────────
|
|
84
|
+
export function unitize(pages, granularity) {
|
|
85
|
+
const units = [];
|
|
86
|
+
for (const page of pages) {
|
|
87
|
+
switch (granularity) {
|
|
88
|
+
case "page":
|
|
89
|
+
units.push(...unitizePages(page));
|
|
90
|
+
break;
|
|
91
|
+
case "heading":
|
|
92
|
+
units.push(...unitizeHeadings(page));
|
|
93
|
+
break;
|
|
94
|
+
case "line":
|
|
95
|
+
units.push(...unitizeLines(page));
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return units;
|
|
100
|
+
}
|
|
101
|
+
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
102
|
+
function slugifyHeading(text) {
|
|
103
|
+
return text
|
|
104
|
+
.toLowerCase()
|
|
105
|
+
.trim()
|
|
106
|
+
.replace(/[^\w\s-]/g, "")
|
|
107
|
+
.replace(/\s+/g, "-");
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=granular.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"granular.js","sourceRoot":"","sources":["../../src/ai/granular.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import * as fs from "node:fs";
|
|
|
3
3
|
import { buildGraph } from "./graph.js";
|
|
4
4
|
import { listPages, searchText, searchTextRanked, searchSymbols, searchPaths, } from "./bridge/index.js";
|
|
5
5
|
const USAGE = `
|
|
6
|
-
markdown-lsp v1.
|
|
6
|
+
markdown-lsp v1.3.0 — CLI for querying Markdown documentation graphs
|
|
7
7
|
|
|
8
8
|
USAGE
|
|
9
9
|
markdown-lsp <subcommand> [options]
|
|
@@ -38,9 +38,17 @@ SUBCOMMANDS
|
|
|
38
38
|
get-section <docs-dir> <page> <anchor>
|
|
39
39
|
Retrieve a section by its anchor slug.
|
|
40
40
|
|
|
41
|
+
index <docs-dir> [--granularity page|heading|line] [--model <m>]
|
|
42
|
+
Build the persistent semantic index once — embeds all units at the
|
|
43
|
+
chosen granularity and writes them to .markdown-lsp-cache/.
|
|
44
|
+
Subsequent semantic-search / graph --semantic calls reuse the cache,
|
|
45
|
+
so they only embed the query (1 API round-trip instead of N).
|
|
46
|
+
Idempotent: re-running without doc changes costs 0 API calls.
|
|
47
|
+
Requires OPENROUTER_API_KEY or AI_GATEWAY_API_KEY.
|
|
48
|
+
|
|
41
49
|
graph <docs-dir> [--format json|dot|mermaid|html] [--out <file>]
|
|
42
|
-
[--semantic] [--
|
|
43
|
-
[--model <embedding-model>]
|
|
50
|
+
[--semantic] [--granularity page|heading] [--sim-threshold <0-1>]
|
|
51
|
+
[--sim-top-k <n>] [--model <embedding-model>]
|
|
44
52
|
Export the doc link graph. Default format: json (nodes/edges).
|
|
45
53
|
Use --format html for a self-contained interactive D3 visualisation.
|
|
46
54
|
Use --out <file> to write to disk instead of stdout.
|
|
@@ -49,14 +57,20 @@ SUBCOMMANDS
|
|
|
49
57
|
semantic edges are shown in the HTML graph with checkboxes to
|
|
50
58
|
toggle each type. Clicking a node opens a side-panel with full
|
|
51
59
|
info and highlights all its connections.
|
|
60
|
+
--granularity page (default) or heading (nodes = sections)
|
|
52
61
|
--sim-threshold Minimum cosine similarity for a semantic edge (default: 0.75)
|
|
53
62
|
--sim-top-k Maximum semantic neighbours per node (default: 5)
|
|
54
63
|
--model Embedding model override (default: openai/text-embedding-3-small)
|
|
64
|
+
Note: --granularity line is NOT supported for graph (too many nodes).
|
|
55
65
|
|
|
56
66
|
semantic-search <docs-dir> <query> [--limit <n>] [--model <embedding-model>]
|
|
67
|
+
[--granularity page|heading|line]
|
|
57
68
|
AI-powered semantic search using embeddings. Requires OPENROUTER_API_KEY
|
|
58
69
|
(or AI_GATEWAY_API_KEY). Results are cached in .markdown-lsp-cache/.
|
|
59
70
|
Default embedding model: openai/text-embedding-3-small
|
|
71
|
+
--granularity page Search whole pages (default, fast)
|
|
72
|
+
--granularity heading Search within sections (returns anchor + headingPath)
|
|
73
|
+
--granularity line Search paragraph blocks (returns line number)
|
|
60
74
|
|
|
61
75
|
lsp [--stdio]
|
|
62
76
|
serve [--stdio]
|
|
@@ -91,14 +105,23 @@ EXAMPLES
|
|
|
91
105
|
# Find pages by filename glob
|
|
92
106
|
markdown-lsp search-paths ./docs "ai/*.md"
|
|
93
107
|
|
|
108
|
+
# Build the semantic index once (saves tokens on every later search)
|
|
109
|
+
markdown-lsp index ./docs --granularity heading
|
|
110
|
+
|
|
111
|
+
# Semantic search — heading level (returns anchor + section)
|
|
112
|
+
markdown-lsp semantic-search ./docs "how does auth work" --granularity heading --limit 10
|
|
113
|
+
|
|
114
|
+
# Semantic search — paragraph level (returns line number)
|
|
115
|
+
markdown-lsp semantic-search ./docs "rate limit error" --granularity line --limit 5
|
|
116
|
+
|
|
94
117
|
# Link graph
|
|
95
118
|
markdown-lsp graph ./docs --format json --pretty
|
|
96
119
|
markdown-lsp graph ./docs --format html --out graph.html
|
|
97
120
|
markdown-lsp graph ./docs --format dot | dot -Tsvg > graph.svg
|
|
98
121
|
markdown-lsp graph ./docs --format mermaid
|
|
99
122
|
|
|
100
|
-
#
|
|
101
|
-
markdown-lsp graph ./docs --format html --semantic --out graph.html
|
|
123
|
+
# Semantic graph — heading-level nodes (sections as nodes)
|
|
124
|
+
markdown-lsp graph ./docs --format html --semantic --granularity heading --out graph-headings.html
|
|
102
125
|
markdown-lsp graph ./docs --format html --semantic --sim-threshold 0.75 --sim-top-k 5 --out graph.html
|
|
103
126
|
|
|
104
127
|
# Backlinks / outgoing links
|
|
@@ -109,10 +132,6 @@ EXAMPLES
|
|
|
109
132
|
markdown-lsp resolve-link ./docs README.md "Getting Started"
|
|
110
133
|
markdown-lsp get-section ./docs overview.md "quick-links"
|
|
111
134
|
|
|
112
|
-
# Semantic search (AI)
|
|
113
|
-
markdown-lsp semantic-search ./docs "how to set up webhooks" --limit 5
|
|
114
|
-
markdown-lsp semantic-search ./docs "authentication" --model openai/text-embedding-3-small
|
|
115
|
-
|
|
116
135
|
# LSP server
|
|
117
136
|
markdown-lsp lsp --stdio
|
|
118
137
|
`.trim();
|
|
@@ -183,17 +202,16 @@ function cosineSim(a, b) {
|
|
|
183
202
|
return dot / (Math.sqrt(na) * Math.sqrt(nb));
|
|
184
203
|
}
|
|
185
204
|
// ── Semantic edge computation ─────────────────────────────────────────────────
|
|
186
|
-
async function addSemanticEdges(data, pages, modelOverride, simThreshold, simTopK) {
|
|
205
|
+
async function addSemanticEdges(data, pages, modelOverride, simThreshold, simTopK, granularity = "page") {
|
|
187
206
|
const { assertApiKey } = await import("./ai/config.js");
|
|
188
207
|
assertApiKey();
|
|
189
208
|
const { embedTexts } = await import("./ai/embeddings.js");
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
});
|
|
194
|
-
process.stderr.write(`[markdown-lsp] Embedding ${pages.length} pages` +
|
|
209
|
+
const { unitize } = await import("./ai/granular.js");
|
|
210
|
+
const units = unitize(pages, granularity);
|
|
211
|
+
process.stderr.write(`[markdown-lsp] Embedding ${units.length} units at granularity="${granularity}"` +
|
|
195
212
|
` (model: ${modelOverride ?? "openai/text-embedding-3-small"})...\n`);
|
|
196
|
-
const
|
|
213
|
+
const unitTexts = units.map((u) => u.text);
|
|
214
|
+
const { vectors, tokensUsed } = await embedTexts(unitTexts, modelOverride, true);
|
|
197
215
|
if (tokensUsed > 0) {
|
|
198
216
|
process.stderr.write(`[markdown-lsp] Embeddings computed (${tokensUsed} tokens used).\n`);
|
|
199
217
|
}
|
|
@@ -201,50 +219,137 @@ async function addSemanticEdges(data, pages, modelOverride, simThreshold, simTop
|
|
|
201
219
|
process.stderr.write(`[markdown-lsp] Embeddings loaded from cache (0 API tokens).\n`);
|
|
202
220
|
}
|
|
203
221
|
const semanticEdges = [];
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
222
|
+
if (granularity === "heading") {
|
|
223
|
+
// Heading mode: nodes are sections, semantic edges between sections
|
|
224
|
+
// data.nodes at this point are page-nodes — for heading mode we REPLACE them with section-nodes
|
|
225
|
+
const sectionNodes = [];
|
|
226
|
+
const sectionNodeMap = new Map();
|
|
227
|
+
for (const page of pages) {
|
|
228
|
+
for (const s of page.sections) {
|
|
229
|
+
const anchor = s.anchor ?? "section";
|
|
230
|
+
const nodeId = `${page.path}#${anchor}`;
|
|
231
|
+
const label = s.headingPath[s.headingPath.length - 1] ?? anchor;
|
|
232
|
+
const sectionNode = {
|
|
233
|
+
id: nodeId,
|
|
234
|
+
title: label,
|
|
235
|
+
charCount: s.charCount,
|
|
236
|
+
sectionsCount: 0,
|
|
237
|
+
nodeType: "heading",
|
|
238
|
+
headingPath: s.headingPath,
|
|
239
|
+
pagePath: page.path,
|
|
240
|
+
sections: [],
|
|
241
|
+
outgoing: [],
|
|
242
|
+
incoming: [],
|
|
243
|
+
topSimilar: [],
|
|
244
|
+
};
|
|
245
|
+
sectionNodes.push(sectionNode);
|
|
246
|
+
sectionNodeMap.set(nodeId, sectionNode);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// Rebuild link edges at page level (project page links onto their first section)
|
|
250
|
+
const sectionEdges = [];
|
|
251
|
+
for (const e of data.edges) {
|
|
252
|
+
// find first section of source and target pages
|
|
253
|
+
const srcPage = pages.find((p) => p.path === e.source);
|
|
254
|
+
const tgtPage = pages.find((p) => p.path === e.target);
|
|
255
|
+
if (!srcPage || !tgtPage)
|
|
212
256
|
continue;
|
|
213
|
-
const
|
|
214
|
-
|
|
257
|
+
const srcSec = srcPage.sections[0];
|
|
258
|
+
const tgtSec = tgtPage.sections[0];
|
|
259
|
+
if (!srcSec || !tgtSec)
|
|
260
|
+
continue;
|
|
261
|
+
const srcId = `${srcPage.path}#${srcSec.anchor ?? "section"}`;
|
|
262
|
+
const tgtId = `${tgtPage.path}#${tgtSec.anchor ?? "section"}`;
|
|
263
|
+
sectionEdges.push({ source: srcId, target: tgtId, kind: e.kind, label: e.label });
|
|
264
|
+
sectionNodeMap.get(srcId)?.outgoing.push({ target: tgtId, label: e.label ?? null, kind: e.kind });
|
|
265
|
+
sectionNodeMap.get(tgtId)?.incoming.push({ source: srcId, label: e.label ?? null, kind: e.kind });
|
|
266
|
+
}
|
|
267
|
+
data.nodes = sectionNodes;
|
|
268
|
+
data.edges = sectionEdges;
|
|
269
|
+
// Compute semantic edges between section-units
|
|
270
|
+
for (let i = 0; i < units.length; i++) {
|
|
271
|
+
const vecI = vectors[i];
|
|
272
|
+
if (!vecI)
|
|
215
273
|
continue;
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
|
|
274
|
+
const sims = [];
|
|
275
|
+
for (let j = 0; j < units.length; j++) {
|
|
276
|
+
if (j === i)
|
|
277
|
+
continue;
|
|
278
|
+
const vecJ = vectors[j];
|
|
279
|
+
if (!vecJ)
|
|
280
|
+
continue;
|
|
281
|
+
const score = cosineSim(vecI, vecJ);
|
|
282
|
+
if (score >= simThreshold) {
|
|
283
|
+
sims.push({ j, score });
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const topSimilar = [...sims]
|
|
287
|
+
.sort((a, b) => b.score - a.score)
|
|
288
|
+
.slice(0, simTopK)
|
|
289
|
+
.map(({ j, score }) => ({
|
|
290
|
+
path: units[j].id,
|
|
291
|
+
title: units[j].headingPath?.join(" > ") ?? units[j].id,
|
|
292
|
+
score: Math.round(score * 10000) / 10000,
|
|
293
|
+
}));
|
|
294
|
+
const node = sectionNodeMap.get(units[i].id);
|
|
295
|
+
if (node)
|
|
296
|
+
node.topSimilar = topSimilar;
|
|
297
|
+
for (const { j, score } of sims) {
|
|
298
|
+
if (j > i) {
|
|
299
|
+
semanticEdges.push({
|
|
300
|
+
source: units[i].id,
|
|
301
|
+
target: units[j].id,
|
|
302
|
+
score: Math.round(score * 10000) / 10000,
|
|
303
|
+
kind: "semantic",
|
|
304
|
+
});
|
|
305
|
+
}
|
|
219
306
|
}
|
|
220
307
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
// Page mode: original behaviour
|
|
311
|
+
for (let i = 0; i < units.length; i++) {
|
|
312
|
+
const vecI = vectors[i];
|
|
313
|
+
if (!vecI)
|
|
314
|
+
continue;
|
|
315
|
+
const sims = [];
|
|
316
|
+
for (let j = 0; j < units.length; j++) {
|
|
317
|
+
if (j === i)
|
|
318
|
+
continue;
|
|
319
|
+
const vecJ = vectors[j];
|
|
320
|
+
if (!vecJ)
|
|
321
|
+
continue;
|
|
322
|
+
const score = cosineSim(vecI, vecJ);
|
|
323
|
+
if (score >= simThreshold) {
|
|
324
|
+
sims.push({ j, score });
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
const topSimilar = [...sims]
|
|
328
|
+
.sort((a, b) => b.score - a.score)
|
|
329
|
+
.slice(0, simTopK)
|
|
330
|
+
.map(({ j, score }) => ({
|
|
331
|
+
path: pages[j].path,
|
|
332
|
+
title: pages[j].title,
|
|
333
|
+
score: Math.round(score * 10000) / 10000,
|
|
334
|
+
}));
|
|
335
|
+
const node = data.nodes.find((n) => n.id === pages[i].path);
|
|
336
|
+
if (node)
|
|
337
|
+
node.topSimilar = topSimilar;
|
|
338
|
+
for (const { j, score } of sims) {
|
|
339
|
+
if (j > i) {
|
|
340
|
+
semanticEdges.push({
|
|
341
|
+
source: pages[i].path,
|
|
342
|
+
target: pages[j].path,
|
|
343
|
+
score: Math.round(score * 10000) / 10000,
|
|
344
|
+
kind: "semantic",
|
|
345
|
+
});
|
|
346
|
+
}
|
|
242
347
|
}
|
|
243
348
|
}
|
|
244
349
|
}
|
|
245
350
|
data.semanticEdges = semanticEdges;
|
|
246
351
|
process.stderr.write(`[markdown-lsp] ${semanticEdges.length} semantic edges` +
|
|
247
|
-
` (threshold=${simThreshold}, topK=${simTopK}).\n`);
|
|
352
|
+
` (threshold=${simThreshold}, topK=${simTopK}, granularity=${granularity}).\n`);
|
|
248
353
|
}
|
|
249
354
|
// ── Graph renderers ───────────────────────────────────────────────────────────
|
|
250
355
|
function renderGraphJson(data, pretty) {
|
|
@@ -284,14 +389,15 @@ function renderGraphMermaid(data) {
|
|
|
284
389
|
}
|
|
285
390
|
return lines.join('\n');
|
|
286
391
|
}
|
|
287
|
-
function renderGraphHtml(data, docsDir, hasSemantic) {
|
|
392
|
+
function renderGraphHtml(data, docsDir, hasSemantic, granularity = "page") {
|
|
288
393
|
const title = docsDir.split('/').filter(Boolean).pop() ?? docsDir;
|
|
394
|
+
const granularityLabel = granularity === "heading" ? " (sections)" : "";
|
|
289
395
|
const jsonData = JSON.stringify(data);
|
|
290
396
|
return `<!DOCTYPE html>
|
|
291
397
|
<html lang="en">
|
|
292
398
|
<head>
|
|
293
399
|
<meta charset="utf-8">
|
|
294
|
-
<title>Doc Graph — ${title}</title>
|
|
400
|
+
<title>Doc Graph — ${title}${granularityLabel}</title>
|
|
295
401
|
<script src="https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js"></script>
|
|
296
402
|
<style>
|
|
297
403
|
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
@@ -354,7 +460,7 @@ function renderGraphHtml(data, docsDir, hasSemantic) {
|
|
|
354
460
|
</head>
|
|
355
461
|
<body>
|
|
356
462
|
<div id="toolbar">
|
|
357
|
-
<h1>Doc Graph — ${title}</h1>
|
|
463
|
+
<h1>Doc Graph — ${title}${granularityLabel}</h1>
|
|
358
464
|
<span id="stats"></span>
|
|
359
465
|
<label class="toggle-label toggle-links" title="Toggle link edges (solid lines)">
|
|
360
466
|
<input type="checkbox" id="chk-links" checked> Links
|
|
@@ -553,8 +659,12 @@ document.getElementById('panel-close').addEventListener('click', () => {
|
|
|
553
659
|
|
|
554
660
|
function openPanel(d) {
|
|
555
661
|
panelTitle.textContent = d.title;
|
|
556
|
-
panelPath.textContent = d.
|
|
557
|
-
|
|
662
|
+
panelPath.textContent = d.nodeType === 'heading'
|
|
663
|
+
? (d.headingPath && d.headingPath.length > 1 ? d.headingPath.join(' › ') : d.id)
|
|
664
|
+
: d.id;
|
|
665
|
+
panelStats.textContent = d.nodeType === 'heading'
|
|
666
|
+
? (d.pagePath ? 'section of: '+d.pagePath+' · '+d.charCount.toLocaleString()+' chars' : d.charCount.toLocaleString()+' chars')
|
|
667
|
+
: d.charCount.toLocaleString()+' chars · '+d.sectionsCount+' sections';
|
|
558
668
|
panelBody.innerHTML = '';
|
|
559
669
|
|
|
560
670
|
// Sections
|
|
@@ -912,8 +1022,8 @@ get-section <docs-dir> <page> <anchor>
|
|
|
912
1022
|
`.trim(),
|
|
913
1023
|
"graph": `
|
|
914
1024
|
graph <docs-dir> [--format json|dot|mermaid|html] [--out <file>]
|
|
915
|
-
[--semantic] [--
|
|
916
|
-
[--model <embedding-model>]
|
|
1025
|
+
[--semantic] [--granularity page|heading] [--sim-threshold <0-1>]
|
|
1026
|
+
[--sim-top-k <n>] [--model <embedding-model>]
|
|
917
1027
|
|
|
918
1028
|
Export the documentation link graph.
|
|
919
1029
|
|
|
@@ -927,21 +1037,27 @@ graph <docs-dir> [--format json|dot|mermaid|html] [--out <file>]
|
|
|
927
1037
|
--format html Self-contained interactive D3 visualisation
|
|
928
1038
|
--out <file> Write output to file instead of stdout
|
|
929
1039
|
--semantic Overlay AI-powered similarity edges
|
|
1040
|
+
--granularity page Graph nodes = pages (default)
|
|
1041
|
+
--granularity heading Graph nodes = sections (heading-level)
|
|
930
1042
|
--sim-threshold <0-1> Minimum cosine similarity (default: 0.75)
|
|
931
1043
|
--sim-top-k <n> Max semantic neighbours per node (default: 5)
|
|
932
1044
|
--model <model> Embedding model override
|
|
933
1045
|
--pretty Pretty-print JSON output
|
|
934
1046
|
|
|
935
1047
|
Note: --semantic requires OPENROUTER_API_KEY or AI_GATEWAY_API_KEY.
|
|
1048
|
+
Note: --granularity line is NOT supported for graph (too many nodes);
|
|
1049
|
+
use page or heading.
|
|
936
1050
|
|
|
937
1051
|
Examples:
|
|
938
1052
|
markdown-lsp graph ./docs --format json --pretty
|
|
939
1053
|
markdown-lsp graph ./docs --format html --out graph.html
|
|
940
1054
|
markdown-lsp graph ./docs --format dot | dot -Tsvg > graph.svg
|
|
941
1055
|
markdown-lsp graph ./docs --format html --semantic --out graph.html
|
|
1056
|
+
markdown-lsp graph ./docs --format html --semantic --granularity heading --out graph-headings.html
|
|
942
1057
|
`.trim(),
|
|
943
1058
|
"semantic-search": `
|
|
944
1059
|
semantic-search <docs-dir> <query> [--limit <n>] [--model <embedding-model>]
|
|
1060
|
+
[--granularity page|heading|line]
|
|
945
1061
|
|
|
946
1062
|
AI-powered semantic search using embeddings.
|
|
947
1063
|
|
|
@@ -950,17 +1066,50 @@ semantic-search <docs-dir> <query> [--limit <n>] [--model <embedding-model>]
|
|
|
950
1066
|
<query> Natural-language search query
|
|
951
1067
|
|
|
952
1068
|
Options:
|
|
953
|
-
--limit <n>
|
|
954
|
-
--model <m>
|
|
955
|
-
--
|
|
1069
|
+
--limit <n> Return at most <n> results (default: 10)
|
|
1070
|
+
--model <m> Embedding model override
|
|
1071
|
+
--granularity page Search whole pages (default)
|
|
1072
|
+
--granularity heading Search within sections (returns anchor + headingPath)
|
|
1073
|
+
--granularity line Search paragraph blocks (returns line number)
|
|
1074
|
+
--pretty Pretty-print JSON output
|
|
956
1075
|
|
|
957
1076
|
Note: requires OPENROUTER_API_KEY or AI_GATEWAY_API_KEY.
|
|
958
1077
|
Default embedding model: openai/text-embedding-3-small.
|
|
959
1078
|
Results are cached in .markdown-lsp-cache/.
|
|
1079
|
+
Run "index" first to pre-warm the cache (saves tokens on repeated searches).
|
|
960
1080
|
|
|
961
1081
|
Examples:
|
|
962
1082
|
markdown-lsp semantic-search ./docs "how to set up webhooks" --limit 5
|
|
963
1083
|
markdown-lsp semantic-search ./docs "authentication" --model openai/text-embedding-3-small
|
|
1084
|
+
markdown-lsp semantic-search ./docs "webhook auth" --granularity heading --limit 10
|
|
1085
|
+
markdown-lsp semantic-search ./docs "rate limit error" --granularity line --limit 5
|
|
1086
|
+
`.trim(),
|
|
1087
|
+
"index": `
|
|
1088
|
+
index <docs-dir> [--granularity page|heading|line] [--model <embedding-model>]
|
|
1089
|
+
|
|
1090
|
+
Build the persistent semantic index — embeds all doc units at the chosen
|
|
1091
|
+
granularity and caches them to .markdown-lsp-cache/. Subsequent
|
|
1092
|
+
semantic-search and graph --semantic calls reuse the cache and only
|
|
1093
|
+
embed the query (1 API call instead of N).
|
|
1094
|
+
|
|
1095
|
+
Idempotent: re-running without doc changes costs 0 API calls (all hits).
|
|
1096
|
+
Changed files are re-embedded automatically (cache key = sha256(model+text)).
|
|
1097
|
+
|
|
1098
|
+
Arguments:
|
|
1099
|
+
<docs-dir> Path to the documentation directory
|
|
1100
|
+
|
|
1101
|
+
Options:
|
|
1102
|
+
--granularity page Index whole pages (default)
|
|
1103
|
+
--granularity heading Index sections (recommended for precision)
|
|
1104
|
+
--granularity line Index paragraph blocks
|
|
1105
|
+
--model <m> Embedding model override
|
|
1106
|
+
--pretty Pretty-print progress JSON
|
|
1107
|
+
|
|
1108
|
+
Note: requires OPENROUTER_API_KEY or AI_GATEWAY_API_KEY.
|
|
1109
|
+
|
|
1110
|
+
Examples:
|
|
1111
|
+
markdown-lsp index ./docs --granularity heading
|
|
1112
|
+
markdown-lsp index ./docs --granularity line --model openai/text-embedding-3-small
|
|
964
1113
|
`.trim(),
|
|
965
1114
|
"lsp": `
|
|
966
1115
|
lsp [--stdio]
|
|
@@ -979,7 +1128,7 @@ serve [--stdio]
|
|
|
979
1128
|
markdown-lsp serve --stdio
|
|
980
1129
|
`.trim(),
|
|
981
1130
|
};
|
|
982
|
-
//
|
|
1131
|
+
// Aliases
|
|
983
1132
|
SUB_USAGE["serve"] = SUB_USAGE["lsp"];
|
|
984
1133
|
// Parse global flags from the remaining args
|
|
985
1134
|
let pretty = false;
|
|
@@ -1155,6 +1304,7 @@ serve [--stdio]
|
|
|
1155
1304
|
format: { type: "string" },
|
|
1156
1305
|
out: { type: "string" },
|
|
1157
1306
|
semantic: { type: "boolean" },
|
|
1307
|
+
granularity: { type: "string" },
|
|
1158
1308
|
"sim-threshold": { type: "string" },
|
|
1159
1309
|
"sim-top-k": { type: "string" },
|
|
1160
1310
|
model: { type: "string" },
|
|
@@ -1164,6 +1314,12 @@ serve [--stdio]
|
|
|
1164
1314
|
const docsDir = positionals[0] ?? die("graph requires <docs-dir>");
|
|
1165
1315
|
const format = (values.format ?? "json");
|
|
1166
1316
|
const semantic = values.semantic ?? false;
|
|
1317
|
+
const rawGranularity = values.granularity ?? "page";
|
|
1318
|
+
if (rawGranularity === "line") {
|
|
1319
|
+
process.stderr.write("Error: --granularity line is not supported for graph (too many nodes — use page or heading).\n");
|
|
1320
|
+
process.exit(1);
|
|
1321
|
+
}
|
|
1322
|
+
const granularity = rawGranularity;
|
|
1167
1323
|
const simThreshold = values["sim-threshold"] !== undefined
|
|
1168
1324
|
? parseFloat(values["sim-threshold"])
|
|
1169
1325
|
: 0.75;
|
|
@@ -1176,7 +1332,7 @@ serve [--stdio]
|
|
|
1176
1332
|
const data = buildGraphExport(raw);
|
|
1177
1333
|
if (semantic) {
|
|
1178
1334
|
try {
|
|
1179
|
-
await addSemanticEdges(data, raw.pages, modelOverride, simThreshold, simTopK);
|
|
1335
|
+
await addSemanticEdges(data, raw.pages, modelOverride, simThreshold, simTopK, granularity);
|
|
1180
1336
|
}
|
|
1181
1337
|
catch (err) {
|
|
1182
1338
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -1216,7 +1372,7 @@ serve [--stdio]
|
|
|
1216
1372
|
result = renderGraphMermaid(data);
|
|
1217
1373
|
break;
|
|
1218
1374
|
case "html":
|
|
1219
|
-
result = renderGraphHtml(data, docsDir, semantic && data.semanticEdges.length > 0);
|
|
1375
|
+
result = renderGraphHtml(data, docsDir, semantic && data.semanticEdges.length > 0, granularity);
|
|
1220
1376
|
break;
|
|
1221
1377
|
default:
|
|
1222
1378
|
die(`Unknown format: ${format}. Use json, dot, mermaid, or html.`);
|
|
@@ -1236,6 +1392,7 @@ serve [--stdio]
|
|
|
1236
1392
|
options: {
|
|
1237
1393
|
limit: { type: "string" },
|
|
1238
1394
|
model: { type: "string" },
|
|
1395
|
+
granularity: { type: "string" },
|
|
1239
1396
|
},
|
|
1240
1397
|
allowPositionals: true,
|
|
1241
1398
|
});
|
|
@@ -1243,43 +1400,102 @@ serve [--stdio]
|
|
|
1243
1400
|
const query = positionals[1] ?? die("semantic-search requires <query>");
|
|
1244
1401
|
const limit = values.limit !== undefined ? parseInt(values.limit, 10) : 10;
|
|
1245
1402
|
const modelOverride = values.model;
|
|
1403
|
+
const granularity = (values.granularity ?? "page");
|
|
1246
1404
|
// Check API key before doing any work
|
|
1247
1405
|
const { assertApiKey } = await import("./ai/config.js");
|
|
1248
1406
|
assertApiKey();
|
|
1249
1407
|
const { embedTexts, embedOne } = await import("./ai/embeddings.js");
|
|
1408
|
+
const { unitize } = await import("./ai/granular.js");
|
|
1250
1409
|
const graph = buildGraph(docsDir);
|
|
1251
|
-
const
|
|
1252
|
-
|
|
1253
|
-
const
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
// Embed all pages (cached) and the query
|
|
1258
|
-
const [pageEmbeddings, queryVec] = await Promise.all([
|
|
1259
|
-
embedTexts(pageTexts, modelOverride, true),
|
|
1410
|
+
const units = unitize(graph.pages, granularity);
|
|
1411
|
+
process.stderr.write(`[markdown-lsp] semantic-search: ${units.length} units at granularity="${granularity}"\n`);
|
|
1412
|
+
const unitTexts = units.map((u) => u.text);
|
|
1413
|
+
// Embed all units (cached) and the query in parallel
|
|
1414
|
+
const [unitEmbeddings, queryVec] = await Promise.all([
|
|
1415
|
+
embedTexts(unitTexts, modelOverride, true),
|
|
1260
1416
|
embedOne(query, modelOverride),
|
|
1261
1417
|
]);
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1418
|
+
if (unitEmbeddings.tokensUsed > 0) {
|
|
1419
|
+
process.stderr.write(`[markdown-lsp] Embeddings computed (${unitEmbeddings.tokensUsed} tokens).\n`);
|
|
1420
|
+
}
|
|
1421
|
+
else {
|
|
1422
|
+
process.stderr.write(`[markdown-lsp] All embeddings from cache (0 API tokens for docs).\n`);
|
|
1423
|
+
}
|
|
1424
|
+
// Score each unit
|
|
1425
|
+
const scored = units.map((u, i) => {
|
|
1426
|
+
const vec = unitEmbeddings.vectors[i];
|
|
1265
1427
|
if (!vec)
|
|
1266
|
-
return {
|
|
1267
|
-
return {
|
|
1428
|
+
return { unit: u, score: 0 };
|
|
1429
|
+
return { unit: u, score: cosineSim(queryVec, vec) };
|
|
1268
1430
|
});
|
|
1269
1431
|
scored.sort((a, b) => b.score - a.score);
|
|
1270
1432
|
const topN = scored.slice(0, limit);
|
|
1271
|
-
const results = topN.map(({
|
|
1272
|
-
const snippet =
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1433
|
+
const results = topN.map(({ unit, score }) => {
|
|
1434
|
+
const snippet = unit.text.slice(0, 200).replace(/\s+/g, " ").trim();
|
|
1435
|
+
const snippetOut = snippet.length < unit.text.length ? snippet + "…" : snippet;
|
|
1436
|
+
const base = {
|
|
1437
|
+
level: unit.level,
|
|
1438
|
+
pagePath: unit.pagePath,
|
|
1439
|
+
pageTitle: unit.pageTitle ?? unit.pagePath,
|
|
1276
1440
|
score: Math.round(score * 10000) / 10000,
|
|
1277
|
-
snippet:
|
|
1441
|
+
snippet: snippetOut,
|
|
1278
1442
|
};
|
|
1443
|
+
if (unit.level === "heading") {
|
|
1444
|
+
return { ...base, anchor: unit.anchor ?? null, headingPath: unit.headingPath ?? [] };
|
|
1445
|
+
}
|
|
1446
|
+
if (unit.level === "line") {
|
|
1447
|
+
return { ...base, line: unit.line ?? 0 };
|
|
1448
|
+
}
|
|
1449
|
+
return base;
|
|
1279
1450
|
});
|
|
1280
1451
|
out(results, pretty);
|
|
1281
1452
|
break;
|
|
1282
1453
|
}
|
|
1454
|
+
case "index": {
|
|
1455
|
+
const { values, positionals } = parseArgs({
|
|
1456
|
+
args: filteredRest,
|
|
1457
|
+
options: {
|
|
1458
|
+
granularity: { type: "string" },
|
|
1459
|
+
model: { type: "string" },
|
|
1460
|
+
},
|
|
1461
|
+
allowPositionals: true,
|
|
1462
|
+
});
|
|
1463
|
+
const docsDir = positionals[0] ?? die("index requires <docs-dir>");
|
|
1464
|
+
const granularity = (values.granularity ?? "page");
|
|
1465
|
+
const modelOverride = values.model;
|
|
1466
|
+
// Check API key
|
|
1467
|
+
const { assertApiKey } = await import("./ai/config.js");
|
|
1468
|
+
assertApiKey();
|
|
1469
|
+
const { embedTexts } = await import("./ai/embeddings.js");
|
|
1470
|
+
const { unitize } = await import("./ai/granular.js");
|
|
1471
|
+
const graph = buildGraph(docsDir);
|
|
1472
|
+
const units = unitize(graph.pages, granularity);
|
|
1473
|
+
process.stderr.write(`[markdown-lsp] index: ${units.length} units at granularity="${granularity}"` +
|
|
1474
|
+
` (model: ${modelOverride ?? "openai/text-embedding-3-small"})\n`);
|
|
1475
|
+
const unitTexts = units.map((u) => u.text);
|
|
1476
|
+
const startTime = Date.now();
|
|
1477
|
+
const { vectors, tokensUsed } = await embedTexts(unitTexts, modelOverride, true);
|
|
1478
|
+
const elapsed = Date.now() - startTime;
|
|
1479
|
+
const indexed = vectors.filter((v) => v !== null).length;
|
|
1480
|
+
if (tokensUsed > 0) {
|
|
1481
|
+
process.stderr.write(`[markdown-lsp] index: ${indexed}/${units.length} units embedded,` +
|
|
1482
|
+
` ${tokensUsed} new tokens used, ${elapsed}ms\n`);
|
|
1483
|
+
}
|
|
1484
|
+
else {
|
|
1485
|
+
process.stderr.write(`[markdown-lsp] index: all ${indexed} units from cache — 0 API tokens (already indexed)\n`);
|
|
1486
|
+
}
|
|
1487
|
+
out({
|
|
1488
|
+
docsDir,
|
|
1489
|
+
granularity,
|
|
1490
|
+
totalUnits: units.length,
|
|
1491
|
+
newlyEmbedded: Math.round(tokensUsed > 0 ? indexed : 0),
|
|
1492
|
+
fromCache: tokensUsed === 0 ? indexed : units.length - indexed,
|
|
1493
|
+
tokensUsed,
|
|
1494
|
+
elapsedMs: elapsed,
|
|
1495
|
+
model: modelOverride ?? "openai/text-embedding-3-small",
|
|
1496
|
+
}, pretty);
|
|
1497
|
+
break;
|
|
1498
|
+
}
|
|
1283
1499
|
default:
|
|
1284
1500
|
process.stderr.write(`Unknown subcommand: ${subcommand}\n\n${USAGE}\n`);
|
|
1285
1501
|
process.exit(1);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EACL,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAE1B,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiHb,CAAC,IAAI,EAAE,CAAA;AAER,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,SAAS,GAAG,CAAC,KAAc,EAAE,MAAe;IAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AAChG,CAAC;AAqCD,SAAS,gBAAgB,CAAC,GAAwD;IAChF,2CAA2C;IAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAA;IAC5C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;YAClB,EAAE,EAAE,CAAC,CAAC,IAAI;YACV,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI;YACxB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;YAC3B,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;YAChC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/B,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC,CAAC;YACH,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;SACf,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,KAAK,GAAgB,EAAE,CAAA;IAC7B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI;YAAE,SAAQ;QACvC,KAAK,CAAC,IAAI,CAAC;YACT,MAAM,EAAE,CAAC,CAAC,QAAQ;YAClB,MAAM,EAAE,CAAC,CAAC,cAAc;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC;YACrC,MAAM,EAAE,CAAC,CAAC,cAAc;YACxB,KAAK,EAAE,CAAC,CAAC,UAAU;YACnB,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC;YAC3C,MAAM,EAAE,CAAC,CAAC,QAAQ;YAClB,KAAK,EAAE,CAAC,CAAC,UAAU;YACnB,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,KAAK;QACL,aAAa,EAAE,EAAE;QACjB,eAAe,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM;KACvC,CAAA;AACH,CAAC;AAED,iFAAiF;AAEjF,SAAS,SAAS,CAAC,CAAW,EAAE,CAAW;IACzC,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA;QACpB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA;QACnB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA;IACrB,CAAC;IACD,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IAClC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;AAC9C,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,gBAAgB,CAC7B,IAAiB,EACjB,KAAmE,EACnE,aAAiC,EACjC,YAAoB,EACpB,OAAe;IAEf,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACvD,YAAY,EAAE,CAAA;IAEd,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAEzD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAChC,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QACjD,OAAO,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4BAA4B,KAAK,CAAC,MAAM,QAAQ;QAChD,YAAY,aAAa,IAAI,+BAA+B,QAAQ,CACrE,CAAA;IACD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;IAChF,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,UAAU,kBAAkB,CAAC,CAAA;IAC3F,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;IACvF,CAAC;IAED,MAAM,aAAa,GAAmB,EAAE,CAAA;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI;YAAE,SAAQ;QAEnB,wCAAwC;QACxC,MAAM,IAAI,GAAwC,EAAE,CAAA;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC;gBAAE,SAAQ;YACrB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YACvB,IAAI,CAAC,IAAI;gBAAE,SAAQ;YACnB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACnC,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YACzB,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC;aACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;aACjB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACtB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI;YACpB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK;SACzC,CAAC,CAAC,CAAA;QAEL,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAA;QAC5D,IAAI,IAAI;YAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAEtC,uDAAuD;QACvD,KAAK,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACV,aAAa,CAAC,IAAI,CAAC;oBACjB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI;oBACtB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI;oBACtB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK;oBACxC,IAAI,EAAE,UAAU;iBACjB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kBAAkB,aAAa,CAAC,MAAM,iBAAiB;QACvD,eAAe,YAAY,UAAU,OAAO,MAAM,CACnD,CAAA;AACH,CAAC;AAED,iFAAiF;AAEjF,SAAS,eAAe,CAAC,IAAiB,EAAE,MAAe;IACzD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AACtE,CAAC;AAED,SAAS,cAAc,CAAC,IAAiB;IACvC,MAAM,KAAK,GAAa,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;IACxD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACpC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,KAAK,KAAK,CAAC,CAAA;IAC7C,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,CAAA;IACvC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,0CAA0C,CAAC,CAAC,KAAK,KAAK,CAAC,CAAA;IACzF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAiB;IAC3C,MAAM,KAAK,GAAa,CAAC,UAAU,CAAC,CAAA;IACpC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,CAAA;IACvC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,KAAK,SAAS,GAAG,GAAG,CAAC,CAAA;IACrD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,eAAe,CAAC,IAAiB,EAAE,OAAe,EAAE,WAAoB;IAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAA;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACrC,OAAO;;;;qBAIY,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+DN,KAAK;;;;;8CAKqB,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;kBAC1D,WAAW,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,gCAAgC;8CACtE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW;;;;;;;;;;;;;;;;;;;eAmBrE,QAAQ;uBACA,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkV1B,CAAA;AACR,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,cAAc;IAC3B,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;AAC1B,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAElC,4EAA4E;IAC5E,IACE,IAAI,CAAC,MAAM,KAAK,CAAC;QACjB,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;QACrB,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY;QACxB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EACzD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,iEAAiE;YACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,yEAAyE;QACzE,MAAM,cAAc,EAAE,CAAA;QACtB,OAAM;IACR,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAE1B,iBAAiB;IACjB,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,kEAAkE;IAClE,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iWAAiW,CAAC,CAAA;YACvX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,cAAc,EAAE,CAAA;QACtB,OAAM;IACR,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAA2B;QACxC,mBAAmB,EAAE;;;;;;;;;;;;;;;;CAgBxB,CAAC,IAAI,EAAE;QAEJ,SAAS,EAAE;;;;;;;;;;;;;;CAcd,CAAC,IAAI,EAAE;QAEJ,aAAa,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBlB,CAAC,IAAI,EAAE;QAEJ,gBAAgB,EAAE;;;;;;;;;;;;;;;CAerB,CAAC,IAAI,EAAE;QAEJ,cAAc,EAAE;;;;;;;;;;;;;;;CAenB,CAAC,IAAI,EAAE;QAEJ,UAAU,EAAE;;;;;;;;;;;;;;CAcf,CAAC,IAAI,EAAE;QAEJ,YAAY,EAAE;;;;;;;;;;;;;;CAcjB,CAAC,IAAI,EAAE;QAEJ,cAAc,EAAE;;;;;;;;;;;;;;;CAenB,CAAC,IAAI,EAAE;QAEJ,aAAa,EAAE;;;;;;;;;;;;;;;CAelB,CAAC,IAAI,EAAE;QAEJ,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BZ,CAAC,IAAI,EAAE;QAEJ,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBtB,CAAC,IAAI,EAAE;QAEJ,KAAK,EAAE;;;;;;;;;;;;;;;CAeV,CAAC,IAAI,EAAE;KACL,CAAA;IACD,iCAAiC;IACjC,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,KAAK,CAAE,CAAA;IAEtC,6CAA6C;IAC7C,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,MAAM,YAAY,GAAa,EAAE,CAAA;IACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,UAAU;YAAE,MAAM,GAAG,IAAI,CAAA;;YAChC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,iEAAiE;IACjE,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;QACtC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;QACpC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE;oBACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;gBACD,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,uCAAuC,CAAC,CAAA;YAC9E,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE;gBAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aAC3E,CAAC,CAAA;YACF,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnB,MAAK;QACP,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBAChC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,EAAE;gBACX,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,6BAA6B,CAAC,CAAA;YACpE,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,yBAAyB,CAAC,CAAA;YAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YACpC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnB,MAAK;QACP,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE;oBACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC1B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACrC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC5B;gBACD,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,iCAAiC,CAAC,CAAA;YACxE,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,8BAA8B,CAAC,CAAA;YACnE,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,IAAI,GAAG;gBACX,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa,EAAE,MAAM,CAAC,gBAAgB,CAAC;gBACvC,UAAU,EAAE,MAAM,CAAC,MAAM;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1E,YAAY,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aACtF,CAAA;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAA;YACpC,MAAM,MAAM,GAAG,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,KAAK;gBAChD,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;gBAChC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;YACxC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnB,MAAK;QACP,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE;oBACP,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;gBACD,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,oCAAoC,CAAC,CAAA;YAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,iCAAiC,CAAC,CAAA;YACtE,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YACjF,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YACjD,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnB,MAAK;QACP,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBAChC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,EAAE;gBACX,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,kCAAkC,CAAC,CAAA;YACzE,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,8BAA8B,CAAC,CAAA;YAClE,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACvC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnB,MAAK;QACP,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBAChC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,EAAE;gBACX,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,8BAA8B,CAAC,CAAA;YACrE,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,0BAA0B,CAAC,CAAA;YAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;YACxC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnB,MAAK;QACP,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBAChC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,EAAE;gBACX,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,gCAAgC,CAAC,CAAA;YACvE,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,4BAA4B,CAAC,CAAA;YAChE,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;YACxC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnB,MAAK;QACP,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBAChC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,EAAE;gBACX,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,kCAAkC,CAAC,CAAA;YACzE,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,mCAAmC,CAAC,CAAA;YAC3E,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,mCAAmC,CAAC,CAAA;YAC3E,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAA;YAClE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAClB,MAAK;QACP,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBAChC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,EAAE;gBACX,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,iCAAiC,CAAC,CAAA;YACxE,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,6BAA6B,CAAC,CAAA;YACjE,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,+BAA+B,CAAC,CAAA;YACrE,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,OAAO,GAAG,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,CAAA;YAC1E,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACpB,MAAK;QACP,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE;oBACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACvB,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC7B,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACnC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;gBACD,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,2BAA2B,CAAC,CAAA;YAClE,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAwC,CAAA;YAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAA;YACzC,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,SAAS;gBACxD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBACrC,CAAC,CAAC,IAAI,CAAA;YACR,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS;gBAC/C,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;gBACnC,CAAC,CAAC,CAAC,CAAA;YACL,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAA;YAElC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAA;YAC1B,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAElC,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;gBAC/E,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBAC5D,IACE,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;wBAClC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;wBAClC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;wBAC5B,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;wBACvB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EACvB,CAAC;wBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0CAA0C;4BAC1C,8DAA8D;4BAC9D,yDAAyD;4BACzD,kDAAkD;4BAClD,wDAAwD;4BACxD,mFAAmF,CACpF,CAAA;wBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACjB,CAAC;oBACD,IACE,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACnC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;wBACnB,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EACzB,CAAC;wBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uCAAuC,GAAG,GAAG,GAAG,IAAI;4BACpD,iEAAiE;4BACjE,6EAA6E,CAC9E,CAAA;wBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACjB,CAAC;oBACD,MAAM,GAAG,CAAA;gBACX,CAAC;YACH,CAAC;YAED,IAAI,MAAc,CAAA;YAClB,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,MAAM;oBACT,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;oBACtC,MAAK;gBACP,KAAK,KAAK;oBACR,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;oBAC7B,MAAK;gBACP,KAAK,SAAS;oBACZ,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;oBACjC,MAAK;gBACP,KAAK,MAAM;oBACT,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAClF,MAAK;gBACP;oBACE,GAAG,CAAC,mBAAmB,MAAM,oCAAoC,CAAC,CAAA;YACtE,CAAC;YAED,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;gBACf,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;gBAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;YAC1D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;YACrC,CAAC;YACD,MAAK;QACP,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE;oBACP,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;gBACD,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,qCAAqC,CAAC,CAAA;YAC5E,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,kCAAkC,CAAC,CAAA;YACvE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAA;YAElC,sCAAsC;YACtC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACvD,YAAY,EAAE,CAAA;YAEd,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;YAEnE,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YAEzB,uEAAuE;YACvE,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChC,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;gBACjD,OAAO,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YAC7C,CAAC,CAAC,CAAA;YAEF,yCAAyC;YACzC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACnD,UAAU,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC;gBAC1C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;aAC/B,CAAC,CAAA;YAEF,kBAAkB;YAClB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAChC,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBACrC,IAAI,CAAC,GAAG;oBAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;gBACtC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAA;YACrD,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;YACxC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;YAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;gBACtE,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI;oBAClC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK;oBACxC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO;iBACxE,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACpB,MAAK;QACP,CAAC;QAED;YACE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,UAAU,OAAO,KAAK,IAAI,CAAC,CAAA;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8BAA8B;QAC9B,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CACvE,CAAA;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED