@contextosai/core 0.1.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 (58) hide show
  1. package/LICENSE +21 -0
  2. package/dist/config.d.ts +10 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +39 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/database.d.ts +24 -0
  7. package/dist/database.d.ts.map +1 -0
  8. package/dist/database.js +204 -0
  9. package/dist/database.js.map +1 -0
  10. package/dist/embeddings.d.ts +19 -0
  11. package/dist/embeddings.d.ts.map +1 -0
  12. package/dist/embeddings.js +102 -0
  13. package/dist/embeddings.js.map +1 -0
  14. package/dist/export.d.ts +6 -0
  15. package/dist/export.d.ts.map +1 -0
  16. package/dist/export.js +89 -0
  17. package/dist/export.js.map +1 -0
  18. package/dist/git-analyzer.d.ts +3 -0
  19. package/dist/git-analyzer.d.ts.map +1 -0
  20. package/dist/git-analyzer.js +88 -0
  21. package/dist/git-analyzer.js.map +1 -0
  22. package/dist/index.d.ts +14 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +14 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/indexer.d.ts +29 -0
  27. package/dist/indexer.d.ts.map +1 -0
  28. package/dist/indexer.js +188 -0
  29. package/dist/indexer.js.map +1 -0
  30. package/dist/mcp.d.ts +2 -0
  31. package/dist/mcp.d.ts.map +1 -0
  32. package/dist/mcp.js +95 -0
  33. package/dist/mcp.js.map +1 -0
  34. package/dist/parser.d.ts +10 -0
  35. package/dist/parser.d.ts.map +1 -0
  36. package/dist/parser.js +212 -0
  37. package/dist/parser.js.map +1 -0
  38. package/dist/rules.d.ts +5 -0
  39. package/dist/rules.d.ts.map +1 -0
  40. package/dist/rules.js +166 -0
  41. package/dist/rules.js.map +1 -0
  42. package/dist/scanner.d.ts +8 -0
  43. package/dist/scanner.d.ts.map +1 -0
  44. package/dist/scanner.js +51 -0
  45. package/dist/scanner.js.map +1 -0
  46. package/dist/search.d.ts +3 -0
  47. package/dist/search.d.ts.map +1 -0
  48. package/dist/search.js +20 -0
  49. package/dist/search.js.map +1 -0
  50. package/dist/vectors.d.ts +21 -0
  51. package/dist/vectors.d.ts.map +1 -0
  52. package/dist/vectors.js +92 -0
  53. package/dist/vectors.js.map +1 -0
  54. package/dist/watcher.d.ts +16 -0
  55. package/dist/watcher.d.ts.map +1 -0
  56. package/dist/watcher.js +102 -0
  57. package/dist/watcher.js.map +1 -0
  58. package/package.json +71 -0
@@ -0,0 +1,16 @@
1
+ export interface WatchOptions {
2
+ onEvent?: (message: string) => void;
3
+ }
4
+ export declare class FileWatcher {
5
+ private watcher;
6
+ private indexer;
7
+ private rootPath;
8
+ private debounceTimers;
9
+ private metadataRefreshTimer;
10
+ private changeCount;
11
+ constructor(rootPath: string);
12
+ private scheduleMetadataRefresh;
13
+ start(options?: WatchOptions): void;
14
+ stop(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAoD;IAC1E,OAAO,CAAC,oBAAoB,CAA8C;IAC1E,OAAO,CAAC,WAAW,CAAK;gBAEZ,QAAQ,EAAE,MAAM;IAK5B,OAAO,CAAC,uBAAuB;IAgB/B,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,IAAI;IA4DjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAe5B"}
@@ -0,0 +1,102 @@
1
+ import chokidar from 'chokidar';
2
+ import { relative } from 'node:path';
3
+ import { IGNORED_DIRS, SUPPORTED_EXTENSIONS } from '@contextosai/shared';
4
+ import { generateId } from './config.js';
5
+ import { Indexer } from './indexer.js';
6
+ export class FileWatcher {
7
+ watcher = null;
8
+ indexer;
9
+ rootPath;
10
+ debounceTimers = new Map();
11
+ metadataRefreshTimer = null;
12
+ changeCount = 0;
13
+ constructor(rootPath) {
14
+ this.rootPath = rootPath;
15
+ this.indexer = new Indexer(rootPath);
16
+ }
17
+ scheduleMetadataRefresh(onEvent) {
18
+ this.changeCount++;
19
+ if (this.metadataRefreshTimer)
20
+ clearTimeout(this.metadataRefreshTimer);
21
+ this.metadataRefreshTimer = setTimeout(async () => {
22
+ this.metadataRefreshTimer = null;
23
+ this.changeCount = 0;
24
+ try {
25
+ await this.indexer.refreshMetadata(onEvent);
26
+ onEvent?.('Refreshed architecture rules and agent context');
27
+ }
28
+ catch (err) {
29
+ const msg = err instanceof Error ? err.message : 'Metadata refresh failed';
30
+ onEvent?.(`Error: ${msg}`);
31
+ }
32
+ }, 30000);
33
+ }
34
+ start(options = {}) {
35
+ const { onEvent } = options;
36
+ this.watcher = chokidar.watch(this.rootPath, {
37
+ ignored: (path) => {
38
+ const parts = path.split(/[/\\]/);
39
+ return parts.some((p) => IGNORED_DIRS.has(p));
40
+ },
41
+ persistent: true,
42
+ ignoreInitial: true,
43
+ });
44
+ const scheduleReindex = (filePath, action) => {
45
+ const relPath = relative(this.rootPath, filePath);
46
+ const existing = this.debounceTimers.get(relPath);
47
+ if (existing)
48
+ clearTimeout(existing);
49
+ this.debounceTimers.set(relPath, setTimeout(() => {
50
+ void (async () => {
51
+ this.debounceTimers.delete(relPath);
52
+ onEvent?.(`${action}: ${relPath}`);
53
+ const db = this.indexer.getDatabase();
54
+ db.addActivity({
55
+ id: generateId(),
56
+ path: relPath,
57
+ action,
58
+ timestamp: new Date().toISOString(),
59
+ });
60
+ try {
61
+ if (action === 'deleted') {
62
+ db.deleteFile(relPath);
63
+ await this.indexer.getVectorStore().deleteByPath(relPath);
64
+ }
65
+ else {
66
+ const ext = '.' + relPath.split('.').pop()?.toLowerCase();
67
+ if (SUPPORTED_EXTENSIONS.has(ext)) {
68
+ await this.indexer.reindexFile(relPath);
69
+ }
70
+ }
71
+ this.scheduleMetadataRefresh(onEvent);
72
+ }
73
+ catch (err) {
74
+ const msg = err instanceof Error ? err.message : 'Reindex failed';
75
+ onEvent?.(`Error reindexing ${relPath}: ${msg}`);
76
+ }
77
+ })();
78
+ }, 500));
79
+ };
80
+ this.watcher
81
+ .on('add', (path) => scheduleReindex(path, 'created'))
82
+ .on('change', (path) => scheduleReindex(path, 'modified'))
83
+ .on('unlink', (path) => scheduleReindex(path, 'deleted'));
84
+ onEvent?.('Watching for file changes...');
85
+ }
86
+ async stop() {
87
+ if (this.watcher) {
88
+ await this.watcher.close();
89
+ this.watcher = null;
90
+ }
91
+ if (this.metadataRefreshTimer) {
92
+ clearTimeout(this.metadataRefreshTimer);
93
+ this.metadataRefreshTimer = null;
94
+ }
95
+ for (const timer of this.debounceTimers.values()) {
96
+ clearTimeout(timer);
97
+ }
98
+ this.debounceTimers.clear();
99
+ await this.indexer.close();
100
+ }
101
+ }
102
+ //# sourceMappingURL=watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@contextosai/core",
3
+ "version": "0.1.0",
4
+ "description": "Core indexing and memory engine for ContextOS",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.js"
14
+ },
15
+ "./database": {
16
+ "types": "./dist/database.d.ts",
17
+ "import": "./dist/database.js",
18
+ "require": "./dist/database.js"
19
+ },
20
+ "./config": {
21
+ "types": "./dist/config.d.ts",
22
+ "import": "./dist/config.js",
23
+ "require": "./dist/config.js"
24
+ },
25
+ "./search": {
26
+ "types": "./dist/search.d.ts",
27
+ "import": "./dist/search.js",
28
+ "require": "./dist/search.js"
29
+ }
30
+ },
31
+ "files": [
32
+ "dist"
33
+ ],
34
+ "dependencies": {
35
+ "@lancedb/lancedb": "^0.17.0",
36
+ "@modelcontextprotocol/sdk": "^1.12.1",
37
+ "@xenova/transformers": "^2.17.2",
38
+ "apache-arrow": "^18.1.0",
39
+ "better-sqlite3": "^11.7.0",
40
+ "chokidar": "^4.0.3",
41
+ "simple-git": "^3.27.0",
42
+ "tree-sitter": "^0.22.4",
43
+ "tree-sitter-javascript": "^0.23.1",
44
+ "tree-sitter-python": "^0.23.6",
45
+ "tree-sitter-typescript": "^0.23.2",
46
+ "web-tree-sitter": "^0.24.7",
47
+ "zod": "^3.24.1",
48
+ "@contextosai/shared": "0.1.0"
49
+ },
50
+ "devDependencies": {
51
+ "@types/better-sqlite3": "^7.6.12",
52
+ "typescript": "^5.7.2",
53
+ "vitest": "^2.1.8"
54
+ },
55
+ "publishConfig": {
56
+ "access": "public"
57
+ },
58
+ "repository": {
59
+ "type": "git",
60
+ "url": "https://github.com/vihaannarkhede29/contextos.git"
61
+ },
62
+ "engines": {
63
+ "node": ">=20"
64
+ },
65
+ "scripts": {
66
+ "build": "tsc",
67
+ "dev": "tsc --watch",
68
+ "lint": "tsc --noEmit",
69
+ "test": "vitest run"
70
+ }
71
+ }