docspack 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts +48 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +243 -0
- package/dist/agent.js.map +1 -0
- package/dist/artifact.d.ts +32 -0
- package/dist/artifact.d.ts.map +1 -0
- package/dist/artifact.js +78 -0
- package/dist/artifact.js.map +1 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +75 -9
- package/dist/build.js.map +1 -1
- package/dist/changed.d.ts +31 -0
- package/dist/changed.d.ts.map +1 -0
- package/dist/changed.js +71 -0
- package/dist/changed.js.map +1 -0
- package/dist/cli.js +131 -10
- package/dist/cli.js.map +1 -1
- package/dist/coverage.d.ts +35 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +64 -0
- package/dist/coverage.js.map +1 -0
- package/dist/db.d.ts +38 -2
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +109 -6
- package/dist/db.js.map +1 -1
- package/dist/discovery.d.ts +14 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +31 -6
- package/dist/discovery.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +90 -3
- package/dist/doctor.js.map +1 -1
- package/dist/document.d.ts +2 -0
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +7 -3
- package/dist/document.js.map +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +65 -4
- package/dist/help.js.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +3 -0
- package/dist/mcp.js.map +1 -1
- package/dist/preview.d.ts.map +1 -1
- package/dist/preview.js +1 -0
- package/dist/preview.js.map +1 -1
- package/dist/search.d.ts +17 -3
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +116 -21
- package/dist/search.js.map +1 -1
- package/dist/spec.d.ts +6 -0
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js +12 -3
- package/dist/spec.js.map +1 -1
- package/dist/surface.d.ts +45 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +208 -0
- package/dist/surface.js.map +1 -0
- package/dist/sync.d.ts +8 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +50 -1
- package/dist/sync.js.map +1 -1
- package/dist/verify.d.ts +9 -0
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +55 -27
- package/dist/verify.js.map +1 -1
- package/package.json +1 -1
- package/src/agent.ts +308 -0
- package/src/artifact.ts +110 -0
- package/src/build.ts +103 -10
- package/src/changed.ts +99 -0
- package/src/cli.ts +167 -10
- package/src/coverage.ts +96 -0
- package/src/db.ts +168 -7
- package/src/discovery.ts +40 -5
- package/src/doctor.ts +100 -4
- package/src/document.ts +13 -4
- package/src/help.ts +65 -4
- package/src/index.ts +30 -0
- package/src/mcp.ts +3 -0
- package/src/preview.ts +1 -0
- package/src/search.ts +158 -24
- package/src/spec.ts +21 -3
- package/src/surface.ts +265 -0
- package/src/sync.ts +66 -2
- package/src/verify.ts +57 -27
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type PackageManifest } from "./spec.js";
|
|
2
|
+
/** How much of one library's public surface the documentation mentions. */
|
|
3
|
+
export interface LibraryCoverage {
|
|
4
|
+
readonly library: string;
|
|
5
|
+
/** Exported names long enough to search prose for. */
|
|
6
|
+
readonly names: number;
|
|
7
|
+
/** Those the documentation mentions at least once, anywhere. */
|
|
8
|
+
readonly documented: number;
|
|
9
|
+
/** A sample of what it does not mention, for an author to act on. */
|
|
10
|
+
readonly uncovered: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
export interface CoverageReport {
|
|
13
|
+
readonly libraries: readonly LibraryCoverage[];
|
|
14
|
+
/** Libraries the package documents whose declarations could not be read. */
|
|
15
|
+
readonly unreadable: readonly string[];
|
|
16
|
+
}
|
|
17
|
+
export interface CoverageOptions {
|
|
18
|
+
readonly packageDir: string;
|
|
19
|
+
readonly llmsDir: string;
|
|
20
|
+
readonly manifest: PackageManifest;
|
|
21
|
+
/** Project the library is resolved from when the docs package does not depend on it itself. */
|
|
22
|
+
readonly cwd: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Compares what a documentation package says against what the library it documents exports.
|
|
26
|
+
*
|
|
27
|
+
* A documentation site is written page by page around tasks and an API grows name by name, so
|
|
28
|
+
* the two drift apart with nobody noticing — measured across two well-documented projects, half
|
|
29
|
+
* of the exported surface is mentioned nowhere. This is the number that makes that visible, and
|
|
30
|
+
* it is mechanical: two files, no model, no judgement.
|
|
31
|
+
*/
|
|
32
|
+
export declare function measureCoverage(options: CoverageOptions): Promise<CoverageReport>;
|
|
33
|
+
/** Splits text into the identifier-shaped tokens an exact mention would produce. */
|
|
34
|
+
export declare function identifiers(text: string): Set<string>;
|
|
35
|
+
//# sourceMappingURL=coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,eAAe,EAAoB,MAAM,WAAW,CAAC;AAI5F,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAWD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,+FAA+F;IAC/F,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA8BvF;AAED,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAErD"}
|
package/dist/coverage.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { resolvePackageDir } from "./discovery.js";
|
|
3
|
+
import { formatDocumentedLibrary, resolveChunkFile } from "./spec.js";
|
|
4
|
+
import { readPublicSurface } from "./surface.js";
|
|
5
|
+
import { documentedLibraries } from "./verify.js";
|
|
6
|
+
/**
|
|
7
|
+
* A name shorter than this is too generic to look for in prose, and its absence would say
|
|
8
|
+
* nothing: `Env`, `z`, `app`.
|
|
9
|
+
*/
|
|
10
|
+
const MIN_NAME = 4;
|
|
11
|
+
/** How many uncovered names are named in the report. */
|
|
12
|
+
const SAMPLE = 12;
|
|
13
|
+
/**
|
|
14
|
+
* Compares what a documentation package says against what the library it documents exports.
|
|
15
|
+
*
|
|
16
|
+
* A documentation site is written page by page around tasks and an API grows name by name, so
|
|
17
|
+
* the two drift apart with nobody noticing — measured across two well-documented projects, half
|
|
18
|
+
* of the exported surface is mentioned nowhere. This is the number that makes that visible, and
|
|
19
|
+
* it is mechanical: two files, no model, no judgement.
|
|
20
|
+
*/
|
|
21
|
+
export async function measureCoverage(options) {
|
|
22
|
+
const libraries = await documentedLibraries(options.packageDir, options.manifest);
|
|
23
|
+
if (libraries.length === 0)
|
|
24
|
+
return { libraries: [], unreadable: [] };
|
|
25
|
+
const text = await readCorpus(options);
|
|
26
|
+
const mentioned = identifiers(text);
|
|
27
|
+
const covered = [];
|
|
28
|
+
const unreadable = [];
|
|
29
|
+
for (const library of libraries) {
|
|
30
|
+
const dir = (await resolvePackageDir(library.name, options.packageDir)) ??
|
|
31
|
+
(await resolvePackageDir(library.name, options.cwd));
|
|
32
|
+
const surface = dir === undefined ? undefined : await readPublicSurface(dir);
|
|
33
|
+
if (surface === undefined) {
|
|
34
|
+
unreadable.push(formatDocumentedLibrary(library));
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const names = [...surface.symbols.keys()].filter((name) => name.length >= MIN_NAME);
|
|
38
|
+
const uncovered = names.filter((name) => !mentioned.has(name));
|
|
39
|
+
covered.push({
|
|
40
|
+
library: formatDocumentedLibrary(library),
|
|
41
|
+
names: names.length,
|
|
42
|
+
documented: names.length - uncovered.length,
|
|
43
|
+
uncovered: uncovered.slice(0, SAMPLE),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return { libraries: covered, unreadable };
|
|
47
|
+
}
|
|
48
|
+
/** Splits text into the identifier-shaped tokens an exact mention would produce. */
|
|
49
|
+
export function identifiers(text) {
|
|
50
|
+
return new Set(text.split(/[^A-Za-z0-9_$]+/).filter((token) => token.length > 0));
|
|
51
|
+
}
|
|
52
|
+
async function readCorpus(options) {
|
|
53
|
+
const parts = [];
|
|
54
|
+
for (const chunk of options.manifest.chunks) {
|
|
55
|
+
try {
|
|
56
|
+
parts.push(await readFile(resolveChunkFile(options.llmsDir, chunk.file), "utf8"));
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// A chunk that cannot be read is doctor's finding to report, not coverage's.
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return parts.join("\n");
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":"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"}
|
package/dist/db.d.ts
CHANGED
|
@@ -1,9 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a package's text came from. `docs` is written by a human and published as a docs
|
|
3
|
+
* package; `artifact` is derived from an installed library's own type declarations. The
|
|
4
|
+
* distinction is not cosmetic — a signature is a fact about the build, prose is a claim by its
|
|
5
|
+
* author — so it is stored rather than inferred from the name.
|
|
6
|
+
*/
|
|
7
|
+
export type PackageKind = "docs" | "artifact";
|
|
1
8
|
export interface IndexedPackage {
|
|
2
9
|
readonly id: string;
|
|
3
10
|
readonly name: string;
|
|
4
11
|
readonly version: string;
|
|
12
|
+
readonly kind?: PackageKind;
|
|
5
13
|
readonly indexedAt?: string;
|
|
6
14
|
}
|
|
15
|
+
/** An exported name and the chunk carrying its declaration. */
|
|
16
|
+
export interface SymbolHit {
|
|
17
|
+
readonly name: string;
|
|
18
|
+
readonly packageId: string;
|
|
19
|
+
readonly chunkId: string;
|
|
20
|
+
}
|
|
7
21
|
export interface IndexedChunk {
|
|
8
22
|
readonly chunkId: string;
|
|
9
23
|
readonly filePath: string;
|
|
@@ -26,6 +40,8 @@ export interface SearchOptions {
|
|
|
26
40
|
readonly limit?: number;
|
|
27
41
|
/** Stop returning chunks once this many tokens have been collected. */
|
|
28
42
|
readonly maxTokens?: number;
|
|
43
|
+
/** Restrict to packages of these kinds. Defaults to every kind. */
|
|
44
|
+
readonly kinds?: readonly PackageKind[];
|
|
29
45
|
}
|
|
30
46
|
/**
|
|
31
47
|
* `node:sqlite` is still flagged experimental on Node 22 and warns when it is loaded. The database
|
|
@@ -55,9 +71,29 @@ export declare class Store {
|
|
|
55
71
|
static open(path?: string): Store;
|
|
56
72
|
hasPackage(id: string): boolean;
|
|
57
73
|
listPackages(): IndexedPackage[];
|
|
74
|
+
/** Every version of one library in the store, newest indexing first. */
|
|
75
|
+
versionsOf(name: string): IndexedPackage[];
|
|
76
|
+
/**
|
|
77
|
+
* Chunks declaring an exported name, by exact match rather than by ranking.
|
|
78
|
+
*
|
|
79
|
+
* A symbol is a key, not a phrase. Ranking one is the mistake that made `docspack ask` unable
|
|
80
|
+
* to tell "the documentation does not mention this" from "nothing matched".
|
|
81
|
+
*/
|
|
82
|
+
lookupSymbol(name: string, packageIds?: readonly string[]): SymbolHit[];
|
|
83
|
+
/** Every chunk of one package, for a check that has to read the whole corpus. */
|
|
84
|
+
chunksOf(packageId: string): SearchHit[];
|
|
85
|
+
/** Every exported name recorded for one package. */
|
|
86
|
+
symbolsOf(packageId: string): string[];
|
|
87
|
+
/** One chunk by its id, however it was found. */
|
|
88
|
+
chunk(chunkId: string): SearchHit | undefined;
|
|
58
89
|
countChunks(packageId: string): number;
|
|
59
|
-
/**
|
|
60
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Replaces a package, all of its chunks and its symbol table in a single transaction.
|
|
92
|
+
*
|
|
93
|
+
* `symbols` maps an exported name to the chunk declaring it, and is how a query about a name
|
|
94
|
+
* is answered without ranking anything.
|
|
95
|
+
*/
|
|
96
|
+
indexPackage(pkg: IndexedPackage, chunks: readonly IndexedChunk[], symbols?: ReadonlyMap<string, string>): void;
|
|
61
97
|
removePackage(id: string): void;
|
|
62
98
|
/**
|
|
63
99
|
* Full-text search, ranked by bm25. Results stop early once `maxTokens` is reached, so a caller
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,gEAAgE;IAChE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/db.js
CHANGED
|
@@ -5,12 +5,13 @@ import { dirname, join } from "node:path";
|
|
|
5
5
|
import { DocspackError } from "./errors.js";
|
|
6
6
|
import { STOPWORDS } from "./stopwords.js";
|
|
7
7
|
const require = createRequire(import.meta.url);
|
|
8
|
-
const SCHEMA_VERSION =
|
|
8
|
+
const SCHEMA_VERSION = 2;
|
|
9
9
|
const SCHEMA = `
|
|
10
10
|
CREATE TABLE IF NOT EXISTS packages (
|
|
11
11
|
id TEXT PRIMARY KEY,
|
|
12
12
|
name TEXT NOT NULL,
|
|
13
13
|
version TEXT NOT NULL,
|
|
14
|
+
kind TEXT NOT NULL DEFAULT 'docs',
|
|
14
15
|
indexed_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
15
16
|
);
|
|
16
17
|
|
|
@@ -24,6 +25,15 @@ CREATE TABLE IF NOT EXISTS chunks (
|
|
|
24
25
|
|
|
25
26
|
CREATE INDEX IF NOT EXISTS chunks_by_package ON chunks(package_id);
|
|
26
27
|
|
|
28
|
+
CREATE TABLE IF NOT EXISTS symbols (
|
|
29
|
+
package_id TEXT NOT NULL REFERENCES packages(id),
|
|
30
|
+
name TEXT NOT NULL,
|
|
31
|
+
chunk_id TEXT NOT NULL,
|
|
32
|
+
PRIMARY KEY (package_id, name)
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
CREATE INDEX IF NOT EXISTS symbols_by_name ON symbols(name);
|
|
36
|
+
|
|
27
37
|
CREATE VIRTUAL TABLE IF NOT EXISTS chunks_fts USING fts5(
|
|
28
38
|
content,
|
|
29
39
|
tags,
|
|
@@ -92,8 +102,20 @@ export class Store {
|
|
|
92
102
|
this.#db = db;
|
|
93
103
|
this.#db.exec("PRAGMA journal_mode = WAL");
|
|
94
104
|
this.#db.exec(SCHEMA);
|
|
105
|
+
this.#migrate();
|
|
95
106
|
this.#db.exec(`PRAGMA user_version = ${SCHEMA_VERSION}`);
|
|
96
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Brings a store written by an older version forward. `CREATE TABLE IF NOT EXISTS` covers a
|
|
110
|
+
* new table, but not a new column on one that already exists, and rebuilding the whole index
|
|
111
|
+
* to add one would make an upgrade re-read every package on the machine.
|
|
112
|
+
*/
|
|
113
|
+
#migrate() {
|
|
114
|
+
const columns = this.#db.prepare("PRAGMA table_info(packages)").all();
|
|
115
|
+
if (!columns.some((column) => column.name === "kind")) {
|
|
116
|
+
this.#db.exec("ALTER TABLE packages ADD COLUMN kind TEXT NOT NULL DEFAULT 'docs'");
|
|
117
|
+
}
|
|
118
|
+
}
|
|
97
119
|
static open(path = defaultStorePath()) {
|
|
98
120
|
if (path !== ":memory:")
|
|
99
121
|
mkdirSync(dirname(path), { recursive: true });
|
|
@@ -112,34 +134,108 @@ export class Store {
|
|
|
112
134
|
}
|
|
113
135
|
listPackages() {
|
|
114
136
|
const rows = this.#db
|
|
115
|
-
.prepare("SELECT id, name, version, indexed_at FROM packages ORDER BY name, version")
|
|
137
|
+
.prepare("SELECT id, name, version, kind, indexed_at FROM packages ORDER BY name, version")
|
|
116
138
|
.all();
|
|
117
139
|
return rows.map((row) => ({
|
|
118
140
|
id: row.id,
|
|
119
141
|
name: row.name,
|
|
120
142
|
version: row.version,
|
|
143
|
+
kind: row.kind === "artifact" ? "artifact" : "docs",
|
|
121
144
|
indexedAt: row.indexed_at,
|
|
122
145
|
}));
|
|
123
146
|
}
|
|
147
|
+
/** Every version of one library in the store, newest indexing first. */
|
|
148
|
+
versionsOf(name) {
|
|
149
|
+
return this.listPackages().filter((pkg) => pkg.name === name);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Chunks declaring an exported name, by exact match rather than by ranking.
|
|
153
|
+
*
|
|
154
|
+
* A symbol is a key, not a phrase. Ranking one is the mistake that made `docspack ask` unable
|
|
155
|
+
* to tell "the documentation does not mention this" from "nothing matched".
|
|
156
|
+
*/
|
|
157
|
+
lookupSymbol(name, packageIds) {
|
|
158
|
+
if (packageIds !== undefined && packageIds.length === 0)
|
|
159
|
+
return [];
|
|
160
|
+
const scope = packageIds === undefined
|
|
161
|
+
? ""
|
|
162
|
+
: ` AND package_id IN (${packageIds.map(() => "?").join(", ")})`;
|
|
163
|
+
const rows = this.#db
|
|
164
|
+
.prepare(
|
|
165
|
+
// A package that declares the name comes first: an empty chunk id means the name is
|
|
166
|
+
// exported but its declaration was not readable, which answers less.
|
|
167
|
+
`SELECT name, package_id AS packageId, chunk_id AS chunkId
|
|
168
|
+
FROM symbols WHERE name = ?${scope}
|
|
169
|
+
ORDER BY (chunk_id = '') ASC, package_id`)
|
|
170
|
+
.all(name, ...(packageIds ?? []));
|
|
171
|
+
return rows.map((row) => ({ name: row.name, packageId: row.packageId, chunkId: row.chunkId }));
|
|
172
|
+
}
|
|
173
|
+
/** Every chunk of one package, for a check that has to read the whole corpus. */
|
|
174
|
+
chunksOf(packageId) {
|
|
175
|
+
const rows = this.#db
|
|
176
|
+
.prepare(`SELECT chunk_id AS chunkId, package_id AS packageId, file_path AS filePath,
|
|
177
|
+
tokens, content
|
|
178
|
+
FROM chunks WHERE package_id = ?`)
|
|
179
|
+
.all(packageId);
|
|
180
|
+
return rows.map((row) => ({
|
|
181
|
+
chunkId: row.chunkId,
|
|
182
|
+
packageId: row.packageId,
|
|
183
|
+
filePath: row.filePath,
|
|
184
|
+
tokens: Number(row.tokens ?? 0),
|
|
185
|
+
content: row.content,
|
|
186
|
+
}));
|
|
187
|
+
}
|
|
188
|
+
/** Every exported name recorded for one package. */
|
|
189
|
+
symbolsOf(packageId) {
|
|
190
|
+
const rows = this.#db
|
|
191
|
+
.prepare("SELECT name FROM symbols WHERE package_id = ? ORDER BY name")
|
|
192
|
+
.all(packageId);
|
|
193
|
+
return rows.map((row) => row.name);
|
|
194
|
+
}
|
|
195
|
+
/** One chunk by its id, however it was found. */
|
|
196
|
+
chunk(chunkId) {
|
|
197
|
+
const row = this.#db
|
|
198
|
+
.prepare(`SELECT chunk_id AS chunkId, package_id AS packageId, file_path AS filePath,
|
|
199
|
+
tokens, content
|
|
200
|
+
FROM chunks WHERE chunk_id = ?`)
|
|
201
|
+
.get(chunkId);
|
|
202
|
+
if (row === undefined)
|
|
203
|
+
return undefined;
|
|
204
|
+
return {
|
|
205
|
+
chunkId: row.chunkId,
|
|
206
|
+
packageId: row.packageId,
|
|
207
|
+
filePath: row.filePath,
|
|
208
|
+
tokens: Number(row.tokens ?? 0),
|
|
209
|
+
content: row.content,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
124
212
|
countChunks(packageId) {
|
|
125
213
|
const row = this.#db
|
|
126
214
|
.prepare("SELECT COUNT(*) AS total FROM chunks WHERE package_id = ?")
|
|
127
215
|
.get(packageId);
|
|
128
216
|
return row.total;
|
|
129
217
|
}
|
|
130
|
-
/**
|
|
131
|
-
|
|
132
|
-
|
|
218
|
+
/**
|
|
219
|
+
* Replaces a package, all of its chunks and its symbol table in a single transaction.
|
|
220
|
+
*
|
|
221
|
+
* `symbols` maps an exported name to the chunk declaring it, and is how a query about a name
|
|
222
|
+
* is answered without ranking anything.
|
|
223
|
+
*/
|
|
224
|
+
indexPackage(pkg, chunks, symbols) {
|
|
225
|
+
const insertPackage = this.#db.prepare("INSERT OR REPLACE INTO packages (id, name, version, kind) VALUES (?, ?, ?, ?)");
|
|
133
226
|
const insertChunk = this.#db.prepare("INSERT OR REPLACE INTO chunks (chunk_id, package_id, file_path, tokens, content) VALUES (?, ?, ?, ?, ?)");
|
|
134
227
|
const insertFts = this.#db.prepare("INSERT INTO chunks_fts (content, tags, package_id, chunk_id) VALUES (?, ?, ?, ?)");
|
|
228
|
+
const insertSymbol = this.#db.prepare("INSERT OR REPLACE INTO symbols (package_id, name, chunk_id) VALUES (?, ?, ?)");
|
|
135
229
|
this.#db.exec("BEGIN");
|
|
136
230
|
try {
|
|
137
231
|
this.#deleteChunks(pkg.id);
|
|
138
|
-
insertPackage.run(pkg.id, pkg.name, pkg.version);
|
|
232
|
+
insertPackage.run(pkg.id, pkg.name, pkg.version, pkg.kind ?? "docs");
|
|
139
233
|
for (const chunk of chunks) {
|
|
140
234
|
insertChunk.run(chunk.chunkId, pkg.id, chunk.filePath, chunk.tokens, chunk.content);
|
|
141
235
|
insertFts.run(chunk.content, chunk.tags.join(" "), pkg.id, chunk.chunkId);
|
|
142
236
|
}
|
|
237
|
+
for (const [name, chunk] of symbols ?? [])
|
|
238
|
+
insertSymbol.run(pkg.id, name, chunk);
|
|
143
239
|
this.#db.exec("COMMIT");
|
|
144
240
|
}
|
|
145
241
|
catch (error) {
|
|
@@ -177,6 +273,12 @@ export class Store {
|
|
|
177
273
|
conditions.push("f.package_id LIKE ?");
|
|
178
274
|
parameters.push(options.packageFilter);
|
|
179
275
|
}
|
|
276
|
+
if (options.kinds !== undefined) {
|
|
277
|
+
if (options.kinds.length === 0)
|
|
278
|
+
return [];
|
|
279
|
+
conditions.push(`f.package_id IN (SELECT id FROM packages WHERE kind IN (${options.kinds.map(() => "?").join(", ")}))`);
|
|
280
|
+
parameters.push(...options.kinds);
|
|
281
|
+
}
|
|
180
282
|
const rows = this.#db
|
|
181
283
|
.prepare(`SELECT f.chunk_id AS chunkId, f.package_id AS packageId, c.file_path AS filePath,
|
|
182
284
|
c.tokens AS tokens, c.content AS content
|
|
@@ -214,6 +316,7 @@ export class Store {
|
|
|
214
316
|
#deleteChunks(packageId) {
|
|
215
317
|
this.#db.prepare("DELETE FROM chunks_fts WHERE package_id = ?").run(packageId);
|
|
216
318
|
this.#db.prepare("DELETE FROM chunks WHERE package_id = ?").run(packageId);
|
|
319
|
+
this.#db.prepare("DELETE FROM symbols WHERE package_id = ?").run(packageId);
|
|
217
320
|
}
|
|
218
321
|
}
|
|
219
322
|
//# sourceMappingURL=db.js.map
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/discovery.d.ts
CHANGED
|
@@ -10,6 +10,13 @@ export interface DiscoveredPackage {
|
|
|
10
10
|
/** False for `@docspack-community/*`, whose contents nobody has vetted. */
|
|
11
11
|
readonly trusted: boolean;
|
|
12
12
|
}
|
|
13
|
+
/** An ordinary dependency: a library this project installed, whatever documents it. */
|
|
14
|
+
export interface DiscoveredLibrary {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
readonly version: string;
|
|
17
|
+
/** Root of the installed package. */
|
|
18
|
+
readonly dir: string;
|
|
19
|
+
}
|
|
13
20
|
export interface Discovery {
|
|
14
21
|
readonly packages: readonly DiscoveredPackage[];
|
|
15
22
|
/** Human-readable problems that did not stop discovery, e.g. a declared but uninstalled package. */
|
|
@@ -21,6 +28,13 @@ export interface Discovery {
|
|
|
21
28
|
* ships a `.llms/manifest.json`.
|
|
22
29
|
*/
|
|
23
30
|
export declare function discoverPackages(cwd: string): Promise<Discovery>;
|
|
31
|
+
/**
|
|
32
|
+
* Every library this project depends on directly, installed and readable.
|
|
33
|
+
*
|
|
34
|
+
* Documentation packages are excluded: those are handled by `discoverPackages`, and a docs
|
|
35
|
+
* package's own type declarations describe nothing anybody asks about.
|
|
36
|
+
*/
|
|
37
|
+
export declare function discoverLibraries(cwd: string): Promise<readonly DiscoveredLibrary[]>;
|
|
24
38
|
/** Package ids installed in this project, used to scope queries to the versions actually in use. */
|
|
25
39
|
export declare function projectPackageIds(cwd: string): Promise<string[]>;
|
|
26
40
|
/**
|
package/dist/discovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,eAAe,EAGrB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAsDtE;AAED,oGAAoG;AACpG,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGtE;
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,eAAe,EAGrB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,uFAAuF;AACvF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAsDtE;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAgB1F;AAED,oGAAoG;AACpG,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGtE;AA0DD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAc9F"}
|
package/dist/discovery.js
CHANGED
|
@@ -54,18 +54,45 @@ export async function discoverPackages(cwd) {
|
|
|
54
54
|
packages.sort((a, b) => a.name.localeCompare(b.name));
|
|
55
55
|
return { packages, problems };
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Every library this project depends on directly, installed and readable.
|
|
59
|
+
*
|
|
60
|
+
* Documentation packages are excluded: those are handled by `discoverPackages`, and a docs
|
|
61
|
+
* package's own type declarations describe nothing anybody asks about.
|
|
62
|
+
*/
|
|
63
|
+
export async function discoverLibraries(cwd) {
|
|
64
|
+
const root = resolve(cwd);
|
|
65
|
+
const names = (await declaredDependencies(root)).filter((name) => !isDocsPackage(name));
|
|
66
|
+
const libraries = [];
|
|
67
|
+
for (const name of names) {
|
|
68
|
+
const dir = await resolvePackageDir(name, root);
|
|
69
|
+
if (dir === undefined)
|
|
70
|
+
continue;
|
|
71
|
+
try {
|
|
72
|
+
libraries.push({ name, version: await installedVersion(name, dir), dir });
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// A dependency with no version in its manifest is not one to index.
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return libraries;
|
|
79
|
+
}
|
|
57
80
|
/** Package ids installed in this project, used to scope queries to the versions actually in use. */
|
|
58
81
|
export async function projectPackageIds(cwd) {
|
|
59
82
|
const { packages } = await discoverPackages(cwd);
|
|
60
83
|
return packages.map((pkg) => pkg.id);
|
|
61
84
|
}
|
|
85
|
+
/** Docs packages this project depends on, the input to `discoverPackages`. */
|
|
86
|
+
async function declaredDocsPackages(cwd) {
|
|
87
|
+
return (await declaredDependencies(cwd)).filter(isDocsPackage);
|
|
88
|
+
}
|
|
62
89
|
/**
|
|
63
|
-
* Every
|
|
90
|
+
* Every dependency declared by this directory or by an ancestor of it. A workspace declares
|
|
64
91
|
* shared tooling in the repository root and its members inherit the install, so reading only
|
|
65
92
|
* `cwd/package.json` answers "this project has no documentation" for most monorepos — the same
|
|
66
93
|
* upward walk `resolvePackageDir` already does for the install.
|
|
67
94
|
*/
|
|
68
|
-
async function
|
|
95
|
+
async function declaredDependencies(cwd) {
|
|
69
96
|
const names = new Set();
|
|
70
97
|
let found = false;
|
|
71
98
|
let dir = cwd;
|
|
@@ -96,10 +123,8 @@ async function declaredDocsPackages(cwd) {
|
|
|
96
123
|
for (const field of [manifest.dependencies, manifest.devDependencies]) {
|
|
97
124
|
if (typeof field !== "object" || field === null)
|
|
98
125
|
continue;
|
|
99
|
-
for (const name of Object.keys(field))
|
|
100
|
-
|
|
101
|
-
names.add(name);
|
|
102
|
-
}
|
|
126
|
+
for (const name of Object.keys(field))
|
|
127
|
+
names.add(name);
|
|
103
128
|
}
|
|
104
129
|
const parent = dirname(dir);
|
|
105
130
|
if (parent === dir)
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,aAAa,EAEb,SAAS,EACT,aAAa,GACd,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAaD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA4K7E"}
|