@fenglimg/fabric-server 2.3.0-rc.8 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,7 +7,8 @@ Fabric MCP knowledge server. Runs over stdio transport and serves Claude Code an
7
7
  - `fab_recall` — single-step recall: returns candidate descriptions + native read paths (no body delivery over MCP; read a body on demand via a native Read of the returned path)
8
8
  - `fab_archive_scan` — scan recent work for archive-worthy knowledge candidates
9
9
  - `fab_propose` — persist a pending knowledge entry
10
- - `fab_review` — list / approve / reject / modify / defer pending entries
10
+ - `fab_pending` — read-only browse/search of pending + canonical knowledge (`list` / `search`)
11
+ - `fab_review` — write-only triage of pending knowledge (`approve` / `reject` / `modify` / `modify-content` / `modify-content-batch` / `modify-layer` / `defer` / `retire`)
11
12
 
12
13
  ## Install
13
14
 
package/dist/index.d.ts CHANGED
@@ -32,6 +32,122 @@ type DoctorHealth = {
32
32
  warnings: number;
33
33
  };
34
34
  };
35
+ type BacklogAgeMetric = {
36
+ count: number;
37
+ oldest_days: number | null;
38
+ median_age_days: number;
39
+ ages_days: number[];
40
+ };
41
+ declare function checkBacklogAge(projectRoot: string, nowMs?: number): Promise<BacklogAgeMetric>;
42
+ declare function renderBacklogAgeLine(metric: BacklogAgeMetric): string;
43
+
44
+ /**
45
+ * doctor-types.ts — pure public report/check types for the doctor subsystem.
46
+ *
47
+ * Wave W1 extraction from doctor.ts (repo-hygiene-slim). No runtime logic —
48
+ * only type aliases. doctor.ts re-exports these for backward-compatible
49
+ * `import type { DoctorCheck } from "./doctor.js"` consumers.
50
+ */
51
+
52
+ type DoctorStatus = "ok" | "warn" | "error";
53
+ type DoctorIssueKind = "fixable_error" | "manual_error" | "warning" | "info";
54
+ type DoctorCheck = {
55
+ name: string;
56
+ status: DoctorStatus;
57
+ message: string;
58
+ kind?: DoctorIssueKind;
59
+ code?: string;
60
+ fixable?: boolean;
61
+ actionHint?: string;
62
+ audience?: "user" | "maintainer";
63
+ };
64
+ type DoctorIssue = {
65
+ code: string;
66
+ name: string;
67
+ message: string;
68
+ path?: string;
69
+ actionHint?: string;
70
+ audience?: "user" | "maintainer";
71
+ };
72
+ type DoctorPayloadLimits = {
73
+ warn_bytes: number;
74
+ hard_bytes: number;
75
+ source: "default" | "config";
76
+ };
77
+ type DoctorSummary = {
78
+ target: string;
79
+ framework: {
80
+ kind: string;
81
+ version: string;
82
+ subkind: string;
83
+ };
84
+ entryPoints: Array<{
85
+ path: string;
86
+ reason: string;
87
+ }>;
88
+ metaRevision: string | null;
89
+ computedMetaRevision: string | null;
90
+ ruleCount: number;
91
+ eventLedgerPath: string;
92
+ fixableErrorCount: number;
93
+ manualErrorCount: number;
94
+ warningCount: number;
95
+ infoCount: number;
96
+ targetFiles: Record<string, boolean>;
97
+ payload_limits: DoctorPayloadLimits;
98
+ health: DoctorHealth;
99
+ };
100
+ type DoctorReport = {
101
+ status: DoctorStatus;
102
+ checks: DoctorCheck[];
103
+ fixable_errors: DoctorIssue[];
104
+ manual_errors: DoctorIssue[];
105
+ warnings: DoctorIssue[];
106
+ infos: DoctorIssue[];
107
+ summary: DoctorSummary;
108
+ };
109
+ type DoctorFixReport = {
110
+ changed: boolean;
111
+ fixed: DoctorIssue[];
112
+ remaining_manual_errors: DoctorIssue[];
113
+ warnings: DoctorIssue[];
114
+ message: string;
115
+ report: DoctorReport;
116
+ };
117
+ type DoctorApplyLintMutationKind = "knowledge_session_hints_stale_cleanup" | "store_counter_floor";
118
+ type DoctorApplyLintMutation = {
119
+ kind: DoctorApplyLintMutationKind;
120
+ path: string;
121
+ detail: string;
122
+ applied: boolean;
123
+ error?: string;
124
+ };
125
+ type DoctorApplyLintReport = {
126
+ changed: boolean;
127
+ mutations: DoctorApplyLintMutation[];
128
+ warnings: DoctorIssue[];
129
+ manual_errors: DoctorIssue[];
130
+ aborted: boolean;
131
+ abort_reason?: string;
132
+ message: string;
133
+ report: DoctorReport;
134
+ };
135
+ type EnrichDescriptionsMode = "auto" | "preview" | "readonly" | "interactive";
136
+ type EnrichDescriptionsCandidate = {
137
+ path: string;
138
+ missing: Array<"intent_clues" | "tech_stack" | "impact" | "must_read_if">;
139
+ modified: boolean;
140
+ added_fields: Array<"intent_clues" | "tech_stack" | "impact" | "must_read_if">;
141
+ error?: string;
142
+ };
143
+ type EnrichDescriptionsReport = {
144
+ mode: EnrichDescriptionsMode;
145
+ dryRun: boolean;
146
+ scanned: number;
147
+ modified: number;
148
+ skipped: number;
149
+ candidates: EnrichDescriptionsCandidate[];
150
+ };
35
151
 
36
152
  declare function extractRuleDescription(source: string): RuleDescription | undefined;
37
153
 
@@ -44,7 +160,11 @@ interface AlwaysActiveBody {
44
160
  /** description.summary — the overflow-degrade fallback when the body cannot
45
161
  * fit the injection char budget (the budget is enforced hook-side, D10). */
46
162
  summary: string;
47
- /** frontmatter-stripped markdown body. */
163
+ /**
164
+ * ISS-20260713-014 / KT-DEC-0036: SessionStart wire is index-only.
165
+ * Body is empty on this path; full text via Read/fab_recall.
166
+ * Field retained for wire compatibility.
167
+ */
48
168
  body: string;
49
169
  }
50
170
  /**
@@ -80,6 +200,7 @@ interface KnowledgeCensus {
80
200
  */
81
201
  declare function buildKnowledgeCensus(projectRoot: string): Promise<KnowledgeCensus>;
82
202
  declare function buildAlwaysActiveBodies(projectRoot: string): Promise<AlwaysActiveBody[]>;
203
+ declare function computeReadSetRevision(projectRoot: string): Promise<string>;
83
204
  interface StoreCanonicalEntry {
84
205
  stableId: string;
85
206
  qualifiedId: string;
@@ -169,6 +290,7 @@ type MetricsRow = {
169
290
  * dual-write allowlist below.
170
291
  */
171
292
  declare const METRIC_COUNTER_NAMES: {
293
+ readonly knowledge_body_read: "knowledge_body_read";
172
294
  readonly knowledge_consumed: "knowledge_consumed";
173
295
  readonly edit_intent_checked: "edit_intent_checked";
174
296
  readonly knowledge_context_planned: "knowledge_context_planned";
@@ -253,6 +375,7 @@ declare function runDoctorCiteCoverage(projectRoot: string, options: {
253
375
  until?: number;
254
376
  recallWindowMs?: number;
255
377
  }): Promise<CiteCoverageReport>;
378
+
256
379
  type ArchiveHistoryEntry = {
257
380
  session_id_short: string;
258
381
  last_attempted_at: string;
@@ -288,109 +411,10 @@ declare function runDoctorHistoryAll(projectRoot: string, options: {
288
411
  since: number;
289
412
  }): Promise<HistoryAllReport>;
290
413
 
291
- type DoctorStatus = "ok" | "warn" | "error";
292
- type DoctorIssueKind = "fixable_error" | "manual_error" | "warning" | "info";
293
- type DoctorCheck = {
294
- name: string;
295
- status: DoctorStatus;
296
- message: string;
297
- kind?: DoctorIssueKind;
298
- code?: string;
299
- fixable?: boolean;
300
- actionHint?: string;
301
- audience?: "user" | "maintainer";
302
- };
303
- type DoctorIssue = {
304
- code: string;
305
- name: string;
306
- message: string;
307
- path?: string;
308
- actionHint?: string;
309
- audience?: "user" | "maintainer";
310
- };
311
- type DoctorPayloadLimits = {
312
- warn_bytes: number;
313
- hard_bytes: number;
314
- source: "default" | "config";
315
- };
316
- type DoctorSummary = {
317
- target: string;
318
- framework: {
319
- kind: string;
320
- version: string;
321
- subkind: string;
322
- };
323
- entryPoints: Array<{
324
- path: string;
325
- reason: string;
326
- }>;
327
- metaRevision: string | null;
328
- computedMetaRevision: string | null;
329
- ruleCount: number;
330
- eventLedgerPath: string;
331
- fixableErrorCount: number;
332
- manualErrorCount: number;
333
- warningCount: number;
334
- infoCount: number;
335
- targetFiles: Record<string, boolean>;
336
- payload_limits: DoctorPayloadLimits;
337
- health: DoctorHealth;
338
- };
339
- type DoctorReport = {
340
- status: DoctorStatus;
341
- checks: DoctorCheck[];
342
- fixable_errors: DoctorIssue[];
343
- manual_errors: DoctorIssue[];
344
- warnings: DoctorIssue[];
345
- infos: DoctorIssue[];
346
- summary: DoctorSummary;
347
- };
348
- type DoctorFixReport = {
349
- changed: boolean;
350
- fixed: DoctorIssue[];
351
- remaining_manual_errors: DoctorIssue[];
352
- warnings: DoctorIssue[];
353
- message: string;
354
- report: DoctorReport;
355
- };
356
- type DoctorApplyLintMutationKind = "knowledge_orphan_demote_required" | "knowledge_stale_archive_required" | "knowledge_index_drift" | "knowledge_pending_auto_archive" | "knowledge_session_hints_stale_cleanup" | "knowledge_relevance_fields_missing";
357
- type DoctorApplyLintMutation = {
358
- kind: DoctorApplyLintMutationKind;
359
- path: string;
360
- detail: string;
361
- applied: boolean;
362
- error?: string;
363
- };
364
- type DoctorApplyLintReport = {
365
- changed: boolean;
366
- mutations: DoctorApplyLintMutation[];
367
- warnings: DoctorIssue[];
368
- manual_errors: DoctorIssue[];
369
- aborted: boolean;
370
- abort_reason?: string;
371
- message: string;
372
- report: DoctorReport;
373
- };
374
414
  declare function runDoctorReport(target: string): Promise<DoctorReport>;
375
415
  declare function runDoctorFix(target: string): Promise<DoctorFixReport>;
376
416
  declare function runDoctorApplyLint(target: string): Promise<DoctorApplyLintReport>;
377
417
 
378
- type EnrichDescriptionsMode = "auto" | "preview" | "readonly" | "interactive";
379
- type EnrichDescriptionsCandidate = {
380
- path: string;
381
- missing: Array<"intent_clues" | "tech_stack" | "impact" | "must_read_if">;
382
- modified: boolean;
383
- added_fields: Array<"intent_clues" | "tech_stack" | "impact" | "must_read_if">;
384
- error?: string;
385
- };
386
- type EnrichDescriptionsReport = {
387
- mode: EnrichDescriptionsMode;
388
- dryRun: boolean;
389
- scanned: number;
390
- modified: number;
391
- skipped: number;
392
- candidates: EnrichDescriptionsCandidate[];
393
- };
394
418
  declare function enrichDescriptions(projectRoot: string, opts?: {
395
419
  auto?: boolean;
396
420
  dryRun?: boolean;
@@ -646,6 +670,12 @@ declare function explainWhyNotSurfaced(projectRoot: string, query: string): Prom
646
670
  */
647
671
  declare function extractKnowledge(projectRoot: string, input: FabExtractKnowledgeInput): Promise<FabExtractKnowledgeOutput>;
648
672
 
673
+ /**
674
+ * fab_review / fab_pending facade (ISS-20260713-013).
675
+ * Action implementations live in review-write-actions / review-search;
676
+ * path/sandbox/list helpers in review-shared; frontmatter in review-frontmatter.
677
+ */
678
+
649
679
  /**
650
680
  * v2.0 rc.3 fab_review service (W3-K K2: WRITE-only).
651
681
  *
@@ -892,6 +922,26 @@ declare function readEventLedger(projectRoot: string, options?: ReadEventLedgerO
892
922
  */
893
923
  declare function flushAndSyncEventLedger(projectRoot: string): void;
894
924
 
925
+ /**
926
+ * ISS-20260713-011: selection_token mint / LRU cache for plan-context.
927
+ */
928
+ type SelectionTokenState = {
929
+ token: string;
930
+ revision_hash: string;
931
+ target_paths: string[];
932
+ required_stable_ids: string[];
933
+ ai_selectable_stable_ids: string[];
934
+ created_at: number;
935
+ expires_at: number;
936
+ };
937
+ declare function readSelectionToken(token: string, now?: number): SelectionTokenState | undefined;
938
+
939
+ /**
940
+ * planContext facade (ISS-20260713-011).
941
+ * Scoring / BM25 cache / selection-token live in dedicated modules;
942
+ * this file orchestrates the plan-context pipeline and re-exports the public API.
943
+ */
944
+
895
945
  type PlanContextInput = {
896
946
  paths: string[];
897
947
  intent?: string;
@@ -958,17 +1008,7 @@ type PlanContextResult = {
958
1008
  /** Internal service→tool signal; stripped before MCP output. */
959
1009
  payload_over_budget?: boolean;
960
1010
  };
961
- type SelectionTokenState = {
962
- token: string;
963
- revision_hash: string;
964
- target_paths: string[];
965
- required_stable_ids: string[];
966
- ai_selectable_stable_ids: string[];
967
- created_at: number;
968
- expires_at: number;
969
- };
970
1011
  declare function planContext(projectRoot: string, input: PlanContextInput): Promise<PlanContextResult>;
971
- declare function readSelectionToken(token: string, now?: number): SelectionTokenState | undefined;
972
1012
 
973
1013
  type RecallInput = PlanContextInput & {
974
1014
  /**
@@ -987,25 +1027,35 @@ type RecallInput = PlanContextInput & {
987
1027
  * (W1-3 / KT-DEC-0031: surface the related id, do not fetch its body).
988
1028
  */
989
1029
  include_related?: boolean;
1030
+ /**
1031
+ * TASK-006 (KT-PIT-0036 observability opt-in): when true, populate
1032
+ * `entry.score_breakdown` with the numbers-only signal decomposition
1033
+ * (bm25/vector/salience/recency/locality/proximity/credibility → final).
1034
+ * Off by default for wire efficiency. Enable when debugging ranking or tuning
1035
+ * scoring weights. The final===score invariant is enforced at the plan-context
1036
+ * service layer (candidate_scores Map) regardless of this flag.
1037
+ */
1038
+ include_score_breakdown?: boolean;
990
1039
  };
991
1040
  type FullRuleDescription = PlanContextResult["candidates"][number]["description"];
992
- type RecallEntryDescription = Pick<FullRuleDescription, "summary" | "must_read_if" | "intent_clues"> & Partial<Pick<FullRuleDescription, "knowledge_type">>;
1041
+ type RecallEntryDescription = Pick<FullRuleDescription, "summary"> & Partial<Pick<FullRuleDescription, "must_read_if" | "impact" | "knowledge_type">>;
993
1042
  type RecallEntry = {
994
1043
  stable_id: string;
995
- rank: number;
996
1044
  description: RecallEntryDescription;
997
1045
  read_path?: string;
998
- store?: {
999
- alias: string;
1000
- };
1046
+ store_alias?: string;
1001
1047
  body_in_context?: boolean;
1002
- score?: number;
1003
1048
  score_breakdown?: RecallScoreBreakdown;
1004
1049
  };
1005
- type RecallResult = Omit<PlanContextResult, "selection_token" | "payload_trimmed" | "payload_over_budget" | "entries" | "candidates" | "candidate_scores"> & {
1050
+ type RecallResult = Omit<PlanContextResult, "selection_token" | "payload_trimmed" | "payload_over_budget" | "entries" | "candidates" | "candidate_scores" | "stale" | "intent" | "dropped" | "preflight_diagnostics"> & {
1006
1051
  entries: RecallEntry[];
1007
- directive: string;
1008
1052
  next_steps?: string[];
1053
+ dropped_ids?: string[];
1054
+ dropped_reasons?: {
1055
+ retrieval_budget?: number;
1056
+ payload_budget?: number;
1057
+ };
1058
+ preflight_diagnostics?: PreflightDiagnostic[];
1009
1059
  };
1010
1060
  declare function recall(projectRoot: string, input: RecallInput): Promise<RecallResult>;
1011
1061
 
@@ -1123,7 +1173,33 @@ declare const AGENTS_MD_RESOURCE_URI = "fabric://bootstrap-readme";
1123
1173
  declare function formatPreexistingRootMessage(projectRoot: string): string | null;
1124
1174
 
1125
1175
  declare const FABRIC_SERVER_INSTRUCTIONS: string;
1176
+ declare function buildServerInstructions(projectRoot: string): string;
1126
1177
  declare function createFabricServer(tracker?: InFlightTracker): McpServer;
1178
+ /**
1179
+ * The slice of the MCP `Server` the roots adoption consumes — injectable so
1180
+ * tests can drive it without a live transport.
1181
+ */
1182
+ interface McpRootsSource {
1183
+ getClientCapabilities(): {
1184
+ roots?: unknown;
1185
+ } | undefined;
1186
+ listRoots(): Promise<{
1187
+ roots: Array<{
1188
+ uri?: string;
1189
+ }>;
1190
+ }>;
1191
+ }
1192
+ /**
1193
+ * ISS werewolf-minigame (rootless MCP spawn, KT-PIT-0046): fetch the client's
1194
+ * workspace roots (when the client declares the `roots` capability) and record
1195
+ * them as project-root candidates via `setMcpRootsHint`. Returns the accepted
1196
+ * absolute paths ([] when the capability is absent or the fetch fails —
1197
+ * best-effort, never sinks startup). Called from `oninitialized`; the
1198
+ * env > CLAUDE_PROJECT_DIR > roots > cwd priority lives in
1199
+ * `resolveProjectRoot`, which every tool call re-runs, so adoption heals
1200
+ * subsequent calls without a restart.
1201
+ */
1202
+ declare function adoptMcpClientRoots(source: McpRootsSource): Promise<string[]>;
1127
1203
  declare function startStdioServer(): Promise<void>;
1128
1204
  /**
1129
1205
  * Dependencies for the shutdown handler factory. Tests inject `exit` to assert
@@ -1149,4 +1225,4 @@ interface ShutdownHandlerDeps {
1149
1225
  */
1150
1226
  declare function createShutdownHandler(deps: ShutdownHandlerDeps): () => void;
1151
1227
 
1152
- export { AGENTS_MD_RESOURCE_URI, type AlwaysActiveBody, type ArchiveHistoryEntry, type ArchiveHistoryReport, COLD_EVAL_RUBRIC, type CiteCoverageReport, type ColdEvalBatch, type ColdEvalCandidate, type ColdEvalVerdict, type ConflictEntry, type ConflictJudge, type ConflictLintReport, type ConflictPair, type ConflictVerdict, type ConsumptionEntry, type ConsumptionInspection, type ConsumptionLintConfig, DEFAULT_CONFLICT_SIMILARITY_THRESHOLD, type DoctorApplyLintMutation, type DoctorApplyLintMutationKind, type DoctorApplyLintReport, type DoctorFixReport, type DoctorIssue, type DoctorReport, EVENT_LEDGER_PATH, type EnrichDescriptionsCandidate, type EnrichDescriptionsMode, type EnrichDescriptionsReport, FABRIC_SERVER_INSTRUCTIONS, type HistoryAllReport, type HistoryDayRow, type InFlightTracker, type KnowledgeCensus, LEDGER_PATH, LEGACY_LEDGER_PATH, METRICS_LEDGER_PATH, METRIC_COUNTER_NAMES, type MetricCounterName, type MetricsRow, OPTIONAL_EMBED_PACKAGE, type PlanContextInput, type PlanContextResult, type PrecheckResult, RETIRED_TOKENS, type RecallInput, type RecallResult, type RelatedBrokenLink, type RelatedGraphInspection, type RelatedGraphNode, type RelatedHubEntry, type RequirementProfile, type RetiredReferenceHit, type RetiredReferenceInspection, type RetiredToken, type SelectionTokenState, type ShutdownHandlerDeps, type StoreCanonicalEntry, type StoreReachability, type SurfaceVerdict, type UnboundProjectViolation, type WhyNotSurfacedResult, aggregateConsumption, appendEventLedgerEvent, buildAlwaysActiveBodies, buildColdEvalBatch, buildKnowledgeCensus, buildRelatedGraph, bumpCounter, clearPrecheckCache, collectStoreCanonicalEntries, contextCache, createFabricServer, createInFlightTracker, createShutdownHandler, defaultEmbedCacheDir, detectUnboundProject, drainCounters, enrichDescriptions, evaluateStoreDir, explainWhyNotSurfaced, extractKnowledge, findConflictCandidates, flushAndSyncEventLedger, flushMetrics, formatPreexistingRootMessage, getEventLedgerPath, getLedgerPath, getLegacyLedgerPath, getMetricsLedgerPath, inspectConsumption, inspectRelatedGraph, inspectRetiredReferences, isEmbedderResolvable, lintConflicts, loadConflictEntries, loadEmbedder, pairSimilarity, planContext, precheckStoreReachability, readEmbedConfig, readEventLedger, readFusion, readLedger, readMetrics, readSelectionToken, recall, rehydrateAgentsMetaAt, resolveLedgerPaths, reviewKnowledge, reviewPending, runDoctorApplyLint, runDoctorArchiveHistory, runDoctorCiteCoverage, runDoctorConflictLint, runDoctorFix, runDoctorHistoryAll, runDoctorReport, startMetricsFlush, startRotationTick, startStdioServer, stopMetricsFlush, stopRotationTick };
1228
+ export { AGENTS_MD_RESOURCE_URI, type AlwaysActiveBody, type ArchiveHistoryEntry, type ArchiveHistoryReport, type BacklogAgeMetric, COLD_EVAL_RUBRIC, type CiteCoverageReport, type ColdEvalBatch, type ColdEvalCandidate, type ColdEvalVerdict, type ConflictEntry, type ConflictJudge, type ConflictLintReport, type ConflictPair, type ConflictVerdict, type ConsumptionEntry, type ConsumptionInspection, type ConsumptionLintConfig, DEFAULT_CONFLICT_SIMILARITY_THRESHOLD, type DoctorApplyLintMutation, type DoctorApplyLintMutationKind, type DoctorApplyLintReport, type DoctorFixReport, type DoctorIssue, type DoctorReport, EVENT_LEDGER_PATH, type EnrichDescriptionsCandidate, type EnrichDescriptionsMode, type EnrichDescriptionsReport, FABRIC_SERVER_INSTRUCTIONS, type HistoryAllReport, type HistoryDayRow, type InFlightTracker, type KnowledgeCensus, LEDGER_PATH, LEGACY_LEDGER_PATH, METRICS_LEDGER_PATH, METRIC_COUNTER_NAMES, type McpRootsSource, type MetricCounterName, type MetricsRow, OPTIONAL_EMBED_PACKAGE, type PlanContextInput, type PlanContextResult, type PrecheckResult, RETIRED_TOKENS, type RecallInput, type RecallResult, type RelatedBrokenLink, type RelatedGraphInspection, type RelatedGraphNode, type RelatedHubEntry, type RequirementProfile, type RetiredReferenceHit, type RetiredReferenceInspection, type RetiredToken, type SelectionTokenState, type ShutdownHandlerDeps, type StoreCanonicalEntry, type StoreReachability, type SurfaceVerdict, type UnboundProjectViolation, type WhyNotSurfacedResult, adoptMcpClientRoots, aggregateConsumption, appendEventLedgerEvent, buildAlwaysActiveBodies, buildColdEvalBatch, buildKnowledgeCensus, buildRelatedGraph, buildServerInstructions, bumpCounter, checkBacklogAge, clearPrecheckCache, collectStoreCanonicalEntries, computeReadSetRevision, contextCache, createFabricServer, createInFlightTracker, createShutdownHandler, defaultEmbedCacheDir, detectUnboundProject, drainCounters, enrichDescriptions, evaluateStoreDir, explainWhyNotSurfaced, extractKnowledge, findConflictCandidates, flushAndSyncEventLedger, flushMetrics, formatPreexistingRootMessage, getEventLedgerPath, getLedgerPath, getLegacyLedgerPath, getMetricsLedgerPath, inspectConsumption, inspectRelatedGraph, inspectRetiredReferences, isEmbedderResolvable, lintConflicts, loadConflictEntries, loadEmbedder, pairSimilarity, planContext, precheckStoreReachability, readEmbedConfig, readEventLedger, readFusion, readLedger, readMetrics, readSelectionToken, recall, rehydrateAgentsMetaAt, renderBacklogAgeLine, resolveLedgerPaths, reviewKnowledge, reviewPending, runDoctorApplyLint, runDoctorArchiveHistory, runDoctorCiteCoverage, runDoctorConflictLint, runDoctorFix, runDoctorHistoryAll, runDoctorReport, startMetricsFlush, startRotationTick, startStdioServer, stopMetricsFlush, stopRotationTick };