@vpxa/kb 0.1.28 → 0.1.30

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 (78) hide show
  1. package/package.json +1 -1
  2. package/packages/chunker/dist/chunker.interface.d.ts +1 -1
  3. package/packages/chunker/dist/code-chunker.d.ts +1 -1
  4. package/packages/chunker/dist/generic-chunker.d.ts +1 -1
  5. package/packages/chunker/dist/markdown-chunker.d.ts +1 -1
  6. package/packages/chunker/dist/wasm-chunker.d.ts +1 -1
  7. package/packages/cli/dist/commands/upgrade.d.ts +6 -0
  8. package/packages/cli/dist/commands/upgrade.js +1 -0
  9. package/packages/cli/dist/helpers.d.ts +2 -2
  10. package/packages/cli/dist/index.js +2 -2
  11. package/packages/cli/dist/kb-init.d.ts +4 -4
  12. package/packages/elicitation/dist/index.d.ts +2 -2
  13. package/packages/elicitation/dist/index.js +2 -2
  14. package/packages/enterprise-bridge/dist/result-merger.d.ts +1 -1
  15. package/packages/indexer/dist/graph-extractor.d.ts +1 -1
  16. package/packages/indexer/dist/incremental-indexer.d.ts +3 -3
  17. package/packages/kb-client/dist/direct-client.d.ts +2 -2
  18. package/packages/present/dist/index.html +4 -4
  19. package/packages/server/dist/completions.d.ts +1 -1
  20. package/packages/server/dist/config.d.ts +1 -1
  21. package/packages/server/dist/cross-workspace.d.ts +2 -2
  22. package/packages/server/dist/curated-manager.d.ts +2 -2
  23. package/packages/server/dist/dashboard-static.d.ts +2 -2
  24. package/packages/server/dist/elicitor.d.ts +1 -1
  25. package/packages/server/dist/index.js +1 -1
  26. package/packages/server/dist/output-schemas.d.ts +3 -0
  27. package/packages/server/dist/output-schemas.js +1 -1
  28. package/packages/server/dist/prompts.d.ts +1 -1
  29. package/packages/server/dist/resources/resources.d.ts +1 -1
  30. package/packages/server/dist/server.d.ts +7 -7
  31. package/packages/server/dist/server.js +2 -2
  32. package/packages/server/dist/structured-content-guard.d.ts +26 -0
  33. package/packages/server/dist/structured-content-guard.js +1 -0
  34. package/packages/server/dist/tools/analyze.tools.d.ts +2 -2
  35. package/packages/server/dist/tools/audit.tool.d.ts +2 -2
  36. package/packages/server/dist/tools/brainstorm.tool.d.ts +1 -1
  37. package/packages/server/dist/tools/bridge.tools.d.ts +1 -1
  38. package/packages/server/dist/tools/context.tools.d.ts +3 -3
  39. package/packages/server/dist/tools/evolution.tools.d.ts +1 -1
  40. package/packages/server/dist/tools/execution.tools.d.ts +2 -2
  41. package/packages/server/dist/tools/forge.tools.d.ts +3 -3
  42. package/packages/server/dist/tools/graph.tool.d.ts +1 -1
  43. package/packages/server/dist/tools/lookup.tool.d.ts +1 -1
  44. package/packages/server/dist/tools/onboard.tool.d.ts +3 -3
  45. package/packages/server/dist/tools/policy.tools.d.ts +1 -1
  46. package/packages/server/dist/tools/present.tool.d.ts +1 -1
  47. package/packages/server/dist/tools/produce.tool.d.ts +1 -1
  48. package/packages/server/dist/tools/reindex.tool.d.ts +3 -3
  49. package/packages/server/dist/tools/remember.tool.d.ts +1 -1
  50. package/packages/server/dist/tools/search.tool.d.ts +3 -3
  51. package/packages/server/dist/tools/status.tool.d.ts +2 -2
  52. package/packages/server/dist/tools/status.tool.js +2 -2
  53. package/packages/server/dist/version-check.js +1 -1
  54. package/packages/store/dist/lance-store.d.ts +1 -1
  55. package/packages/store/dist/store.interface.d.ts +1 -1
  56. package/packages/tools/dist/audit.d.ts +2 -2
  57. package/packages/tools/dist/compact.d.ts +1 -1
  58. package/packages/tools/dist/dead-symbols.d.ts +2 -2
  59. package/packages/tools/dist/digest.d.ts +1 -1
  60. package/packages/tools/dist/find-examples.d.ts +3 -3
  61. package/packages/tools/dist/find.d.ts +3 -3
  62. package/packages/tools/dist/forge-ground.d.ts +2 -2
  63. package/packages/tools/dist/graph-query.d.ts +1 -1
  64. package/packages/tools/dist/scope-map.d.ts +3 -3
  65. package/packages/tools/dist/stratum-card.d.ts +1 -1
  66. package/packages/tools/dist/symbol.d.ts +2 -2
  67. package/packages/tools/dist/trace.d.ts +2 -2
  68. package/packages/tui/dist/App.d.ts +1 -1
  69. package/packages/tui/dist/hooks/useKBClient.d.ts +3 -3
  70. package/packages/tui/dist/index.d.ts +1 -1
  71. package/packages/elicitation/dist/__tests__/build.test.d.ts +0 -1
  72. package/packages/elicitation/dist/__tests__/fields.test.d.ts +0 -1
  73. package/packages/elicitation/dist/__tests__/normalize.test.d.ts +0 -1
  74. package/packages/elicitation/dist/build.d.ts +0 -13
  75. package/packages/elicitation/dist/fields.d.ts +0 -41
  76. package/packages/elicitation/dist/normalize.d.ts +0 -15
  77. package/packages/elicitation/dist/types.d.ts +0 -85
  78. /package/packages/tui/dist/{types-VcTHNV6s.d.ts → index-Cvx1a7S7.d.ts} +0 -0
@@ -22,6 +22,9 @@ declare const StatusOutputSchema: z.ZodObject<{
22
22
  edges: z.ZodNumber;
23
23
  }, z.core.$strip>>;
24
24
  curatedCount: z.ZodNumber;
25
+ serverVersion: z.ZodString;
26
+ scaffoldVersion: z.ZodNullable<z.ZodString>;
27
+ upgradeAvailable: z.ZodBoolean;
25
28
  }, z.core.$strip>;
26
29
  declare const ListOutputSchema: z.ZodObject<{
27
30
  entries: z.ZodArray<z.ZodObject<{
@@ -1 +1 @@
1
- import{z as e}from"zod";const t=e.object({totalRecords:e.number(),totalFiles:e.number(),lastIndexedAt:e.string().nullable(),onboarded:e.boolean(),onboardDir:e.string(),contentTypes:e.record(e.string(),e.number()),wasmAvailable:e.boolean(),graphStats:e.object({nodes:e.number(),edges:e.number()}).nullable(),curatedCount:e.number()}),n=e.object({entries:e.array(e.object({path:e.string(),title:e.string(),category:e.string(),tags:e.array(e.string()),version:e.number(),preview:e.string()})),totalCount:e.number()}),r=e.object({ok:e.boolean(),checks:e.array(e.object({name:e.string(),ok:e.boolean(),message:e.string().optional()}))}),i=e.object({summary:e.object({totalFiles:e.number(),totalLines:e.number(),totalCodeLines:e.number(),totalFunctions:e.number(),avgComplexity:e.number(),maxComplexity:e.object({value:e.number(),file:e.string()})}),files:e.array(e.object({path:e.string(),lines:e.number(),code:e.number(),complexity:e.number(),functions:e.number()}))}),a=e.object({platform:e.string(),arch:e.string(),nodeVersion:e.string(),cwd:e.string(),cpus:e.number(),memoryFreeGb:e.number(),memoryTotalGb:e.number()}),o=e.object({iso:e.string(),unix:e.number(),timezone:e.string(),formatted:e.string()}),s=e.object({passed:e.boolean(),errorCount:e.number(),warningCount:e.number(),topErrors:e.array(e.string())}),c=e.object({passed:e.boolean(),tsc:s,biome:s}),l=e.object({name:e.string(),definedIn:e.object({path:e.string(),line:e.number(),kind:e.string(),signature:e.string().optional()}).nullable(),importedBy:e.array(e.object({path:e.string(),line:e.number(),importStatement:e.string()})),referencedIn:e.array(e.object({path:e.string(),line:e.number(),context:e.string(),scope:e.string().optional()})),graphContext:e.object({definingModule:e.string().optional(),importedByModules:e.array(e.string()),siblingSymbols:e.array(e.string())}).nullable()}),u=e.object({sourcePath:e.string(),contentType:e.string(),score:e.number(),headingPath:e.string().optional(),startLine:e.number().optional(),endLine:e.number().optional(),origin:e.string().optional(),category:e.string().optional(),tags:e.array(e.string()).optional()}),d=e.object({results:e.array(u),totalResults:e.number(),searchMode:e.string(),query:e.string()}),f=e.object({path:e.string(),line:e.number().optional(),matchType:e.string(),preview:e.string()}),p=e.object({matches:e.array(f),totalMatches:e.number(),pattern:e.string(),truncated:e.boolean()}),m=e.object({path:e.string(),relevance:e.number(),estimatedTokens:e.number(),focusLines:e.array(e.string()).optional()}),h=e.object({files:e.array(m),totalFiles:e.number(),totalEstimatedTokens:e.number(),task:e.string()}),g=e.object({path:e.string(),impact:e.string(),reason:e.string()}),_=e.object({changedFiles:e.array(e.string()),affectedFiles:e.array(g),totalAffected:e.number(),riskLevel:e.string()}),v=e.object({name:e.string(),passed:e.boolean(),message:e.string().optional(),severity:e.string().optional()}),y=e.object({passed:e.boolean(),score:e.number(),checks:e.array(v),summary:e.string()}),b=e.object({id:e.string(),name:e.string(),type:e.string(),sourcePath:e.string().optional()}),x=e.object({fromId:e.string(),toId:e.string(),type:e.string()}),S=e.object({nodes:e.array(b),edges:e.array(x),totalNodes:e.number(),totalEdges:e.number(),query:e.string()}),C=e.object({symbols:e.array(e.object({name:e.string(),path:e.string(),line:e.number().optional(),kind:e.string()})),totalDead:e.number()}),w=e.object({files:e.number(),packages:e.number(),languages:e.record(e.string(),e.number()),tree:e.string()}),T=e.object({path:e.string(),language:e.string(),lines:e.number(),imports:e.number(),exports:e.number(),functions:e.number(),classes:e.number()}),E=e.object({gitRoot:e.string(),branch:e.string(),commitCount:e.number(),hasUncommitted:e.boolean(),recentCommits:e.array(e.object({hash:e.string(),message:e.string(),author:e.string()}))}),D=e.object({originalChars:e.number(),compressedChars:e.number(),ratio:e.number(),segmentsKept:e.number(),segmentsTotal:e.number()});export{w as AnalyzeStructureOutputSchema,y as AuditOutputSchema,_ as BlastRadiusOutputSchema,c as CheckOutputSchema,D as CompactOutputSchema,C as DeadSymbolsOutputSchema,a as EnvOutputSchema,T as FileSummaryOutputSchema,p as FindOutputSchema,E as GitContextOutputSchema,S as GraphOutputSchema,r as HealthOutputSchema,n as ListOutputSchema,i as MeasureOutputSchema,h as ScopeMapOutputSchema,d as SearchOutputSchema,t as StatusOutputSchema,l as SymbolOutputSchema,o as TimeOutputSchema};
1
+ import{z as e}from"zod";const t=e.object({totalRecords:e.number(),totalFiles:e.number(),lastIndexedAt:e.string().nullable(),onboarded:e.boolean(),onboardDir:e.string(),contentTypes:e.record(e.string(),e.number()),wasmAvailable:e.boolean(),graphStats:e.object({nodes:e.number(),edges:e.number()}).nullable(),curatedCount:e.number(),serverVersion:e.string(),scaffoldVersion:e.string().nullable(),upgradeAvailable:e.boolean()}),n=e.object({entries:e.array(e.object({path:e.string(),title:e.string(),category:e.string(),tags:e.array(e.string()),version:e.number(),preview:e.string()})),totalCount:e.number()}),r=e.object({ok:e.boolean(),checks:e.array(e.object({name:e.string(),ok:e.boolean(),message:e.string().optional()}))}),i=e.object({summary:e.object({totalFiles:e.number(),totalLines:e.number(),totalCodeLines:e.number(),totalFunctions:e.number(),avgComplexity:e.number(),maxComplexity:e.object({value:e.number(),file:e.string()})}),files:e.array(e.object({path:e.string(),lines:e.number(),code:e.number(),complexity:e.number(),functions:e.number()}))}),a=e.object({platform:e.string(),arch:e.string(),nodeVersion:e.string(),cwd:e.string(),cpus:e.number(),memoryFreeGb:e.number(),memoryTotalGb:e.number()}),o=e.object({iso:e.string(),unix:e.number(),timezone:e.string(),formatted:e.string()}),s=e.object({passed:e.boolean(),errorCount:e.number(),warningCount:e.number(),topErrors:e.array(e.string())}),c=e.object({passed:e.boolean(),tsc:s,biome:s}),l=e.object({name:e.string(),definedIn:e.object({path:e.string(),line:e.number(),kind:e.string(),signature:e.string().optional()}).nullable(),importedBy:e.array(e.object({path:e.string(),line:e.number(),importStatement:e.string()})),referencedIn:e.array(e.object({path:e.string(),line:e.number(),context:e.string(),scope:e.string().optional()})),graphContext:e.object({definingModule:e.string().optional(),importedByModules:e.array(e.string()),siblingSymbols:e.array(e.string())}).nullable()}),u=e.object({sourcePath:e.string(),contentType:e.string(),score:e.number(),headingPath:e.string().optional(),startLine:e.number().optional(),endLine:e.number().optional(),origin:e.string().optional(),category:e.string().optional(),tags:e.array(e.string()).optional()}),d=e.object({results:e.array(u),totalResults:e.number(),searchMode:e.string(),query:e.string()}),f=e.object({path:e.string(),line:e.number().optional(),matchType:e.string(),preview:e.string()}),p=e.object({matches:e.array(f),totalMatches:e.number(),pattern:e.string(),truncated:e.boolean()}),m=e.object({path:e.string(),relevance:e.number(),estimatedTokens:e.number(),focusLines:e.array(e.string()).optional()}),h=e.object({files:e.array(m),totalFiles:e.number(),totalEstimatedTokens:e.number(),task:e.string()}),g=e.object({path:e.string(),impact:e.string(),reason:e.string()}),_=e.object({changedFiles:e.array(e.string()),affectedFiles:e.array(g),totalAffected:e.number(),riskLevel:e.string()}),v=e.object({name:e.string(),passed:e.boolean(),message:e.string().optional(),severity:e.string().optional()}),y=e.object({passed:e.boolean(),score:e.number(),checks:e.array(v),summary:e.string()}),b=e.object({id:e.string(),name:e.string(),type:e.string(),sourcePath:e.string().optional()}),x=e.object({fromId:e.string(),toId:e.string(),type:e.string()}),S=e.object({nodes:e.array(b),edges:e.array(x),totalNodes:e.number(),totalEdges:e.number(),query:e.string()}),C=e.object({symbols:e.array(e.object({name:e.string(),path:e.string(),line:e.number().optional(),kind:e.string()})),totalDead:e.number()}),w=e.object({files:e.number(),packages:e.number(),languages:e.record(e.string(),e.number()),tree:e.string()}),T=e.object({path:e.string(),language:e.string(),lines:e.number(),imports:e.number(),exports:e.number(),functions:e.number(),classes:e.number()}),E=e.object({gitRoot:e.string(),branch:e.string(),commitCount:e.number(),hasUncommitted:e.boolean(),recentCommits:e.array(e.object({hash:e.string(),message:e.string(),author:e.string()}))}),D=e.object({originalChars:e.number(),compressedChars:e.number(),ratio:e.number(),segmentsKept:e.number(),segmentsTotal:e.number()});export{w as AnalyzeStructureOutputSchema,y as AuditOutputSchema,_ as BlastRadiusOutputSchema,c as CheckOutputSchema,D as CompactOutputSchema,C as DeadSymbolsOutputSchema,a as EnvOutputSchema,T as FileSummaryOutputSchema,p as FindOutputSchema,E as GitContextOutputSchema,S as GraphOutputSchema,r as HealthOutputSchema,n as ListOutputSchema,i as MeasureOutputSchema,h as ScopeMapOutputSchema,d as SearchOutputSchema,t as StatusOutputSchema,l as SymbolOutputSchema,o as TimeOutputSchema};
@@ -1,6 +1,6 @@
1
1
  import { CuratedKnowledgeManager } from "./curated-manager.js";
2
+ import { IGraphStore, IKnowledgeStore } from "../../store/dist/index.js";
2
3
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
- import { IGraphStore, IKnowledgeStore } from "@kb/store";
4
4
 
5
5
  //#region packages/server/src/prompts.d.ts
6
6
  interface PromptDependencies {
@@ -1,6 +1,6 @@
1
1
  import { CuratedKnowledgeManager } from "../curated-manager.js";
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
- import { IKnowledgeStore } from "@kb/store";
3
+ import { IKnowledgeStore } from "../../../store/dist/index.js";
4
4
 
5
5
  //#region packages/server/src/resources/resources.d.ts
6
6
  declare function registerResources(server: McpServer, store: IKnowledgeStore, curated: CuratedKnowledgeManager): void;
@@ -2,14 +2,14 @@ import { CuratedKnowledgeManager } from "./curated-manager.js";
2
2
  import { ResourceNotifier } from "./resources/resource-notifier.js";
3
3
  import { ISamplingClient } from "./sampling.js";
4
4
  import { BridgeComponents } from "./tools/bridge.tools.js";
5
+ import { KBConfig } from "../../core/dist/index.js";
6
+ import { OnnxEmbedder } from "../../embeddings/dist/index.js";
7
+ import { EvolutionCollector, PolicyStore } from "../../enterprise-bridge/dist/index.js";
8
+ import { IncrementalIndexer } from "../../indexer/dist/index.js";
9
+ import { IGraphStore, createStore } from "../../store/dist/index.js";
10
+ import { FileCache } from "../../tools/dist/index.js";
5
11
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
- import { KBConfig } from "@kb/core";
7
- import { Elicitor } from "@kb/elicitation";
8
- import { OnnxEmbedder } from "@kb/embeddings";
9
- import { EvolutionCollector, PolicyStore } from "@kb/enterprise-bridge";
10
- import { IncrementalIndexer } from "@kb/indexer";
11
- import { IGraphStore, createStore } from "@kb/store";
12
- import { FileCache } from "@kb/tools";
12
+ import { Elicitor } from "../../elicitation/dist/index.js";
13
13
 
14
14
  //#region packages/server/src/server.d.ts
15
15
  interface KnowledgeBaseComponents {
@@ -1,3 +1,3 @@
1
- import{CuratedKnowledgeManager as e}from"./curated-manager.js";import{createElicitor as t,noopElicitor as n}from"./elicitor.js";import{bridgeMcpLogging as r}from"./mcp-logging.js";import{registerPrompts as i}from"./prompts.js";import{installReplayInterceptor as a}from"./replay-interceptor.js";import{ResourceNotifier as o}from"./resources/resource-notifier.js";import{registerResources as s}from"./resources/resources.js";import{createSamplingClient as c}from"./sampling.js";import{getToolMeta as l}from"./tool-metadata.js";import{installToolPrefix as u}from"./tool-prefix.js";import{registerAnalyzeDependenciesTool as d,registerAnalyzeDiagramTool as f,registerAnalyzeEntryPointsTool as p,registerAnalyzePatternsTool as m,registerAnalyzeStructureTool as h,registerAnalyzeSymbolsTool as ee,registerBlastRadiusTool as g}from"./tools/analyze.tools.js";import{registerAuditTool as _}from"./tools/audit.tool.js";import{registerBrainstormTool as v}from"./tools/brainstorm.tool.js";import{initBridgeComponents as te,registerErPullTool as y,registerErPushTool as b,registerErSyncStatusTool as x}from"./tools/bridge.tools.js";import{registerCompactTool as S,registerDeadSymbolsTool as C,registerFileSummaryTool as ne,registerFindTool as re,registerScopeMapTool as ie,registerSymbolTool as ae,registerTraceTool as oe}from"./tools/context.tools.js";import{registerErEvolveReviewTool as se}from"./tools/evolution.tools.js";import{registerBatchTool as ce,registerCheckTool as le,registerDelegateTool as w,registerEvalTool as T,registerParseOutputTool as E,registerTestRunTool as D}from"./tools/execution.tools.js";import{registerDigestTool as ue,registerEvidenceMapTool as O,registerForgeClassifyTool as k,registerForgeGroundTool as de,registerStratumCardTool as fe}from"./tools/forge.tools.js";import{registerForgetTool as pe}from"./tools/forget.tool.js";import{registerGraphTool as me}from"./tools/graph.tool.js";import{registerGuideTool as A,registerHealthTool as j,registerProcessTool as M,registerWatchTool as N,registerWebFetchTool as P}from"./tools/infra.tools.js";import{registerListTool as he}from"./tools/list.tool.js";import{registerLookupTool as ge}from"./tools/lookup.tool.js";import{registerCodemodTool as F,registerDataTransformTool as I,registerDiffParseTool as L,registerGitContextTool as R,registerRenameTool as z}from"./tools/manipulation.tools.js";import{registerOnboardTool as _e}from"./tools/onboard.tool.js";import{registerCheckpointTool as B,registerLaneTool as V,registerQueueTool as H,registerStashTool as U,registerWorksetTool as W}from"./tools/persistence.tools.js";import{registerErUpdatePolicyTool as ve}from"./tools/policy.tools.js";import{registerPresentTool as G}from"./tools/present.tool.js";import{registerProduceKnowledgeTool as K}from"./tools/produce.tool.js";import{registerReadTool as ye}from"./tools/read.tool.js";import{registerReindexTool as be}from"./tools/reindex.tool.js";import{registerRememberTool as xe}from"./tools/remember.tool.js";import{registerReplayTool as q}from"./tools/replay.tool.js";import{registerRestoreTool as Se}from"./tools/restore.tool.js";import{registerSearchTool as Ce}from"./tools/search.tool.js";import{registerStatusTool as we}from"./tools/status.tool.js";import{registerUpdateTool as Te}from"./tools/update.tool.js";import{registerChangelogTool as Ee,registerEncodeTool as De,registerEnvTool as Oe,registerHttpTool as ke,registerMeasureTool as Ae,registerRegexTestTool as je,registerSchemaValidateTool as Me,registerSnippetTool as Ne,registerTimeTool as Pe,registerWebSearchTool as Fe}from"./tools/utility.tools.js";import{getCurrentVersion as Ie}from"./version-check.js";import{existsSync as Le,statSync as Re}from"node:fs";import{resolve as ze}from"node:path";import{KB_PATHS as Be,createLogger as Ve,serializeError as J}from"../../core/dist/index.js";import{initializeWasm as He}from"../../chunker/dist/index.js";import{OnnxEmbedder as Ue}from"../../embeddings/dist/index.js";import{EvolutionCollector as We,PolicyStore as Ge}from"../../enterprise-bridge/dist/index.js";import{FileHashCache as Ke,IncrementalIndexer as qe}from"../../indexer/dist/index.js";import{SqliteGraphStore as Je,createStore as Ye}from"../../store/dist/index.js";import{FileCache as Xe}from"../../tools/dist/index.js";import{McpServer as Ze}from"@modelcontextprotocol/sdk/server/mcp.js";const Y=Ve(`server`);async function X(t){Y.info(`Initializing knowledge base components`);let[n,r,i,a]=await Promise.all([(async()=>{let e=new Ue({model:t.embedding.model,dimensions:t.embedding.dimensions});return await e.initialize(),Y.info(`Embedder loaded`,{modelId:e.modelId,dimensions:e.dimensions}),e})(),(async()=>{let e=await Ye({backend:t.store.backend,path:t.store.path});return await e.initialize(),Y.info(`Store initialized`),e})(),(async()=>{let e=new Je({path:t.store.path});return await e.initialize(),Y.info(`Graph store initialized`),e})(),(async()=>{let e=await He();return e?Y.info(`WASM tree-sitter enabled for AST analysis`):Y.warn(`WASM tree-sitter not available; analyzers will use regex fallback`),e})()]),o=new qe(n,r),s=new Ke(t.store.path);s.load(),o.setHashCache(s);let c=t.curated.path,l=new e(c,r,n);o.setGraphStore(i);let u=te(t.er),d=u?new Ge(t.curated.path):void 0;d&&Y.info(`Policy store initialized`,{ruleCount:d.getRules().length});let f=u?new We:void 0,p=ze(t.sources[0]?.path??process.cwd(),Be.aiKb),m=Le(p),h;if(m)try{h=Re(p).mtime.toISOString()}catch{}return Y.info(`Onboard state detected`,{onboardComplete:m,onboardTimestamp:h}),{embedder:n,store:r,indexer:o,curated:l,graphStore:i,fileCache:new Xe,bridge:u,policyStore:d,evolutionCollector:f,onboardComplete:m,onboardTimestamp:h}}function Qe(e,n){let a=new Ze({name:n.serverName??`knowledge-base`,version:Ie()},{capabilities:{logging:{}}});return r(a),u(a,n.toolPrefix??``),Z(a,e,n,t(a),new o(a),c(a)),i(a,{curated:e.curated,store:e.store,graphStore:e.graphStore}),a}function Z(e,t,n,r,i,o){a(e),Ce(e,t.embedder,t.store,t.graphStore,t.bridge,t.evolutionCollector,o),ge(e,t.store),we(e,t.store,t.graphStore,t.curated,{onboardComplete:t.onboardComplete,onboardTimestamp:t.onboardTimestamp},n),be(e,t.indexer,n,t.curated,t.store,i),xe(e,t.curated,t.policyStore,t.evolutionCollector,i),Te(e,t.curated,i),pe(e,t.curated,i),ye(e,t.curated),he(e,t.curated),h(e,t.store,t.embedder),d(e,t.store,t.embedder),ee(e,t.store,t.embedder),m(e,t.store,t.embedder),p(e,t.store,t.embedder),f(e,t.store,t.embedder),g(e,t.store,t.embedder,t.graphStore),K(e,n),_e(e,t.store,t.embedder,n),me(e,t.graphStore),_(e,t.store,t.embedder),S(e,t.embedder,t.fileCache),ie(e,t.embedder,t.store),re(e,t.embedder,t.store),E(e),W(e),le(e),ce(e,t.embedder,t.store),ae(e,t.embedder,t.store,t.graphStore),T(e),D(e),U(e),R(e),L(e),z(e),F(e),Se(e),ne(e,t.fileCache),B(e),I(e),oe(e,t.embedder,t.store),M(e),N(e),C(e,t.embedder,t.store),w(e,o),j(e),V(e),H(e),P(e),A(e),O(e),ue(e,t.embedder),k(e),fe(e,t.embedder,t.fileCache),de(e,t.embedder,t.store),G(e,r),r&&v(e,r),Fe(e),ke(e),je(e),De(e),Ae(e),Ee(e),Me(e),Ne(e),Oe(e),Pe(e),t.bridge&&(b(e,t.bridge,t.evolutionCollector),y(e,t.bridge),x(e,t.bridge)),t.policyStore&&ve(e,t.policyStore),t.evolutionCollector&&se(e,t.evolutionCollector),s(e,t.store,t.curated),q(e)}async function $e(e){let t=await X(e),n=Qe(t,e);Y.info(`MCP server configured`,{toolCount:$.length,resourceCount:2});let r=async()=>{try{let n=e.sources.map(e=>e.path).join(`, `);Y.info(`Running initial index`,{sourcePaths:n});let r=await t.indexer.index(e,e=>{e.phase===`crawling`||e.phase===`done`||(e.phase===`chunking`&&e.currentFile&&Y.debug(`Indexing file`,{current:e.filesProcessed+1,total:e.filesTotal,file:e.currentFile}),e.phase===`cleanup`&&Y.debug(`Index cleanup`,{staleEntries:e.filesTotal-e.filesProcessed}))});Y.info(`Initial index complete`,{filesProcessed:r.filesProcessed,filesSkipped:r.filesSkipped,chunksCreated:r.chunksCreated,durationMs:r.durationMs});try{await t.store.createFtsIndex()}catch(e){Y.warn(`FTS index creation failed`,J(e))}try{let e=await t.curated.reindexAll();Y.info(`Curated re-index complete`,{indexed:e.indexed})}catch(e){Y.error(`Curated re-index failed`,J(e))}}catch(e){Y.error(`Initial index failed; will retry on kb_reindex`,J(e))}},i=async()=>{Y.info(`Shutting down`),await t.embedder.shutdown().catch(()=>{}),await t.graphStore.close().catch(()=>{}),await t.store.close(),process.exit(0)};process.on(`SIGINT`,i),process.on(`SIGTERM`,i);let a=process.ppid,o=setInterval(()=>{try{process.kill(a,0)}catch{Y.info(`Parent process died; shutting down`,{parentPid:a}),clearInterval(o),i()}},5e3);return o.unref(),{server:n,runInitialIndex:r,shutdown:i}}const et=new Set(`batch.brainstorm.changelog.check.checkpoint.codemod.compact.data_transform.delegate.diff_parse.digest.encode.env.eval.evidence_map.file_summary.forge_classify.git_context.graph.guide.health.http.lane.measure.onboard.parse_output.present.process.produce_knowledge.queue.read.regex_test.reindex.remember.rename.replay.restore.schema_validate.scope_map.snippet.stash.status.stratum_card.test_run.time.update.forget.list.watch.web_fetch.web_search.workset`.split(`.`)),tt=5e3,Q=new Set(`brainstorm.changelog.check.checkpoint.codemod.data_transform.delegate.diff_parse.encode.env.eval.evidence_map.forge_classify.git_context.guide.present.health.http.lane.measure.parse_output.process.produce_knowledge.queue.regex_test.rename.replay.restore.schema_validate.snippet.stash.test_run.time.watch.web_fetch.web_search.workset`.split(`.`));function nt(e){le(e),T(e),D(e),E(e),w(e),R(e),L(e),z(e),F(e),I(e),W(e),U(e),B(e),Se(e),V(e),H(e),j(e),M(e),N(e),P(e),A(e),O(e),k(e),G(e),v(e,n),K(e),q(e),Fe(e),ke(e),je(e),De(e),Ae(e),Ee(e),Me(e),Ne(e),Oe(e),Pe(e)}const $=`analyze_dependencies.analyze_diagram.analyze_entry_points.analyze_patterns.analyze_structure.analyze_symbols.audit.batch.blast_radius.brainstorm.changelog.check.checkpoint.codemod.compact.data_transform.dead_symbols.delegate.diff_parse.digest.encode.env.eval.evidence_map.file_summary.find.forge_classify.forge_ground.forget.git_context.graph.guide.health.http.lane.list.lookup.measure.onboard.parse_output.present.process.produce_knowledge.queue.read.regex_test.reindex.remember.rename.replay.restore.schema_validate.scope_map.search.snippet.stash.status.stratum_card.symbol.test_run.time.trace.update.watch.web_fetch.web_search.workset`.split(`.`);function rt(e){let n=new Ze({name:e.serverName??`knowledge-base`,version:Ie()},{capabilities:{logging:{}}}),a=`initializing`,s=``,d=!1,f=()=>a===`failed`?[`❌ KB initialization failed — this tool is unavailable.`,``,s?`Error: ${s}`:``,``,`**35 tools are still available** and fully functional:`,`check, eval, test_run, git_context, health, measure, web_fetch, web_search,`,`regex_test, encode, stash, checkpoint, lane, process, time, env, and more.`,``,`Try restarting the MCP server to retry initialization.`].filter(Boolean).join(`
1
+ import{CuratedKnowledgeManager as e}from"./curated-manager.js";import{createElicitor as t,noopElicitor as n}from"./elicitor.js";import{bridgeMcpLogging as r}from"./mcp-logging.js";import{registerPrompts as i}from"./prompts.js";import{installReplayInterceptor as a}from"./replay-interceptor.js";import{ResourceNotifier as o}from"./resources/resource-notifier.js";import{registerResources as s}from"./resources/resources.js";import{createSamplingClient as c}from"./sampling.js";import{installStructuredContentGuard as l}from"./structured-content-guard.js";import{getToolMeta as u}from"./tool-metadata.js";import{installToolPrefix as d}from"./tool-prefix.js";import{registerAnalyzeDependenciesTool as f,registerAnalyzeDiagramTool as p,registerAnalyzeEntryPointsTool as m,registerAnalyzePatternsTool as h,registerAnalyzeStructureTool as ee,registerAnalyzeSymbolsTool as g,registerBlastRadiusTool as _}from"./tools/analyze.tools.js";import{registerAuditTool as v}from"./tools/audit.tool.js";import{registerBrainstormTool as y}from"./tools/brainstorm.tool.js";import{initBridgeComponents as b,registerErPullTool as x,registerErPushTool as S,registerErSyncStatusTool as C}from"./tools/bridge.tools.js";import{registerCompactTool as w,registerDeadSymbolsTool as te,registerFileSummaryTool as ne,registerFindTool as re,registerScopeMapTool as ie,registerSymbolTool as ae,registerTraceTool as oe}from"./tools/context.tools.js";import{registerErEvolveReviewTool as se}from"./tools/evolution.tools.js";import{registerBatchTool as ce,registerCheckTool as le,registerDelegateTool as ue,registerEvalTool as de,registerParseOutputTool as fe,registerTestRunTool as T}from"./tools/execution.tools.js";import{registerDigestTool as pe,registerEvidenceMapTool as E,registerForgeClassifyTool as D,registerForgeGroundTool as me,registerStratumCardTool as he}from"./tools/forge.tools.js";import{registerForgetTool as ge}from"./tools/forget.tool.js";import{registerGraphTool as _e}from"./tools/graph.tool.js";import{registerGuideTool as O,registerHealthTool as k,registerProcessTool as A,registerWatchTool as j,registerWebFetchTool as M}from"./tools/infra.tools.js";import{registerListTool as ve}from"./tools/list.tool.js";import{registerLookupTool as ye}from"./tools/lookup.tool.js";import{registerCodemodTool as N,registerDataTransformTool as P,registerDiffParseTool as F,registerGitContextTool as I,registerRenameTool as L}from"./tools/manipulation.tools.js";import{registerOnboardTool as be}from"./tools/onboard.tool.js";import{registerCheckpointTool as R,registerLaneTool as z,registerQueueTool as B,registerStashTool as V,registerWorksetTool as H}from"./tools/persistence.tools.js";import{registerErUpdatePolicyTool as xe}from"./tools/policy.tools.js";import{registerPresentTool as U}from"./tools/present.tool.js";import{registerProduceKnowledgeTool as W}from"./tools/produce.tool.js";import{registerReadTool as Se}from"./tools/read.tool.js";import{registerReindexTool as Ce}from"./tools/reindex.tool.js";import{registerRememberTool as we}from"./tools/remember.tool.js";import{registerReplayTool as G}from"./tools/replay.tool.js";import{registerRestoreTool as Te}from"./tools/restore.tool.js";import{registerSearchTool as Ee}from"./tools/search.tool.js";import{getCurrentVersion as K}from"./version-check.js";import{registerStatusTool as De}from"./tools/status.tool.js";import{registerUpdateTool as Oe}from"./tools/update.tool.js";import{registerChangelogTool as q,registerEncodeTool as J,registerEnvTool as ke,registerHttpTool as Ae,registerMeasureTool as je,registerRegexTestTool as Me,registerSchemaValidateTool as Ne,registerSnippetTool as Pe,registerTimeTool as Fe,registerWebSearchTool as Ie}from"./tools/utility.tools.js";import{existsSync as Le,statSync as Re}from"node:fs";import{resolve as ze}from"node:path";import{KB_PATHS as Be,createLogger as Ve,serializeError as Y}from"../../core/dist/index.js";import{initializeWasm as He}from"../../chunker/dist/index.js";import{OnnxEmbedder as Ue}from"../../embeddings/dist/index.js";import{EvolutionCollector as We,PolicyStore as Ge}from"../../enterprise-bridge/dist/index.js";import{FileHashCache as Ke,IncrementalIndexer as qe}from"../../indexer/dist/index.js";import{SqliteGraphStore as Je,createStore as Ye}from"../../store/dist/index.js";import{FileCache as Xe}from"../../tools/dist/index.js";import{McpServer as Ze}from"@modelcontextprotocol/sdk/server/mcp.js";const X=Ve(`server`);async function Z(t){X.info(`Initializing knowledge base components`);let[n,r,i,a]=await Promise.all([(async()=>{let e=new Ue({model:t.embedding.model,dimensions:t.embedding.dimensions});return await e.initialize(),X.info(`Embedder loaded`,{modelId:e.modelId,dimensions:e.dimensions}),e})(),(async()=>{let e=await Ye({backend:t.store.backend,path:t.store.path});return await e.initialize(),X.info(`Store initialized`),e})(),(async()=>{let e=new Je({path:t.store.path});return await e.initialize(),X.info(`Graph store initialized`),e})(),(async()=>{let e=await He();return e?X.info(`WASM tree-sitter enabled for AST analysis`):X.warn(`WASM tree-sitter not available; analyzers will use regex fallback`),e})()]),o=new qe(n,r),s=new Ke(t.store.path);s.load(),o.setHashCache(s);let c=t.curated.path,l=new e(c,r,n);o.setGraphStore(i);let u=b(t.er),d=u?new Ge(t.curated.path):void 0;d&&X.info(`Policy store initialized`,{ruleCount:d.getRules().length});let f=u?new We:void 0,p=ze(t.sources[0]?.path??process.cwd(),Be.aiKb),m=Le(p),h;if(m)try{h=Re(p).mtime.toISOString()}catch{}return X.info(`Onboard state detected`,{onboardComplete:m,onboardTimestamp:h}),{embedder:n,store:r,indexer:o,curated:l,graphStore:i,fileCache:new Xe,bridge:u,policyStore:d,evolutionCollector:f,onboardComplete:m,onboardTimestamp:h}}function Qe(e,n){let a=new Ze({name:n.serverName??`knowledge-base`,version:K()},{capabilities:{logging:{}}});return r(a),d(a,n.toolPrefix??``),Q(a,e,n,t(a),new o(a),c(a)),i(a,{curated:e.curated,store:e.store,graphStore:e.graphStore}),a}function Q(e,t,n,r,i,o){a(e),l(e),Ee(e,t.embedder,t.store,t.graphStore,t.bridge,t.evolutionCollector,o),ye(e,t.store),De(e,t.store,t.graphStore,t.curated,{onboardComplete:t.onboardComplete,onboardTimestamp:t.onboardTimestamp},n),Ce(e,t.indexer,n,t.curated,t.store,i),we(e,t.curated,t.policyStore,t.evolutionCollector,i),Oe(e,t.curated,i),ge(e,t.curated,i),Se(e,t.curated),ve(e,t.curated),ee(e,t.store,t.embedder),f(e,t.store,t.embedder),g(e,t.store,t.embedder),h(e,t.store,t.embedder),m(e,t.store,t.embedder),p(e,t.store,t.embedder),_(e,t.store,t.embedder,t.graphStore),W(e,n),be(e,t.store,t.embedder,n),_e(e,t.graphStore),v(e,t.store,t.embedder),w(e,t.embedder,t.fileCache),ie(e,t.embedder,t.store),re(e,t.embedder,t.store),fe(e),H(e),le(e),ce(e,t.embedder,t.store),ae(e,t.embedder,t.store,t.graphStore),de(e),T(e),V(e),I(e),F(e),L(e),N(e),Te(e),ne(e,t.fileCache),R(e),P(e),oe(e,t.embedder,t.store),A(e),j(e),te(e,t.embedder,t.store),ue(e,o),k(e),z(e),B(e),M(e),O(e),E(e),pe(e,t.embedder),D(e),he(e,t.embedder,t.fileCache),me(e,t.embedder,t.store),U(e,r),r&&y(e,r),Ie(e),Ae(e),Me(e),J(e),je(e),q(e),Ne(e),Pe(e),ke(e),Fe(e),t.bridge&&(S(e,t.bridge,t.evolutionCollector),x(e,t.bridge),C(e,t.bridge)),t.policyStore&&xe(e,t.policyStore),t.evolutionCollector&&se(e,t.evolutionCollector),s(e,t.store,t.curated),G(e)}async function $e(e){let t=await Z(e),n=Qe(t,e);X.info(`MCP server configured`,{toolCount:$.length,resourceCount:2});let r=async()=>{try{let n=e.sources.map(e=>e.path).join(`, `);X.info(`Running initial index`,{sourcePaths:n});let r=await t.indexer.index(e,e=>{e.phase===`crawling`||e.phase===`done`||(e.phase===`chunking`&&e.currentFile&&X.debug(`Indexing file`,{current:e.filesProcessed+1,total:e.filesTotal,file:e.currentFile}),e.phase===`cleanup`&&X.debug(`Index cleanup`,{staleEntries:e.filesTotal-e.filesProcessed}))});X.info(`Initial index complete`,{filesProcessed:r.filesProcessed,filesSkipped:r.filesSkipped,chunksCreated:r.chunksCreated,durationMs:r.durationMs});try{await t.store.createFtsIndex()}catch(e){X.warn(`FTS index creation failed`,Y(e))}try{let e=await t.curated.reindexAll();X.info(`Curated re-index complete`,{indexed:e.indexed})}catch(e){X.error(`Curated re-index failed`,Y(e))}}catch(e){X.error(`Initial index failed; will retry on kb_reindex`,Y(e))}},i=async()=>{X.info(`Shutting down`),await t.embedder.shutdown().catch(()=>{}),await t.graphStore.close().catch(()=>{}),await t.store.close(),process.exit(0)};process.on(`SIGINT`,i),process.on(`SIGTERM`,i);let a=process.ppid,o=setInterval(()=>{try{process.kill(a,0)}catch{X.info(`Parent process died; shutting down`,{parentPid:a}),clearInterval(o),i()}},5e3);return o.unref(),{server:n,runInitialIndex:r,shutdown:i}}const et=new Set(`batch.brainstorm.changelog.check.checkpoint.codemod.compact.data_transform.delegate.diff_parse.digest.encode.env.eval.evidence_map.file_summary.forge_classify.git_context.graph.guide.health.http.lane.measure.onboard.parse_output.present.process.produce_knowledge.queue.read.regex_test.reindex.remember.rename.replay.restore.schema_validate.scope_map.snippet.stash.status.stratum_card.test_run.time.update.forget.list.watch.web_fetch.web_search.workset`.split(`.`)),tt=5e3,nt=new Set(`brainstorm.changelog.check.checkpoint.codemod.data_transform.delegate.diff_parse.encode.env.eval.evidence_map.forge_classify.git_context.guide.present.health.http.lane.measure.parse_output.process.produce_knowledge.queue.regex_test.rename.replay.restore.schema_validate.snippet.stash.test_run.time.watch.web_fetch.web_search.workset`.split(`.`));function rt(e){le(e),de(e),T(e),fe(e),ue(e),I(e),F(e),L(e),N(e),P(e),H(e),V(e),R(e),Te(e),z(e),B(e),k(e),A(e),j(e),M(e),O(e),E(e),D(e),U(e),y(e,n),W(e),G(e),Ie(e),Ae(e),Me(e),J(e),je(e),q(e),Ne(e),Pe(e),ke(e),Fe(e)}const $=`analyze_dependencies.analyze_diagram.analyze_entry_points.analyze_patterns.analyze_structure.analyze_symbols.audit.batch.blast_radius.brainstorm.changelog.check.checkpoint.codemod.compact.data_transform.dead_symbols.delegate.diff_parse.digest.encode.env.eval.evidence_map.file_summary.find.forge_classify.forge_ground.forget.git_context.graph.guide.health.http.lane.list.lookup.measure.onboard.parse_output.present.process.produce_knowledge.queue.read.regex_test.reindex.remember.rename.replay.restore.schema_validate.scope_map.search.snippet.stash.status.stratum_card.symbol.test_run.time.trace.update.watch.web_fetch.web_search.workset`.split(`.`);function it(e){let n=new Ze({name:e.serverName??`knowledge-base`,version:K()},{capabilities:{logging:{}}}),a=`initializing`,s=``,l=!1,f=()=>a===`failed`?[`❌ KB initialization failed — this tool is unavailable.`,``,s?`Error: ${s}`:``,``,`**35 tools are still available** and fully functional:`,`check, eval, test_run, git_context, health, measure, web_fetch, web_search,`,`regex_test, encode, stash, checkpoint, lane, process, time, env, and more.`,``,`Try restarting the MCP server to retry initialization.`].filter(Boolean).join(`
2
2
  `):[`KB is still initializing (loading embeddings model & store).`,``,`**35 tools are already available** while initialization completes — including:`,`check, eval, test_run, git_context, health, measure, web_fetch, web_search,`,`regex_test, encode, stash, checkpoint, lane, process, time, env, and more.`,``,`This tool requires the knowledge base index. Please retry in a few seconds,`,`or use one of the available tools above in the meantime.`].join(`
3
- `);r(n),u(n,e.toolPrefix??``);let p=n.sendToolListChanged.bind(n);n.sendToolListChanged=()=>{};let m=[];for(let e of $){let t=l(e),r=n.registerTool(e,{title:t.title,description:`${t.title} — initializing, available shortly`,inputSchema:{},annotations:t.annotations},async()=>({content:[{type:`text`,text:f()}]}));Q.has(e)?r.remove():m.push(r)}nt(n),n.sendToolListChanged=p;let h=n.resource(`kb-status`,`kb://status`,{description:`Knowledge base status (initializing...)`,mimeType:`text/plain`},async()=>({contents:[{uri:`kb://status`,text:`KB is initializing...`,mimeType:`text/plain`}]})),ee=n.prompt(`_init`,`KB is initializing prompts...`,async()=>({messages:[{role:`user`,content:{type:`text`,text:f()}}]})),g,_=new Promise(e=>{g=e}),v,te=new Promise(e=>{v=e}),y=()=>v?.(),b=(async()=>{await te;let r;try{r=await X(e)}catch(e){a=`failed`,s=e instanceof Error?e.message:String(e),Y.error(`KB initialization failed — server continuing with zero-dep tools only`,{error:s});return}let l=n.sendToolListChanged.bind(n);n.sendToolListChanged=()=>{};let u=n.sendPromptListChanged.bind(n);n.sendPromptListChanged=()=>{};let f=n.sendResourceListChanged.bind(n);n.sendResourceListChanged=()=>{};for(let e of m)e.remove();h.remove(),ee.remove();let p=n._registeredTools??{};for(let e of Q)p[e]?.remove();let _=new o(n),v=c(n);Z(n,r,e,t(n),_,v),i(n),n.sendToolListChanged=l,n.sendPromptListChanged=u,n.sendResourceListChanged=f,Promise.resolve(n.sendToolListChanged()).catch(()=>{}),Promise.resolve(n.sendPromptListChanged()).catch(()=>{}),Promise.resolve(n.sendResourceListChanged()).catch(()=>{});let y=n._registeredTools??{};for(let[e,t]of Object.entries(y)){if(et.has(e))continue;let n=t.handler;t.handler=async(...t)=>{if(!r.indexer.isIndexing)return n(...t);let i=d?`re-indexing`:`running initial index`,a=new Promise(t=>setTimeout(()=>t({content:[{type:`text`,text:`⏳ KB is ${i}. The tool "${e}" timed out waiting for index data (${tt/1e3}s).\n\nThe existing index may be temporarily locked. Please retry shortly — indexing will complete automatically.`}]}),tt));return Promise.race([n(...t),a])}}let b=Object.keys(y).length;b!==$.length&&Y.warn(`ALL_TOOL_NAMES count mismatch`,{expectedToolCount:$.length,registeredToolCount:b}),Y.info(`MCP server configured`,{toolCount:$.length,resourceCount:4}),g?.(r)})(),x=async()=>{let t=await _;try{let n=e.sources.map(e=>e.path).join(`, `);Y.info(`Running initial index`,{sourcePaths:n});let r=await t.indexer.index(e,e=>{e.phase===`crawling`||e.phase===`done`||(e.phase===`chunking`&&e.currentFile&&Y.debug(`Indexing file`,{current:e.filesProcessed+1,total:e.filesTotal,file:e.currentFile}),e.phase===`cleanup`&&Y.debug(`Index cleanup`,{staleEntries:e.filesTotal-e.filesProcessed}))});d=!0,Y.info(`Initial index complete`,{filesProcessed:r.filesProcessed,filesSkipped:r.filesSkipped,chunksCreated:r.chunksCreated,durationMs:r.durationMs});try{await t.store.createFtsIndex()}catch(e){Y.warn(`FTS index creation failed`,J(e))}try{let e=await t.curated.reindexAll();Y.info(`Curated re-index complete`,{indexed:e.indexed})}catch(e){Y.error(`Curated re-index failed`,J(e))}}catch(e){Y.error(`Initial index failed; will retry on kb_reindex`,J(e))}},S=process.ppid,C=setInterval(()=>{try{process.kill(S,0)}catch{Y.info(`Parent process died; shutting down`,{parentPid:S}),clearInterval(C),_.then(async e=>{await e.embedder.shutdown().catch(()=>{}),await e.graphStore.close().catch(()=>{}),await e.store.close().catch(()=>{})}).catch(()=>{}).finally(()=>process.exit(0))}},5e3);return C.unref(),{server:n,startInit:y,ready:b,runInitialIndex:x}}export{$ as ALL_TOOL_NAMES,rt as createLazyServer,Qe as createMcpServer,$e as createServer,X as initializeKnowledgeBase,Z as registerMcpTools};
3
+ `);r(n),d(n,e.toolPrefix??``);let p=n.sendToolListChanged.bind(n);n.sendToolListChanged=()=>{};let m=[];for(let e of $){let t=u(e),r=n.registerTool(e,{title:t.title,description:`${t.title} — initializing, available shortly`,inputSchema:{},annotations:t.annotations},async()=>({content:[{type:`text`,text:f()}]}));nt.has(e)?r.remove():m.push(r)}rt(n),n.sendToolListChanged=p;let h=n.resource(`kb-status`,`kb://status`,{description:`Knowledge base status (initializing...)`,mimeType:`text/plain`},async()=>({contents:[{uri:`kb://status`,text:`KB is initializing...`,mimeType:`text/plain`}]})),ee=n.prompt(`_init`,`KB is initializing prompts...`,async()=>({messages:[{role:`user`,content:{type:`text`,text:f()}}]})),g,_=new Promise(e=>{g=e}),v,y=new Promise(e=>{v=e}),b=()=>v?.(),x=(async()=>{await y;let r;try{r=await Z(e)}catch(e){a=`failed`,s=e instanceof Error?e.message:String(e),X.error(`KB initialization failed — server continuing with zero-dep tools only`,{error:s});return}let u=n.sendToolListChanged.bind(n);n.sendToolListChanged=()=>{};let d=n.sendPromptListChanged.bind(n);n.sendPromptListChanged=()=>{};let f=n.sendResourceListChanged.bind(n);n.sendResourceListChanged=()=>{};for(let e of m)e.remove();h.remove(),ee.remove();let p=n._registeredTools??{};for(let e of nt)p[e]?.remove();let _=new o(n),v=c(n);Q(n,r,e,t(n),_,v),i(n),n.sendToolListChanged=u,n.sendPromptListChanged=d,n.sendResourceListChanged=f,Promise.resolve(n.sendToolListChanged()).catch(()=>{}),Promise.resolve(n.sendPromptListChanged()).catch(()=>{}),Promise.resolve(n.sendResourceListChanged()).catch(()=>{});let b=n._registeredTools??{};for(let[e,t]of Object.entries(b)){if(et.has(e))continue;let n=t.handler;t.handler=async(...t)=>{if(!r.indexer.isIndexing)return n(...t);let i=l?`re-indexing`:`running initial index`,a=new Promise(t=>setTimeout(()=>t({content:[{type:`text`,text:`⏳ KB is ${i}. The tool "${e}" timed out waiting for index data (${tt/1e3}s).\n\nThe existing index may be temporarily locked. Please retry shortly — indexing will complete automatically.`}]}),tt));return Promise.race([n(...t),a])}}let x=Object.keys(b).length;x!==$.length&&X.warn(`ALL_TOOL_NAMES count mismatch`,{expectedToolCount:$.length,registeredToolCount:x}),X.info(`MCP server configured`,{toolCount:$.length,resourceCount:4}),g?.(r)})(),S=async()=>{let t=await _;try{let n=e.sources.map(e=>e.path).join(`, `);X.info(`Running initial index`,{sourcePaths:n});let r=await t.indexer.index(e,e=>{e.phase===`crawling`||e.phase===`done`||(e.phase===`chunking`&&e.currentFile&&X.debug(`Indexing file`,{current:e.filesProcessed+1,total:e.filesTotal,file:e.currentFile}),e.phase===`cleanup`&&X.debug(`Index cleanup`,{staleEntries:e.filesTotal-e.filesProcessed}))});l=!0,X.info(`Initial index complete`,{filesProcessed:r.filesProcessed,filesSkipped:r.filesSkipped,chunksCreated:r.chunksCreated,durationMs:r.durationMs});try{await t.store.createFtsIndex()}catch(e){X.warn(`FTS index creation failed`,Y(e))}try{let e=await t.curated.reindexAll();X.info(`Curated re-index complete`,{indexed:e.indexed})}catch(e){X.error(`Curated re-index failed`,Y(e))}}catch(e){X.error(`Initial index failed; will retry on kb_reindex`,Y(e))}},C=process.ppid,w=setInterval(()=>{try{process.kill(C,0)}catch{X.info(`Parent process died; shutting down`,{parentPid:C}),clearInterval(w),_.then(async e=>{await e.embedder.shutdown().catch(()=>{}),await e.graphStore.close().catch(()=>{}),await e.store.close().catch(()=>{})}).catch(()=>{}).finally(()=>process.exit(0))}},5e3);return w.unref(),{server:n,startInit:b,ready:x,runInitialIndex:S}}export{$ as ALL_TOOL_NAMES,it as createLazyServer,Qe as createMcpServer,$e as createServer,Z as initializeKnowledgeBase,Q as registerMcpTools};
@@ -0,0 +1,26 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+
3
+ //#region packages/server/src/structured-content-guard.d.ts
4
+ /**
5
+ * Build a minimal `structuredContent` placeholder when the handler didn't
6
+ * provide one. The SDK only checks that the value is a non-null object and
7
+ * validates it against the tool's Zod-driven JSON-Schema.
8
+ *
9
+ * We extract the error message from the text content blocks and store it
10
+ * under an `_error` key. Because `outputSchema` Zod schemas are compiled
11
+ * with `strict: false` by default via `zodToJsonSchema`, additional
12
+ * properties are tolerated and the SDK validator will not reject the
13
+ * placeholder.
14
+ *
15
+ * UPDATE: The SDK uses passthrough-style validation which DOES reject
16
+ * unknown keys on strict schemas. Instead, we build a "zero-value"
17
+ * object from the registered outputSchema (if available) so it always
18
+ * passes validation.
19
+ */
20
+ /**
21
+ * Wrap `server.registerTool` so that every handler result is guaranteed
22
+ * to include `structuredContent` when the tool declares `outputSchema`.
23
+ */
24
+ declare function installStructuredContentGuard(server: McpServer): void;
25
+ //#endregion
26
+ export { installStructuredContentGuard };
@@ -0,0 +1 @@
1
+ function e(e){let n=e.registerTool.bind(e);e.registerTool=(e,r,i)=>r?.outputSchema==null?n(e,r,i):n(e,r,async(e,n)=>{let a=await i(e,n);return a.structuredContent??=t(r.outputSchema),a})}function t(e){if(!e)return{};if(e.anyOf){let n=e.anyOf.find(e=>e.type!==`null`);return n?t(n):null}switch(e.type){case`object`:{let n={};if(e.properties)for(let[r,i]of Object.entries(e.properties))n[r]=t(i);return n}case`array`:return[];case`string`:return``;case`number`:case`integer`:return 0;case`boolean`:return!1;default:return{}}}export{e as installStructuredContentGuard};
@@ -1,6 +1,6 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { IEmbedder } from "@kb/embeddings";
3
- import { IGraphStore, IKnowledgeStore } from "@kb/store";
2
+ import { IGraphStore, IKnowledgeStore } from "../../../store/dist/index.js";
3
+ import { IEmbedder } from "../../../embeddings/dist/index.js";
4
4
 
5
5
  //#region packages/server/src/tools/analyze.tools.d.ts
6
6
  declare function registerAnalyzeStructureTool(server: McpServer, store: IKnowledgeStore, embedder: IEmbedder): void;
@@ -1,6 +1,6 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { IEmbedder } from "@kb/embeddings";
3
- import { IKnowledgeStore } from "@kb/store";
2
+ import { IKnowledgeStore } from "../../../store/dist/index.js";
3
+ import { IEmbedder } from "../../../embeddings/dist/index.js";
4
4
 
5
5
  //#region packages/server/src/tools/audit.tool.d.ts
6
6
  declare function registerAuditTool(server: McpServer, store: IKnowledgeStore, embedder: IEmbedder): void;
@@ -1,5 +1,5 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { Elicitor } from "@kb/elicitation";
2
+ import { Elicitor } from "../../../elicitation/dist/index.js";
3
3
 
4
4
  //#region packages/server/src/tools/brainstorm.tool.d.ts
5
5
  declare function registerBrainstormTool(server: McpServer, elicitor: Elicitor): void;
@@ -1,5 +1,5 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { ERBridgeConfig, ERCache, ERClient, EvolutionCollector, PushAdapter } from "@kb/enterprise-bridge";
2
+ import { ERBridgeConfig, ERCache, ERClient, EvolutionCollector, PushAdapter } from "../../../enterprise-bridge/dist/index.js";
3
3
 
4
4
  //#region packages/server/src/tools/bridge.tools.d.ts
5
5
  /** Resolve ER bridge config from KBConfig.er + env */
@@ -1,7 +1,7 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { IEmbedder } from "@kb/embeddings";
3
- import { IGraphStore, IKnowledgeStore } from "@kb/store";
4
- import { FileCache } from "@kb/tools";
2
+ import { FileCache } from "../../../tools/dist/index.js";
3
+ import { IGraphStore, IKnowledgeStore } from "../../../store/dist/index.js";
4
+ import { IEmbedder } from "../../../embeddings/dist/index.js";
5
5
 
6
6
  //#region packages/server/src/tools/context.tools.d.ts
7
7
  declare function registerCompactTool(server: McpServer, embedder: IEmbedder, cache: FileCache): void;
@@ -1,5 +1,5 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { EvolutionCollector } from "@kb/enterprise-bridge";
2
+ import { EvolutionCollector } from "../../../enterprise-bridge/dist/index.js";
3
3
 
4
4
  //#region packages/server/src/tools/evolution.tools.d.ts
5
5
  declare function registerErEvolveReviewTool(server: McpServer, collector: EvolutionCollector): void;
@@ -1,7 +1,7 @@
1
1
  import { ISamplingClient } from "../sampling.js";
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
- import { IEmbedder } from "@kb/embeddings";
4
- import { IKnowledgeStore } from "@kb/store";
3
+ import { IKnowledgeStore } from "../../../store/dist/index.js";
4
+ import { IEmbedder } from "../../../embeddings/dist/index.js";
5
5
 
6
6
  //#region packages/server/src/tools/execution.tools.d.ts
7
7
  declare function registerCheckTool(server: McpServer): void;
@@ -1,7 +1,7 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { IEmbedder } from "@kb/embeddings";
3
- import { IKnowledgeStore } from "@kb/store";
4
- import { FileCache } from "@kb/tools";
2
+ import { FileCache } from "../../../tools/dist/index.js";
3
+ import { IKnowledgeStore } from "../../../store/dist/index.js";
4
+ import { IEmbedder } from "../../../embeddings/dist/index.js";
5
5
 
6
6
  //#region packages/server/src/tools/forge.tools.d.ts
7
7
  declare function registerEvidenceMapTool(server: McpServer): void;
@@ -1,5 +1,5 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { IGraphStore } from "@kb/store";
2
+ import { IGraphStore } from "../../../store/dist/index.js";
3
3
 
4
4
  //#region packages/server/src/tools/graph.tool.d.ts
5
5
  declare function registerGraphTool(server: McpServer, graphStore: IGraphStore): void;
@@ -1,5 +1,5 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { IKnowledgeStore } from "@kb/store";
2
+ import { IKnowledgeStore } from "../../../store/dist/index.js";
3
3
 
4
4
  //#region packages/server/src/tools/lookup.tool.d.ts
5
5
  declare function registerLookupTool(server: McpServer, store: IKnowledgeStore): void;
@@ -1,7 +1,7 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { KBConfig } from "@kb/core";
3
- import { IEmbedder } from "@kb/embeddings";
4
- import { IKnowledgeStore } from "@kb/store";
2
+ import { KBConfig } from "../../../core/dist/index.js";
3
+ import { IKnowledgeStore } from "../../../store/dist/index.js";
4
+ import { IEmbedder } from "../../../embeddings/dist/index.js";
5
5
 
6
6
  //#region packages/server/src/tools/onboard.tool.d.ts
7
7
  declare function registerOnboardTool(server: McpServer, store: IKnowledgeStore, embedder: IEmbedder, config?: KBConfig): void;
@@ -1,5 +1,5 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { PolicyStore } from "@kb/enterprise-bridge";
2
+ import { PolicyStore } from "../../../enterprise-bridge/dist/index.js";
3
3
 
4
4
  //#region packages/server/src/tools/policy.tools.d.ts
5
5
  declare function registerErUpdatePolicyTool(server: McpServer, policyStore: PolicyStore): void;
@@ -1,5 +1,5 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { Elicitor } from "@kb/elicitation";
2
+ import { Elicitor } from "../../../elicitation/dist/index.js";
3
3
 
4
4
  //#region packages/server/src/tools/present.tool.d.ts
5
5
  declare function registerPresentTool(server: McpServer, elicitor?: Elicitor): void;
@@ -1,5 +1,5 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { KBConfig } from "@kb/core";
2
+ import { KBConfig } from "../../../core/dist/index.js";
3
3
 
4
4
  //#region packages/server/src/tools/produce.tool.d.ts
5
5
  declare function registerProduceKnowledgeTool(server: McpServer, config?: KBConfig): void;
@@ -1,9 +1,9 @@
1
1
  import { CuratedKnowledgeManager } from "../curated-manager.js";
2
2
  import { ResourceNotifier } from "../resources/resource-notifier.js";
3
3
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
- import { KBConfig } from "@kb/core";
5
- import { IncrementalIndexer } from "@kb/indexer";
6
- import { IKnowledgeStore } from "@kb/store";
4
+ import { KBConfig } from "../../../core/dist/index.js";
5
+ import { IKnowledgeStore } from "../../../store/dist/index.js";
6
+ import { IncrementalIndexer } from "../../../indexer/dist/index.js";
7
7
 
8
8
  //#region packages/server/src/tools/reindex.tool.d.ts
9
9
  declare function registerReindexTool(server: McpServer, indexer: IncrementalIndexer, config: KBConfig, curated: CuratedKnowledgeManager, store?: IKnowledgeStore, resourceNotifier?: ResourceNotifier): void;
@@ -1,7 +1,7 @@
1
1
  import { CuratedKnowledgeManager } from "../curated-manager.js";
2
2
  import { ResourceNotifier } from "../resources/resource-notifier.js";
3
3
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
- import { EvolutionCollector, PolicyStore } from "@kb/enterprise-bridge";
4
+ import { EvolutionCollector, PolicyStore } from "../../../enterprise-bridge/dist/index.js";
5
5
 
6
6
  //#region packages/server/src/tools/remember.tool.d.ts
7
7
  declare function registerRememberTool(server: McpServer, curated: CuratedKnowledgeManager, policyStore?: PolicyStore, evolutionCollector?: EvolutionCollector, resourceNotifier?: ResourceNotifier): void;
@@ -1,9 +1,9 @@
1
1
  import { ISamplingClient } from "../sampling.js";
2
2
  import { BridgeComponents } from "./bridge.tools.js";
3
3
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
- import { IEmbedder } from "@kb/embeddings";
5
- import { EvolutionCollector } from "@kb/enterprise-bridge";
6
- import { IGraphStore, IKnowledgeStore } from "@kb/store";
4
+ import { EvolutionCollector } from "../../../enterprise-bridge/dist/index.js";
5
+ import { IGraphStore, IKnowledgeStore } from "../../../store/dist/index.js";
6
+ import { IEmbedder } from "../../../embeddings/dist/index.js";
7
7
 
8
8
  //#region packages/server/src/tools/search.tool.d.ts
9
9
  declare function registerSearchTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore, graphStore?: IGraphStore, bridge?: BridgeComponents, evolutionCollector?: EvolutionCollector, samplingClient?: ISamplingClient): void;
@@ -1,7 +1,7 @@
1
1
  import { CuratedKnowledgeManager } from "../curated-manager.js";
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
- import { KBConfig } from "@kb/core";
4
- import { IGraphStore, IKnowledgeStore } from "@kb/store";
3
+ import { KBConfig } from "../../../core/dist/index.js";
4
+ import { IGraphStore, IKnowledgeStore } from "../../../store/dist/index.js";
5
5
 
6
6
  //#region packages/server/src/tools/status.tool.d.ts
7
7
  interface OnboardState {
@@ -1,2 +1,2 @@
1
- import{getToolMeta as e}from"../tool-metadata.js";import{StatusOutputSchema as t}from"../output-schemas.js";import{existsSync as n}from"node:fs";import{resolve as r}from"node:path";import{KB_PATHS as i,createLogger as a,serializeError as o}from"../../../core/dist/index.js";import{WasmRuntime as s}from"../../../chunker/dist/index.js";const c=a(`tools`);function l(e,t,n,r=4e3){let i,a=new Promise(e=>{i=setTimeout(()=>{c.warn(`Status sub-operation "${n}" timed out after ${r}ms`),e({value:t,timedOut:!0})},r)});return Promise.race([e.then(e=>(clearTimeout(i),{value:e,timedOut:!1}),e=>(clearTimeout(i),c.warn(`Status sub-operation "${n}" failed: ${e instanceof Error?e.message:String(e)}`),{value:t,timedOut:!1})),a])}function u(a,u,d,f,p,m){let h=e(`status`);a.registerTool(`status`,{title:h.title,description:`Get the current status and statistics of the knowledge base index.`,outputSchema:t,annotations:h.annotations},async()=>{let e=[];try{let t=await l(u.getStats(),{totalRecords:0,totalFiles:0,lastIndexedAt:null,contentTypeBreakdown:{}},`store.getStats`),a=t.value;t.timedOut&&e.push(`⚠ Index stats timed out — values may be incomplete`);let o=await l(u.listSourcePaths(),[],`store.listSourcePaths`),c=o.value;o.timedOut&&e.push(`⚠ File listing timed out`);let h=null,g=0,_=[`## Knowledge Base Status`,``,`- **Total Records**: ${a.totalRecords}`,`- **Total Files**: ${a.totalFiles}`,`- **Last Indexed**: ${a.lastIndexedAt??`Never`}`,``,`### Content Types`,...Object.entries(a.contentTypeBreakdown).map(([e,t])=>`- ${e}: ${t}`),``,`### Indexed Files`,...c.slice(0,50).map(e=>`- ${e}`),c.length>50?`\n... and ${c.length-50} more files`:``];if(d)try{let t=await l(d.getStats(),{nodeCount:0,edgeCount:0,nodeTypes:{},edgeTypes:{}},`graphStore.getStats`);if(t.timedOut)e.push(`⚠ Graph stats timed out`),_.push(``,`### Knowledge Graph`,`- Graph stats timed out`);else{let e=t.value;h={nodes:e.nodeCount,edges:e.edgeCount},_.push(``,`### Knowledge Graph`,`- **Nodes**: ${e.nodeCount}`,`- **Edges**: ${e.edgeCount}`,...Object.entries(e.nodeTypes).map(([e,t])=>` - ${e}: ${t}`));try{let e=await l(d.validate(),{valid:!0,danglingEdges:[],orphanNodes:[],stats:{nodeCount:0,edgeCount:0,nodeTypes:{},edgeTypes:{}}},`graphStore.validate`);if(!e.timedOut){let t=e.value;t.valid||_.push(`- **⚠ Integrity Issues**: ${t.danglingEdges.length} dangling edges`),t.orphanNodes.length>0&&_.push(`- **Orphan nodes**: ${t.orphanNodes.length}`)}}catch{}}}catch{_.push(``,`### Knowledge Graph`,`- Graph store unavailable`)}let v=m?.onboardDir??r(process.cwd(),i.aiKb),y=n(v),b=p?.onboardComplete??y;if(_.push(``,`### Onboard Status`,b?`- ✅ Complete${p?.onboardTimestamp?` (last: ${p.onboardTimestamp})`:``}`:'- ❌ Not run — call `onboard({ path: "." })` to analyze the codebase',`- **Onboard Directory**: \`${v}\``),f)try{let t=await l(f.list(),[],`curated.list`);if(t.timedOut)e.push(`⚠ Curated knowledge listing timed out`),_.push(``,`### Curated Knowledge`,`- Listing timed out`);else{let e=t.value;g=e.length,_.push(``,`### Curated Knowledge`,e.length>0?`- ${e.length} entries`:"- Empty — use `remember()` to persist decisions")}}catch{_.push(``,`### Curated Knowledge`,`- Unable to read curated entries`)}if(a.lastIndexedAt){let e=new Date(a.lastIndexedAt),t=(Date.now()-e.getTime())/(1e3*60*60);_.push(``,`### Index Freshness`,t>24?`- ⚠ Last indexed ${Math.floor(t)}h ago — may be stale. Run \`reindex({})\``:`- ✅ Last indexed ${t<1?`less than 1h`:`${Math.floor(t)}h`} ago`)}_.push(``,`### Runtime`,`- **Tree-sitter (WASM)**: ${s.get()?`✅ Available (AST analysis)`:`⚠ Unavailable (regex fallback)`}`),e.length>0&&_.push(``,`### ⚠ Warnings`,...e.map(e=>`- ${e}`));let x=_.join(`
2
- `),S={totalRecords:a.totalRecords,totalFiles:a.totalFiles,lastIndexedAt:a.lastIndexedAt??null,onboarded:b,onboardDir:v,contentTypes:a.contentTypeBreakdown,wasmAvailable:!!s.get(),graphStats:h,curatedCount:g};return{content:[{type:`text`,text:x+"\n\n---\n_Next: Use `search` to query indexed content, `graph(stats)` to explore the knowledge graph, or `reindex` to refresh the index._"}],structuredContent:S}}catch(e){return c.error(`Status failed`,o(e)),{content:[{type:`text`,text:`Status check failed: ${e instanceof Error?e.message:String(e)}`}],isError:!0}}})}export{u as registerStatusTool};
1
+ import{getToolMeta as e}from"../tool-metadata.js";import{StatusOutputSchema as t}from"../output-schemas.js";import{getCurrentVersion as n}from"../version-check.js";import{existsSync as r,readFileSync as i}from"node:fs";import{resolve as a}from"node:path";import{KB_PATHS as o,createLogger as s,serializeError as c}from"../../../core/dist/index.js";import{WasmRuntime as l}from"../../../chunker/dist/index.js";import{homedir as u}from"node:os";const d=s(`tools`);function f(e,t,n,r=4e3){let i,a=new Promise(e=>{i=setTimeout(()=>{d.warn(`Status sub-operation "${n}" timed out after ${r}ms`),e({value:t,timedOut:!0})},r)});return Promise.race([e.then(e=>(clearTimeout(i),{value:e,timedOut:!1}),e=>(clearTimeout(i),d.warn(`Status sub-operation "${n}" failed: ${e instanceof Error?e.message:String(e)}`),{value:t,timedOut:!1})),a])}function p(){try{let e=a(u(),`.copilot`,`.kb-scaffold.json`);return r(e)?JSON.parse(i(e,`utf-8`)).version??null:null}catch{return null}}function m(i,s,u,m,h,g){let _=e(`status`);i.registerTool(`status`,{title:_.title,description:`Get the current status and statistics of the knowledge base index.`,outputSchema:t,annotations:_.annotations},async()=>{let e=[];try{let t=await f(s.getStats(),{totalRecords:0,totalFiles:0,lastIndexedAt:null,contentTypeBreakdown:{}},`store.getStats`),i=t.value;t.timedOut&&e.push(`⚠ Index stats timed out — values may be incomplete`);let c=await f(s.listSourcePaths(),[],`store.listSourcePaths`),d=c.value;c.timedOut&&e.push(`⚠ File listing timed out`);let _=null,v=0,y=[`## Knowledge Base Status`,``,`- **Total Records**: ${i.totalRecords}`,`- **Total Files**: ${i.totalFiles}`,`- **Last Indexed**: ${i.lastIndexedAt??`Never`}`,``,`### Content Types`,...Object.entries(i.contentTypeBreakdown).map(([e,t])=>`- ${e}: ${t}`),``,`### Indexed Files`,...d.slice(0,50).map(e=>`- ${e}`),d.length>50?`\n... and ${d.length-50} more files`:``];if(u)try{let t=await f(u.getStats(),{nodeCount:0,edgeCount:0,nodeTypes:{},edgeTypes:{}},`graphStore.getStats`);if(t.timedOut)e.push(`⚠ Graph stats timed out`),y.push(``,`### Knowledge Graph`,`- Graph stats timed out`);else{let e=t.value;_={nodes:e.nodeCount,edges:e.edgeCount},y.push(``,`### Knowledge Graph`,`- **Nodes**: ${e.nodeCount}`,`- **Edges**: ${e.edgeCount}`,...Object.entries(e.nodeTypes).map(([e,t])=>` - ${e}: ${t}`));try{let e=await f(u.validate(),{valid:!0,danglingEdges:[],orphanNodes:[],stats:{nodeCount:0,edgeCount:0,nodeTypes:{},edgeTypes:{}}},`graphStore.validate`);if(!e.timedOut){let t=e.value;t.valid||y.push(`- **⚠ Integrity Issues**: ${t.danglingEdges.length} dangling edges`),t.orphanNodes.length>0&&y.push(`- **Orphan nodes**: ${t.orphanNodes.length}`)}}catch{}}}catch{y.push(``,`### Knowledge Graph`,`- Graph store unavailable`)}let b=g?.onboardDir??a(process.cwd(),o.aiKb),x=r(b),S=h?.onboardComplete??x;if(y.push(``,`### Onboard Status`,S?`- ✅ Complete${h?.onboardTimestamp?` (last: ${h.onboardTimestamp})`:``}`:'- ❌ Not run — call `onboard({ path: "." })` to analyze the codebase',`- **Onboard Directory**: \`${b}\``),m)try{let t=await f(m.list(),[],`curated.list`);if(t.timedOut)e.push(`⚠ Curated knowledge listing timed out`),y.push(``,`### Curated Knowledge`,`- Listing timed out`);else{let e=t.value;v=e.length,y.push(``,`### Curated Knowledge`,e.length>0?`- ${e.length} entries`:"- Empty — use `remember()` to persist decisions")}}catch{y.push(``,`### Curated Knowledge`,`- Unable to read curated entries`)}if(i.lastIndexedAt){let e=new Date(i.lastIndexedAt),t=(Date.now()-e.getTime())/(1e3*60*60);y.push(``,`### Index Freshness`,t>24?`- ⚠ Last indexed ${Math.floor(t)}h ago — may be stale. Run \`reindex({})\``:`- ✅ Last indexed ${t<1?`less than 1h`:`${Math.floor(t)}h`} ago`)}y.push(``,`### Runtime`,`- **Tree-sitter (WASM)**: ${l.get()?`✅ Available (AST analysis)`:`⚠ Unavailable (regex fallback)`}`);let C=p(),w=n();C&&C!==w&&y.push(``,`### Upgrade Available`,`- New version available (${w}). Run: \`npx -y @vpxa/kb upgrade\``),e.length>0&&y.push(``,`### ⚠ Warnings`,...e.map(e=>`- ${e}`));let T=y.join(`
2
+ `),E={totalRecords:i.totalRecords,totalFiles:i.totalFiles,lastIndexedAt:i.lastIndexedAt??null,onboarded:S,onboardDir:b,contentTypes:i.contentTypeBreakdown,wasmAvailable:!!l.get(),graphStats:_,curatedCount:v,serverVersion:w,scaffoldVersion:C??null,upgradeAvailable:C!=null&&C!==w};return{content:[{type:`text`,text:T+"\n\n---\n_Next: Use `search` to query indexed content, `graph(stats)` to explore the knowledge graph, or `reindex` to refresh the index._"}],structuredContent:E}}catch(e){return d.error(`Status failed`,c(e)),{content:[{type:`text`,text:`Status check failed: ${e instanceof Error?e.message:String(e)}`}],isError:!0}}})}export{m as registerStatusTool};
@@ -1 +1 @@
1
- import{readFileSync as e}from"node:fs";import{dirname as t,resolve as n}from"node:path";import{fileURLToPath as r}from"node:url";import{createLogger as i}from"../../core/dist/index.js";const a=i(`server`);function o(){let i=n(t(r(import.meta.url)),`..`,`..`,`..`,`package.json`);try{return JSON.parse(e(i,`utf-8`)).version??`0.0.0`}catch{return`0.0.0`}}function s(e,t){let n=e.split(`.`).map(Number),r=t.split(`.`).map(Number);for(let e=0;e<3;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t>0?1:-1}return 0}function c(){let e=o();fetch(`https://registry.npmjs.org/@vpxa/kb/latest`,{signal:AbortSignal.timeout(5e3)}).then(e=>{if(e.ok)return e.json()}).then(t=>{if(!t||typeof t!=`object`)return;let n=t.version;n&&s(e,n)<0&&a.warn(`Update available`,{currentVersion:e,latestVersion:n,updateCommand:`npx @vpxa/kb@${n} serve`,configHint:`update your mcp.json`})}).catch(()=>{})}export{c as checkForUpdates,o as getCurrentVersion};
1
+ import{readFileSync as e}from"node:fs";import{dirname as t,resolve as n}from"node:path";import{fileURLToPath as r}from"node:url";import{createLogger as i}from"../../core/dist/index.js";const a=i(`server`);function o(){let i=n(t(r(import.meta.url)),`..`,`..`,`..`,`package.json`);try{return JSON.parse(e(i,`utf-8`)).version??`0.0.0`}catch{return`0.0.0`}}function s(e,t){let n=e.split(`.`).map(Number),r=t.split(`.`).map(Number);for(let e=0;e<3;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t>0?1:-1}return 0}function c(){let e=o();fetch(`https://registry.npmjs.org/@vpxa/kb/latest`,{signal:AbortSignal.timeout(5e3)}).then(e=>{if(e.ok)return e.json()}).then(t=>{if(!t||typeof t!=`object`)return;let n=t.version;n&&s(e,n)<0&&a.warn(`Update available`,{currentVersion:e,latestVersion:n,updateCommand:`npx -y @vpxa/kb upgrade`})}).catch(()=>{})}export{c as checkForUpdates,o as getCurrentVersion};
@@ -1,5 +1,5 @@
1
1
  import { IKnowledgeStore, SearchOptions } from "./store.interface.js";
2
- import { IndexStats, KnowledgeRecord, SearchResult } from "@kb/core";
2
+ import { IndexStats, KnowledgeRecord, SearchResult } from "../../core/dist/index.js";
3
3
 
4
4
  //#region packages/store/src/lance-store.d.ts
5
5
  declare class LanceStore implements IKnowledgeStore {
@@ -1,4 +1,4 @@
1
- import { ContentType, IndexStats, KnowledgeOrigin, KnowledgeRecord, SearchResult, SourceType } from "@kb/core";
1
+ import { ContentType, IndexStats, KnowledgeOrigin, KnowledgeRecord, SearchResult, SourceType } from "../../core/dist/index.js";
2
2
 
3
3
  //#region packages/store/src/store.interface.d.ts
4
4
  /** Options for searching the store */
@@ -1,6 +1,6 @@
1
1
  import { KBResponse } from "./response-envelope.js";
2
- import { IEmbedder } from "@kb/embeddings";
3
- import { IKnowledgeStore } from "@kb/store";
2
+ import { IEmbedder } from "../../embeddings/dist/index.js";
3
+ import { IKnowledgeStore } from "../../store/dist/index.js";
4
4
 
5
5
  //#region packages/tools/src/audit.d.ts
6
6
  type AuditCheck = 'structure' | 'dependencies' | 'patterns' | 'health' | 'dead_symbols' | 'check' | 'entry_points';
@@ -1,5 +1,5 @@
1
1
  import { FileCache } from "./file-cache.js";
2
- import { IEmbedder } from "@kb/embeddings";
2
+ import { IEmbedder } from "../../embeddings/dist/index.js";
3
3
 
4
4
  //#region packages/tools/src/compact.d.ts
5
5
  interface CompactOptions {
@@ -1,5 +1,5 @@
1
- import { IEmbedder } from "@kb/embeddings";
2
- import { IKnowledgeStore } from "@kb/store";
1
+ import { IEmbedder } from "../../embeddings/dist/index.js";
2
+ import { IKnowledgeStore } from "../../store/dist/index.js";
3
3
 
4
4
  //#region packages/tools/src/dead-symbols.d.ts
5
5
  interface DeadSymbolOptions {
@@ -1,4 +1,4 @@
1
- import { IEmbedder } from "@kb/embeddings";
1
+ import { IEmbedder } from "../../embeddings/dist/index.js";
2
2
 
3
3
  //#region packages/tools/src/digest.d.ts
4
4
  interface DigestSource {
@@ -1,6 +1,6 @@
1
- import { IEmbedder } from "@kb/embeddings";
2
- import { IKnowledgeStore } from "@kb/store";
3
- import { ContentType } from "@kb/core";
1
+ import { ContentType } from "../../core/dist/index.js";
2
+ import { IEmbedder } from "../../embeddings/dist/index.js";
3
+ import { IKnowledgeStore } from "../../store/dist/index.js";
4
4
 
5
5
  //#region packages/tools/src/find-examples.d.ts
6
6
  interface FindExamplesOptions {
@@ -1,6 +1,6 @@
1
- import { IEmbedder } from "@kb/embeddings";
2
- import { IKnowledgeStore } from "@kb/store";
3
- import { ContentType } from "@kb/core";
1
+ import { ContentType } from "../../core/dist/index.js";
2
+ import { IEmbedder } from "../../embeddings/dist/index.js";
3
+ import { IKnowledgeStore } from "../../store/dist/index.js";
4
4
 
5
5
  //#region packages/tools/src/find.d.ts
6
6
  interface FindOptions {
@@ -1,8 +1,8 @@
1
1
  import { ForgeTier } from "./evidence-map.js";
2
2
  import { ClassifyTrigger, TypedUnknownSeed } from "./forge-classify.js";
3
3
  import { ScopeMapResult } from "./scope-map.js";
4
- import { IEmbedder } from "@kb/embeddings";
5
- import { IKnowledgeStore } from "@kb/store";
4
+ import { IEmbedder } from "../../embeddings/dist/index.js";
5
+ import { IKnowledgeStore } from "../../store/dist/index.js";
6
6
 
7
7
  //#region packages/tools/src/forge-ground.d.ts
8
8
  interface ForgeGroundOptions {
@@ -1,4 +1,4 @@
1
- import { GraphEdge, GraphNode, GraphStats, GraphTraversalResult, GraphValidationResult, IGraphStore } from "@kb/store";
1
+ import { GraphEdge, GraphNode, GraphStats, GraphTraversalResult, GraphValidationResult, IGraphStore } from "../../store/dist/index.js";
2
2
 
3
3
  //#region packages/tools/src/graph-query.d.ts
4
4
  interface GraphQueryOptions {
@@ -1,6 +1,6 @@
1
- import { IEmbedder } from "@kb/embeddings";
2
- import { IKnowledgeStore } from "@kb/store";
3
- import { ContentType, KnowledgeOrigin } from "@kb/core";
1
+ import { ContentType, KnowledgeOrigin } from "../../core/dist/index.js";
2
+ import { IEmbedder } from "../../embeddings/dist/index.js";
3
+ import { IKnowledgeStore } from "../../store/dist/index.js";
4
4
 
5
5
  //#region packages/tools/src/scope-map.d.ts
6
6
  interface ScopeMapOptions {
@@ -1,5 +1,5 @@
1
1
  import { FileCache } from "./file-cache.js";
2
- import { IEmbedder } from "@kb/embeddings";
2
+ import { IEmbedder } from "../../embeddings/dist/index.js";
3
3
 
4
4
  //#region packages/tools/src/stratum-card.d.ts
5
5
  interface StratumCardOptions {
@@ -1,5 +1,5 @@
1
- import { IEmbedder } from "@kb/embeddings";
2
- import { IGraphStore, IKnowledgeStore } from "@kb/store";
1
+ import { IEmbedder } from "../../embeddings/dist/index.js";
2
+ import { IGraphStore, IKnowledgeStore } from "../../store/dist/index.js";
3
3
 
4
4
  //#region packages/tools/src/symbol.d.ts
5
5
  interface SymbolGraphContext {
@@ -1,5 +1,5 @@
1
- import { IEmbedder } from "@kb/embeddings";
2
- import { IKnowledgeStore } from "@kb/store";
1
+ import { IEmbedder } from "../../embeddings/dist/index.js";
2
+ import { IKnowledgeStore } from "../../store/dist/index.js";
3
3
 
4
4
  //#region packages/tools/src/trace.d.ts
5
5
  interface TraceOptions {
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
- import { t as IKBClient } from "./types-VcTHNV6s.js";
2
+ import { t as IKBClient } from "./index-Cvx1a7S7.js";
3
3
  import React from "react";
4
4
 
5
5
  //#region packages/tui/src/App.d.ts
@@ -1,9 +1,9 @@
1
1
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
- import { t as IKBClient } from "../types-VcTHNV6s.js";
3
- import * as react from "react";
2
+ import { t as IKBClient } from "../index-Cvx1a7S7.js";
3
+ import * as _$react from "react";
4
4
 
5
5
  //#region packages/tui/src/hooks/useKBClient.d.ts
6
- declare const KBClientProvider: react.Provider<IKBClient | null>;
6
+ declare const KBClientProvider: _$react.Provider<IKBClient | null>;
7
7
  declare function useKBClient(): IKBClient;
8
8
  //#endregion
9
9
  export { KBClientProvider, useKBClient };
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
- import { t as IKBClient } from "./types-VcTHNV6s.js";
2
+ import { t as IKBClient } from "./index-Cvx1a7S7.js";
3
3
 
4
4
  //#region packages/tui/src/index.d.ts
5
5
  declare function launch(client: IKBClient): void;
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};