@zenalexa/unicli 0.223.4 → 0.224.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/AGENTS.md +5 -5
  2. package/README.md +4 -4
  3. package/README.zh-CN.md +4 -4
  4. package/dist/adapters/marxists-cn/archive.d.ts +61 -0
  5. package/dist/adapters/marxists-cn/archive.d.ts.map +1 -0
  6. package/dist/adapters/marxists-cn/archive.js +861 -0
  7. package/dist/adapters/marxists-cn/archive.js.map +1 -0
  8. package/dist/adapters/twitter/lists-extra.d.ts +17 -1
  9. package/dist/adapters/twitter/lists-extra.d.ts.map +1 -1
  10. package/dist/adapters/twitter/lists-extra.js +123 -21
  11. package/dist/adapters/twitter/lists-extra.js.map +1 -1
  12. package/dist/adapters/twitter/post.js +1 -0
  13. package/dist/adapters/twitter/post.js.map +1 -1
  14. package/dist/adapters/twitter/thread.d.ts +13 -1
  15. package/dist/adapters/twitter/thread.d.ts.map +1 -1
  16. package/dist/adapters/twitter/thread.js +76 -33
  17. package/dist/adapters/twitter/thread.js.map +1 -1
  18. package/dist/cli.d.ts.map +1 -1
  19. package/dist/cli.js +3 -0
  20. package/dist/cli.js.map +1 -1
  21. package/dist/commands/architecture.d.ts +21 -0
  22. package/dist/commands/architecture.d.ts.map +1 -0
  23. package/dist/commands/architecture.js +47 -0
  24. package/dist/commands/architecture.js.map +1 -0
  25. package/dist/commands/compute.d.ts.map +1 -1
  26. package/dist/commands/compute.js +31 -6
  27. package/dist/commands/compute.js.map +1 -1
  28. package/dist/commands/doctor-compute.d.ts.map +1 -1
  29. package/dist/commands/doctor-compute.js +88 -1
  30. package/dist/commands/doctor-compute.js.map +1 -1
  31. package/dist/compute/action-execution.d.ts +30 -0
  32. package/dist/compute/action-execution.d.ts.map +1 -0
  33. package/dist/compute/action-execution.js +112 -0
  34. package/dist/compute/action-execution.js.map +1 -0
  35. package/dist/compute/capture-reference.d.ts.map +1 -1
  36. package/dist/compute/capture-reference.js +6 -1
  37. package/dist/compute/capture-reference.js.map +1 -1
  38. package/dist/compute/capture.d.ts +2 -0
  39. package/dist/compute/capture.d.ts.map +1 -1
  40. package/dist/compute/capture.js +6 -1
  41. package/dist/compute/capture.js.map +1 -1
  42. package/dist/compute/cursor-visual-style.d.ts +35 -0
  43. package/dist/compute/cursor-visual-style.d.ts.map +1 -0
  44. package/dist/compute/cursor-visual-style.js +39 -0
  45. package/dist/compute/cursor-visual-style.js.map +1 -0
  46. package/dist/compute/linux-overlay.d.ts +38 -0
  47. package/dist/compute/linux-overlay.d.ts.map +1 -0
  48. package/dist/compute/linux-overlay.js +274 -0
  49. package/dist/compute/linux-overlay.js.map +1 -0
  50. package/dist/compute/macos-overlay.d.ts +64 -0
  51. package/dist/compute/macos-overlay.d.ts.map +1 -0
  52. package/dist/compute/macos-overlay.js +590 -0
  53. package/dist/compute/macos-overlay.js.map +1 -0
  54. package/dist/compute/overlay-daemon.d.ts +47 -0
  55. package/dist/compute/overlay-daemon.d.ts.map +1 -0
  56. package/dist/compute/overlay-daemon.js +206 -0
  57. package/dist/compute/overlay-daemon.js.map +1 -0
  58. package/dist/compute/overlay.d.ts +42 -0
  59. package/dist/compute/overlay.d.ts.map +1 -0
  60. package/dist/compute/overlay.js +111 -0
  61. package/dist/compute/overlay.js.map +1 -0
  62. package/dist/compute/platform-overlays.d.ts +20 -0
  63. package/dist/compute/platform-overlays.d.ts.map +1 -0
  64. package/dist/compute/platform-overlays.js +31 -0
  65. package/dist/compute/platform-overlays.js.map +1 -0
  66. package/dist/compute/visual-timeline.d.ts +132 -0
  67. package/dist/compute/visual-timeline.d.ts.map +1 -0
  68. package/dist/compute/visual-timeline.js +431 -0
  69. package/dist/compute/visual-timeline.js.map +1 -0
  70. package/dist/compute/windows-overlay.d.ts +38 -0
  71. package/dist/compute/windows-overlay.d.ts.map +1 -0
  72. package/dist/compute/windows-overlay.js +282 -0
  73. package/dist/compute/windows-overlay.js.map +1 -0
  74. package/dist/core/architecture-tree.d.ts +68 -0
  75. package/dist/core/architecture-tree.d.ts.map +1 -0
  76. package/dist/core/architecture-tree.js +215 -0
  77. package/dist/core/architecture-tree.js.map +1 -0
  78. package/dist/discovery/aliases.d.ts.map +1 -1
  79. package/dist/discovery/aliases.js +93 -0
  80. package/dist/discovery/aliases.js.map +1 -1
  81. package/dist/discovery/core-catalog.d.ts.map +1 -1
  82. package/dist/discovery/core-catalog.js +14 -0
  83. package/dist/discovery/core-catalog.js.map +1 -1
  84. package/dist/discovery/intents.d.ts.map +1 -1
  85. package/dist/discovery/intents.js +124 -0
  86. package/dist/discovery/intents.js.map +1 -1
  87. package/dist/discovery/loader.d.ts +12 -6
  88. package/dist/discovery/loader.d.ts.map +1 -1
  89. package/dist/discovery/loader.js +37 -10
  90. package/dist/discovery/loader.js.map +1 -1
  91. package/dist/discovery/search.d.ts +27 -28
  92. package/dist/discovery/search.d.ts.map +1 -1
  93. package/dist/discovery/search.js +118 -120
  94. package/dist/discovery/search.js.map +1 -1
  95. package/dist/engine/text-normalize.d.ts +14 -0
  96. package/dist/engine/text-normalize.d.ts.map +1 -1
  97. package/dist/engine/text-normalize.js +64 -0
  98. package/dist/engine/text-normalize.js.map +1 -1
  99. package/dist/fast-path/handlers/discovery.d.ts +12 -5
  100. package/dist/fast-path/handlers/discovery.d.ts.map +1 -1
  101. package/dist/fast-path/handlers/discovery.js +42 -7
  102. package/dist/fast-path/handlers/discovery.js.map +1 -1
  103. package/dist/manifest-compact.txt +2 -2
  104. package/dist/manifest.json +352 -3
  105. package/dist/mcp/profiles/computer-use.d.ts.map +1 -1
  106. package/dist/mcp/profiles/computer-use.js +76 -8
  107. package/dist/mcp/profiles/computer-use.js.map +1 -1
  108. package/dist/registry.d.ts +14 -5
  109. package/dist/registry.d.ts.map +1 -1
  110. package/dist/registry.js +33 -6
  111. package/dist/registry.js.map +1 -1
  112. package/dist/transport/cascade.d.ts +1 -0
  113. package/dist/transport/cascade.d.ts.map +1 -1
  114. package/dist/transport/cascade.js +2 -2
  115. package/dist/transport/cascade.js.map +1 -1
  116. package/docs/operate/compute.md +66 -1
  117. package/docs/operate/troubleshooting.md +42 -0
  118. package/package.json +9 -5
  119. package/server.json +3 -3
  120. package/skills/unicli/SKILL.md +1 -1
  121. package/skills/unicli-claude-code/SKILL.md +1 -1
  122. package/skills/unicli-hermes/SKILL.md +1 -1
  123. package/src/adapters/marxists-cn/archive.test.ts +173 -0
  124. package/src/adapters/marxists-cn/archive.ts +1049 -0
  125. package/src/adapters/twitter/lists-extra.test.ts +115 -0
  126. package/src/adapters/twitter/lists-extra.ts +146 -26
  127. package/src/adapters/twitter/post.ts +1 -0
  128. package/src/adapters/twitter/thread.test.ts +25 -1
  129. package/src/adapters/twitter/thread.ts +99 -47
  130. package/dist/manifest-search.json +0 -1
@@ -1,16 +1,22 @@
1
1
  /**
2
- * Adapter loader — discovers and registers YAML + TS adapters.
3
- *
4
- * Scan order:
5
- * 1. Built-in adapters from src/adapters/
6
- * 2. User adapters from ~/.unicli/adapters/
7
- * 3. Plugin adapters from ~/.unicli/plugins/
2
+ * @owner src/discovery/loader.ts
3
+ * @does Discovers YAML and TypeScript adapters, validates adapter metadata, stamps source paths, and registers commands.
4
+ * @needs fs, path, js-yaml, src/registry, src/core/schema-v2, src/engine/kernel/compile, src/discovery/macos-dynamic
5
+ * @feeds src/cli.ts, src/discovery/search.ts, MCP and ACP command surfaces, tests/unit/loader.test.ts
6
+ * @breaks Emits schema-v2/config warnings or exits with code 78 for strict adapter violations; import failures are surfaced in debug mode.
7
+ * @invariants Registered file-backed commands carry repairable source paths; YAML files are size bounded before parsing.
8
+ * @side-effects Reads adapter files, imports TS/JS adapter modules, mutates the registry, primes the invocation kernel cache, writes warnings to stderr.
9
+ * @perf O(adapter files) startup scan; YAML parsing is capped by MAX_YAML_BYTES.
10
+ * @concurrency Loader imports TS adapters sequentially so registry source-path context cannot cross-contaminate commands.
11
+ * @test tests/unit/loader.test.ts, tests/unit/loader-parity.test.ts
12
+ * @stability stable
13
+ * @since 2026-05-26
8
14
  */
9
15
  import { readFileSync, readdirSync, existsSync, statSync } from "node:fs";
10
- import { join, extname, basename, dirname } from "node:path";
16
+ import { join, extname, basename, dirname, sep } from "node:path";
11
17
  import { fileURLToPath, pathToFileURL } from "node:url";
12
18
  import yaml from "js-yaml";
13
- import { getAllAdapters, registerAdapter } from "../registry.js";
19
+ import { getAllAdapters, registerAdapter, withAdapterSourcePath, } from "../registry.js";
14
20
  import { validateAdapterV2 } from "../core/schema-v2.js";
15
21
  import { compileAll } from "../engine/kernel/compile.js";
16
22
  import { registerMacosDynamicCommands } from "./macos-dynamic.js";
@@ -87,6 +93,25 @@ function findAdapterDirs() {
87
93
  }
88
94
  const { yamlDir: BUILTIN_YAML_DIR, tsDir: BUILTIN_TS_DIR } = findAdapterDirs();
89
95
  const USER_DIR = join(process.env.HOME ?? "~", ".unicli", "adapters");
96
+ function adapterSourcePath(absPath) {
97
+ const normalized = absPath.split(sep).join("/");
98
+ const sourceMarker = "/src/adapters/";
99
+ const sourceIndex = normalized.lastIndexOf(sourceMarker);
100
+ if (sourceIndex >= 0) {
101
+ return `src/adapters/${normalized.slice(sourceIndex + sourceMarker.length)}`;
102
+ }
103
+ const distMarker = "/dist/adapters/";
104
+ const distIndex = normalized.lastIndexOf(distMarker);
105
+ if (distIndex >= 0) {
106
+ return `dist/adapters/${normalized.slice(distIndex + distMarker.length)}`;
107
+ }
108
+ const userMarker = "/.unicli/adapters/";
109
+ const userIndex = normalized.lastIndexOf(userMarker);
110
+ if (userIndex >= 0) {
111
+ return normalized;
112
+ }
113
+ return absPath;
114
+ }
90
115
  function extractBalancedLiteral(source, openIndex) {
91
116
  let depth = 0;
92
117
  let quote = null;
@@ -214,6 +239,7 @@ function extractTsCommandStubs(site, siteDir) {
214
239
  continue;
215
240
  if (file.endsWith(".d.ts") || file.endsWith(".test.ts"))
216
241
  continue;
242
+ const sourcePath = adapterSourcePath(join(siteDir, file));
217
243
  const source = readFileSync(join(siteDir, file), "utf-8");
218
244
  let index = 0;
219
245
  while (true) {
@@ -248,7 +274,7 @@ function extractTsCommandStubs(site, siteDir) {
248
274
  commands[name] = {
249
275
  name,
250
276
  description: objectStringProp(body, "description"),
251
- adapter_path: objectStringProp(body, "adapter_path"),
277
+ adapter_path: objectStringProp(body, "adapter_path") ?? sourcePath,
252
278
  target_surface: objectStringProp(body, "target_surface"),
253
279
  strategy,
254
280
  browser,
@@ -416,6 +442,7 @@ export function loadAdaptersFromDir(dir) {
416
442
  commands[cmdName] = {
417
443
  name: cmdName,
418
444
  description: parsed.description,
445
+ adapter_path: adapterSourcePath(absPath),
419
446
  pipeline: parsed.pipeline,
420
447
  adapterArgs,
421
448
  strategy: parsed.strategy,
@@ -535,7 +562,7 @@ export async function loadTsAdapters() {
535
562
  let count = 0;
536
563
  for (const file of files) {
537
564
  try {
538
- await import(`${pathToFileURL(file).href}?unicli_ts_load=${tsAdapterLoadGeneration}`);
565
+ await withAdapterSourcePath(adapterSourcePath(file), () => import(`${pathToFileURL(file).href}?unicli_ts_load=${tsAdapterLoadGeneration}`));
539
566
  count++;
540
567
  }
541
568
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/discovery/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/discovery/loader.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,16 @@
1
1
  /**
2
- * BM25-based bilingual search engine for command discovery.
3
- *
4
- * Replaces the naive `String.includes()` filter with a proper information
5
- * retrieval algorithm. Designed for ~1000 commands across ~200 sites.
6
- *
7
- * Architecture:
8
- * 1. Build-time: `scripts/build-manifest.js` generates the inverted index
9
- * and IDF values, shipped as `dist/manifest-search.json`.
10
- * 2. Runtime: this module loads the index lazily on first search call,
11
- * then scores queries using BM25 with bilingual keyword expansion.
12
- *
13
- * Performance: <10ms for 1000 documents on a cold index load. The inverted
14
- * index is ~50KB — small enough to hold in memory permanently.
2
+ * @owner src/discovery/search.ts
3
+ * @does Score command-intent queries against live registry or manifest command documents.
4
+ * @needs ./aliases, ./intents, ./core-catalog, ./macos-dynamic, ../registry
5
+ * @feeds src/commands/search.ts, src/mcp/handler.ts, src/fast-path/handlers/discovery.ts
6
+ * @breaks Returns an empty result set when the registry/manifest has no matching commands.
7
+ * @invariants Runtime search uses the live registry; generated search-index artifacts are not a source of truth.
8
+ * @side-effects Caches an in-memory index by command-document signature; reads dynamic macOS data only when enabled.
9
+ * @perf Cold index build is O(commands * terms); warm searches reuse the cache until documents change.
10
+ * @concurrency Module cache is process-local and rebuilt synchronously inside a search call.
11
+ * @test tests/unit/search.test.ts, tests/unit/search-eval.test.ts, tests/unit/commands/search.test.ts
12
+ * @stability Public CLI/MCP discovery behavior.
13
+ * @since 0.223.4
15
14
  */
16
15
  export interface SearchResult {
17
16
  site: string;
@@ -24,7 +23,13 @@ export interface SearchResult {
24
23
  export interface SearchOptions {
25
24
  category?: string;
26
25
  }
27
- /** Serialized search index (generated at build time, loaded at runtime). */
26
+ export interface CommandSearchDocument {
27
+ site: string;
28
+ command: string;
29
+ description: string;
30
+ category?: string;
31
+ }
32
+ /** In-memory search index built from command documents. */
28
33
  export interface SearchIndex {
29
34
  /** Mapping: term → list of document indices that contain this term */
30
35
  postings: Record<string, number[]>;
@@ -43,21 +48,16 @@ export interface SearchIndex {
43
48
  avgDl: number;
44
49
  /** Total document count */
45
50
  N: number;
46
- }
47
- interface SearchManifest {
48
- sites: Record<string, {
49
- category?: string;
50
- commands: Array<{
51
- name: string;
52
- description: string;
53
- }>;
51
+ /** Registered site names for O(1) query hint checks. */
52
+ siteLookup: Record<string, true>;
53
+ /** Normalized multi-token site names for phrase hint matching. */
54
+ sitePhrases: Array<{
55
+ site: string;
56
+ phrase: string;
54
57
  }>;
55
58
  }
56
- /**
57
- * Build a search index from a manifest object.
58
- * Exported for use by the build script.
59
- */
60
- export declare function buildIndex(manifest: SearchManifest): SearchIndex;
59
+ export declare function buildIndexFromDocuments(searchDocuments: readonly CommandSearchDocument[]): SearchIndex;
60
+ export declare function searchDocuments(documents: readonly CommandSearchDocument[], query: string, limit?: number, options?: SearchOptions): SearchResult[];
61
61
  /**
62
62
  * Search all commands by natural language query.
63
63
  *
@@ -76,5 +76,4 @@ export declare function search(query: string, limit?: number, options?: SearchOp
76
76
  * Force-reload the search index (useful after index rebuild).
77
77
  */
78
78
  export declare function invalidateCache(): void;
79
- export {};
80
79
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/discovery/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAyBH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAeD,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,wCAAwC;IACxC,SAAS,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC,CAAC;IACH,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAC;CACX;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CACX,MAAM,EACN;QACE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxD,CACF,CAAC;CACH;AAoHD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,GAAG,WAAW,CA6DhE;AA2KD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,EACT,OAAO,GAAE,aAAkB,GAC1B,YAAY,EAAE,CAkBhB;AA6MD;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/discovery/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAuBH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAeD,2DAA2D;AAC3D,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,wCAAwC;IACxC,SAAS,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC,CAAC;IACH,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,kEAAkE;IAClE,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AA8ED,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,SAAS,qBAAqB,EAAE,GAChD,WAAW,CAuEb;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,qBAAqB,EAAE,EAC3C,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,EACT,OAAO,GAAE,aAAkB,GAC1B,YAAY,EAAE,CAUhB;AA2KD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CACpB,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,EACT,OAAO,GAAE,aAAkB,GAC1B,YAAY,EAAE,CAKhB;AA8PD;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
@@ -1,25 +1,22 @@
1
1
  /**
2
- * BM25-based bilingual search engine for command discovery.
3
- *
4
- * Replaces the naive `String.includes()` filter with a proper information
5
- * retrieval algorithm. Designed for ~1000 commands across ~200 sites.
6
- *
7
- * Architecture:
8
- * 1. Build-time: `scripts/build-manifest.js` generates the inverted index
9
- * and IDF values, shipped as `dist/manifest-search.json`.
10
- * 2. Runtime: this module loads the index lazily on first search call,
11
- * then scores queries using BM25 with bilingual keyword expansion.
12
- *
13
- * Performance: <10ms for 1000 documents on a cold index load. The inverted
14
- * index is ~50KB — small enough to hold in memory permanently.
2
+ * @owner src/discovery/search.ts
3
+ * @does Score command-intent queries against live registry or manifest command documents.
4
+ * @needs ./aliases, ./intents, ./core-catalog, ./macos-dynamic, ../registry
5
+ * @feeds src/commands/search.ts, src/mcp/handler.ts, src/fast-path/handlers/discovery.ts
6
+ * @breaks Returns an empty result set when the registry/manifest has no matching commands.
7
+ * @invariants Runtime search uses the live registry; generated search-index artifacts are not a source of truth.
8
+ * @side-effects Caches an in-memory index by command-document signature; reads dynamic macOS data only when enabled.
9
+ * @perf Cold index build is O(commands * terms); warm searches reuse the cache until documents change.
10
+ * @concurrency Module cache is process-local and rebuilt synchronously inside a search call.
11
+ * @test tests/unit/search.test.ts, tests/unit/search-eval.test.ts, tests/unit/commands/search.test.ts
12
+ * @stability Public CLI/MCP discovery behavior.
13
+ * @since 0.223.4
15
14
  */
16
- import { readFileSync, existsSync } from "node:fs";
17
- import { join, dirname } from "node:path";
18
- import { fileURLToPath } from "node:url";
19
15
  import { expandToken, tokenizeQuery, SITE_ALIASES, SITE_CATEGORIES, CATEGORY_ALIASES, } from "./aliases.js";
20
16
  import { intentBoost } from "./intents.js";
21
17
  import { buildMacosDynamicSearchDocuments, discoverMacosDynamicData, dynamicMacosDiscoveryEnabled, } from "./macos-dynamic.js";
22
18
  import { coreDiscoveryCategory, listCoreDiscoveryCommands, } from "./core-catalog.js";
19
+ import { getRegistryVersion, listCommands } from "../registry.js";
23
20
  // ── BM25 Parameters ─────────────────────────────────────────────────────────
24
21
  // Standard BM25 tuning. k1 controls term frequency saturation,
25
22
  // b controls document length normalization.
@@ -43,93 +40,68 @@ const BOOST_CMD_PARTIAL = 3.0; // Query token is substring of command name
43
40
  const BOOST_CATEGORY = 2.0; // Query token matches site's category
44
41
  // ── Index Management ────────────────────────────────────────────────────────
45
42
  let cachedIndex = null;
43
+ let cachedRegistryVersion = -1;
46
44
  /**
47
- * Resolve the path to the pre-built search index.
48
- * Falls back to building one on-the-fly from the manifest if the
49
- * pre-built index doesn't exist.
50
- */
51
- function getIndexPath() {
52
- const __dirname = dirname(fileURLToPath(import.meta.url));
53
- return join(__dirname, "..", "..", "dist", "manifest-search.json");
54
- }
55
- /**
56
- * Load or build the search index. Called lazily on first search.
45
+ * Load the live registry search index. Called lazily on first search.
57
46
  */
58
47
  function loadIndex() {
59
- if (cachedIndex)
60
- return cachedIndex;
61
- const indexPath = getIndexPath();
62
- if (existsSync(indexPath)) {
63
- cachedIndex = augmentIndexWithCoreDocs(JSON.parse(readFileSync(indexPath, "utf-8")));
48
+ const registryVersion = getRegistryVersion();
49
+ if (cachedIndex && cachedRegistryVersion === registryVersion) {
64
50
  return cachedIndex;
65
51
  }
66
- // Fallback: build index on-the-fly from manifest.json
67
- cachedIndex = augmentIndexWithCoreDocs(buildIndexFromManifest());
52
+ const documents = runtimeSearchDocuments();
53
+ cachedIndex = buildIndexFromDocuments(documents);
54
+ cachedRegistryVersion = registryVersion;
68
55
  return cachedIndex;
69
56
  }
70
- function augmentIndexWithCoreDocs(index) {
71
- const manifest = { sites: {} };
57
+ function runtimeSearchDocuments() {
72
58
  const seen = new Set();
73
- for (const doc of index.documents) {
74
- manifest.sites[doc.site] ??= {
75
- ...(doc.category ? { category: doc.category } : {}),
76
- commands: [],
77
- };
78
- manifest.sites[doc.site].commands.push({
79
- name: doc.command,
80
- description: doc.description,
59
+ const documents = [];
60
+ for (const command of listCommands()) {
61
+ const id = `${command.site}/${command.command}`;
62
+ seen.add(id);
63
+ documents.push({
64
+ site: command.site,
65
+ command: command.command,
66
+ description: command.description,
67
+ category: command.category,
81
68
  });
82
- seen.add(doc.id);
83
69
  }
84
70
  for (const doc of listCoreDiscoveryCommands()) {
85
71
  const id = `${doc.site}/${doc.command}`;
86
72
  if (seen.has(id))
87
73
  continue;
88
- manifest.sites[doc.site] ??= { category: doc.category, commands: [] };
89
- manifest.sites[doc.site].commands.push({
90
- name: doc.command,
74
+ seen.add(id);
75
+ documents.push({
76
+ site: doc.site,
77
+ command: doc.command,
91
78
  description: doc.description,
79
+ category: doc.category,
92
80
  });
93
81
  }
94
- return buildIndex(manifest);
95
- }
96
- /**
97
- * Build a search index from the manifest.json file.
98
- * Used when the pre-built search index doesn't exist (dev mode).
99
- */
100
- function buildIndexFromManifest() {
101
- const __dirname = dirname(fileURLToPath(import.meta.url));
102
- const manifestPath = join(__dirname, "..", "..", "dist", "manifest.json");
103
- if (!existsSync(manifestPath)) {
104
- // No manifest either — search will silently return zero results.
105
- // Emit an actionable hint to stderr so CI/dev failures point to the fix.
106
- process.stderr.write("[unicli search] Missing dist/manifest-search.json and dist/manifest.json. " +
107
- "Run: npm run build:manifest\n");
108
- return { postings: {}, idf: {}, documents: [], avgDl: 0, N: 0 };
109
- }
110
- const manifest = JSON.parse(readFileSync(manifestPath, "utf-8"));
111
- return buildIndex(manifest);
82
+ return documents;
112
83
  }
113
- /**
114
- * Build a search index from a manifest object.
115
- * Exported for use by the build script.
116
- */
117
- export function buildIndex(manifest) {
84
+ export function buildIndexFromDocuments(searchDocuments) {
118
85
  const documents = [];
119
- for (const [site, info] of Object.entries(manifest.sites)) {
120
- for (const cmd of info.commands) {
121
- const terms = tokenizeDocument(site, cmd.name, cmd.description ?? "", info.category);
122
- documents.push({
123
- id: `${site}/${cmd.name}`,
124
- site,
125
- command: cmd.name,
126
- description: cmd.description ?? "",
127
- ...(info.category ? { category: info.category } : {}),
128
- terms,
129
- termCount: terms.length,
130
- });
131
- }
86
+ const siteSet = new Set();
87
+ for (const doc of searchDocuments) {
88
+ siteSet.add(doc.site);
89
+ const terms = tokenizeDocument(doc.site, doc.command, doc.description, doc.category);
90
+ documents.push({
91
+ id: `${doc.site}/${doc.command}`,
92
+ site: doc.site,
93
+ command: doc.command,
94
+ description: doc.description,
95
+ ...(doc.category ? { category: doc.category } : {}),
96
+ terms,
97
+ termCount: terms.length,
98
+ });
132
99
  }
100
+ const siteLookup = Object.fromEntries(Array.from(siteSet, (site) => [site, true]));
101
+ const sitePhrases = Array.from(siteSet, (site) => ({
102
+ site,
103
+ phrase: normalizeSitePhrase(site),
104
+ })).filter((entry) => entry.phrase.includes(" "));
133
105
  const N = documents.length;
134
106
  const avgDl = N > 0 ? documents.reduce((sum, d) => sum + d.termCount, 0) / N : 0;
135
107
  // Build inverted index
@@ -165,8 +137,15 @@ export function buildIndex(manifest) {
165
137
  })),
166
138
  avgDl,
167
139
  N,
140
+ siteLookup,
141
+ sitePhrases,
168
142
  };
169
143
  }
144
+ export function searchDocuments(documents, query, limit = 5, options = {}) {
145
+ const staticResults = searchIndex(buildIndexFromDocuments(documents), query, limit, options);
146
+ const dynamicResults = searchDynamicMacosIndex(query, limit, options);
147
+ return mergeSearchResults(staticResults, dynamicResults, limit);
148
+ }
170
149
  // Minimal English stopwords — same set used in query tokenization
171
150
  const DOC_STOPWORDS = new Set([
172
151
  "the",
@@ -318,6 +297,9 @@ function tfidfCosine(docTerms, queryTerms, index) {
318
297
  export function search(query, limit = 5, options = {}) {
319
298
  const staticResults = searchIndex(loadIndex(), query, limit, options);
320
299
  const dynamicResults = searchDynamicMacosIndex(query, limit, options);
300
+ return mergeSearchResults(staticResults, dynamicResults, limit);
301
+ }
302
+ function mergeSearchResults(staticResults, dynamicResults, limit) {
321
303
  if (dynamicResults.length === 0)
322
304
  return staticResults;
323
305
  const byCommand = new Map();
@@ -340,16 +322,12 @@ function searchDynamicMacosIndex(query, limit, options) {
340
322
  const docs = buildMacosDynamicSearchDocuments(discoverMacosDynamicData());
341
323
  if (docs.length === 0)
342
324
  return [];
343
- const manifest = {
344
- sites: { macos: { category: "desktop", commands: [] } },
345
- };
346
- for (const doc of docs) {
347
- manifest.sites.macos.commands.push({
348
- name: doc.command,
349
- description: doc.description,
350
- });
351
- }
352
- return searchIndex(buildIndex(manifest), query, limit, options);
325
+ return searchIndex(buildIndexFromDocuments(docs.map((doc) => ({
326
+ site: doc.site,
327
+ command: doc.command,
328
+ description: doc.description,
329
+ category: "desktop",
330
+ }))), query, limit, options);
353
331
  }
354
332
  function searchIndex(index, query, limit, options) {
355
333
  if (index.N === 0)
@@ -369,8 +347,9 @@ function searchIndex(index, query, limit, options) {
369
347
  if (siteMatch)
370
348
  siteHints.push(siteMatch);
371
349
  // Check if this token is directly a known site
372
- if (index.documents.some((d) => d.site === token.toLowerCase())) {
373
- siteHints.push(token.toLowerCase());
350
+ const lowerToken = token.toLowerCase();
351
+ if (index.siteLookup[lowerToken]) {
352
+ siteHints.push(lowerToken);
374
353
  }
375
354
  // Check category alias
376
355
  const catMatch = CATEGORY_ALIASES.get(token) ?? CATEGORY_ALIASES.get(token.toLowerCase());
@@ -390,31 +369,21 @@ function searchIndex(index, query, limit, options) {
390
369
  }
391
370
  }
392
371
  // If site hints exist, also add ALL commands for those sites
393
- if (siteHints.length > 0) {
394
- for (let i = 0; i < index.documents.length; i++) {
395
- if (siteHints.includes(index.documents[i].site)) {
396
- candidateSet.add(i);
397
- }
398
- }
399
- }
400
- if (sitePhraseHints.length > 0) {
401
- for (let i = 0; i < index.documents.length; i++) {
402
- if (sitePhraseHints.includes(index.documents[i].site)) {
403
- candidateSet.add(i);
404
- }
405
- }
372
+ for (const siteHint of new Set([...siteHints, ...sitePhraseHints])) {
373
+ addSiteCandidates(index, siteHint, candidateSet);
406
374
  }
407
375
  if (queryTerms.length === 0 && categoryFilter) {
408
- for (let i = 0; i < index.documents.length; i++) {
409
- if (documentCategory(index.documents[i]) === categoryFilter) {
410
- candidateSet.add(i);
411
- }
412
- }
376
+ addCategoryCandidates(index, categoryFilter, candidateSet);
413
377
  }
414
378
  if (candidateSet.size === 0)
415
379
  return [];
416
380
  // Step 4: Score candidates using hybrid BM25 + TF-IDF
381
+ const boundedLimit = Math.max(0, Math.floor(limit));
382
+ if (boundedLimit === 0)
383
+ return [];
384
+ const shouldSortAll = boundedLimit >= candidateSet.size;
417
385
  const scored = [];
386
+ const topScored = [];
418
387
  for (const idx of candidateSet) {
419
388
  const doc = index.documents[idx];
420
389
  const docCategory = documentCategory(doc);
@@ -449,12 +418,19 @@ function searchIndex(index, query, limit, options) {
449
418
  score += intentBoost(doc, queryTerms, [...siteHints, ...sitePhraseHints]);
450
419
  if (categoryFilter && queryTerms.length === 0)
451
420
  score += BOOST_CATEGORY;
452
- if (score > 0)
421
+ if (score <= 0)
422
+ continue;
423
+ if (shouldSortAll) {
453
424
  scored.push({ idx, score });
425
+ }
426
+ else {
427
+ pushTopScore(topScored, { idx, score }, boundedLimit);
428
+ }
454
429
  }
455
430
  // Step 5: Sort and return top-K
456
- scored.sort((a, b) => b.score - a.score);
457
- const topK = scored.slice(0, limit);
431
+ const topK = shouldSortAll
432
+ ? scored.sort((a, b) => b.score - a.score).slice(0, boundedLimit)
433
+ : topScored;
458
434
  return topK.map(({ idx, score }) => {
459
435
  const doc = index.documents[idx];
460
436
  return {
@@ -467,6 +443,29 @@ function searchIndex(index, query, limit, options) {
467
443
  };
468
444
  });
469
445
  }
446
+ function addSiteCandidates(index, site, candidateSet) {
447
+ for (const docIdx of index.postings[site] ?? []) {
448
+ if (index.documents[docIdx]?.site === site)
449
+ candidateSet.add(docIdx);
450
+ }
451
+ }
452
+ function addCategoryCandidates(index, category, candidateSet) {
453
+ for (const docIdx of index.postings[category] ?? []) {
454
+ const doc = index.documents[docIdx];
455
+ if (doc && documentCategory(doc) === category)
456
+ candidateSet.add(docIdx);
457
+ }
458
+ }
459
+ function pushTopScore(topScored, candidate, limit) {
460
+ let insertAt = topScored.findIndex((entry) => candidate.score > entry.score);
461
+ if (insertAt === -1)
462
+ insertAt = topScored.length;
463
+ if (insertAt >= limit)
464
+ return;
465
+ topScored.splice(insertAt, 0, candidate);
466
+ if (topScored.length > limit)
467
+ topScored.pop();
468
+ }
470
469
  function documentCategory(doc) {
471
470
  return (doc.category ??
472
471
  coreDiscoveryCategory(doc.site) ??
@@ -477,11 +476,9 @@ function deriveSitePhraseHints(index, query) {
477
476
  const normalizedQuery = normalizeSitePhrase(query);
478
477
  if (normalizedQuery.length === 0)
479
478
  return [];
480
- const sites = new Set(index.documents.map((doc) => doc.site));
481
479
  const hints = [];
482
- for (const site of sites) {
483
- const phrase = normalizeSitePhrase(site);
484
- if (phrase.includes(" ") && hasPhrase(normalizedQuery, phrase)) {
480
+ for (const { site, phrase } of index.sitePhrases) {
481
+ if (hasPhrase(normalizedQuery, phrase)) {
485
482
  hints.push(site);
486
483
  }
487
484
  }
@@ -509,5 +506,6 @@ function buildUsageExample(site, command) {
509
506
  */
510
507
  export function invalidateCache() {
511
508
  cachedIndex = null;
509
+ cachedRegistryVersion = -1;
512
510
  }
513
511
  //# sourceMappingURL=search.js.map