@massa-ai/core 1.14.0 → 1.16.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 (37) hide show
  1. package/dist/services/search/contextual-search-rlm.d.ts +35 -14
  2. package/dist/services/search/contextual-search-rlm.d.ts.map +1 -1
  3. package/dist/services/search/contextual-search-rlm.js +274 -53
  4. package/dist/services/search/contextual-search-rlm.js.map +1 -1
  5. package/dist/services/search/graph-stream.d.ts +36 -0
  6. package/dist/services/search/graph-stream.d.ts.map +1 -0
  7. package/dist/services/search/{rlm-synapse.js → graph-stream.js} +11 -90
  8. package/dist/services/search/graph-stream.js.map +1 -0
  9. package/dist/services/search/hybrid-search.d.ts +101 -0
  10. package/dist/services/search/hybrid-search.d.ts.map +1 -0
  11. package/dist/services/search/{rlm-search.js → hybrid-search.js} +89 -46
  12. package/dist/services/search/hybrid-search.js.map +1 -0
  13. package/dist/services/search/index-admin.d.ts +130 -0
  14. package/dist/services/search/index-admin.d.ts.map +1 -0
  15. package/dist/services/search/{rlm-admin.js → index-admin.js} +34 -18
  16. package/dist/services/search/index-admin.js.map +1 -0
  17. package/dist/services/search/project-indexer.d.ts +159 -0
  18. package/dist/services/search/project-indexer.d.ts.map +1 -0
  19. package/dist/services/search/{rlm-indexing.js → project-indexer.js} +51 -79
  20. package/dist/services/search/project-indexer.js.map +1 -0
  21. package/dist/services/search/session-bias.d.ts +41 -0
  22. package/dist/services/search/session-bias.d.ts.map +1 -0
  23. package/dist/services/search/session-bias.js +76 -0
  24. package/dist/services/search/session-bias.js.map +1 -0
  25. package/package.json +2 -2
  26. package/dist/services/search/rlm-admin.d.ts +0 -22
  27. package/dist/services/search/rlm-admin.d.ts.map +0 -1
  28. package/dist/services/search/rlm-admin.js.map +0 -1
  29. package/dist/services/search/rlm-indexing.d.ts +0 -71
  30. package/dist/services/search/rlm-indexing.d.ts.map +0 -1
  31. package/dist/services/search/rlm-indexing.js.map +0 -1
  32. package/dist/services/search/rlm-search.d.ts +0 -27
  33. package/dist/services/search/rlm-search.d.ts.map +0 -1
  34. package/dist/services/search/rlm-search.js.map +0 -1
  35. package/dist/services/search/rlm-synapse.d.ts +0 -44
  36. package/dist/services/search/rlm-synapse.d.ts.map +0 -1
  37. package/dist/services/search/rlm-synapse.js.map +0 -1
@@ -25,17 +25,18 @@ import { FileFilterCache } from "./file-filter-cache.js";
25
25
  import { QueryUnderstandingService } from "./query-understanding.js";
26
26
  import type { SynapseManager } from "../synapse/synapse-manager.js";
27
27
  import type { SessionRegistry } from "../synapse/session/session-registry.js";
28
- import type { getKeywordSearch } from "../../data/keyword/keyword-search-factory.js";
29
- import type { getVectorStore } from "../../data/vector/vector-store-factory.js";
30
- import type { getSearchCache } from "./cache-factory.js";
31
- import type { getSearchAnalytics } from "./analytics-factory.js";
32
- import type { getSymbolRepository } from "../../data/symbol/symbol-repository-factory.js";
33
- import { type IndexProjectOptions } from "./rlm-indexing.js";
34
- import type { SearchDegradation, SearchDegradationReporter } from "./search-diagnostics.js";
28
+ import { getKeywordSearch } from "../../data/keyword/keyword-search-factory.js";
29
+ import { getVectorStore } from "../../data/vector/vector-store-factory.js";
30
+ import { getSearchCache } from "./cache-factory.js";
31
+ import { getSearchAnalytics } from "./analytics-factory.js";
32
+ import { getSymbolRepository } from "../../data/symbol/symbol-repository-factory.js";
33
+ import { type IndexProjectOptions } from "./project-indexer.js";
34
+ import { type SearchDegradation, type SearchDegradationReporter } from "./search-diagnostics.js";
35
35
  /**
36
36
  * ContextualSearchRLM - Main contextual search service
37
37
  */
38
38
  export declare class ContextualSearchRLM {
39
+ #private;
39
40
  keywordSearch: Awaited<ReturnType<typeof getKeywordSearch>>;
40
41
  vectorStore: Awaited<ReturnType<typeof getVectorStore>>;
41
42
  indexManager: IndexManager;
@@ -52,6 +53,26 @@ export declare class ContextualSearchRLM {
52
53
  * `ensureInitialized` skips the factory calls (which are process-wide
53
54
  * mock.module targets in the full test suite) and uses these instances
54
55
  * directly. Production callers pass nothing and resolve via factories.
56
+ *
57
+ * PR-B T11 adds `indexManager`, the F4 seam (design.md §2.3 F4, D-R5). It is
58
+ * the one collaborator that could not be injected at all before this commit:
59
+ * every other member arrives from a factory this record can pre-empt, while
60
+ * `IndexManager` was built by direct construction inside `ensureInitialized`
61
+ * with no field to override it. It is the only *added* seam in PR-B; every
62
+ * other task moves a seam that already existed.
63
+ *
64
+ * **Every field here must stay optional, and for `indexManager` that is a
65
+ * G-HUB precondition rather than a style choice.** `IndexManager` is declared
66
+ * inside this gated directory, and `search-hub-metric.ts:139`'s annotation
67
+ * pattern `([A-Za-z0-9_]+)\s*:\s*<Type>\b` does not distinguish an interface
68
+ * field declaration from a parameter — that is the seventh plan defect, which
69
+ * took `IndexManager`'s `maxForeignReach` from 0 to 4 when `IndexerDeps` typed
70
+ * the same collaborator with a bare colon. The `?` here is what keeps the
71
+ * binding uncaptured (`\s*` cannot match `?`, the same reason the field at
72
+ * `indexManager!: IndexManager` above is invisible). Measured at T11: this
73
+ * record leaves `IndexManager` at foreign 0 / reach 0. Dropping the `?` — or
74
+ * restyling this record to `IndexerDeps`' required-field shape — reopens that
75
+ * hole, and nothing fails until T14's gate.
55
76
  */
56
77
  readonly injectedDeps?: {
57
78
  keywordSearch?: Awaited<ReturnType<typeof getKeywordSearch>>;
@@ -59,6 +80,11 @@ export declare class ContextualSearchRLM {
59
80
  searchCache?: Awaited<ReturnType<typeof getSearchCache>>;
60
81
  analytics?: Awaited<ReturnType<typeof getSearchAnalytics>>;
61
82
  symbolRepo?: Awaited<ReturnType<typeof getSymbolRepository>>;
83
+ /** F4 (T11). Full `IndexManager`, not `Pick<>`: the value is assigned to the
84
+ * public `indexManager` field, which design.md §4.3.1 keeps at the full type
85
+ * for its 18 post-construction stub sites, so a narrowed seam would need a
86
+ * cast to land there. The `?` is the G-HUB guard — see above. */
87
+ indexManager?: IndexManager;
62
88
  sessionRegistry?: Pick<SessionRegistry, "getAsync">;
63
89
  synapseManager?: Pick<SynapseManager, "process">;
64
90
  };
@@ -68,6 +94,7 @@ export declare class ContextualSearchRLM {
68
94
  searchCache?: Awaited<ReturnType<typeof getSearchCache>>;
69
95
  analytics?: Awaited<ReturnType<typeof getSearchAnalytics>>;
70
96
  symbolRepo?: Awaited<ReturnType<typeof getSymbolRepository>>;
97
+ indexManager?: IndexManager;
71
98
  sessionRegistry?: Pick<SessionRegistry, "getAsync">;
72
99
  synapseManager?: Pick<SynapseManager, "process">;
73
100
  });
@@ -155,13 +182,7 @@ export declare class ContextualSearchRLM {
155
182
  * Invalid and workspace-mismatched sessions return the exact base array.
156
183
  */
157
184
  applySynapseState(baseResults: SearchResult[], query: string, projectId: string, sessionId?: string, reportDegradation?: SearchDegradationReporter): Promise<SearchResult[]>;
158
- /**
159
- * Fuzzy-correct each non-stopword query term via the keyword store's
160
- * vocabulary. Returns the corrected query string (lowercased, space-joined),
161
- * or null when no term corrects to a different word or fuzzyCorrect is
162
- * unavailable. Only words of length >= 3 are considered (shorter tokens
163
- * can't be reliably corrected).
164
- */
185
+ /** Fuzzy-correct query terms against the keyword store's vocabulary; see hybrid-search.ts. */
165
186
  correctQuery(query: string): Promise<string | null>;
166
187
  /**
167
188
  * Phase 7c: build the graph-neighbor RRF stream. BFS depth-2 over outgoing
@@ -1 +1 @@
1
- {"version":3,"file":"contextual-search-rlm.d.ts","sourceRoot":"","sources":["../../../src/services/search/contextual-search-rlm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contextual-search-rlm.d.ts","sourceRoot":"","sources":["../../../src/services/search/contextual-search-rlm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAU,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAO9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAmBrF,OAAO,EAQL,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC/B,MAAM,yBAAyB,CAAC;AASjC;;GAEG;AACH,qBAAa,mBAAmB;;IAW9B,aAAa,EAAG,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAG,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IACzD,YAAY,EAAG,YAAY,CAAC;IAC5B,WAAW,EAAG,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IACzD,SAAS,EAAG,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAC3D,UAAU,EAAG,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;IAK7D,eAAe,EAAE,eAAe,CAAC;IACjC,sFAAsF;IAOtF,kBAAkB,EAAE,yBAAyB,CAAC;IAK9C,WAAW,UAAS;IAGpB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAoC;IAEhE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,aAAa,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC;QAC7D,WAAW,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;QACzD,WAAW,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;QACzD,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;QAC3D,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;QAC7D;;;0EAGkE;QAClE,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACpD,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;KAClD,CAAC;gBAKU,IAAI,CAAC,EAAE;QACjB,aAAa,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC;QAC7D,WAAW,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;QACzD,WAAW,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;QACzD,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;QAC3D,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;QAC7D,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACpD,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;KAClD;IAuBK,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqFxC;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;;;OAMG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;YAgBY,qBAAqB;IAanC;;OAEG;IACG,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;QACP,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;KAClB,GACL,OAAO,CAAC;QACT,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IAKF;;;;;;;;;;;;OAYG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;QACT,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE;YACN,MAAM,EAAE,MAAM,CAAC;YACf,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;KACH,CAAC;IAKF;;;;;;;;OAQG;IASG,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAI9B;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,8EAA8E;QAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,iBAAiB,EAAE,KAAK,IAAI,CAAC;KAClE,GACL,OAAO,CAAC,YAAY,EAAE,CAAC;IAuB1B;;;OAGG;IACG,iBAAiB,CACrB,WAAW,EAAE,YAAY,EAAE,EAC3B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,yBAAyB,GAC5C,OAAO,CAAC,YAAY,EAAE,CAAC;IAwD1B,8FAA8F;IACxF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIzD;;;;;;;;;;;;;;;;;;;OAmBG;IACG,gBAAgB,CACpB,UAAU,EAAE,YAAY,EAAE,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,yBAAyB,GAC5C,OAAO,CAAC,YAAY,EAAE,CAAC;IAS1B;;;;;;OAMG;IACH,WAAW,CACT,UAAU,EAAE,YAAY,EAAE,EAAE,EAC5B,KAAK,EAAE,MAAM,EACb,aAAa,GAAE,OAAe,GAC7B,YAAY,EAAE;IAIjB;;OAEG;IACH,wBAAwB,CACtB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,GAAG;IAYN;;OAEG;IACG,mBAAmB,CACvB,OAAO,EAAE,YAAY,EAAE,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1B;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM;IAI7D;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM;IAIlD;;OAEG;IACH,gBAAgB,CACd,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,MAAM,EAAE,GACjB,YAAY,EAAE;IA0BjB;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAKxE;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAChD,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAKF;;;;OAIG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAKrD;;OAEG;IAKH,YAAY,IAAI,eAAe,GAAG,iBAAiB;CAGpD"}
@@ -17,37 +17,66 @@
17
17
  * - Per-projectId namespace for isolation
18
18
  * - Embedding reuse across projects
19
19
  */
20
+ import { logger } from "@massa-ai/shared";
21
+ import { IndexManager } from "./index-manager.js";
20
22
  import { FileFilterCache } from "./file-filter-cache.js";
21
23
  import { QueryUnderstandingService } from "./query-understanding.js";
22
24
  import { assertParserReadyForIndexing } from "../structural/parser-readiness.js";
23
- import { runWithIndexLock, _indexProjectInternalImpl, ensureFreshIndexImpl, indexFileImpl, loadGitignoreImpl, checkSearchAdmissionImpl, ensureInitializedImpl, } from "./rlm-indexing.js";
24
- import { applySynapseStateImpl, correctQueryImpl, buildGraphStreamImpl, } from "./rlm-synapse.js";
25
- import { searchImpl, addContextToResultsImpl, extractPreviewImpl, calculateAvgScoreImpl, filterByPatternsImpl, } from "./rlm-search.js";
26
- // Capability module (design.md §4.1). These share a name with the class
25
+ // PR-B T10: these five were `import type` while `ensureInitializedImpl` owned
26
+ // the factory calls in rlm-indexing.ts. That body is now `ensureInitialized()`
27
+ // below, so the root needs them as *values*. The five specifiers are unchanged,
28
+ // which is what keeps every `mock.module("…-factory.js")` in the suite pointing
29
+ // at the same resolved module it always did.
30
+ import { getKeywordSearch } from "../../data/keyword/keyword-search-factory.js";
31
+ import { getVectorStore } from "../../data/vector/vector-store-factory.js";
32
+ import { getSearchCache } from "./cache-factory.js";
33
+ import { getSearchAnalytics } from "./analytics-factory.js";
34
+ import { getSymbolRepository } from "../../data/symbol/symbol-repository-factory.js";
35
+ // Capability modules (design.md §4.1). These share a name with the class
27
36
  // methods that delegate to them — the shape §4.3 sketches. Class members are
28
37
  // not in lexical scope, so a bare call inside a method body resolves to the
29
- // module import, not to itself.
38
+ // module import, not to itself. Same arity too, so `tsc` cannot tell a correct
39
+ // delegation from a `this.`-prefixed infinite recursion; the coverage suite's
40
+ // forwarding tests are what prove it at runtime.
30
41
  import { fuseResults, generateScoreExplanation } from "./result-fusion.js";
31
- import { clearProjectIndexImpl, getProjectStatsImpl, warmupCacheImpl, getAnalyticsImpl, } from "./rlm-admin.js";
42
+ import { buildGraphStream } from "./graph-stream.js";
43
+ import { applySynapseState } from "./session-bias.js";
44
+ import { search, correctQuery, addContextToResults, extractPreview, calculateAvgScore, filterByPatterns, } from "./hybrid-search.js";
45
+ import { runWithIndexLock, indexProjectInternal, ensureFreshIndex, indexFile, loadGitignore, checkSearchAdmission, } from "./project-indexer.js";
46
+ import { recordSearchFailure, searchBackendUnavailable, } from "./search-diagnostics.js";
47
+ import { clearProjectIndex, getProjectStats, warmupCache, getAnalytics, } from "./index-admin.js";
32
48
  /**
33
49
  * ContextualSearchRLM - Main contextual search service
34
50
  */
35
51
  export class ContextualSearchRLM {
36
- // NOTE (M14 Phase 3): fields below were `private`. Relaxed to `public`
37
- // (modifier dropped) so the extracted delegate modules in rlm-indexing.ts /
38
- // rlm-synapse.ts / rlm-search.ts / rlm-admin.ts can read them via the passed
39
- // `rlm` parameter. Runtime-identical; type-surface only. See design.md
40
- // "Encapsulation decision (accepted cost)".
52
+ // NOTE (M14 Phase 3): the fields below were `private`, relaxed to `public`
53
+ // so the extracted delegate modules could read them off the instance via a
54
+ // passed `rlm` parameter (.specs/features/god-files-refactor/design.md,
55
+ // "Encapsulation decision (accepted cost)"). That reason is spent: PR-B T10
56
+ // dropped rlm-indexing.ts from that list, T12 dropped rlm-admin.ts and T13
57
+ // dropped rlm-search.ts — each reads what it needs through its own deps
58
+ // record, never off the instance, and all three files are deleted. **No
59
+ // extracted module reads any of these fields any more.** They stay public on
60
+ // their own merits — per field below, and per design.md §4.3.1: the ~80
61
+ // post-construction `(rlm as any).<member> = …` sites a `private` breaks.
41
62
  keywordSearch;
42
63
  vectorStore;
43
64
  indexManager;
44
65
  searchCache;
45
66
  analytics;
46
67
  symbolRepo;
47
- // Visibility relaxed from `private` so rlm-admin.ts can read via rlm param.
68
+ // Was relaxed from `private` so rlm-admin.ts could read it via the rlm param.
69
+ // T12 removed that reader: index-admin.ts takes it through `IndexAdminDeps`.
70
+ // Still public because 4 test sites assign it post-construction
71
+ // (contextual-search-rlm-coverage.test.ts:343,354; search-facade-admin.test.ts:85,96).
48
72
  fileFilterCache;
49
73
  /** Phase 2: query understanding (LLM rewrite + HyDE). Default-off, silent-degrade. */
50
- // Visibility relaxed from `private` so rlm-search.ts can read via rlm param.
74
+ // Was relaxed from `private` so rlm-search.ts could read it via the rlm
75
+ // param; T13 removed that reader — hybrid-search.ts takes it through
76
+ // `HybridSearchDeps`. Still public for two reasons: design.md §4.3.1's
77
+ // post-construction stub sites, and a live production reader at
78
+ // project-identity/production-wiring.ts:51 — the only one of these ten
79
+ // members a gate can see, since reprivatising it is TS2341.
51
80
  queryUnderstanding;
52
81
  // RRF_K was a public field only so rlm-fusion.ts could read it off the
53
82
  // instance. It is the literal 60 and is now a module constant in
@@ -61,27 +90,137 @@ export class ContextualSearchRLM {
61
90
  * `ensureInitialized` skips the factory calls (which are process-wide
62
91
  * mock.module targets in the full test suite) and uses these instances
63
92
  * directly. Production callers pass nothing and resolve via factories.
93
+ *
94
+ * PR-B T11 adds `indexManager`, the F4 seam (design.md §2.3 F4, D-R5). It is
95
+ * the one collaborator that could not be injected at all before this commit:
96
+ * every other member arrives from a factory this record can pre-empt, while
97
+ * `IndexManager` was built by direct construction inside `ensureInitialized`
98
+ * with no field to override it. It is the only *added* seam in PR-B; every
99
+ * other task moves a seam that already existed.
100
+ *
101
+ * **Every field here must stay optional, and for `indexManager` that is a
102
+ * G-HUB precondition rather than a style choice.** `IndexManager` is declared
103
+ * inside this gated directory, and `search-hub-metric.ts:139`'s annotation
104
+ * pattern `([A-Za-z0-9_]+)\s*:\s*<Type>\b` does not distinguish an interface
105
+ * field declaration from a parameter — that is the seventh plan defect, which
106
+ * took `IndexManager`'s `maxForeignReach` from 0 to 4 when `IndexerDeps` typed
107
+ * the same collaborator with a bare colon. The `?` here is what keeps the
108
+ * binding uncaptured (`\s*` cannot match `?`, the same reason the field at
109
+ * `indexManager!: IndexManager` above is invisible). Measured at T11: this
110
+ * record leaves `IndexManager` at foreign 0 / reach 0. Dropping the `?` — or
111
+ * restyling this record to `IndexerDeps`' required-field shape — reopens that
112
+ * hole, and nothing fails until T14's gate.
64
113
  */
65
114
  injectedDeps;
115
+ // Mirrors `injectedDeps` field-for-field, and the mirror is load-bearing: a
116
+ // field added to only one side makes the matching object literal fail excess
117
+ // property checking at every un-cast call site.
66
118
  constructor(deps) {
67
119
  this.fileFilterCache = new FileFilterCache();
68
120
  this.queryUnderstanding = new QueryUnderstandingService();
69
121
  this.injectedDeps = deps;
70
122
  }
71
- // Delegate-preservation contract: stays an instance method (thin delegate
72
- // to the module function) because concurrent-indexing.test.ts:67 and the
73
- // characterization test monkey-patch `(inst as any).ensureInitialized` on
74
- // the instance; routing through a module-local function would bypass that.
75
- // Visibility relaxed from `private` to public-equivalent so rlm-indexing.ts
76
- // can dispatch through `rlm.ensureInitialized()` (runtime-identical).
123
+ // Delegate-preservation contract: stays a public patchable instance method,
124
+ // because concurrent-indexing.test.ts:67, the characterization test and
125
+ // search-facade-hybrid.test.ts:156 monkey-patch `.ensureInitialized` on the instance and
126
+ // every internal caller routes through `this.` (constraint PATCHABLE).
127
+ //
128
+ // PR-B T10: this body **is** the former `ensureInitializedImpl`, moved here
129
+ // verbatim with `rlm.` → `this.` and the export deleted. It read 8 facade
130
+ // members and 8 > G-HUB's ceiling of 3, so no capability module could hold it
131
+ // without failing the gate permanently — design.md §4.5(b) decided lazy init
132
+ // stays in the root, §4.1's module table never recorded the consequence, and
133
+ // tasks.md T10 owns it. Absorbing it is what lets rlm-indexing.ts die whole in
134
+ // one commit instead of surviving as the one-function husk GMS-04 AC-1 forbids.
135
+ //
136
+ // It does exactly what it did: resolve the six factories, assign the six
137
+ // fields, set the flag. It does **not** construct capability modules — there
138
+ // are none to construct — so the 25 test sites that set `initialized = true`
139
+ // to skip it still skip only factory resolution, never wiring (§4.3.1).
77
140
  async ensureInitialized() {
78
- return ensureInitializedImpl(this);
141
+ if (this.initialized)
142
+ return;
143
+ const injected = this.injectedDeps ?? {};
144
+ const resolveKeyword = injected.keywordSearch
145
+ ? Promise.resolve(injected.keywordSearch)
146
+ : getKeywordSearch();
147
+ const resolveVector = injected.vectorStore
148
+ ? Promise.resolve(injected.vectorStore)
149
+ : getVectorStore();
150
+ const resolveCache = injected.searchCache
151
+ ? Promise.resolve(injected.searchCache)
152
+ : getSearchCache();
153
+ const resolveAnalytics = injected.analytics
154
+ ? Promise.resolve(injected.analytics)
155
+ : getSearchAnalytics();
156
+ const resolveSymbolRepo = injected.symbolRepo
157
+ ? Promise.resolve(injected.symbolRepo)
158
+ : getSymbolRepository();
159
+ [
160
+ this.keywordSearch,
161
+ this.vectorStore,
162
+ this.searchCache,
163
+ this.analytics,
164
+ this.symbolRepo,
165
+ ] = await Promise.all([
166
+ resolveKeyword,
167
+ resolveVector,
168
+ resolveCache,
169
+ resolveAnalytics,
170
+ resolveSymbolRepo,
171
+ ]);
172
+ // F4 seam (T11). `??` rather than the ternary the five reads above use:
173
+ // those wrap in `Promise.resolve()` to enter the `Promise.all`, this one is
174
+ // synchronous. Nullish and truthy coincide for a class instance, so the two
175
+ // forms cannot differ on any input reachable here.
176
+ //
177
+ // Position is load-bearing, not incidental: this runs *after* the
178
+ // `Promise.all` above, so the default construction reads an already-resolved
179
+ // `this.vectorStore`. Hoisting it would hand `IndexManager` `undefined` while
180
+ // still satisfying an `instanceof` check — which is why the seam's sensor
181
+ // asserts the manager's own `vectorStore`, not just its class.
182
+ this.indexManager = injected.indexManager ?? new IndexManager(this.vectorStore);
183
+ this.initialized = true;
184
+ logger.info("ContextualSearchRLM initialized", {
185
+ via: injected.vectorStore ? "injected-seam" : "factory",
186
+ });
187
+ }
188
+ /**
189
+ * Assemble project-indexer.ts's narrow deps record — per call, from whatever
190
+ * the fields hold right now (LATE-BIND, design.md §4.3.1). Never hoist this to
191
+ * a constructor-time capture *or* a first-call memo: `initialized` has 25
192
+ * post-construction assignment sites, `indexManager` 18, `symbolRepo` 7, and
193
+ * `search-facade-indexing.test.ts` alone holds 52 of the ~80 — a capture would leave
194
+ * every one of them stubbing a field nothing reads.
195
+ *
196
+ * Property reads only, never a dereference. That is load-bearing:
197
+ * `search-facade-indexing.test.ts:327-339` stubs `indexManager` and `searchCache` but
198
+ * *not* `symbolRepo`, because the full-reindex branch returns before touching
199
+ * it. Reading an undefined field into the record is fine; dereferencing one
200
+ * here would turn that test red on a member the original never reached.
201
+ *
202
+ * `indexFile` and `indexProject` are arrow wrappers, not `.bind(this)` and not
203
+ * bare method references. Both alternatives resolve the method at *assembly*
204
+ * time; the arrow body re-reads `this.<method>` at *call* time, which is the
205
+ * only shape under which the 6 sites that stub those two methods on the
206
+ * instance stay effective. See project-indexer.ts's `IndexerDeps` doc.
207
+ */
208
+ #indexerDeps() {
209
+ return {
210
+ indexManager: this.indexManager,
211
+ symbolRepo: this.symbolRepo,
212
+ keywordSearch: this.keywordSearch,
213
+ vectorStore: this.vectorStore,
214
+ searchCache: this.searchCache,
215
+ indexFile: (filePath, projectId, projectRoot, centralityMap) => this.indexFile(filePath, projectId, projectRoot, centralityMap),
216
+ indexProject: (projectPath, projectId, options) => this.indexProject(projectPath, projectId, options),
217
+ };
79
218
  }
80
219
  /**
81
220
  * Load and parse .gitignore file (delegates to shared ignore-patterns module)
82
221
  */
83
222
  loadGitignore(projectPath) {
84
- return loadGitignoreImpl(projectPath);
223
+ return loadGitignore(projectPath);
85
224
  }
86
225
  /**
87
226
  * Index an entire project
@@ -102,13 +241,15 @@ export class ContextualSearchRLM {
102
241
  // the characterization test monkey-patch `(inst as any)._indexProjectInternal`
103
242
  // on the instance; routing through a module-local function would bypass it.
104
243
  async _indexProjectInternal(projectPath, projectId, options = {}) {
105
- return _indexProjectInternalImpl(this, projectPath, projectId, options);
244
+ await this.ensureInitialized();
245
+ return indexProjectInternal(this.#indexerDeps(), projectPath, projectId, options);
106
246
  }
107
247
  /**
108
248
  * Check if index is stale and optionally trigger reindexing
109
249
  */
110
250
  async ensureFreshIndex(projectId, projectPath, options = {}) {
111
- return ensureFreshIndexImpl(this, projectId, projectPath, options);
251
+ await this.ensureInitialized();
252
+ return ensureFreshIndex(this.#indexerDeps(), projectId, projectPath, options);
112
253
  }
113
254
  /**
114
255
  * Search admission preflight — two-tier gate run before `search()`.
@@ -124,7 +265,8 @@ export class ContextualSearchRLM {
124
265
  * When `projectPath` is absent the stale check is skipped gracefully.
125
266
  */
126
267
  async checkSearchAdmission(projectId, projectPath) {
127
- return checkSearchAdmissionImpl(this, projectId, projectPath);
268
+ await this.ensureInitialized();
269
+ return checkSearchAdmission(this.#indexerDeps(), projectId, projectPath);
128
270
  }
129
271
  /**
130
272
  * Index a single file, splitting it into semantic chunks
@@ -135,35 +277,93 @@ export class ContextualSearchRLM {
135
277
  * - YAML: splits by document separators or top-level keys
136
278
  * - Code: splits by functions/classes with preceding comments
137
279
  */
138
- // Visibility relaxed from `private` so rlm-indexing.ts can dispatch through
139
- // `rlm.indexFile()` (runtime-identical; type-additive only).
280
+ // Stays public: project-indexer.ts reaches it back through
281
+ // `IndexerDeps.indexFile`, an arrow wrapper over `this.indexFile`, so the 5
282
+ // sites in search-facade-indexing.test.ts that stub this method on the instance keep
283
+ // taking effect (LATE-BIND).
284
+ //
285
+ // It deliberately does **not** `await this.ensureInitialized()`. The original
286
+ // `indexFileImpl` never did either — its callers init first — and adding it
287
+ // here would be a behavior change, not a tidy-up.
140
288
  async indexFile(filePath, projectId, projectRoot, centralityMap) {
141
- return indexFileImpl(this, filePath, projectId, projectRoot, centralityMap);
289
+ return indexFile(this.#indexerDeps(), filePath, projectId, projectRoot, centralityMap);
142
290
  }
143
291
  /**
144
292
  * Hybrid search (vector + keyword) with projectId filter
145
293
  */
146
294
  async search(query, projectId, options = {}) {
147
- return searchImpl(this, query, projectId, options);
295
+ // The hoist carries its wrapper. T10's and T12's delegates called
296
+ // `ensureInitialized` bare; `searchImpl` wrapped a failure in
297
+ // `searchBackendUnavailable(…)` and recorded it, so a bare hoist would drop
298
+ // both. The hoist itself is mandatory, not stylistic — the record snapshots
299
+ // five stores by value (measurements in tasks.md, T13).
300
+ try {
301
+ await this.ensureInitialized();
302
+ }
303
+ catch (error) {
304
+ const failure = searchBackendUnavailable("search_initialization", error);
305
+ recordSearchFailure(failure, projectId);
306
+ throw failure;
307
+ }
308
+ return search(this.#hybridSearchDeps(), query, projectId, options);
148
309
  }
310
+ // The nine public methods from here to `filterByPatterns` all delegate to a
311
+ // capability module. They were relaxed from `private` so rlm-search.ts could
312
+ // call them via the rlm param; T13 removed that caller and deleted the file.
313
+ // They stay public under design.md §4.3, "the class keeps its 21 public
314
+ // methods", a compatibility surface for 24 importers — and under nothing
315
+ // mechanical: measured at T14, reprivatising all nine produces zero gate
316
+ // failures, because packages/core/tsconfig.json excludes src/__tests__.
149
317
  /**
150
318
  * Apply session state after the session-independent base result is cached.
151
319
  * Invalid and workspace-mismatched sessions return the exact base array.
152
320
  */
153
- // Visibility relaxed from `private` so rlm-search.ts can call via rlm param.
154
321
  async applySynapseState(baseResults, query, projectId, sessionId, reportDegradation) {
155
- return applySynapseStateImpl(this, baseResults, query, projectId, sessionId, reportDegradation);
322
+ return applySynapseState(this.#sessionBiasDeps(), baseResults, query, projectId, sessionId, reportDegradation);
156
323
  }
157
324
  /**
158
- * Fuzzy-correct each non-stopword query term via the keyword store's
159
- * vocabulary. Returns the corrected query string (lowercased, space-joined),
160
- * or null when no term corrects to a different word or fuzzyCorrect is
161
- * unavailable. Only words of length >= 3 are considered (shorter tokens
162
- * can't be reliably corrected).
325
+ * Assemble session-bias.ts's narrow deps record per call, from whatever the
326
+ * fields hold right now (LATE-BIND, design.md §4.3.1). Never hoist this to a
327
+ * constructor-time capture: the ~80 test sites that stub facade state *after*
328
+ * construction would go on passing while exercising the real collaborator,
329
+ * which is this repository's signature defect class.
330
+ *
331
+ * Property reads only. Resolving the factory fallbacks here instead of inside
332
+ * the module would call both on every search, including the no-session calls
333
+ * that today touch neither.
334
+ */
335
+ #sessionBiasDeps() {
336
+ return {
337
+ sessionRegistry: this.injectedDeps?.sessionRegistry,
338
+ synapseManager: this.injectedDeps?.synapseManager,
339
+ };
340
+ }
341
+ /**
342
+ * Assemble hybrid-search.ts's narrow deps record — per call, from current
343
+ * field values (LATE-BIND, design.md §4.3.1). Never hoist to a constructor
344
+ * capture or a first-call memo. Property reads only, and the stores read the
345
+ * **field**, not `injectedDeps.<store>` — contrast `#sessionBiasDeps()` above,
346
+ * whose originals genuinely read the seam. The three callbacks are arrow
347
+ * wrappers for the same call-time-dispatch reason as `#indexerDeps()`'s two.
348
+ * Where each of §2.1's thirteen members landed is on `HybridSearchDeps` in
349
+ * hybrid-search.ts and in tasks.md; both files sit under G-HUB's 700-line
350
+ * ceiling and T13 pushed each of them over it once.
163
351
  */
164
- // Visibility relaxed from `private` so rlm-search.ts can call via rlm param.
352
+ #hybridSearchDeps() {
353
+ return {
354
+ keywordSearch: this.keywordSearch,
355
+ vectorStore: this.vectorStore,
356
+ searchCache: this.searchCache,
357
+ analytics: this.analytics,
358
+ queryUnderstanding: this.queryUnderstanding,
359
+ buildGraphStream: (resultSets, maxResults, projectId, reportDegradation) => this.buildGraphStream(resultSets, maxResults, projectId, reportDegradation),
360
+ addContextToResults: (results, projectId) => this.addContextToResults(results, projectId),
361
+ applySynapseState: (baseResults, query, projectId, sessionId, reportDegradation) => this.applySynapseState(baseResults, query, projectId, sessionId, reportDegradation),
362
+ };
363
+ }
364
+ /** Fuzzy-correct query terms against the keyword store's vocabulary; see hybrid-search.ts. */
165
365
  async correctQuery(query) {
166
- return correctQueryImpl(this, query);
366
+ return correctQuery(this.#hybridSearchDeps(), query);
167
367
  }
168
368
  /**
169
369
  * Phase 7c: build the graph-neighbor RRF stream. BFS depth-2 over outgoing
@@ -185,9 +385,8 @@ export class ContextualSearchRLM {
185
385
  * appends the stream when non-empty, so `resultSets.length` (and thus the
186
386
  * `search:reranked` streamCount) always reflects the real stream count.
187
387
  */
188
- // Visibility relaxed from `private` so rlm-search.ts can call via rlm param.
189
388
  async buildGraphStream(resultSets, maxResults, projectId, reportDegradation) {
190
- return buildGraphStreamImpl(this, resultSets, maxResults, projectId, reportDegradation);
389
+ return buildGraphStream(resultSets, maxResults, projectId, reportDegradation);
191
390
  }
192
391
  /**
193
392
  * Reciprocal Rank Fusion (RRF) - Combines multiple result lists
@@ -196,56 +395,73 @@ export class ContextualSearchRLM {
196
395
  * - Keywords get higher weight when query contains function/class names
197
396
  * - Exact matches in keyword results get additional boost
198
397
  */
199
- // Visibility relaxed from `private` so rlm-search.ts can call via rlm param.
200
398
  fuseResults(resultSets, query, explainScores = false) {
201
399
  return fuseResults(resultSets, query, explainScores);
202
400
  }
203
401
  /**
204
402
  * Generate detailed score explanation
205
403
  */
206
- // Visibility relaxed from `private` so rlm-search.ts (fuseResults) can call via rlm param.
207
404
  generateScoreExplanation(finalScore, rrfScore, vectorScore, keywordScore, vectorRank, keywordRank, combinedRank) {
208
405
  return generateScoreExplanation(finalScore, rrfScore, vectorScore, keywordScore, vectorRank, keywordRank, combinedRank);
209
406
  }
210
407
  /**
211
408
  * Add expanded context to results
212
409
  */
213
- // Visibility relaxed from `private` so rlm-search.ts can call via rlm param.
214
410
  async addContextToResults(results, _projectId) {
215
- return addContextToResultsImpl(this, results, _projectId);
411
+ return addContextToResults(results, _projectId);
216
412
  }
217
413
  /**
218
414
  * Extract content preview (first lines)
219
415
  */
220
- // Visibility relaxed from `private` so rlm-search.ts can call via rlm param.
221
416
  extractPreview(content, maxLines = 5) {
222
- return extractPreviewImpl(content, maxLines);
417
+ return extractPreview(content, maxLines);
223
418
  }
224
419
  /**
225
420
  * Calculate average score
226
421
  */
227
- // Visibility relaxed from `private` so rlm-search.ts can call via rlm param.
228
422
  calculateAvgScore(results) {
229
- return calculateAvgScoreImpl(results);
423
+ return calculateAvgScore(results);
230
424
  }
231
425
  /**
232
426
  * Filter results by glob patterns
233
427
  */
234
- // Visibility relaxed from `private` so rlm-search.ts can call via rlm param.
235
428
  filterByPatterns(results, include, exclude) {
236
- return filterByPatternsImpl(results, include, exclude);
429
+ return filterByPatterns(results, include, exclude);
430
+ }
431
+ /**
432
+ * Assemble index-admin.ts's narrow deps record — per call, from current field
433
+ * values (LATE-BIND, design.md §4.3.1). Never hoist to a constructor capture or
434
+ * a first-call memo. Property reads only: `getAnalytics` does not await init, so
435
+ * on a fresh facade these are all `undefined`, and a dereference here would
436
+ * redden a path the original never reached. `search` is an arrow wrapper for the
437
+ * same call-time-dispatch reason as `#indexerDeps()`'s two. Measurements for
438
+ * both, and the 7 stub sites that make `search` load-bearing, live on
439
+ * `IndexAdminDeps` in index-admin.ts — kept there so this file stays under
440
+ * G-HUB's 700-line ceiling (685 after T12).
441
+ */
442
+ #indexAdminDeps() {
443
+ return {
444
+ vectorStore: this.vectorStore,
445
+ keywordSearch: this.keywordSearch,
446
+ searchCache: this.searchCache,
447
+ fileFilterCache: this.fileFilterCache,
448
+ analytics: this.analytics,
449
+ search: (query, projectId, options) => this.search(query, projectId, options),
450
+ };
237
451
  }
238
452
  /**
239
453
  * Clear project index
240
454
  */
241
455
  async clearProjectIndex(projectId) {
242
- return clearProjectIndexImpl(this, projectId);
456
+ await this.ensureInitialized();
457
+ return clearProjectIndex(this.#indexAdminDeps(), projectId);
243
458
  }
244
459
  /**
245
460
  * Get project statistics
246
461
  */
247
462
  async getProjectStats(projectId) {
248
- return getProjectStatsImpl(this, projectId);
463
+ await this.ensureInitialized();
464
+ return getProjectStats(this.#indexAdminDeps(), projectId);
249
465
  }
250
466
  /**
251
467
  * Warmup cache with common queries
@@ -253,13 +469,18 @@ export class ContextualSearchRLM {
253
469
  * Pre-caches typical search patterns to improve initial search performance
254
470
  */
255
471
  async warmupCache(projectId, _projectPath, customQueries) {
256
- return warmupCacheImpl(this, projectId, _projectPath, customQueries);
472
+ await this.ensureInitialized();
473
+ return warmupCache(this.#indexAdminDeps(), projectId, _projectPath, customQueries);
257
474
  }
258
475
  /**
259
476
  * Get analytics instance for querying metrics
260
477
  */
478
+ // No `await this.ensureInitialized()` — the original never had one, so adding
479
+ // it would be a behavior change. That makes this T12's blind-recursion mutation
480
+ // subject: the only delegate with no `await` ahead of it, so it overflows the
481
+ // stack at once instead of starving the macrotask queue as T10's did.
261
482
  getAnalytics() {
262
- return getAnalyticsImpl(this);
483
+ return getAnalytics(this.#indexAdminDeps());
263
484
  }
264
485
  }
265
486
  //# sourceMappingURL=contextual-search-rlm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contextual-search-rlm.js","sourceRoot":"","sources":["../../../src/services/search/contextual-search-rlm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAMjF,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,GAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,wEAAwE;AACxE,6EAA6E;AAC7E,4EAA4E;AAC5E,gCAAgC;AAChC,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAK3E,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAC9B,uEAAuE;IACvE,4EAA4E;IAC5E,6EAA6E;IAC7E,uEAAuE;IACvE,4CAA4C;IAC5C,aAAa,CAAgD;IAC7D,WAAW,CAA8C;IACzD,YAAY,CAAgB;IAC5B,WAAW,CAA8C;IACzD,SAAS,CAAkD;IAC3D,UAAU,CAAmD;IAC7D,4EAA4E;IAC5E,eAAe,CAAkB;IACjC,sFAAsF;IACtF,6EAA6E;IAC7E,kBAAkB,CAA4B;IAC9C,uEAAuE;IACvE,iEAAiE;IACjE,qEAAqE;IACrE,0DAA0D;IAC1D,WAAW,GAAG,KAAK,CAAC;IAEpB,mDAAmD;IAC3C,MAAM,CAAC,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEhE;;;;;OAKG;IACM,YAAY,CAQnB;IAEF,YAAY,IAQX;QACC,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,kBAAkB,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,2EAA2E;IAC3E,4EAA4E;IAC5E,sEAAsE;IACtE,KAAK,CAAC,iBAAiB;QACrB,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,WAAmB;QACvC,OAAO,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAChB,WAAmB,EACnB,SAAiB,EACjB,UAA+B,EAAE;QAMjC,wEAAwE;QACxE,MAAM,4BAA4B,EAAE,CAAC;QACrC,uEAAuE;QACvE,2EAA2E;QAC3E,OAAO,gBAAgB,CACrB,mBAAmB,CAAC,aAAa,EACjC,SAAS,EACT,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAClE,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,+EAA+E;IAC/E,4EAA4E;IACpE,KAAK,CAAC,qBAAqB,CACjC,WAAmB,EACnB,SAAiB,EACjB,UAA+B,EAAE;QAMjC,OAAO,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,SAAiB,EACjB,WAAmB,EACnB,UAGI,EAAE;QAQN,OAAO,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,oBAAoB,CACxB,SAAiB,EACjB,WAAoB;QAWpB,OAAO,wBAAwB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;;OAQG;IACH,4EAA4E;IAC5E,6DAA6D;IAC7D,KAAK,CAAC,SAAS,CACb,QAAgB,EAChB,SAAiB,EACjB,WAAmB,EACnB,aAAmC;QAEnC,OAAO,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,KAAa,EACb,SAAiB,EACjB,UASI,EAAE;QAEN,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,6EAA6E;IAC7E,KAAK,CAAC,iBAAiB,CACrB,WAA2B,EAC3B,KAAa,EACb,SAAiB,EACjB,SAAkB,EAClB,iBAA6C;QAE7C,OAAO,qBAAqB,CAC1B,IAAI,EACJ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,6EAA6E;IAC7E,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,OAAO,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,6EAA6E;IAC7E,KAAK,CAAC,gBAAgB,CACpB,UAA4B,EAC5B,UAAkB,EAClB,SAAkB,EAClB,iBAA6C;QAE7C,OAAO,oBAAoB,CACzB,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,6EAA6E;IAC7E,WAAW,CACT,UAA4B,EAC5B,KAAa,EACb,gBAAyB,KAAK;QAE9B,OAAO,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,2FAA2F;IAC3F,wBAAwB,CACtB,UAAkB,EAClB,QAAgB,EAChB,WAAoB,EACpB,YAAqB,EACrB,UAAmB,EACnB,WAAoB,EACpB,YAAqB;QAErB,OAAO,wBAAwB,CAC7B,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,CACb,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,6EAA6E;IAC7E,KAAK,CAAC,mBAAmB,CACvB,OAAuB,EACvB,UAAkB;QAElB,OAAO,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,6EAA6E;IAC7E,cAAc,CAAC,OAAe,EAAE,WAAmB,CAAC;QAClD,OAAO,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,6EAA6E;IAC7E,iBAAiB,CAAC,OAAuB;QACvC,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,6EAA6E;IAC7E,gBAAgB,CACd,OAAuB,EACvB,OAAkB,EAClB,OAAkB;QAElB,OAAO,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QACvC,OAAO,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB;QAIrC,OAAO,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,YAAoB,EACpB,aAAwB;QAExB,OAAO,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC"}
1
+ {"version":3,"file":"contextual-search-rlm.js","sourceRoot":"","sources":["../../../src/services/search/contextual-search-rlm.ts"],"names":[],"mappings":"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"}