dep-context-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +380 -0
  2. package/dist/analysis/relationships.d.ts +25 -0
  3. package/dist/analysis/relationships.d.ts.map +1 -0
  4. package/dist/analysis/relationships.js +26 -0
  5. package/dist/analysis/relationships.js.map +1 -0
  6. package/dist/build-info.d.ts +15 -0
  7. package/dist/build-info.d.ts.map +1 -0
  8. package/dist/build-info.js +24 -0
  9. package/dist/build-info.js.map +1 -0
  10. package/dist/cache/manager.d.ts +19 -0
  11. package/dist/cache/manager.d.ts.map +1 -0
  12. package/dist/cache/manager.js +131 -0
  13. package/dist/cache/manager.js.map +1 -0
  14. package/dist/cache/registry.d.ts +44 -0
  15. package/dist/cache/registry.d.ts.map +1 -0
  16. package/dist/cache/registry.js +92 -0
  17. package/dist/cache/registry.js.map +1 -0
  18. package/dist/config/loader.d.ts +62 -0
  19. package/dist/config/loader.d.ts.map +1 -0
  20. package/dist/config/loader.js +193 -0
  21. package/dist/config/loader.js.map +1 -0
  22. package/dist/extraction/examples.d.ts +22 -0
  23. package/dist/extraction/examples.d.ts.map +1 -0
  24. package/dist/extraction/examples.js +109 -0
  25. package/dist/extraction/examples.js.map +1 -0
  26. package/dist/extraction/external-resolver.d.ts +26 -0
  27. package/dist/extraction/external-resolver.d.ts.map +1 -0
  28. package/dist/extraction/external-resolver.js +79 -0
  29. package/dist/extraction/external-resolver.js.map +1 -0
  30. package/dist/extraction/import-tracker.d.ts +58 -0
  31. package/dist/extraction/import-tracker.d.ts.map +1 -0
  32. package/dist/extraction/import-tracker.js +113 -0
  33. package/dist/extraction/import-tracker.js.map +1 -0
  34. package/dist/extraction/readme.d.ts +19 -0
  35. package/dist/extraction/readme.d.ts.map +1 -0
  36. package/dist/extraction/readme.js +79 -0
  37. package/dist/extraction/readme.js.map +1 -0
  38. package/dist/extraction/snapshot.d.ts +32 -0
  39. package/dist/extraction/snapshot.d.ts.map +1 -0
  40. package/dist/extraction/snapshot.js +258 -0
  41. package/dist/extraction/snapshot.js.map +1 -0
  42. package/dist/extraction/typescript.d.ts +104 -0
  43. package/dist/extraction/typescript.d.ts.map +1 -0
  44. package/dist/extraction/typescript.js +647 -0
  45. package/dist/extraction/typescript.js.map +1 -0
  46. package/dist/index.d.ts +9 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +329 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/resolver/package.d.ts +62 -0
  51. package/dist/resolver/package.d.ts.map +1 -0
  52. package/dist/resolver/package.js +334 -0
  53. package/dist/resolver/package.js.map +1 -0
  54. package/dist/tools/get-dependency.d.ts +55 -0
  55. package/dist/tools/get-dependency.d.ts.map +1 -0
  56. package/dist/tools/get-dependency.js +105 -0
  57. package/dist/tools/get-dependency.js.map +1 -0
  58. package/dist/tools/index-dependencies.d.ts +51 -0
  59. package/dist/tools/index-dependencies.d.ts.map +1 -0
  60. package/dist/tools/index-dependencies.js +90 -0
  61. package/dist/tools/index-dependencies.js.map +1 -0
  62. package/dist/tools/index-status.d.ts +36 -0
  63. package/dist/tools/index-status.d.ts.map +1 -0
  64. package/dist/tools/index-status.js +45 -0
  65. package/dist/tools/index-status.js.map +1 -0
  66. package/dist/tools/list.d.ts +48 -0
  67. package/dist/tools/list.d.ts.map +1 -0
  68. package/dist/tools/list.js +55 -0
  69. package/dist/tools/list.js.map +1 -0
  70. package/dist/tools/refresh.d.ts +59 -0
  71. package/dist/tools/refresh.d.ts.map +1 -0
  72. package/dist/tools/refresh.js +109 -0
  73. package/dist/tools/refresh.js.map +1 -0
  74. package/dist/tools/relationships.d.ts +41 -0
  75. package/dist/tools/relationships.d.ts.map +1 -0
  76. package/dist/tools/relationships.js +36 -0
  77. package/dist/tools/relationships.js.map +1 -0
  78. package/dist/tools/search-codebase.d.ts +64 -0
  79. package/dist/tools/search-codebase.d.ts.map +1 -0
  80. package/dist/tools/search-codebase.js +117 -0
  81. package/dist/tools/search-codebase.js.map +1 -0
  82. package/dist/tools/search.d.ts +37 -0
  83. package/dist/tools/search.d.ts.map +1 -0
  84. package/dist/tools/search.js +77 -0
  85. package/dist/tools/search.js.map +1 -0
  86. package/dist/utils/logger.d.ts +19 -0
  87. package/dist/utils/logger.d.ts.map +1 -0
  88. package/dist/utils/logger.js +71 -0
  89. package/dist/utils/logger.js.map +1 -0
  90. package/dist/vector/chroma.d.ts +38 -0
  91. package/dist/vector/chroma.d.ts.map +1 -0
  92. package/dist/vector/chroma.js +69 -0
  93. package/dist/vector/chroma.js.map +1 -0
  94. package/dist/vector/chunker.d.ts +29 -0
  95. package/dist/vector/chunker.d.ts.map +1 -0
  96. package/dist/vector/chunker.js +205 -0
  97. package/dist/vector/chunker.js.map +1 -0
  98. package/dist/vector/embeddings.d.ts +36 -0
  99. package/dist/vector/embeddings.d.ts.map +1 -0
  100. package/dist/vector/embeddings.js +106 -0
  101. package/dist/vector/embeddings.js.map +1 -0
  102. package/dist/vector/file-store.d.ts +10 -0
  103. package/dist/vector/file-store.d.ts.map +1 -0
  104. package/dist/vector/file-store.js +80 -0
  105. package/dist/vector/file-store.js.map +1 -0
  106. package/dist/vector/index-manager.d.ts +39 -0
  107. package/dist/vector/index-manager.d.ts.map +1 -0
  108. package/dist/vector/index-manager.js +105 -0
  109. package/dist/vector/index-manager.js.map +1 -0
  110. package/dist/vector/provider-factory.d.ts +23 -0
  111. package/dist/vector/provider-factory.d.ts.map +1 -0
  112. package/dist/vector/provider-factory.js +50 -0
  113. package/dist/vector/provider-factory.js.map +1 -0
  114. package/dist/vector/storage-factory.d.ts +17 -0
  115. package/dist/vector/storage-factory.d.ts.map +1 -0
  116. package/dist/vector/storage-factory.js +55 -0
  117. package/dist/vector/storage-factory.js.map +1 -0
  118. package/package.json +60 -0
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Embedding provider factory - auto-detects available providers
3
+ */
4
+ import { createOllamaProvider, createOpenAIProvider } from './embeddings.js';
5
+ async function checkOllamaAvailable(baseUrl) {
6
+ try {
7
+ const response = await fetch(`${baseUrl}/api/tags`, {
8
+ signal: AbortSignal.timeout(2000)
9
+ });
10
+ return response.ok;
11
+ }
12
+ catch {
13
+ return false;
14
+ }
15
+ }
16
+ export async function createEmbeddingProviderAuto(config) {
17
+ const ollamaUrl = config.ollama?.baseUrl ?? 'http://localhost:11434';
18
+ // Try configured provider first
19
+ if (config.provider === 'openai') {
20
+ const apiKey = config.openai?.apiKey;
21
+ if (!apiKey) {
22
+ return {
23
+ provider: null,
24
+ name: 'none',
25
+ message: 'OpenAI configured but OPENAI_API_KEY not set'
26
+ };
27
+ }
28
+ const provider = createOpenAIProvider({
29
+ apiKey,
30
+ model: config.openai?.model,
31
+ baseUrl: config.openai?.baseUrl
32
+ });
33
+ return { provider, name: 'openai', message: `Using OpenAI embeddings (${config.openai?.model ?? 'text-embedding-3-small'})` };
34
+ }
35
+ // Ollama (default)
36
+ const ollamaAvailable = await checkOllamaAvailable(ollamaUrl);
37
+ if (!ollamaAvailable) {
38
+ return {
39
+ provider: null,
40
+ name: 'none',
41
+ message: `Ollama not available at ${ollamaUrl}. Install from https://ollama.ai and run: ollama pull nomic-embed-text`
42
+ };
43
+ }
44
+ const provider = createOllamaProvider({
45
+ baseUrl: ollamaUrl,
46
+ model: config.ollama?.model
47
+ });
48
+ return { provider, name: 'ollama', message: `Using Ollama embeddings (${config.ollama?.model ?? 'nomic-embed-text'})` };
49
+ }
50
+ //# sourceMappingURL=provider-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../../src/vector/provider-factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAqB5E,KAAK,UAAU,oBAAoB,CAAC,OAAe;IACjD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,WAAW,EAAE;YAClD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,EAAE,CAAA;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,MAAuB;IACvE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,wBAAwB,CAAA;IAEpE,gCAAgC;IAChC,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAA;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,8CAA8C;aACxD,CAAA;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC;YACpC,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK;YAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO;SAChC,CAAC,CAAA;QACF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,4BAA4B,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,wBAAwB,GAAG,EAAE,CAAA;IAC/H,CAAC;IAED,mBAAmB;IACnB,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAA;IAC7D,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,2BAA2B,SAAS,wEAAwE;SACtH,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC;QACpC,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK;KAC5B,CAAC,CAAA;IACF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,4BAA4B,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,kBAAkB,GAAG,EAAE,CAAA;AACzH,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Storage factory - auto-detects available vector storage
3
+ */
4
+ import type { VectorStore } from './chroma.js';
5
+ export type StorageType = 'auto' | 'chroma' | 'file' | 'none';
6
+ export interface StorageConfig {
7
+ type: StorageType;
8
+ chromaHost?: string;
9
+ localPath?: string;
10
+ }
11
+ export interface StorageResult {
12
+ store: VectorStore | null;
13
+ tier: 'chroma' | 'file' | 'none';
14
+ message: string;
15
+ }
16
+ export declare function createStorage(config: StorageConfig): Promise<StorageResult>;
17
+ //# sourceMappingURL=storage-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-factory.d.ts","sourceRoot":"","sources":["../../src/vector/storage-factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAI9C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAE7D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;CAChB;AAaD,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CA0CjF"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Storage factory - auto-detects available vector storage
3
+ */
4
+ import { createChromaStore } from './chroma.js';
5
+ import { createFileStore } from './file-store.js';
6
+ async function checkChromaAvailable(host) {
7
+ try {
8
+ const response = await fetch(`${host}/api/v2/heartbeat`, {
9
+ signal: AbortSignal.timeout(2000)
10
+ });
11
+ return response.ok;
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ }
17
+ export async function createStorage(config) {
18
+ const chromaHost = config.chromaHost ?? 'http://localhost:8000';
19
+ const localPath = config.localPath ?? '.cache/dep-context/vectors/index.json';
20
+ // Explicit none
21
+ if (config.type === 'none') {
22
+ return { store: null, tier: 'none', message: 'Vector storage disabled' };
23
+ }
24
+ // Explicit chroma
25
+ if (config.type === 'chroma') {
26
+ const available = await checkChromaAvailable(chromaHost);
27
+ if (!available) {
28
+ return {
29
+ store: null,
30
+ tier: 'none',
31
+ message: `ChromaDB not available at ${chromaHost}`
32
+ };
33
+ }
34
+ const store = await createChromaStore({ host: chromaHost });
35
+ return { store, tier: 'chroma', message: `Using ChromaDB at ${chromaHost}` };
36
+ }
37
+ // Explicit file
38
+ if (config.type === 'file') {
39
+ const store = await createFileStore({ path: localPath });
40
+ return { store, tier: 'file', message: `Using file-based storage at ${localPath}` };
41
+ }
42
+ // Auto: try chroma first, fall back to file
43
+ const chromaAvailable = await checkChromaAvailable(chromaHost);
44
+ if (chromaAvailable) {
45
+ const store = await createChromaStore({ host: chromaHost });
46
+ return { store, tier: 'chroma', message: `Using ChromaDB at ${chromaHost}` };
47
+ }
48
+ const store = await createFileStore({ path: localPath });
49
+ return {
50
+ store,
51
+ tier: 'file',
52
+ message: `ChromaDB not available, using file-based storage. For better performance: docker run -d -p 8000:8000 chromadb/chroma`
53
+ };
54
+ }
55
+ //# sourceMappingURL=storage-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-factory.js","sourceRoot":"","sources":["../../src/vector/storage-factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAgBjD,KAAK,UAAU,oBAAoB,CAAC,IAAY;IAC9C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,mBAAmB,EAAE;YACvD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,EAAE,CAAA;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAqB;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,uBAAuB,CAAA;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,uCAAuC,CAAA;IAE7E,gBAAgB;IAChB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAA;IAC1E,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAA;QACxD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,6BAA6B,UAAU,EAAE;aACnD,CAAA;QACH,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;QAC3D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,UAAU,EAAE,EAAE,CAAA;IAC9E,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QACxD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,+BAA+B,SAAS,EAAE,EAAE,CAAA;IACrF,CAAC;IAED,4CAA4C;IAC5C,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAC9D,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;QAC3D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,UAAU,EAAE,EAAE,CAAA;IAC9E,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IACxD,OAAO;QACL,KAAK;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,sHAAsH;KAChI,CAAA;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "dep-context-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server providing AI coding assistants with dependency context from node_modules",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "dep-context-mcp": "dist/index.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "README.md"
14
+ ],
15
+ "keywords": [
16
+ "mcp",
17
+ "model-context-protocol",
18
+ "ai",
19
+ "coding-assistant",
20
+ "typescript",
21
+ "dependencies",
22
+ "node-modules"
23
+ ],
24
+ "scripts": {
25
+ "build": "node scripts/generate-build-info.js && tsc",
26
+ "dev": "tsc --watch",
27
+ "start": "node dist/index.js",
28
+ "test": "vitest run",
29
+ "test:watch": "vitest",
30
+ "lint": "eslint src/",
31
+ "clean": "rm -rf dist",
32
+ "release": "node scripts/release.js",
33
+ "generate-build-info": "node scripts/generate-build-info.js"
34
+ },
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "https://github.com/jarecsni/dep-context-mcp.git"
38
+ },
39
+ "author": "Johnny Jarecsni",
40
+ "license": "MIT",
41
+ "dependencies": {
42
+ "@modelcontextprotocol/sdk": "^1.0.0",
43
+ "chromadb": "^3.2.2",
44
+ "dotenv": "^17.2.3"
45
+ },
46
+ "devDependencies": {
47
+ "@fast-check/vitest": "^0.2.4",
48
+ "@types/node": "^22.0.0",
49
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
50
+ "@typescript-eslint/parser": "^8.0.0",
51
+ "@vitest/coverage-v8": "^2.1.9",
52
+ "eslint": "^9.0.0",
53
+ "fast-check": "^3.23.0",
54
+ "typescript": "^5.7.0",
55
+ "vitest": "^2.1.0"
56
+ },
57
+ "engines": {
58
+ "node": ">=20.0.0"
59
+ }
60
+ }