codevault 1.5.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/.env.example +75 -40
  2. package/README.md +112 -345
  3. package/dist/chunking/file-grouper.d.ts +1 -1
  4. package/dist/chunking/file-grouper.d.ts.map +1 -1
  5. package/dist/chunking/file-grouper.js +2 -19
  6. package/dist/chunking/file-grouper.js.map +1 -1
  7. package/dist/chunking/semantic-chunker.d.ts.map +1 -1
  8. package/dist/chunking/semantic-chunker.js +4 -19
  9. package/dist/chunking/semantic-chunker.js.map +1 -1
  10. package/dist/cli/commands/chat-cmd.d.ts +3 -0
  11. package/dist/cli/commands/chat-cmd.d.ts.map +1 -0
  12. package/dist/cli/commands/chat-cmd.js +194 -0
  13. package/dist/cli/commands/chat-cmd.js.map +1 -0
  14. package/dist/cli.js +5 -0
  15. package/dist/cli.js.map +1 -1
  16. package/dist/config/constants.d.ts +326 -0
  17. package/dist/config/constants.d.ts.map +1 -0
  18. package/dist/config/constants.js +214 -0
  19. package/dist/config/constants.js.map +1 -0
  20. package/dist/config/loader.d.ts.map +1 -1
  21. package/dist/config/loader.js +11 -3
  22. package/dist/config/loader.js.map +1 -1
  23. package/dist/core/batch-indexer.d.ts +14 -2
  24. package/dist/core/batch-indexer.d.ts.map +1 -1
  25. package/dist/core/batch-indexer.js +107 -79
  26. package/dist/core/batch-indexer.js.map +1 -1
  27. package/dist/core/indexer.d.ts.map +1 -1
  28. package/dist/core/indexer.js +4 -28
  29. package/dist/core/indexer.js.map +1 -1
  30. package/dist/core/search.d.ts.map +1 -1
  31. package/dist/core/search.js +8 -5
  32. package/dist/core/search.js.map +1 -1
  33. package/dist/database/db.d.ts +44 -5
  34. package/dist/database/db.d.ts.map +1 -1
  35. package/dist/database/db.js +270 -109
  36. package/dist/database/db.js.map +1 -1
  37. package/dist/mcp/schemas.d.ts +166 -0
  38. package/dist/mcp/schemas.d.ts.map +1 -0
  39. package/dist/mcp/schemas.js +159 -0
  40. package/dist/mcp/schemas.js.map +1 -0
  41. package/dist/mcp-server.js +31 -38
  42. package/dist/mcp-server.js.map +1 -1
  43. package/dist/providers/chat-llm.d.ts.map +1 -1
  44. package/dist/providers/chat-llm.js +4 -1
  45. package/dist/providers/chat-llm.js.map +1 -1
  46. package/dist/ranking/symbol-boost.d.ts.map +1 -1
  47. package/dist/ranking/symbol-boost.js +28 -7
  48. package/dist/ranking/symbol-boost.js.map +1 -1
  49. package/dist/storage/encrypted-chunks.d.ts.map +1 -1
  50. package/dist/storage/encrypted-chunks.js +3 -2
  51. package/dist/storage/encrypted-chunks.js.map +1 -1
  52. package/dist/symbols/extract.d.ts.map +1 -1
  53. package/dist/symbols/extract.js +27 -6
  54. package/dist/symbols/extract.js.map +1 -1
  55. package/dist/symbols/graph.d.ts.map +1 -1
  56. package/dist/symbols/graph.js +1 -1
  57. package/dist/symbols/graph.js.map +1 -1
  58. package/dist/synthesis/conversational-synthesizer.d.ts +61 -0
  59. package/dist/synthesis/conversational-synthesizer.d.ts.map +1 -0
  60. package/dist/synthesis/conversational-synthesizer.js +286 -0
  61. package/dist/synthesis/conversational-synthesizer.js.map +1 -0
  62. package/dist/utils/indexer-with-progress.d.ts.map +1 -1
  63. package/dist/utils/indexer-with-progress.js +12 -27
  64. package/dist/utils/indexer-with-progress.js.map +1 -1
  65. package/dist/utils/logger.d.ts +55 -0
  66. package/dist/utils/logger.d.ts.map +1 -0
  67. package/dist/utils/logger.js +121 -0
  68. package/dist/utils/logger.js.map +1 -0
  69. package/dist/utils/mutex.d.ts +63 -0
  70. package/dist/utils/mutex.d.ts.map +1 -0
  71. package/dist/utils/mutex.js +123 -0
  72. package/dist/utils/mutex.js.map +1 -0
  73. package/dist/utils/path-helpers.d.ts +27 -0
  74. package/dist/utils/path-helpers.d.ts.map +1 -0
  75. package/dist/utils/path-helpers.js +55 -0
  76. package/dist/utils/path-helpers.js.map +1 -0
  77. package/dist/utils/scan-patterns.d.ts +5 -0
  78. package/dist/utils/scan-patterns.d.ts.map +1 -0
  79. package/dist/utils/scan-patterns.js +29 -0
  80. package/dist/utils/scan-patterns.js.map +1 -0
  81. package/package.json +4 -3
  82. package/dist/providers/ollama.d.ts +0 -13
  83. package/dist/providers/ollama.d.ts.map +0 -1
  84. package/dist/providers/ollama.js +0 -50
  85. package/dist/providers/ollama.js.map +0 -1
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Mutex implementation for coordinating async operations
3
+ *
4
+ * Provides a proper mutex/lock mechanism to replace polling-based
5
+ * concurrency control patterns.
6
+ */
7
+ export class Mutex {
8
+ locked = false;
9
+ queue = [];
10
+ /**
11
+ * Check if the mutex is currently locked
12
+ */
13
+ isLocked() {
14
+ return this.locked;
15
+ }
16
+ /**
17
+ * Acquire the mutex lock
18
+ * Waits if already locked
19
+ */
20
+ async acquire() {
21
+ if (!this.locked) {
22
+ this.locked = true;
23
+ return;
24
+ }
25
+ // Wait for lock to be released
26
+ await new Promise((resolve) => {
27
+ this.queue.push(resolve);
28
+ });
29
+ }
30
+ /**
31
+ * Release the mutex lock
32
+ * Allows next queued operation to proceed
33
+ */
34
+ release() {
35
+ if (this.queue.length > 0) {
36
+ const resolve = this.queue.shift();
37
+ resolve();
38
+ }
39
+ else {
40
+ this.locked = false;
41
+ }
42
+ }
43
+ /**
44
+ * Run a function with automatic acquire/release
45
+ * Ensures lock is always released even if function throws
46
+ */
47
+ async runExclusive(fn) {
48
+ await this.acquire();
49
+ try {
50
+ return await fn();
51
+ }
52
+ finally {
53
+ this.release();
54
+ }
55
+ }
56
+ /**
57
+ * Get queue length (for debugging)
58
+ */
59
+ getQueueLength() {
60
+ return this.queue.length;
61
+ }
62
+ }
63
+ /**
64
+ * Async semaphore for limiting concurrent operations
65
+ */
66
+ export class Semaphore {
67
+ permits;
68
+ maxPermits;
69
+ queue = [];
70
+ constructor(permits) {
71
+ this.permits = permits;
72
+ this.maxPermits = permits;
73
+ }
74
+ /**
75
+ * Acquire a permit
76
+ */
77
+ async acquire() {
78
+ if (this.permits > 0) {
79
+ this.permits--;
80
+ return;
81
+ }
82
+ await new Promise((resolve) => {
83
+ this.queue.push(resolve);
84
+ });
85
+ }
86
+ /**
87
+ * Release a permit
88
+ */
89
+ release() {
90
+ if (this.queue.length > 0) {
91
+ const resolve = this.queue.shift();
92
+ resolve();
93
+ }
94
+ else {
95
+ this.permits = Math.min(this.permits + 1, this.maxPermits);
96
+ }
97
+ }
98
+ /**
99
+ * Run function with automatic acquire/release
100
+ */
101
+ async runExclusive(fn) {
102
+ await this.acquire();
103
+ try {
104
+ return await fn();
105
+ }
106
+ finally {
107
+ this.release();
108
+ }
109
+ }
110
+ /**
111
+ * Get available permits
112
+ */
113
+ getAvailablePermits() {
114
+ return this.permits;
115
+ }
116
+ /**
117
+ * Get queue length
118
+ */
119
+ getQueueLength() {
120
+ return this.queue.length;
121
+ }
122
+ }
123
+ //# sourceMappingURL=mutex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutex.js","sourceRoot":"","sources":["../../src/utils/mutex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,OAAO,KAAK;IACR,MAAM,GAAG,KAAK,CAAC;IACf,KAAK,GAAsB,EAAE,CAAC;IAEtC;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAI,EAAoB;QACxC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,SAAS;IACZ,OAAO,CAAS;IAChB,UAAU,CAAS;IACnB,KAAK,GAAsB,EAAE,CAAC;IAEtC,YAAY,OAAe;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAI,EAAoB;QACxC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Utility functions for path resolution and normalization
3
+ */
4
+ /**
5
+ * Resolves the project root path from various input options
6
+ * Supports multiple parameter names for backwards compatibility (project, directory, path)
7
+ *
8
+ * @param input - Object containing potential path parameters
9
+ * @returns Normalized path string, defaults to '.' if no path provided
10
+ */
11
+ export declare function resolveProjectRoot(input?: {
12
+ project?: string;
13
+ directory?: string;
14
+ path?: string;
15
+ }): string;
16
+ /**
17
+ * Wraps a function execution with quiet logging mode enabled
18
+ * Automatically restores previous environment state after execution
19
+ *
20
+ * @param fn - Async function to execute with quiet logging
21
+ * @param opts - Options for additional environment flags
22
+ * @returns Result of the wrapped function
23
+ */
24
+ export declare function withQuietLogs<T>(fn: () => Promise<T>, opts?: {
25
+ cacheModelProfile?: boolean;
26
+ }): Promise<T>;
27
+ //# sourceMappingURL=path-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/path-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAST;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,CAAC,EAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,CAAC,CAAC,CA2BZ"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Utility functions for path resolution and normalization
3
+ */
4
+ /**
5
+ * Resolves the project root path from various input options
6
+ * Supports multiple parameter names for backwards compatibility (project, directory, path)
7
+ *
8
+ * @param input - Object containing potential path parameters
9
+ * @returns Normalized path string, defaults to '.' if no path provided
10
+ */
11
+ export function resolveProjectRoot(input) {
12
+ if (!input) {
13
+ return '.';
14
+ }
15
+ const rawPath = input.project || input.directory || input.path || '.';
16
+ const trimmed = typeof rawPath === 'string' ? rawPath.trim() : '.';
17
+ return trimmed.length > 0 ? trimmed : '.';
18
+ }
19
+ /**
20
+ * Wraps a function execution with quiet logging mode enabled
21
+ * Automatically restores previous environment state after execution
22
+ *
23
+ * @param fn - Async function to execute with quiet logging
24
+ * @param opts - Options for additional environment flags
25
+ * @returns Result of the wrapped function
26
+ */
27
+ export async function withQuietLogs(fn, opts) {
28
+ const prevQuiet = process.env.CODEVAULT_QUIET;
29
+ const prevCache = process.env.CODEVAULT_MODEL_PROFILE_CACHED;
30
+ process.env.CODEVAULT_QUIET = 'true';
31
+ if (opts?.cacheModelProfile) {
32
+ process.env.CODEVAULT_MODEL_PROFILE_CACHED = 'true';
33
+ }
34
+ try {
35
+ return await fn();
36
+ }
37
+ finally {
38
+ // Restore previous state
39
+ if (prevQuiet === undefined) {
40
+ delete process.env.CODEVAULT_QUIET;
41
+ }
42
+ else {
43
+ process.env.CODEVAULT_QUIET = prevQuiet;
44
+ }
45
+ if (opts?.cacheModelProfile) {
46
+ if (prevCache === undefined) {
47
+ delete process.env.CODEVAULT_MODEL_PROFILE_CACHED;
48
+ }
49
+ else {
50
+ process.env.CODEVAULT_MODEL_PROFILE_CACHED = prevCache;
51
+ }
52
+ }
53
+ }
54
+ }
55
+ //# sourceMappingURL=path-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-helpers.js","sourceRoot":"","sources":["../../src/utils/path-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAIlC;IACC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC;IACtE,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAEnE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAoB,EACpB,IAAsC;IAEtC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;IAE7D,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC;IACrC,IAAI,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,MAAM,CAAC;IACtD,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,yBAAyB;QACzB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC;QAC1C,CAAC;QAED,IAAI,IAAI,EAAE,iBAAiB,EAAE,CAAC;YAC5B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,SAAS,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Default file and directory patterns to ignore during project scanning
3
+ */
4
+ export declare const DEFAULT_SCAN_IGNORES: string[];
5
+ //# sourceMappingURL=scan-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-patterns.d.ts","sourceRoot":"","sources":["../../src/utils/scan-patterns.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,oBAAoB,UAwBhC,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Default file and directory patterns to ignore during project scanning
3
+ */
4
+ export const DEFAULT_SCAN_IGNORES = [
5
+ '**/vendor/**',
6
+ '**/node_modules/**',
7
+ '**/.git/**',
8
+ '**/storage/**',
9
+ '**/dist/**',
10
+ '**/build/**',
11
+ '**/tmp/**',
12
+ '**/temp/**',
13
+ '**/.npm/**',
14
+ '**/.yarn/**',
15
+ '**/Library/**',
16
+ '**/System/**',
17
+ '**/.Trash/**',
18
+ '**/.codevault/**',
19
+ '**/codevault.codemap.json',
20
+ '**/codevault.codemap.json.backup-*',
21
+ '**/package-lock.json',
22
+ '**/yarn.lock',
23
+ '**/pnpm-lock.yaml',
24
+ '**/*.json',
25
+ '**/*.sh',
26
+ '**/examples/**',
27
+ '**/assets/**'
28
+ ];
29
+ //# sourceMappingURL=scan-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-patterns.js","sourceRoot":"","sources":["../../src/utils/scan-patterns.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,cAAc;IACd,oBAAoB;IACpB,YAAY;IACZ,eAAe;IACf,YAAY;IACZ,aAAa;IACb,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,eAAe;IACf,cAAc;IACd,cAAc;IACd,kBAAkB;IAClB,2BAA2B;IAC3B,oCAAoC;IACpC,sBAAsB;IACtB,cAAc;IACd,mBAAmB;IACnB,WAAW;IACX,SAAS;IACT,gBAAgB;IAChB,cAAc;CACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codevault",
3
- "version": "1.5.0",
3
+ "version": "1.6.1",
4
4
  "description": "AI-powered semantic code search via Model Context Protocol",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -48,6 +48,7 @@
48
48
  "@modelcontextprotocol/sdk": "^1.20.2",
49
49
  "@tree-sitter-grammars/tree-sitter-kotlin": "^1.1.0",
50
50
  "@tree-sitter-grammars/tree-sitter-markdown": "^0.3.2",
51
+ "better-sqlite3": "^11.10.0",
51
52
  "chalk": "^5.6.2",
52
53
  "chokidar": "^4.0.3",
53
54
  "cli-progress": "^3.12.0",
@@ -57,7 +58,6 @@
57
58
  "micromatch": "^4.0.8",
58
59
  "openai": "^6.7.0",
59
60
  "ora": "^9.0.0",
60
- "sqlite3": "^5.1.7",
61
61
  "tiktoken": "^1.0.22",
62
62
  "tree-sitter": "^0.25.0",
63
63
  "tree-sitter-bash": "^0.25.0",
@@ -86,10 +86,11 @@
86
86
  "zod": "^4.1.12"
87
87
  },
88
88
  "devDependencies": {
89
+ "@types/better-sqlite3": "^7.6.13",
89
90
  "@types/chokidar": "^1.7.5",
90
91
  "@types/cli-progress": "^3.11.6",
91
92
  "@types/micromatch": "^4.0.10",
92
- "@types/node": "^24.9.1",
93
+ "@types/node": "^24.10.0",
93
94
  "typescript": "^5.9.3"
94
95
  }
95
96
  }
@@ -1,13 +0,0 @@
1
- import { EmbeddingProvider } from './base.js';
2
- export declare class OllamaProvider extends EmbeddingProvider {
3
- private ollama;
4
- private model;
5
- rateLimiter: any;
6
- constructor(model?: string);
7
- init(): Promise<void>;
8
- generateEmbedding(text: string): Promise<number[]>;
9
- getDimensions(): number;
10
- getName(): string;
11
- getModelName(): string;
12
- }
13
- //# sourceMappingURL=ollama.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAKlB,MAAM,WAAW,CAAC;AAEnB,qBAAa,cAAe,SAAQ,iBAAiB;IACnD,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAS;IACtB,WAAW,EAAE,GAAG,CAAC;gBAEL,KAAK,SAA2G;IAMtH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAexD,aAAa,IAAI,MAAM;IASvB,OAAO,IAAI,MAAM;IAIjB,YAAY,IAAI,MAAM;CAGvB"}
@@ -1,50 +0,0 @@
1
- import { createRateLimiter } from '../utils/rate-limiter.js';
2
- import { EmbeddingProvider, getModelProfile } from './base.js';
3
- export class OllamaProvider extends EmbeddingProvider {
4
- ollama = null;
5
- model;
6
- rateLimiter;
7
- constructor(model = process.env.CODEVAULT_OLLAMA_EMBEDDING_MODEL || process.env.CODEVAULT_OLLAMA_MODEL || 'nomic-embed-text') {
8
- super();
9
- this.model = model;
10
- this.rateLimiter = createRateLimiter('Ollama');
11
- }
12
- async init() {
13
- if (!this.ollama) {
14
- try {
15
- const ollama = await import('ollama');
16
- this.ollama = ollama.default;
17
- }
18
- catch (error) {
19
- throw new Error('Ollama is not installed. Run: npm install ollama');
20
- }
21
- }
22
- }
23
- async generateEmbedding(text) {
24
- await this.init();
25
- const profile = await getModelProfile('Ollama', this.model);
26
- const maxChars = profile.maxChunkChars || 8000;
27
- return await this.rateLimiter.execute(async () => {
28
- const response = await this.ollama.embeddings({
29
- model: this.model,
30
- prompt: text.slice(0, maxChars)
31
- });
32
- return response.embedding;
33
- });
34
- }
35
- getDimensions() {
36
- if (process.env.CODEVAULT_EMBEDDING_DIMENSIONS || process.env.CODEVAULT_DIMENSIONS) {
37
- const dims = parseInt(process.env.CODEVAULT_EMBEDDING_DIMENSIONS || process.env.CODEVAULT_DIMENSIONS || '0', 10);
38
- if (!isNaN(dims) && dims > 0)
39
- return dims;
40
- }
41
- return 768;
42
- }
43
- getName() {
44
- return 'Ollama';
45
- }
46
- getModelName() {
47
- return this.model;
48
- }
49
- }
50
- //# sourceMappingURL=ollama.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,eAAe,EAIhB,MAAM,WAAW,CAAC;AAEnB,MAAM,OAAO,cAAe,SAAQ,iBAAiB;IAC3C,MAAM,GAAQ,IAAI,CAAC;IACnB,KAAK,CAAS;IACtB,WAAW,CAAM;IAEjB,YAAY,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,kBAAkB;QAC1H,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAY;QAClC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QAE/C,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;aAChC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,SAAS,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;YACjH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC5C,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO;QACL,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}