docspack 0.2.0 → 0.4.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.
Files changed (71) hide show
  1. package/README.md +9 -3
  2. package/dist/build.d.ts +21 -0
  3. package/dist/build.d.ts.map +1 -1
  4. package/dist/build.js +194 -31
  5. package/dist/build.js.map +1 -1
  6. package/dist/cli.js +74 -131
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config.d.ts +7 -2
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +20 -1
  11. package/dist/config.js.map +1 -1
  12. package/dist/db.d.ts +8 -4
  13. package/dist/db.d.ts.map +1 -1
  14. package/dist/db.js +13 -7
  15. package/dist/db.js.map +1 -1
  16. package/dist/doctor.d.ts.map +1 -1
  17. package/dist/doctor.js +47 -4
  18. package/dist/doctor.js.map +1 -1
  19. package/dist/document.d.ts +2 -0
  20. package/dist/document.d.ts.map +1 -1
  21. package/dist/document.js +7 -3
  22. package/dist/document.js.map +1 -1
  23. package/dist/eval.d.ts +52 -0
  24. package/dist/eval.d.ts.map +1 -0
  25. package/dist/eval.js +101 -0
  26. package/dist/eval.js.map +1 -0
  27. package/dist/help.d.ts +31 -0
  28. package/dist/help.d.ts.map +1 -0
  29. package/dist/help.js +342 -0
  30. package/dist/help.js.map +1 -0
  31. package/dist/index.d.ts +4 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +4 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/preview.d.ts.map +1 -1
  36. package/dist/preview.js +4 -2
  37. package/dist/preview.js.map +1 -1
  38. package/dist/search.d.ts +7 -0
  39. package/dist/search.d.ts.map +1 -1
  40. package/dist/search.js +33 -3
  41. package/dist/search.js.map +1 -1
  42. package/dist/spec.d.ts +27 -1
  43. package/dist/spec.d.ts.map +1 -1
  44. package/dist/spec.js +53 -5
  45. package/dist/spec.js.map +1 -1
  46. package/dist/stopwords.d.ts +14 -0
  47. package/dist/stopwords.d.ts.map +1 -0
  48. package/dist/stopwords.js +121 -0
  49. package/dist/stopwords.js.map +1 -0
  50. package/dist/sync.js +1 -1
  51. package/dist/sync.js.map +1 -1
  52. package/dist/verify.d.ts +8 -2
  53. package/dist/verify.d.ts.map +1 -1
  54. package/dist/verify.js +84 -23
  55. package/dist/verify.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/build.ts +261 -33
  58. package/src/cli.ts +91 -138
  59. package/src/config.ts +35 -5
  60. package/src/db.ts +13 -7
  61. package/src/doctor.ts +49 -5
  62. package/src/document.ts +13 -4
  63. package/src/eval.ts +149 -0
  64. package/src/help.ts +382 -0
  65. package/src/index.ts +20 -0
  66. package/src/preview.ts +4 -1
  67. package/src/search.ts +41 -3
  68. package/src/spec.ts +84 -6
  69. package/src/stopwords.ts +120 -0
  70. package/src/sync.ts +1 -1
  71. package/src/verify.ts +108 -28
package/dist/help.js ADDED
@@ -0,0 +1,342 @@
1
+ import { AGENTS_SNIPPET, FEEDBACK_SNIPPET } from "./snippet.js";
2
+ const LIMIT = 3;
3
+ const MAX_TOKENS = 3000;
4
+ const QUERY_OPTIONS = [
5
+ ["-p, --package <s>", "only packages whose name contains this text"],
6
+ ["--limit <n>", `maximum chunks to return (default ${LIMIT})`],
7
+ ["--max-tokens <n>", `token ceiling for the result set (default ${MAX_TOKENS})`],
8
+ ["--all", "search the whole store, not just this project"],
9
+ ];
10
+ export const COMMANDS = [
11
+ {
12
+ name: "sync",
13
+ summary: "Index the docs packages this project depends on",
14
+ group: "core",
15
+ usage: "docspack sync [options]",
16
+ options: [["--force", "re-index packages already in the store"]],
17
+ detail: [
18
+ "Reads node_modules and indexes every @vendor/docspack and @docspack-community/<name>",
19
+ "package this project declares. Makes no network requests.",
20
+ ],
21
+ examples: ["docspack sync", "docspack sync --force"],
22
+ },
23
+ {
24
+ name: "ask",
25
+ summary: "Answer from the local index — the command to give an agent",
26
+ group: "core",
27
+ usage: 'docspack ask "<question>"',
28
+ options: QUERY_OPTIONS,
29
+ detail: [
30
+ "Answers from the installed versions, in the Markdown an agent should read. Exits 0 when",
31
+ "chunks were returned, 3 when a docs package is installed but not indexed, and 4 when",
32
+ "everything installed is indexed and nothing matched.",
33
+ ],
34
+ examples: [
35
+ 'docspack ask "how do I verify a webhook signature"',
36
+ 'docspack ask "webhook signature" --package stripe --limit 5',
37
+ ],
38
+ },
39
+ {
40
+ name: "search",
41
+ summary: "Same index, formatted for a human reading the terminal",
42
+ group: "core",
43
+ usage: "docspack search <query>",
44
+ options: QUERY_OPTIONS,
45
+ detail: ["The same index and ranking as `ask`, printed as a list of hits with a preview."],
46
+ examples: ["docspack search webhook signature"],
47
+ },
48
+ {
49
+ name: "list",
50
+ summary: "Show this project's docs packages and their index state",
51
+ group: "core",
52
+ usage: "docspack list",
53
+ options: [],
54
+ examples: ["docspack list", "docspack list --json"],
55
+ },
56
+ {
57
+ name: "verify",
58
+ summary: "Check the docs still describe the code you installed",
59
+ group: "core",
60
+ usage: "docspack verify [options]",
61
+ options: [["--package-dir <d>", "verify one package directory instead of what is installed"]],
62
+ detail: [
63
+ "Compares the identifiers the chunks name against what the documented libraries declare,",
64
+ "read from their .d.ts files. Nothing you depend on is imported or executed. The libraries",
65
+ 'come from the manifest\'s "documents", or from the docspack key when the manifest has none.',
66
+ "Exits 1 when anything was reported.",
67
+ ],
68
+ examples: ["docspack verify", "docspack verify --json"],
69
+ },
70
+ {
71
+ name: "feedback",
72
+ summary: "Record documentation problems: add, list, submit, remove",
73
+ group: "core",
74
+ usage: "docspack feedback <add|list|submit|remove> [options]",
75
+ options: [
76
+ ["--chunk <id>", "add: the chunk the problem is in"],
77
+ ["--kind <k>", "add: drift, incorrect or missing"],
78
+ ["--evidence <text>", "add: the claim, in one line"],
79
+ ["--expected <text>", "add: what the documentation led you to expect"],
80
+ ["--actual <text>", "add: what happened instead"],
81
+ ["--repro <code>", "add: code that demonstrates it"],
82
+ ["-p, --package <s>", "submit: only findings from packages matching this text"],
83
+ ["--all", "remove: every recorded finding"],
84
+ ],
85
+ detail: [
86
+ "Writes to .docspack/feedback.jsonl in this project. Nothing is transmitted: docspack",
87
+ "contains no code that can send a report anywhere.",
88
+ "",
89
+ "`drift` must name the identifier that drifted. `incorrect` and `missing` must carry",
90
+ "--expected, --actual and --repro, so a claim that cannot show its work cannot be",
91
+ "recorded. `submit` prints a prefilled GitHub issue URL for a human to open and file.",
92
+ ],
93
+ examples: [
94
+ 'docspack feedback add --chunk @acme/docspack@1.4.0/api-auth --kind drift --evidence "client.setKey is not exported; setApiKey is"',
95
+ "docspack feedback list",
96
+ "docspack feedback submit",
97
+ "docspack feedback remove <fingerprint>",
98
+ ],
99
+ },
100
+ {
101
+ name: "mcp",
102
+ summary: "Serve the index over MCP instead, as a long-lived process",
103
+ group: "core",
104
+ usage: "docspack mcp",
105
+ options: [],
106
+ detail: [
107
+ "Serves the same index over the Model Context Protocol, for clients that prefer a tool",
108
+ "definition to a shell command. `query_local_docs` returns exactly what `ask` prints.",
109
+ "stdout is the protocol channel, so nothing else is written to it.",
110
+ ],
111
+ examples: ["docspack mcp"],
112
+ },
113
+ {
114
+ name: "sources",
115
+ summary: "List curated sources that `docspack build` can fetch",
116
+ group: "core",
117
+ usage: "docspack sources",
118
+ options: [],
119
+ examples: ["docspack sources", "docspack build hono --name @docspack-community/hono"],
120
+ },
121
+ {
122
+ name: "init",
123
+ summary: "Scaffold a documentation package, then build and check it",
124
+ group: "authoring",
125
+ usage: "docspack init [name] [options]",
126
+ options: [
127
+ ["-y, --yes", "skip the prompts and use flags plus detected defaults"],
128
+ ["--dry-run", "print the file tree and write nothing"],
129
+ ["--mirror <id|url>", "bootstrap from a published llms.txt"],
130
+ ["--community", "scaffold under @docspack-community"],
131
+ ["--template <t>", "full (default) or minimal"],
132
+ ["--mode <m>", "standalone or in-repo"],
133
+ ["--no-workflow", "skip the release workflow"],
134
+ ["--no-build", "scaffold only"],
135
+ ["--name <name>", "package name, e.g. @acme/docspack"],
136
+ ["--pkg-version <v>", "package version"],
137
+ ["--from <dir>", "directory of Markdown to package"],
138
+ ["--openapi <file>", "OpenAPI JSON to package"],
139
+ ["--out <dir>", "where to scaffold (default: ./docspack)"],
140
+ ["--force", "overwrite files that already exist"],
141
+ ],
142
+ detail: [
143
+ "Reads the surrounding project first — name, version, a docs directory, an OpenAPI",
144
+ "document, the git remote, the license — and proposes a package built from what it found.",
145
+ ],
146
+ examples: [
147
+ "docspack init",
148
+ "docspack init --name @acme/docspack --from ./docs --yes",
149
+ "docspack init --mirror hono --community --yes",
150
+ ],
151
+ },
152
+ {
153
+ name: "build",
154
+ summary: "Generate the .llms/ payload for publishing",
155
+ group: "authoring",
156
+ usage: "docspack build [source] [options]",
157
+ options: [
158
+ ["--from <dir>", "directory of Markdown to package"],
159
+ ["--openapi <file>", "OpenAPI JSON to package, one chunk per operation"],
160
+ ["--name <name>", "package name, e.g. @acme/docspack"],
161
+ ["--pkg-version <v>", "package version"],
162
+ ["--out <dir>", "output directory (default: the current directory)"],
163
+ ["--pages <n>", "maximum documents to fetch from a remote source"],
164
+ ["--max-chunk-tokens <n>", "split a section above this size (default 800)"],
165
+ ["--min-chunk-tokens <n>", "pack adjacent sections up to this size before splitting"],
166
+ ["--documents <p>", "library this package documents, repeatable: acme@1.4.0"],
167
+ ],
168
+ detail: [
169
+ "Splits each document at ## headings, then ###, then paragraphs, until every chunk fits",
170
+ "the budget. --min-chunk-tokens packs the other way first, merging adjacent sections up to",
171
+ "the budget: use it for generated reference, where a heading is a field name and one chunk",
172
+ "per heading is hundreds of chunks too small to answer anything.",
173
+ "",
174
+ "With no flags, settings are read from the docspack key of the package.json in --out.",
175
+ ],
176
+ examples: [
177
+ "docspack build",
178
+ "docspack build --from ./docs --name @acme/docspack --pkg-version 1.4.0",
179
+ "docspack build --from ./reference --min-chunk-tokens 400 --max-chunk-tokens 900",
180
+ "docspack build --openapi ./openapi.json",
181
+ ],
182
+ },
183
+ {
184
+ name: "doctor",
185
+ summary: "Check a package the way the indexer and a reviewer would",
186
+ group: "authoring",
187
+ usage: "docspack doctor [options]",
188
+ options: [
189
+ ["--strict", "treat structural warnings as failures"],
190
+ ["--pedantic", "--strict, and fail on prose style as well"],
191
+ ["--package-dir <d>", "the package to inspect (default: .)"],
192
+ ],
193
+ detail: [
194
+ "Errors are packages that will not index. Warnings are packages that will index and",
195
+ "retrieve badly. Prose style is a note unless --pedantic, because writing by hand is not a",
196
+ "reason to block a first publish. Exits 1 when the package is not ready to publish.",
197
+ ],
198
+ examples: ["docspack doctor", "docspack doctor --strict", "docspack doctor --json"],
199
+ },
200
+ {
201
+ name: "preview",
202
+ summary: "Answer a query from the local package, as an agent would",
203
+ group: "authoring",
204
+ usage: "docspack preview <query> [options]",
205
+ options: [
206
+ ["--package-dir <d>", "the package to read (default: .)"],
207
+ ["--limit <n>", `maximum chunks to return (default ${LIMIT})`],
208
+ ["--max-tokens <n>", `token ceiling for the result set (default ${MAX_TOKENS})`],
209
+ ],
210
+ detail: [
211
+ "Indexes the package in memory and answers through the same ranking and token budget an",
212
+ "agent gets. Nothing is published, installed, or written to the global store.",
213
+ ],
214
+ examples: ['docspack preview "how do I authenticate"'],
215
+ },
216
+ {
217
+ name: "eval",
218
+ summary: "Measure retrieval against a set of questions",
219
+ group: "authoring",
220
+ usage: "docspack eval <queries.json> [options]",
221
+ options: [
222
+ ["--package-dir <d>", "the package to read (default: .)"],
223
+ ["--limit <n>", `chunks per answer, the window a hit must fall in (default ${LIMIT})`],
224
+ ["--max-tokens <n>", `token ceiling for each answer (default ${MAX_TOKENS})`],
225
+ ["--min-hit-rate <n>", "exit 1 below this percentage of questions answered"],
226
+ ],
227
+ detail: [
228
+ "The evaluation set is a JSON array of questions and the chunk ids that would answer them:",
229
+ "",
230
+ ' [{ "query": "how do I verify a webhook signature", "expect": "webhooks-signing" },',
231
+ ' { "query": "rate limits", "expect": ["rate-limits", "errors"] }]',
232
+ "",
233
+ "Reports hit rate, top-1 rate and mean answer size — the numbers that settle the chunk",
234
+ "budget, which no structural check can see. With --min-hit-rate it gates a publish on",
235
+ "retrieval quality the way `doctor --strict` gates it on structure.",
236
+ ],
237
+ examples: [
238
+ "docspack eval ./eval/queries.json",
239
+ "docspack eval ./eval/queries.json --min-hit-rate 90",
240
+ "docspack eval ./eval/queries.json --limit 1 --json",
241
+ ],
242
+ },
243
+ ];
244
+ const GLOBAL_OPTIONS = [
245
+ ["--store <path>", "Use a different index"],
246
+ ["--cwd <dir>", "Run in a different directory"],
247
+ ["--json", "Machine-readable output"],
248
+ ["-q, --quiet", "Only print errors"],
249
+ ["-h, --help", "Show this help, or a command's help"],
250
+ ["-v, --version", "Show the version"],
251
+ ];
252
+ export function findCommandHelp(name) {
253
+ return COMMANDS.find((command) => command.name === name);
254
+ }
255
+ const WIDTH = 21;
256
+ function row([flag, description]) {
257
+ return ` ${flag.padEnd(WIDTH)} ${description}`;
258
+ }
259
+ /** The page one command prints for `docspack <command> --help`. */
260
+ export function commandHelpText(command) {
261
+ const blocks = [
262
+ `docspack ${command.name} — ${command.summary}`,
263
+ "",
264
+ "Usage",
265
+ ` ${command.usage}`,
266
+ ];
267
+ if (command.detail !== undefined) {
268
+ blocks.push("", ...command.detail.map((line) => (line.length === 0 ? "" : ` ${line}`)));
269
+ }
270
+ if (command.options.length > 0) {
271
+ blocks.push("", "Options", ...command.options.map(row));
272
+ }
273
+ blocks.push("", "Global options", ...GLOBAL_OPTIONS.map(row), "", "Examples", ...command.examples.map((example) => ` ${example}`), "");
274
+ return blocks.join("\n");
275
+ }
276
+ /**
277
+ * The global page. It lists the commands and the options that apply to all of them, and points
278
+ * at the per-command pages for the rest — one list of every flag of every command was what made
279
+ * the flags unfindable in the first place.
280
+ */
281
+ export function globalHelpText(storePath, notIndexed, noMatch) {
282
+ const group = (which) => COMMANDS.filter((command) => command.group === which)
283
+ .map((command) => row([command.name, command.summary]))
284
+ .join("\n");
285
+ return `docspack — local, version-locked documentation for AI agents
286
+
287
+ Usage
288
+ docspack <command> [options]
289
+ docspack <command> --help every flag that command takes
290
+
291
+ Commands
292
+ ${group("core")}
293
+
294
+ Authoring
295
+ ${group("authoring")}
296
+
297
+ How it works
298
+ Documentation ships as npm packages named @vendor/docspack or
299
+ @docspack-community/<name>. Add them to package.json, run \`docspack sync\`, and
300
+ every chunk is indexed into a shared SQLite database with FTS5. Agents query
301
+ that index locally: no network, no scraping, always the installed version.
302
+
303
+ Giving an agent access
304
+ Any agent with a shell can run \`docspack ask\`, so one line in AGENTS.md or
305
+ CLAUDE.md is the whole setup — no server, no per-agent configuration, and
306
+ nothing resident when nobody is asking:
307
+
308
+ ${AGENTS_SNIPPET.map((line) => ` ${line}`).join("\n")}
309
+
310
+ Add the block below as well if you want the agent to record documentation
311
+ problems it runs into. It writes to a local file; nothing is sent:
312
+
313
+ ${FEEDBACK_SNIPPET.map((line) => ` ${line}`).join("\n")}
314
+
315
+ \`docspack mcp\` serves the same index over the Model Context Protocol for
316
+ clients that prefer a tool definition. Both return identical text.
317
+
318
+ Global options
319
+ ${GLOBAL_OPTIONS.map(row).join("\n")}
320
+
321
+ The default index is ${storePath}.
322
+
323
+ Exit codes
324
+ \`ask\` and \`search\` answer with an exit code a script can branch on:
325
+
326
+ 0 chunks were returned
327
+ ${notIndexed} nothing matched, and a docs package is installed but not indexed —
328
+ run \`docspack sync\`
329
+ ${noMatch} nothing matched, and everything installed is already indexed
330
+ 1 the command failed; 2 the command was used wrongly
331
+
332
+ Examples
333
+ npx docspack sync
334
+ npx docspack ask "how do I verify a webhook signature"
335
+ npx docspack init
336
+ npx docspack doctor --strict
337
+ npx docspack preview "how do I authenticate"
338
+ npx docspack eval ./eval/queries.json --min-hit-rate 90
339
+ npx docspack feedback submit
340
+ `;
341
+ }
342
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,8 +4,10 @@ export { defaultStorePath, type IndexedChunk, type IndexedPackage, type SearchHi
4
4
  export { type DiscoveredPackage, type Discovery, discoverPackages, projectPackageIds, resolvePackageDir, } from "./discovery.js";
5
5
  export { type DoctorOptions, type DoctorReport, type Finding, runDoctor, type Severity, } from "./doctor.js";
6
6
  export { DocspackError } from "./errors.js";
7
+ export { type EvalCase, type EvalCaseResult, type EvalOptions, type EvalReport, evaluatePackage, parseEvalSet, readEvalSet, } from "./eval.js";
7
8
  export { type ExportSurface, readExportSurface } from "./exports.js";
8
9
  export { type AddOptions, type AddResult, addFinding, FEEDBACK_DIR, FEEDBACK_FILE, type FeedbackFinding, feedbackPath, fingerprintOf, type RemoveOptions, readFeedback, removeFindings, } from "./feedback.js";
10
+ export { COMMANDS, type CommandHelp, commandHelpText, findCommandHelp, globalHelpText, } from "./help.js";
9
11
  export { type FetchLike, HttpClient } from "./http.js";
10
12
  export { type Detected, detectProject, type PackageManager } from "./init/detect.js";
11
13
  export { type InitMode, type InitOptions, type InitPlan, type InitTemplate, type InputKind, type PlannedFile, planInit, proposePackageName, } from "./init/plan.js";
@@ -18,7 +20,8 @@ export { type PreviewOptions, type PreviewResult, previewPackage } from "./previ
18
20
  export { type Choice, defaultStreams, Prompter, type PromptStreams } from "./prompt.js";
19
21
  export { DEFAULT_LIMIT, DEFAULT_MAX_TOKENS, type QueryHit, type QueryOptions, type QueryResult, queryDocs, renderAnswer, splitPackageId, } from "./search.js";
20
22
  export { AGENTS_SNIPPET, FEEDBACK_SNIPPET } from "./snippet.js";
21
- export { CHUNKS_DIR, type ChunkSpec, chunkId, estimateTokens, isCommunityPackage, isDocsPackage, isVendorPackage, LLMS_DIR, MANIFEST_FILE, type PackageManifest, packageId, parseManifest, resolveChunkFile, SCHEMA_URL, SPEC_URL, serializeManifest, } from "./spec.js";
23
+ export { CHUNKS_DIR, type ChunkSpec, chunkId, type DocumentedLibrary, estimateTokens, formatDocumentedLibrary, isCommunityPackage, isDocsPackage, isVendorPackage, LLMS_DIR, MANIFEST_FILE, type PackageManifest, packageId, parseDocumentedLibrary, parseManifest, resolveChunkFile, SCHEMA_URL, SPEC_URL, serializeManifest, } from "./spec.js";
24
+ export { STOPWORDS } from "./stopwords.js";
22
25
  export { type BlockedFinding, type BlockedReason, issueUrl, prepareSubmission, type RoutedFinding, renderBody, type SubmitOptions, type SubmitReport, } from "./submit.js";
23
26
  export { type SyncedPackage, type SyncOptions, type SyncResult, type SyncStatus, syncProject, } from "./sync.js";
24
27
  export { type DriftFinding, type VerifiedPackage, type VerifyOptions, type VerifyReport, type VerifyStatus, verifyProject, } from "./verify.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EACL,KAAK,WAAW,EAChB,UAAU,EACV,KAAK,eAAe,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,EACL,oBAAoB,EACpB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,SAAS,EACT,KAAK,QAAQ,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,UAAU,EACV,YAAY,EACZ,aAAa,EACb,KAAK,eAAe,EACpB,YAAY,EACZ,aAAa,EACb,KAAK,aAAa,EAClB,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,QAAQ,EACR,KAAK,WAAW,EAChB,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,KAAK,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,KAAK,QAAQ,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,QAAQ,EACR,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EACL,KAAK,YAAY,EACjB,SAAS,EACT,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,KAAK,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACL,UAAU,EACV,KAAK,SAAS,EACd,OAAO,EACP,KAAK,iBAAiB,EACtB,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,aAAa,EACb,KAAK,eAAe,EACpB,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,QAAQ,EACR,iBAAiB,EACjB,KAAK,aAAa,EAClB,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,aAAa,GACd,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -4,8 +4,10 @@ export { defaultStorePath, Store, silenceSqliteWarning, toFtsQuery, } from "./db
4
4
  export { discoverPackages, projectPackageIds, resolvePackageDir, } from "./discovery.js";
5
5
  export { runDoctor, } from "./doctor.js";
6
6
  export { DocspackError } from "./errors.js";
7
+ export { evaluatePackage, parseEvalSet, readEvalSet, } from "./eval.js";
7
8
  export { readExportSurface } from "./exports.js";
8
9
  export { addFinding, FEEDBACK_DIR, FEEDBACK_FILE, feedbackPath, fingerprintOf, readFeedback, removeFindings, } from "./feedback.js";
10
+ export { COMMANDS, commandHelpText, findCommandHelp, globalHelpText, } from "./help.js";
9
11
  export { HttpClient } from "./http.js";
10
12
  export { detectProject } from "./init/detect.js";
11
13
  export { planInit, proposePackageName, } from "./init/plan.js";
@@ -18,7 +20,8 @@ export { previewPackage } from "./preview.js";
18
20
  export { defaultStreams, Prompter } from "./prompt.js";
19
21
  export { DEFAULT_LIMIT, DEFAULT_MAX_TOKENS, queryDocs, renderAnswer, splitPackageId, } from "./search.js";
20
22
  export { AGENTS_SNIPPET, FEEDBACK_SNIPPET } from "./snippet.js";
21
- export { CHUNKS_DIR, chunkId, estimateTokens, isCommunityPackage, isDocsPackage, isVendorPackage, LLMS_DIR, MANIFEST_FILE, packageId, parseManifest, resolveChunkFile, SCHEMA_URL, SPEC_URL, serializeManifest, } from "./spec.js";
23
+ export { CHUNKS_DIR, chunkId, estimateTokens, formatDocumentedLibrary, isCommunityPackage, isDocsPackage, isVendorPackage, LLMS_DIR, MANIFEST_FILE, packageId, parseDocumentedLibrary, parseManifest, resolveChunkFile, SCHEMA_URL, SPEC_URL, serializeManifest, } from "./spec.js";
24
+ export { STOPWORDS } from "./stopwords.js";
22
25
  export { issueUrl, prepareSubmission, renderBody, } from "./submit.js";
23
26
  export { syncProject, } from "./sync.js";
24
27
  export { verifyProject, } from "./verify.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAEL,UAAU,EAEV,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAKhB,KAAK,EACL,oBAAoB,EACpB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,SAAS,GAEV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAsB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAGL,UAAU,EACV,YAAY,EACZ,aAAa,EAEb,YAAY,EACZ,aAAa,EAEb,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAkB,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAiB,aAAa,EAAuB,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAOL,QAAQ,EACR,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwC,OAAO,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAEL,SAAS,EACT,UAAU,GAGX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAoB,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,cAAc,EAId,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAA2C,cAAc,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAe,cAAc,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,aAAa,EACb,kBAAkB,EAIlB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACL,UAAU,EAEV,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,aAAa,EAEb,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAGL,QAAQ,EACR,iBAAiB,EAEjB,UAAU,GAGX,MAAM,aAAa,CAAC;AACrB,OAAO,EAKL,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAML,aAAa,GACd,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAEL,UAAU,EAEV,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAKhB,KAAK,EACL,oBAAoB,EACpB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,SAAS,GAEV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAKL,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAsB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAGL,UAAU,EACV,YAAY,EACZ,aAAa,EAEb,YAAY,EACZ,aAAa,EAEb,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,QAAQ,EAER,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAkB,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAiB,aAAa,EAAuB,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAOL,QAAQ,EACR,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwC,OAAO,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAEL,SAAS,EACT,UAAU,GAGX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAoB,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,cAAc,EAId,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAA2C,cAAc,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAe,cAAc,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,aAAa,EACb,kBAAkB,EAIlB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACL,UAAU,EAEV,OAAO,EAEP,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,aAAa,EAEb,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAGL,QAAQ,EACR,iBAAiB,EAEjB,UAAU,GAGX,MAAM,aAAa,CAAC;AACrB,OAAO,EAKL,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAML,aAAa,GACd,MAAM,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAY/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAgEpF"}
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAa/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAkEpF"}
package/dist/preview.js CHANGED
@@ -3,7 +3,7 @@ import { join } from "node:path";
3
3
  import { Store } from "./db.js";
4
4
  import { DocspackError } from "./errors.js";
5
5
  import { DEFAULT_LIMIT, DEFAULT_MAX_TOKENS } from "./search.js";
6
- import { chunkId, estimateTokens, isCommunityPackage, LLMS_DIR, MANIFEST_FILE, packageId, parseManifest, resolveChunkFile, } from "./spec.js";
6
+ import { chunkId, estimateTokens, formatDocumentedLibrary, isCommunityPackage, LLMS_DIR, MANIFEST_FILE, packageId, parseManifest, resolveChunkFile, } from "./spec.js";
7
7
  /**
8
8
  * Answers a query from a package on disk, through the same ranking and token budget an agent
9
9
  * gets. Nothing is published, installed, or written to the global store.
@@ -21,6 +21,7 @@ export async function previewPackage(options) {
21
21
  }
22
22
  const manifest = parseManifest(JSON.parse(raw), `${LLMS_DIR}/${MANIFEST_FILE}`);
23
23
  const id = packageId(manifest.name, manifest.version);
24
+ const documents = (manifest.documents ?? []).map(formatDocumentedLibrary);
24
25
  const chunks = [];
25
26
  for (const chunk of manifest.chunks) {
26
27
  let contents;
@@ -35,7 +36,7 @@ export async function previewPackage(options) {
35
36
  chunks.push({
36
37
  chunkId: chunkId(id, chunk.id),
37
38
  filePath: chunk.file,
38
- tokens: chunk.tokens > 0 ? chunk.tokens : estimateTokens(contents),
39
+ tokens: chunk.tokens ?? estimateTokens(contents),
39
40
  content: contents,
40
41
  tags: [...chunk.tags, ...chunk.entities],
41
42
  });
@@ -58,6 +59,7 @@ export async function previewPackage(options) {
58
59
  name: manifest.name,
59
60
  version: manifest.version,
60
61
  trusted: !isCommunityPackage(manifest.name),
62
+ ...(documents.length === 0 ? {} : { documents }),
61
63
  }));
62
64
  return {
63
65
  hits,
@@ -1 +1 @@
1
- {"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"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"}
package/dist/search.d.ts CHANGED
@@ -20,6 +20,13 @@ export interface QueryHit extends SearchHit {
20
20
  readonly name: string;
21
21
  readonly version: string;
22
22
  readonly trusted: boolean;
23
+ /**
24
+ * Libraries this chunk documents, from its manifest. A docs package version cannot always
25
+ * imply this — a monorepo documents many libraries at many versions from one surface — so the
26
+ * answer states it rather than leaving the reader to infer it from the package name. A chunk
27
+ * that names its own libraries answers for those; otherwise the package's list stands.
28
+ */
29
+ readonly documents?: readonly string[];
23
30
  }
24
31
  export interface QueryResult {
25
32
  readonly hits: readonly QueryHit[];
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhD,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA4B3E;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAsBvE;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAI5E"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhD,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAoD3E;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CA6BvE;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAI5E"}
package/dist/search.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { discoverPackages } from "./discovery.js";
2
- import { isCommunityPackage } from "./spec.js";
2
+ import { chunkId, formatDocumentedLibrary, isCommunityPackage } from "./spec.js";
3
3
  /** Ceiling on how much context one query may return, per the blueprint's context-exhaustion rule. */
4
4
  export const DEFAULT_MAX_TOKENS = 3000;
5
5
  export const DEFAULT_LIMIT = 3;
@@ -10,6 +10,22 @@ export async function queryDocs(options) {
10
10
  const unindexed = (installed ?? [])
11
11
  .filter((pkg) => !options.store.hasPackage(pkg.id))
12
12
  .map((pkg) => pkg.id);
13
+ // Read from the installed manifests rather than the index: the store is a cache of chunk text,
14
+ // and adding a column to it would make every existing store need a rebuild to answer this.
15
+ // Keyed by package id and by chunk id in the same map, because a chunk id already carries its
16
+ // package: `@acme/docspack@1.4.0/api-auth` cannot collide with `@acme/docspack@1.4.0`.
17
+ const documented = new Map();
18
+ for (const pkg of installed ?? []) {
19
+ const documents = pkg.manifest.documents;
20
+ if (documents !== undefined && documents.length > 0) {
21
+ documented.set(pkg.id, documents.map(formatDocumentedLibrary));
22
+ }
23
+ for (const chunk of pkg.manifest.chunks) {
24
+ if (chunk.documents === undefined || chunk.documents.length === 0)
25
+ continue;
26
+ documented.set(chunkId(pkg.id, chunk.id), chunk.documents.map(formatDocumentedLibrary));
27
+ }
28
+ }
13
29
  const hits = options.store
14
30
  .search(options.query, {
15
31
  ...(packageIds === undefined ? {} : { packageIds }),
@@ -21,7 +37,15 @@ export async function queryDocs(options) {
21
37
  })
22
38
  .map((hit) => {
23
39
  const { name, version } = splitPackageId(hit.packageId);
24
- return { ...hit, name, version, trusted: !isCommunityPackage(name) };
40
+ // The chunk's own libraries win: they are the narrower, and therefore the truer, claim.
41
+ const documents = documented.get(hit.chunkId) ?? documented.get(hit.packageId);
42
+ return {
43
+ ...hit,
44
+ name,
45
+ version,
46
+ trusted: !isCommunityPackage(name),
47
+ ...(documents === undefined ? {} : { documents }),
48
+ };
25
49
  });
26
50
  return {
27
51
  hits,
@@ -47,9 +71,15 @@ export function renderAnswer(result, query) {
47
71
  }
48
72
  const sections = result.hits.map((hit) => {
49
73
  const trust = hit.trusted ? "" : " (community)";
74
+ // Which release the chunk describes, on the line that already carries provenance. An agent
75
+ // otherwise has to assume the docs package version is the library version, which a
76
+ // repository publishing eighteen packages from one docs surface cannot make true.
77
+ const describes = hit.documents === undefined || hit.documents.length === 0
78
+ ? ""
79
+ : ` · documents ${hit.documents.join(", ")}`;
50
80
  return [
51
81
  `## ${hit.chunkId}${trust}`,
52
- `Source: ${hit.name}@${hit.version} — ${hit.filePath}`,
82
+ `Source: ${hit.name}@${hit.version} — ${hit.filePath}${describes}`,
53
83
  "",
54
84
  hit.content,
55
85
  ].join("\n");
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEjF,qGAAqG;AACrG,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AA2C/B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAqB;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC;IACxC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,UAAU,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;SAChC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAClD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAExB,+FAA+F;IAC/F,2FAA2F;IAC3F,8FAA8F;IAC9F,uFAAuF;IACvF,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;IACxD,KAAK,MAAM,GAAG,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAC5E,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK;SACvB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;QACrB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QACnD,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS;YACrC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,OAAO,CAAC,aAAa,GAAG,EAAE,CAAC;QACpD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,aAAa;QACrC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,kBAAkB;KACnD,CAAC;SACD,GAAG,CAAC,CAAC,GAAG,EAAY,EAAE;QACrB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxD,wFAAwF;QACxF,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/E,OAAO;YACL,GAAG,GAAG;YACN,IAAI;YACJ,OAAO;YACP,OAAO,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAClC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;SAClD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3C,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,gBAAgB,GACpB,wFAAwF;IACxF,6DAA6D,CAAC;AAEhE;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,KAAa;IAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,0FAA0F;QAC1F,kFAAkF;QAClF,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,mCAAmC,KAAK,UAAU,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,oEAAoE,CAAC;QAC3M,CAAC;QACD,OAAO,mCAAmC,KAAK,kEAAkE,CAAC;IACpH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;QAChD,2FAA2F;QAC3F,mFAAmF;QACnF,kFAAkF;QAClF,MAAM,SAAS,GACb,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACvD,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,gBAAgB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,OAAO;YACL,MAAM,GAAG,CAAC,OAAO,GAAG,KAAK,EAAE;YAC3B,WAAW,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,MAAM,GAAG,CAAC,QAAQ,GAAG,SAAS,EAAE;YAClE,EAAE;YACF,GAAG,CAAC,OAAO;SACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,SAAS;QAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC9C,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC"}