@yadsh/dsh-qa-surface 0.11.2 → 0.13.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 (85) hide show
  1. package/lib/access/service.js +2 -1
  2. package/lib/access/service.js.map +1 -1
  3. package/lib/admin/service.js +254 -52
  4. package/lib/admin/service.js.map +1 -1
  5. package/lib/client/QaAccountsController.js +19 -1
  6. package/lib/client/QaAccountsController.js.map +1 -1
  7. package/lib/client/QaSurface.js +9 -2
  8. package/lib/client/QaSurface.js.map +1 -1
  9. package/lib/client/admin/pages/Conversations.js +9 -2
  10. package/lib/client/admin/pages/Conversations.js.map +1 -1
  11. package/lib/client/admin/pages/Overview.js +1 -1
  12. package/lib/client/admin/pages/Overview.js.map +1 -1
  13. package/lib/client/admin/pages/Quality.js +1 -1
  14. package/lib/client/admin/pages/Quality.js.map +1 -1
  15. package/lib/client/admin/pages/Review.js +8 -4
  16. package/lib/client/admin/pages/Review.js.map +1 -1
  17. package/lib/client/admin/shared.js +42 -4
  18. package/lib/client/admin/shared.js.map +1 -1
  19. package/lib/client/components/QaChangelog.js +52 -9
  20. package/lib/client/components/QaChangelog.js.map +1 -1
  21. package/lib/client/components/QaSidebar.js +13 -15
  22. package/lib/client/components/QaSidebar.js.map +1 -1
  23. package/lib/client/index.js +18 -4
  24. package/lib/client/index.js.map +1 -1
  25. package/lib/client/markdown/MermaidBlock.js +80 -0
  26. package/lib/client/markdown/MermaidBlock.js.map +1 -0
  27. package/lib/client/markdown/render.js +4 -0
  28. package/lib/client/markdown/render.js.map +1 -1
  29. package/lib/client/rating-harvest.js +138 -0
  30. package/lib/client/rating-harvest.js.map +1 -0
  31. package/lib/client/settings/card.js +2 -2
  32. package/lib/client/settings/card.js.map +1 -1
  33. package/lib/client/settings/sections/docs.js +41 -0
  34. package/lib/client/settings/sections/docs.js.map +1 -0
  35. package/lib/client/settings/sections.js +1 -0
  36. package/lib/client/settings/sections.js.map +1 -1
  37. package/lib/client/styles.js +24 -2
  38. package/lib/client/styles.js.map +1 -1
  39. package/lib/client/types.js.map +1 -1
  40. package/lib/client.js +2526 -232
  41. package/lib/client.js.map +1 -1
  42. package/lib/config-resolvers/defaults.js +4 -0
  43. package/lib/config-resolvers/defaults.js.map +1 -1
  44. package/lib/config-resolvers/integration.js +7 -7
  45. package/lib/config-resolvers/integration.js.map +1 -1
  46. package/lib/config-resolvers/tools.js +25 -0
  47. package/lib/config-resolvers/tools.js.map +1 -1
  48. package/lib/config.js +15 -0
  49. package/lib/config.js.map +1 -1
  50. package/lib/index.js +32 -10
  51. package/lib/index.js.map +1 -1
  52. package/lib/provenance/extractors.js +1 -1
  53. package/lib/provenance/extractors.js.map +1 -1
  54. package/lib/provenance/host-store.js +5 -1
  55. package/lib/provenance/host-store.js.map +1 -1
  56. package/lib/qa-tools/catalog.js +13 -2
  57. package/lib/qa-tools/catalog.js.map +1 -1
  58. package/lib/qa-tools/docs-tools.js +329 -31
  59. package/lib/qa-tools/docs-tools.js.map +1 -1
  60. package/lib/qa-tools/index.js +1 -0
  61. package/lib/qa-tools/index.js.map +1 -1
  62. package/lib/secure-session.js +11 -13
  63. package/lib/secure-session.js.map +1 -1
  64. package/lib/shared/docs-version.js +19 -0
  65. package/lib/shared/docs-version.js.map +1 -0
  66. package/lib/typert.host.js +140 -73
  67. package/lib/typert.remote-client.d.ts +11 -9
  68. package/lib/typert.remote-client.js +119 -67
  69. package/lib/types/admin/service.d.ts +60 -9
  70. package/lib/types/client/QaAccountsController.d.ts +12 -1
  71. package/lib/types/client/admin/shared.d.ts +16 -1
  72. package/lib/types/client/markdown/MermaidBlock.d.ts +6 -0
  73. package/lib/types/client/rating-harvest.d.ts +49 -0
  74. package/lib/types/client/settings/sections/docs.d.ts +15 -0
  75. package/lib/types/client/settings/sections.d.ts +1 -0
  76. package/lib/types/client/types.d.ts +11 -4
  77. package/lib/types/config-resolvers/integration.d.ts +5 -5
  78. package/lib/types/config-resolvers/tools.d.ts +9 -0
  79. package/lib/types/index.d.ts +18 -6
  80. package/lib/types/qa-tools/catalog.d.ts +6 -1
  81. package/lib/types/qa-tools/docs-tools.d.ts +17 -2
  82. package/lib/types/qa-tools/index.d.ts +6 -1
  83. package/lib/types/shared/docs-version.d.ts +15 -0
  84. package/lib/types/types.d.ts +42 -0
  85. package/package.json +5 -4
@@ -1,6 +1,7 @@
1
1
  import { lstat, readFile, readdir } from "node:fs/promises";
2
2
  import { dirname, isAbsolute, join, relative, resolve } from "node:path";
3
3
  import { defineTool } from "@deepseek-ai/dsh-tools";
4
+ import { isDocumentationVersion } from "../shared/docs-version.js";
4
5
  import { canonicalCandidate, pathIsInside } from "../user-workspace.js";
5
6
  /**
6
7
  * `docs_search` and `docs_read` — the documentation surface of the QA catalog.
@@ -22,6 +23,14 @@ import { canonicalCandidate, pathIsInside } from "../user-workspace.js";
22
23
  * names are accepted as filters. A path the convention does not describe is
23
24
  * still searched and still read — it simply carries no identity.
24
25
  *
26
+ * A real corpus also carries its own working material: the stand publishes an
27
+ * asset tree, inventories and triage notes beside the documents, under leading
28
+ * underscores. None of that is what a question is asked about, and an inventory
29
+ * names every module and version there is, so a walk that met it first spent the
30
+ * whole answer on it. The walk therefore visits the documented modules first,
31
+ * loose files next, and the underscored service material last — searched, but
32
+ * never at the expense of the documents.
33
+ *
25
34
  * Nothing here is destructive and building it registers nothing: like the rest
26
35
  * of the catalog these are side-effect-free definitions, and the workspace root
27
36
  * is read from `exec.agent` at call time.
@@ -36,10 +45,78 @@ export const QA_DOCS_READ_DEFAULT_LINES = 120;
36
45
  export const QA_DOCS_READ_MAX_LINES = 400;
37
46
  /** One file larger than this is not documentation a chat needs to search. */
38
47
  const MAX_FILE_BYTES = 2 * 1024 * 1024;
39
- /** Bound on the walk itself, so a huge tree cannot stall the turn. */
48
+ /** Bound on how many documents one search reads. */
40
49
  const MAX_FILES_SCANNED = 2_000;
50
+ /**
51
+ * Bound on how many entries one walk may look at, so a corpus with a huge asset
52
+ * tree cannot stall the turn even though nothing in it is read.
53
+ */
54
+ const MAX_WALK_ENTRIES = 50_000;
41
55
  /** A matched line is trimmed to this many characters before it is reported. */
42
56
  const MAX_LINE_CHARS = 240;
57
+ /** Keep model-supplied regular expressions small enough to audit and execute. */
58
+ const MAX_QUERY_PATTERN_CHARS = 512;
59
+ /**
60
+ * Extensions of material that is not documentation text: pictures, audio and
61
+ * video, archives, office binaries, fonts. A published corpus keeps them beside
62
+ * its prose — four fifths of the stand's own tree is images — and learning that
63
+ * by reading each one spends a search's whole document budget before it reaches
64
+ * a document. These are counted as skipped material, never as documents read.
65
+ */
66
+ const NON_TEXT_EXTENSIONS = new Set([
67
+ "avif",
68
+ "bmp",
69
+ "bz2",
70
+ "class",
71
+ "dll",
72
+ "doc",
73
+ "docx",
74
+ "dylib",
75
+ "eot",
76
+ "exe",
77
+ "flac",
78
+ "gif",
79
+ "gz",
80
+ "heic",
81
+ "ico",
82
+ "jar",
83
+ "jpeg",
84
+ "jfif",
85
+ "jpg",
86
+ "m4a",
87
+ "m4v",
88
+ "mkv",
89
+ "mov",
90
+ "mp3",
91
+ "mp4",
92
+ "odp",
93
+ "ods",
94
+ "odt",
95
+ "ogg",
96
+ "otf",
97
+ "pdf",
98
+ "png",
99
+ "ppt",
100
+ "pptx",
101
+ "rar",
102
+ "sqlite",
103
+ "svg",
104
+ "tar",
105
+ "tgz",
106
+ "tif",
107
+ "tiff",
108
+ "ttf",
109
+ "wav",
110
+ "wasm",
111
+ "webm",
112
+ "webp",
113
+ "woff",
114
+ "woff2",
115
+ "xls",
116
+ "xlsx",
117
+ "xz",
118
+ "zip",
119
+ ]);
43
120
  const TEXT_DECODER = new TextDecoder("utf-8", { fatal: true });
44
121
  /**
45
122
  * A typed refusal of one documentation call.
@@ -61,6 +138,9 @@ const DOCS_UNAVAILABLE = `this chat's workspace has no ${QA_DOCS_DIRECTORY}/ dir
61
138
  const DOCS_NOT_A_DIRECTORY = `the ${QA_DOCS_DIRECTORY}/ entry in this chat's workspace is not a real directory (it is a file or a link), and documentation is never followed through a link.`;
62
139
  const DOCS_ESCAPE = `the ${QA_DOCS_DIRECTORY}/ directory resolves outside the calling chat's workspace, so the documentation tree is refused.`;
63
140
  const INVALID_QUERY = "no query was given: pass the phrase to look for.";
141
+ const INVALID_PATTERN = "the search query is not a valid regular expression. Use grep-style syntax, for example `brigadir|brigada`, and escape punctuation that should be literal.";
142
+ const UNSAFE_PATTERN = "the search query uses grouping or repetition, which this bounded search does not execute. Use safe grep-style alternatives such as `brigadir|brigada`, character classes or anchors.";
143
+ const QUERY_TOO_LONG = `the search query is longer than ${MAX_QUERY_PATTERN_CHARS} characters. Narrow the regular expression and try again.`;
64
144
  const OUTSIDE_DOCS = `this path resolves outside the documentation tree (${QA_DOCS_DIRECTORY}/) this stand reads. Documentation is only read where the stand publishes it; pass a path inside ${QA_DOCS_DIRECTORY}/.`;
65
145
  /**
66
146
  * Refusals of a configured root. The operator named the path, so the message
@@ -74,9 +154,25 @@ const SYMLINK_ESCAPE = "this path leaves the documentation tree through a symbol
74
154
  const NOT_FOUND = "no documentation file or directory exists at this path. Check the spelling against a path docs_search reported.";
75
155
  const NOT_A_FILE = "this path is a directory, not a documentation file: pass the file to read, or use docs_search to find one.";
76
156
  const NOT_TEXT = "this path does not read as UTF-8 text (or is larger than the readable limit), so it is not documentation this tool can return.";
77
- const VERSION_SEGMENT = /^v?\d+(?:\.\d+)*$/iu;
157
+ /**
158
+ * The version one search runs under: the caller's own, the deployment's
159
+ * default, or none.
160
+ *
161
+ * An explicit `version` is the model saying which edition it means. An explicit
162
+ * `path` names a subtree the default has no business overriding — a corpus
163
+ * scoped to `platform/3.5` stays reachable on a stand whose default is `3.8` —
164
+ * so a call that named a path is left to that path alone.
165
+ */
166
+ function versionFor(options, args) {
167
+ const asked = (args.version ?? "").trim();
168
+ if (asked !== "")
169
+ return asked;
170
+ if ((args.path ?? "").trim() !== "")
171
+ return "";
172
+ return (options.defaultVersion ?? "").trim();
173
+ }
78
174
  function normalizeVersion(value) {
79
- return value.replace(/^v/u, "").toLowerCase();
175
+ return value.toLowerCase().replace(/^v/u, "");
80
176
  }
81
177
  /**
82
178
  * Identity of one documentation path, read relative to the documentation root.
@@ -94,7 +190,7 @@ export function docsIdentityOf(pathFromDocsRoot) {
94
190
  .filter((segment) => segment !== "");
95
191
  if (segments.length === 0)
96
192
  return identityOf(undefined, undefined);
97
- const versionIndex = segments.findIndex((segment) => VERSION_SEGMENT.test(segment));
193
+ const versionIndex = segments.findIndex((segment) => isDocumentationVersion(segment));
98
194
  if (versionIndex === -1)
99
195
  return identityOf(undefined, segments[0]);
100
196
  return identityOf(segments[versionIndex], versionIndex > 0 ? segments[versionIndex - 1] : undefined);
@@ -205,15 +301,22 @@ async function configuredDocsRoot(configured) {
205
301
  */
206
302
  async function docsTargetOf(root, input) {
207
303
  const trimmed = input.trim();
208
- if (trimmed === "" || isAbsolute(trimmed)) {
304
+ if (trimmed === "") {
209
305
  throw new QaDocsError("outside-docs", OUTSIDE_DOCS);
210
306
  }
307
+ const absoluteInput = isAbsolute(trimmed);
211
308
  const normalized = trimmed.replace(/\\/gu, "/").replace(/^\.\//u, "");
212
- const inside = normalized === QA_DOCS_DIRECTORY ||
213
- normalized.startsWith(`${QA_DOCS_DIRECTORY}/`)
214
- ? normalized
215
- : `${QA_DOCS_DIRECTORY}/${normalized}`;
216
- const spelled = resolve(root.workspace, inside);
309
+ // `docs/` is the stable public spelling, not necessarily the configured
310
+ // directory's basename. Resolve both accepted spellings from the canonical
311
+ // root itself so `/srv/published-corpus` still reads `docs/module/file.md`.
312
+ const relativeInput = normalized === QA_DOCS_DIRECTORY
313
+ ? ""
314
+ : normalized.startsWith(`${QA_DOCS_DIRECTORY}/`)
315
+ ? normalized.slice(QA_DOCS_DIRECTORY.length + 1)
316
+ : normalized;
317
+ const spelled = absoluteInput
318
+ ? resolve(trimmed)
319
+ : resolve(root.docs, relativeInput);
217
320
  if (!pathIsInside(spelled, root.docs)) {
218
321
  throw new QaDocsError("outside-docs", OUTSIDE_DOCS);
219
322
  }
@@ -278,20 +381,127 @@ function clamp(value, low, high) {
278
381
  return Math.min(Math.max(Math.trunc(value), low), high);
279
382
  }
280
383
  /**
281
- * Visit every documentation file of one target, in path order.
384
+ * Accept the linear subset this tool documents: literals, escapes,
385
+ * alternatives, character classes, dot and anchors. JavaScript regular
386
+ * expressions have no execution timeout, so grouping and repetition are
387
+ * rejected before compilation instead of letting a model-supplied nested
388
+ * quantifier block the Host on a long documentation line.
389
+ */
390
+ function isSafeSearchPattern(query) {
391
+ let escaped = false;
392
+ let inClass = false;
393
+ for (const character of query) {
394
+ if (escaped) {
395
+ escaped = false;
396
+ continue;
397
+ }
398
+ if (character === "\\") {
399
+ escaped = true;
400
+ continue;
401
+ }
402
+ if (character === "[") {
403
+ inClass = true;
404
+ continue;
405
+ }
406
+ if (character === "]" && inClass) {
407
+ inClass = false;
408
+ continue;
409
+ }
410
+ if (!inClass && "()*+?{}".includes(character))
411
+ return false;
412
+ }
413
+ return true;
414
+ }
415
+ /**
416
+ * Whether a name is the corpus's own working material: the asset tree, the
417
+ * inventories, the triage notes and anything else a publisher underscored or
418
+ * dotted.
419
+ */
420
+ function isServiceName(name) {
421
+ return name.startsWith("_") || name.startsWith(".");
422
+ }
423
+ /** Whether any segment of a path is such material. */
424
+ function isServicePath(pathFromDocs) {
425
+ return pathFromDocs.split(/[\\/]/u).some(isServiceName);
426
+ }
427
+ /**
428
+ * How the entries of one directory are ordered: documents before service
429
+ * material.
430
+ *
431
+ * A corpus keeps its own working material beside the documents, and the stand's
432
+ * names it with a leading underscore. Name order puts that material first (`_`
433
+ * sorts before letters), which is exactly where a bounded answer must not spend
434
+ * itself: an inventory names every module and version the corpus has, so it
435
+ * matches the question and consumes the budget before a document is opened.
436
+ * Module directories come first, then loose files at the same level, then
437
+ * everything underscored or dotted — which is still searched, just after the
438
+ * documentation. Material inside a service directory stays service material,
439
+ * however its own entries are named.
440
+ */
441
+ function entryRank(parentIsService, entry) {
442
+ if (parentIsService || isServiceName(entry.name))
443
+ return 2;
444
+ return entry.isDirectory() ? 0 : 1;
445
+ }
446
+ function entryComparator(parentIsService) {
447
+ return (left, right) => {
448
+ const rank = entryRank(parentIsService, left) - entryRank(parentIsService, right);
449
+ if (rank !== 0)
450
+ return rank;
451
+ return left.name < right.name ? -1 : left.name > right.name ? 1 : 0;
452
+ };
453
+ }
454
+ /**
455
+ * Which queued directory the walk opens next.
456
+ *
457
+ * Rank and path decide, not the order directories happened to be queued in: the
458
+ * corpus's own `_meta` at the top of the tree must not be read before a
459
+ * documented module's edition one level below it, which is what a breadth-first
460
+ * queue did — the inventories answered every question about the product before
461
+ * a document was reached.
462
+ */
463
+ function scopeComparator(left, right) {
464
+ const rank = Number(isServicePath(left.pathFromDocs)) -
465
+ Number(isServicePath(right.pathFromDocs));
466
+ if (rank !== 0)
467
+ return rank;
468
+ if (left.pathFromDocs === right.pathFromDocs)
469
+ return 0;
470
+ return left.pathFromDocs < right.pathFromDocs ? -1 : 1;
471
+ }
472
+ /**
473
+ * Whether a name is material the walk never reads: pictures, media, archives,
474
+ * office binaries and fonts, recognised by extension.
475
+ */
476
+ function isNonTextName(name) {
477
+ const dot = name.lastIndexOf(".");
478
+ if (dot <= 0)
479
+ return false;
480
+ return NON_TEXT_EXTENSIONS.has(name.slice(dot + 1).toLowerCase());
481
+ }
482
+ /**
483
+ * Visit every documentation file of one target, in walk order.
282
484
  *
283
- * Symbolic links are counted as skipped and never followed. The visitor
284
- * returns `stop` to end the walk, which is how the output budget ends it
285
- * early.
485
+ * Symbolic links are counted as skipped and never followed. A file the caller's
486
+ * scope excludes is neither read nor counted, and material that is not text is
487
+ * counted as skipped rather than read, so the document budget below is spent on
488
+ * documents. The visitor returns `stop` to end the walk, which is how the output
489
+ * budget ends it early.
286
490
  */
287
- async function visitDocumentation(target, visit) {
491
+ async function visitDocumentation(target, accept, descend, visit) {
288
492
  let filesScanned = 0;
493
+ let entriesSeen = 0;
289
494
  let skipped = 0;
290
495
  const info = await lstat(target.absolute).catch(() => undefined);
291
496
  if (info === undefined) {
292
497
  throw new QaDocsError("not-found", NOT_FOUND);
293
498
  }
294
499
  if (info.isFile()) {
500
+ // A path the caller named explicitly is read as it is: out of scope means
501
+ // no hits, not a refusal, and the refusal it may get comes from the reader.
502
+ if (!accept(target.pathFromDocs)) {
503
+ return { filesScanned, skipped, stopped: false };
504
+ }
295
505
  return {
296
506
  filesScanned: 1,
297
507
  skipped,
@@ -303,24 +513,47 @@ async function visitDocumentation(target, visit) {
303
513
  }
304
514
  const pending = [target];
305
515
  while (pending.length > 0) {
516
+ // Ranked by path, so the queue's order is the walk's order.
517
+ pending.sort(scopeComparator);
306
518
  const scope = pending.shift();
519
+ const serviceScope = isServicePath(scope.pathFromDocs);
307
520
  const entries = await readdir(scope.absolute, {
308
521
  withFileTypes: true,
309
522
  }).catch(() => []);
310
- entries.sort((left, right) => left.name < right.name ? -1 : left.name > right.name ? 1 : 0);
523
+ entries.sort(entryComparator(serviceScope));
311
524
  for (const entry of entries) {
312
525
  const child = join(scope.absolute, entry.name);
313
526
  const pathFromDocs = join(scope.pathFromDocs, entry.name);
314
527
  if (entry.isSymbolicLink()) {
528
+ entriesSeen += 1;
529
+ if (entriesSeen > MAX_WALK_ENTRIES) {
530
+ return { filesScanned, skipped, stopped: true };
531
+ }
315
532
  skipped += 1;
316
533
  continue;
317
534
  }
318
535
  if (entry.isDirectory()) {
536
+ if (!descend(pathFromDocs))
537
+ continue;
538
+ entriesSeen += 1;
539
+ if (entriesSeen > MAX_WALK_ENTRIES) {
540
+ return { filesScanned, skipped, stopped: true };
541
+ }
319
542
  pending.push({ absolute: child, pathFromDocs });
320
543
  continue;
321
544
  }
322
545
  if (!entry.isFile())
323
546
  continue;
547
+ if (!accept(pathFromDocs))
548
+ continue;
549
+ entriesSeen += 1;
550
+ if (entriesSeen > MAX_WALK_ENTRIES) {
551
+ return { filesScanned, skipped, stopped: true };
552
+ }
553
+ if (isNonTextName(entry.name)) {
554
+ skipped += 1;
555
+ continue;
556
+ }
324
557
  filesScanned += 1;
325
558
  if (filesScanned > MAX_FILES_SCANNED) {
326
559
  return { filesScanned, skipped, stopped: true };
@@ -338,8 +571,8 @@ async function visitDocumentation(target, visit) {
338
571
  /**
339
572
  * Search the documentation tree of one chat workspace.
340
573
  *
341
- * Matching is a case-insensitive substring test, line by line: a hit is a
342
- * line, not a file, so the caller can cite it. The result is bounded twice —
574
+ * Matching uses one case-insensitive, grep-style regular expression, line by
575
+ * line: a hit is a line, not a file, so the caller can cite it. The result is bounded twice —
343
576
  * by `limit` hits and by the byte budget of the rendered report — and reports
344
577
  * which bound cut it short instead of silently dropping matches.
345
578
  * @throws QaDocsError when the tree is missing, the scope path is wrong, or the query is empty.
@@ -349,7 +582,19 @@ export async function searchDocumentation(root, request) {
349
582
  if (query === "") {
350
583
  throw new QaDocsError("invalid-request", INVALID_QUERY);
351
584
  }
352
- const needle = query.toLowerCase();
585
+ if (query.length > MAX_QUERY_PATTERN_CHARS) {
586
+ throw new QaDocsError("invalid-request", QUERY_TOO_LONG);
587
+ }
588
+ if (!isSafeSearchPattern(query)) {
589
+ throw new QaDocsError("invalid-request", UNSAFE_PATTERN);
590
+ }
591
+ let pattern;
592
+ try {
593
+ pattern = new RegExp(query, "iu");
594
+ }
595
+ catch {
596
+ throw new QaDocsError("invalid-request", INVALID_PATTERN);
597
+ }
353
598
  const limit = clamp(request.limit ?? QA_DOCS_SEARCH_DEFAULT_LIMIT, 1, QA_DOCS_SEARCH_MAX_LIMIT);
354
599
  const version = request.version?.trim() ?? "";
355
600
  const module = request.module?.trim() ?? "";
@@ -367,9 +612,24 @@ export async function searchDocumentation(root, request) {
367
612
  return false;
368
613
  return true;
369
614
  };
615
+ const wantedScope = (pathFromDocs) => {
616
+ // `docsIdentityOf` expects a file path. A synthetic leaf makes the current
617
+ // directory participate as a scope while still allowing an ancestor that
618
+ // has not reached its module/version segment yet.
619
+ const identity = docsIdentityOf(join(pathFromDocs, "__scope__"));
620
+ if (version !== "" &&
621
+ identity.version !== undefined &&
622
+ !versionMatches(identity, version)) {
623
+ return false;
624
+ }
625
+ if (module !== "" &&
626
+ identity.module !== undefined &&
627
+ !moduleMatches(identity, module)) {
628
+ return false;
629
+ }
630
+ return true;
631
+ };
370
632
  const visit = async (file, pathFromDocs, explicit) => {
371
- if (!wanted(pathFromDocs))
372
- return "continue";
373
633
  let lines;
374
634
  try {
375
635
  lines = await readDocLines(file);
@@ -383,7 +643,8 @@ export async function searchDocumentation(root, request) {
383
643
  }
384
644
  const identity = docsIdentityOf(pathFromDocs);
385
645
  for (const [index, line] of lines.entries()) {
386
- if (!line.toLowerCase().includes(needle))
646
+ pattern.lastIndex = 0;
647
+ if (!pattern.test(line))
387
648
  continue;
388
649
  const hit = {
389
650
  path: reportPath(pathFromDocs),
@@ -402,7 +663,7 @@ export async function searchDocumentation(root, request) {
402
663
  }
403
664
  return "continue";
404
665
  };
405
- const walk = await visitDocumentation(scope, visit);
666
+ const walk = await visitDocumentation(scope, wanted, wantedScope, visit);
406
667
  return {
407
668
  ...identityOf(version === "" ? undefined : version, module === "" ? undefined : module),
408
669
  query,
@@ -443,7 +704,12 @@ export async function readDocumentation(root, request) {
443
704
  text: lines.slice(from - 1, Math.max(to, from - 1)).join("\n"),
444
705
  };
445
706
  }
446
- function filtersOf(identity) {
707
+ /**
708
+ * The facets an answer ran under, as one leading-space clause the callers
709
+ * interpolate. `note` rides beside them in a report's header — never on a hit's
710
+ * own label, where it would repeat on every line.
711
+ */
712
+ function filtersOf(identity, note = "") {
447
713
  const parts = [];
448
714
  if (identity.version !== undefined && identity.version !== "") {
449
715
  parts.push(`version ${identity.version}`);
@@ -451,7 +717,9 @@ function filtersOf(identity) {
451
717
  if (identity.module !== undefined && identity.module !== "") {
452
718
  parts.push(`module ${identity.module}`);
453
719
  }
454
- return parts.length === 0 ? "" : ` (${parts.join(", ")})`;
720
+ const facets = parts.join(", ");
721
+ const described = note === "" ? facets : facets === "" ? note : `${facets}, ${note}`;
722
+ return described === "" ? "" : ` (${described})`;
455
723
  }
456
724
  function identityLabel(identity) {
457
725
  return filtersOf(identity);
@@ -467,12 +735,12 @@ function identityLabel(identity) {
467
735
  export function createDocsSearchTool(options = {}) {
468
736
  return defineTool({
469
737
  name: "docs_search",
470
- description: `Search the stand's documentation, which lives ${docsLayout(options)}. Use it — not memory and not a glob sweep over guessed paths — whenever a question is about the product, a version or a module. Hits are lines, tagged with the module and version parsed from the path (${QA_DOCS_DIRECTORY}/<module>/<version>/…); pass version and module to stay inside one edition, and path to stay inside one subtree. Output is bounded by limit and by a byte budget, and a truncated result says so.`,
738
+ description: `Search the stand's documentation, which lives ${docsLayout(options)}. Use it — not memory and not a glob sweep over guessed paths — whenever a question is about the product, a version or a module. Query is a case-insensitive, safe grep-style regular expression: use alternatives such as \`brigadir|brigada\`, character classes and anchors instead of writing several words as one literal phrase; grouping and repetition are refused to keep execution bounded. Hits are lines, tagged with the module and version parsed from the path (${QA_DOCS_DIRECTORY}/<module>/<version>/…); pass version and module to stay inside one edition, and path to stay inside one subtree. Output is bounded by limit and by a byte budget, and a truncated result says so.${defaultVersionNote(options)}`,
471
739
  parameters: {
472
740
  query: {
473
741
  type: "string",
474
742
  required: true,
475
- description: "Phrase to look for, matched case-insensitively inside single lines of documentation files.",
743
+ description: "Case-insensitive safe grep-style regular expression matched inside single lines, e.g. `brigadir|brigada`. Spaces are literal; use `|` for alternatives. Grouping and repetition are not accepted.",
476
744
  },
477
745
  version: {
478
746
  type: "string",
@@ -484,7 +752,7 @@ export function createDocsSearchTool(options = {}) {
484
752
  },
485
753
  path: {
486
754
  type: "string",
487
- description: `Narrow the search to one subtree, e.g. \`${QA_DOCS_DIRECTORY}/platform/3.8\` or \`platform/3.8\`.`,
755
+ description: `Narrow the search to one subtree, e.g. \`${QA_DOCS_DIRECTORY}/platform/3.8\`, \`platform/3.8\`, or an absolute path inside the configured documentation root.`,
488
756
  },
489
757
  limit: {
490
758
  type: "number",
@@ -516,11 +784,15 @@ export function createDocsSearchTool(options = {}) {
516
784
  truncated: { type: "boolean", required: true },
517
785
  filesScanned: { type: "integer", required: true },
518
786
  skipped: { type: "integer", required: true },
787
+ // A search answers with the facets it ran under, so a filtered result
788
+ // says which edition of which module it is speaking about.
789
+ version: { type: "string" },
790
+ module: { type: "string" },
519
791
  },
520
792
  },
521
- render: (_args, value) => {
793
+ render: (args, value) => {
522
794
  const result = value;
523
- const filters = filtersOf(result);
795
+ const filters = filtersOf(result, defaultedVersion(options, args) ? "the stand's default" : "");
524
796
  if (result.hits.length === 0) {
525
797
  return [
526
798
  {
@@ -542,7 +814,7 @@ export function createDocsSearchTool(options = {}) {
542
814
  const root = await docsRootOf(exec, options);
543
815
  return searchDocumentation(root, {
544
816
  query: args.query,
545
- version: args.version,
817
+ version: versionFor(options, args),
546
818
  module: args.module,
547
819
  path: args.path,
548
820
  limit: args.limit,
@@ -550,6 +822,32 @@ export function createDocsSearchTool(options = {}) {
550
822
  },
551
823
  });
552
824
  }
825
+ /**
826
+ * Whether the version in an answer is the deployment's default rather than one
827
+ * the caller named — the difference between "I looked in 3.8" and "the stand
828
+ * looked in 3.8", which the report has to keep.
829
+ */
830
+ function defaultedVersion(options, args) {
831
+ const request = (args ?? {});
832
+ const asked = request.version;
833
+ if (typeof asked === "string" && asked.trim() !== "")
834
+ return false;
835
+ if (typeof request.path === "string" && request.path.trim() !== "") {
836
+ return false;
837
+ }
838
+ return (options.defaultVersion ?? "").trim() !== "";
839
+ }
840
+ /**
841
+ * The sentence that tells the model which edition a search it did not scope
842
+ * itself will stay inside. Without it the model reads a filtered answer as the
843
+ * whole corpus and reports a missing document rather than a narrowed search.
844
+ */
845
+ function defaultVersionNote(options) {
846
+ const version = (options.defaultVersion ?? "").trim();
847
+ return version === ""
848
+ ? ""
849
+ : ` This stand documents version ${version} by default: a search without version and without path stays inside that edition, and pass version or path to look at another one.`;
850
+ }
553
851
  /**
554
852
  * How the tool description names the tree: the model has to know where the
555
853
  * documentation is before it decides to look, and a configured corpus is named
@@ -1 +1 @@
1
- {"version":3,"file":"docs-tools.js","sourceRoot":"","sources":["../../src/qa-tools/docs-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs-tools.js","sourceRoot":"","sources":["../../src/qa-tools/docs-tools.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@ export class QaTools {
32
32
  activeTools: (agent) => this.manager.activeToolNames(agent),
33
33
  skillLoaded: (agent) => sessionLoadedSkill(agent.session, options.activationSkill),
34
34
  docsRoot: options.docsRoot,
35
+ docsDefaultVersion: options.docsDefaultVersion,
35
36
  });
36
37
  this.catalogTools = catalog.map((entry) => entry.definition.name);
37
38
  this.manager = new QaToolActivationManager({