@jafreck/lore 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +42 -23
  2. package/dist/cli.js +35 -99
  3. package/dist/cli.js.map +1 -1
  4. package/dist/index.d.ts +24 -5
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +23 -4
  7. package/dist/index.js.map +1 -1
  8. package/dist/indexer/call-graph.d.ts +8 -4
  9. package/dist/indexer/call-graph.d.ts.map +1 -1
  10. package/dist/indexer/call-graph.js +150 -81
  11. package/dist/indexer/call-graph.js.map +1 -1
  12. package/dist/indexer/db.d.ts.map +1 -1
  13. package/dist/indexer/db.js +29 -3
  14. package/dist/indexer/db.js.map +1 -1
  15. package/dist/indexer/extractors/php.js +5 -1
  16. package/dist/indexer/extractors/php.js.map +1 -1
  17. package/dist/indexer/index.d.ts +27 -75
  18. package/dist/indexer/index.d.ts.map +1 -1
  19. package/dist/indexer/index.js +146 -904
  20. package/dist/indexer/index.js.map +1 -1
  21. package/dist/indexer/lsp/enrichment.d.ts +2 -0
  22. package/dist/indexer/lsp/enrichment.d.ts.map +1 -1
  23. package/dist/indexer/lsp/enrichment.js +67 -33
  24. package/dist/indexer/lsp/enrichment.js.map +1 -1
  25. package/dist/indexer/pipeline.d.ts +137 -0
  26. package/dist/indexer/pipeline.d.ts.map +1 -0
  27. package/dist/indexer/pipeline.js +84 -0
  28. package/dist/indexer/pipeline.js.map +1 -0
  29. package/dist/indexer/resolution-method.d.ts +40 -0
  30. package/dist/indexer/resolution-method.d.ts.map +1 -0
  31. package/dist/indexer/resolution-method.js +53 -0
  32. package/dist/indexer/resolution-method.js.map +1 -0
  33. package/dist/indexer/stages/dependency-api.d.ts +18 -0
  34. package/dist/indexer/stages/dependency-api.d.ts.map +1 -0
  35. package/dist/indexer/stages/dependency-api.js +174 -0
  36. package/dist/indexer/stages/dependency-api.js.map +1 -0
  37. package/dist/indexer/stages/docs-index.d.ts +20 -0
  38. package/dist/indexer/stages/docs-index.d.ts.map +1 -0
  39. package/dist/indexer/stages/docs-index.js +144 -0
  40. package/dist/indexer/stages/docs-index.js.map +1 -0
  41. package/dist/indexer/stages/embedding.d.ts +17 -0
  42. package/dist/indexer/stages/embedding.d.ts.map +1 -0
  43. package/dist/indexer/stages/embedding.js +217 -0
  44. package/dist/indexer/stages/embedding.js.map +1 -0
  45. package/dist/indexer/stages/import-resolution.d.ts +17 -0
  46. package/dist/indexer/stages/import-resolution.d.ts.map +1 -0
  47. package/dist/indexer/stages/import-resolution.js +47 -0
  48. package/dist/indexer/stages/import-resolution.js.map +1 -0
  49. package/dist/indexer/stages/index.d.ts +12 -0
  50. package/dist/indexer/stages/index.d.ts.map +1 -0
  51. package/dist/indexer/stages/index.js +12 -0
  52. package/dist/indexer/stages/index.js.map +1 -0
  53. package/dist/indexer/stages/lsp-enrichment.d.ts +48 -0
  54. package/dist/indexer/stages/lsp-enrichment.d.ts.map +1 -0
  55. package/dist/indexer/stages/lsp-enrichment.js +158 -0
  56. package/dist/indexer/stages/lsp-enrichment.js.map +1 -0
  57. package/dist/indexer/stages/source-index.d.ts +31 -0
  58. package/dist/indexer/stages/source-index.d.ts.map +1 -0
  59. package/dist/indexer/stages/source-index.js +314 -0
  60. package/dist/indexer/stages/source-index.js.map +1 -0
  61. package/dist/lore-server/db.d.ts +51 -4
  62. package/dist/lore-server/db.d.ts.map +1 -1
  63. package/dist/lore-server/db.js +74 -69
  64. package/dist/lore-server/db.js.map +1 -1
  65. package/dist/lore-server/server.d.ts +5 -0
  66. package/dist/lore-server/server.d.ts.map +1 -1
  67. package/dist/lore-server/server.js +51 -233
  68. package/dist/lore-server/server.js.map +1 -1
  69. package/dist/lore-server/tool-registry.d.ts +101 -0
  70. package/dist/lore-server/tool-registry.d.ts.map +1 -0
  71. package/dist/lore-server/tool-registry.js +227 -0
  72. package/dist/lore-server/tool-registry.js.map +1 -0
  73. package/dist/lore-server/tools/graph.d.ts +7 -0
  74. package/dist/lore-server/tools/graph.d.ts.map +1 -1
  75. package/dist/lore-server/tools/graph.js +64 -7
  76. package/dist/lore-server/tools/graph.js.map +1 -1
  77. package/dist/lore-server/tools/lookup.d.ts +9 -3
  78. package/dist/lore-server/tools/lookup.d.ts.map +1 -1
  79. package/dist/lore-server/tools/lookup.js +9 -4
  80. package/dist/lore-server/tools/lookup.js.map +1 -1
  81. package/dist/lore-server/tools/search.d.ts +4 -0
  82. package/dist/lore-server/tools/search.d.ts.map +1 -1
  83. package/dist/lore-server/tools/search.js +4 -0
  84. package/dist/lore-server/tools/search.js.map +1 -1
  85. package/dist/runtime.d.ts +88 -0
  86. package/dist/runtime.d.ts.map +1 -0
  87. package/dist/runtime.js +153 -0
  88. package/dist/runtime.js.map +1 -0
  89. package/package.json +12 -12
@@ -0,0 +1,88 @@
1
+ /**
2
+ * @module runtime
3
+ *
4
+ * `LoreRuntime` centralises the lifecycle of all long-lived resources that a
5
+ * Lore session needs: database handles, embedding providers, LSP coordinators,
6
+ * and file-change refreshers (watcher / poller).
7
+ *
8
+ * Both the CLI sub-commands and the MCP server dispatch through a single
9
+ * runtime instance so that startup, shutdown, and resource ownership are
10
+ * handled in one place.
11
+ */
12
+ import type { EmbeddingProvider } from './indexer/embedder.js';
13
+ import type { EffectiveLspSettings } from './indexer/lsp/config.js';
14
+ import type { WalkerConfig } from './indexer/walker.js';
15
+ import { type LoreLogger } from './logger.js';
16
+ /** Immutable bag of settings collected from CLI flags / programmatic callers. */
17
+ export interface RuntimeConfig {
18
+ /** Path to the Lore SQLite knowledge-base file. */
19
+ dbPath: string;
20
+ /** Root directory of the project being indexed. */
21
+ rootDir: string;
22
+ /** Walker configuration (globs, extensions, doc filters, etc.). */
23
+ walkerConfig: WalkerConfig;
24
+ /** Git branch / ref policy. */
25
+ branch?: string;
26
+ /** Embedding model identifier (default resolved internally). */
27
+ embeddingModel?: string;
28
+ /** LSP enrichment policy. `null` = disabled. */
29
+ lsp: EffectiveLspSettings | null;
30
+ /** Git history ingestion policy. */
31
+ history: boolean | {
32
+ depth?: number;
33
+ all?: boolean;
34
+ };
35
+ /** Whether to index dependency declarations (.d.ts, etc.). */
36
+ indexDependencies: boolean;
37
+ /** Whether to auto-seed notes from documentation files. */
38
+ docsAutoNotes: boolean;
39
+ /** Refresh mode: `'none'` (one-shot), `'watch'`, or `'poll'`. */
40
+ refreshMode: 'none' | 'watch' | 'poll';
41
+ }
42
+ /** Minimal interface shared by FileWatcher and FilePoller. */
43
+ export interface Refresher {
44
+ start(): void;
45
+ stop(): void;
46
+ }
47
+ /**
48
+ * Owns the lifecycle of all long-lived Lore resources.
49
+ *
50
+ * Typical usage:
51
+ * ```ts
52
+ * const runtime = new LoreRuntime(config);
53
+ * await runtime.start();
54
+ * // ... do work ...
55
+ * await runtime.shutdown();
56
+ * ```
57
+ */
58
+ export declare class LoreRuntime {
59
+ readonly config: RuntimeConfig;
60
+ readonly log: LoreLogger;
61
+ private _embedder;
62
+ private _refresher;
63
+ private _started;
64
+ constructor(config: RuntimeConfig, logger?: LoreLogger);
65
+ /** The live embedding provider, or `undefined` if embeddings are disabled. */
66
+ get embedder(): EmbeddingProvider | undefined;
67
+ /** The live file-change refresher, or `undefined` if refresh mode is `'none'`. */
68
+ get refresher(): Refresher | undefined;
69
+ get started(): boolean;
70
+ /**
71
+ * Initialise optional long-lived resources (embedder, watcher/poller).
72
+ *
73
+ * Safe to call multiple times — subsequent calls are no-ops.
74
+ */
75
+ start(): Promise<void>;
76
+ /**
77
+ * Gracefully tear down all managed resources.
78
+ *
79
+ * Safe to call multiple times — subsequent calls are no-ops.
80
+ */
81
+ shutdown(): Promise<void>;
82
+ /**
83
+ * Register process-level signal handlers (`SIGINT`, `SIGTERM`) that call
84
+ * `shutdown()` and exit. Convenience for CLI entry points.
85
+ */
86
+ installSignalHandlers(): void;
87
+ }
88
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzD,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,YAAY,EAAE,YAAY,CAAC;IAG3B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACjC,oCAAoC;IACpC,OAAO,EAAE,OAAO,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrD,8DAA8D;IAC9D,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,aAAa,EAAE,OAAO,CAAC;IACvB,iEAAiE;IACjE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CACxC;AAID,8DAA8D;AAC9D,MAAM,WAAW,SAAS;IACxB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;CACd;AAID;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IAEzB,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,UAAU;IAOtD,8EAA8E;IAC9E,IAAI,QAAQ,IAAI,iBAAiB,GAAG,SAAS,CAE5C;IAED,kFAAkF;IAClF,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,CAErC;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAID;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8D5B;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B;;;OAGG;IACH,qBAAqB,IAAI,IAAI;CAkB9B"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * @module runtime
3
+ *
4
+ * `LoreRuntime` centralises the lifecycle of all long-lived resources that a
5
+ * Lore session needs: database handles, embedding providers, LSP coordinators,
6
+ * and file-change refreshers (watcher / poller).
7
+ *
8
+ * Both the CLI sub-commands and the MCP server dispatch through a single
9
+ * runtime instance so that startup, shutdown, and resource ownership are
10
+ * handled in one place.
11
+ */
12
+ import { getLogger } from './logger.js';
13
+ // ─── LoreRuntime ──────────────────────────────────────────────────────────────
14
+ /**
15
+ * Owns the lifecycle of all long-lived Lore resources.
16
+ *
17
+ * Typical usage:
18
+ * ```ts
19
+ * const runtime = new LoreRuntime(config);
20
+ * await runtime.start();
21
+ * // ... do work ...
22
+ * await runtime.shutdown();
23
+ * ```
24
+ */
25
+ export class LoreRuntime {
26
+ config;
27
+ log;
28
+ _embedder = null;
29
+ _refresher = null;
30
+ _started = false;
31
+ constructor(config, logger) {
32
+ this.config = config;
33
+ this.log = logger ?? getLogger();
34
+ }
35
+ // ─── Accessors ─────────────────────────────────────────────────────────────
36
+ /** The live embedding provider, or `undefined` if embeddings are disabled. */
37
+ get embedder() {
38
+ return this._embedder ?? undefined;
39
+ }
40
+ /** The live file-change refresher, or `undefined` if refresh mode is `'none'`. */
41
+ get refresher() {
42
+ return this._refresher ?? undefined;
43
+ }
44
+ get started() {
45
+ return this._started;
46
+ }
47
+ // ─── Lifecycle ─────────────────────────────────────────────────────────────
48
+ /**
49
+ * Initialise optional long-lived resources (embedder, watcher/poller).
50
+ *
51
+ * Safe to call multiple times — subsequent calls are no-ops.
52
+ */
53
+ async start() {
54
+ if (this._started)
55
+ return;
56
+ this._started = true;
57
+ // ── Embedder ─────────────────────────────────────────────────────────────
58
+ if (this.config.embeddingModel) {
59
+ try {
60
+ const { SentenceTransformersProvider } = await import('./indexer/embedder.js');
61
+ const provider = new SentenceTransformersProvider(this.config.embeddingModel);
62
+ await provider.init();
63
+ this._embedder = provider;
64
+ this.log.startup('embedding model loaded', {
65
+ embeddingModel: this.config.embeddingModel,
66
+ embeddingReady: true,
67
+ });
68
+ }
69
+ catch {
70
+ this.log.warn('startup', 'embedding model unavailable, continuing without embeddings', { embeddingModel: this.config.embeddingModel });
71
+ }
72
+ }
73
+ // ── Refresher (watch / poll) ─────────────────────────────────────────────
74
+ if (this.config.refreshMode === 'watch') {
75
+ const { FileWatcher } = await import('./indexer/watcher.js');
76
+ const watcher = new FileWatcher(this.config.dbPath, this.config.walkerConfig, {
77
+ history: this.config.history,
78
+ indexDependencies: this.config.indexDependencies,
79
+ lsp: this.config.lsp ?? undefined,
80
+ embedder: this._embedder ?? undefined,
81
+ });
82
+ watcher.start();
83
+ this._refresher = watcher;
84
+ this.log.startup('watch mode started', {
85
+ rootDir: this.config.rootDir,
86
+ embeddingEnabled: !!this._embedder,
87
+ });
88
+ process.stderr.write(JSON.stringify({ level: 'info', source: 'cli', message: 'watch mode started', rootDir: this.config.rootDir, embeddingEnabled: !!this._embedder }) + '\n');
89
+ }
90
+ else if (this.config.refreshMode === 'poll') {
91
+ const { FilePoller } = await import('./indexer/poller.js');
92
+ const poller = new FilePoller(this.config.dbPath, this.config.walkerConfig, {
93
+ history: this.config.history,
94
+ indexDependencies: this.config.indexDependencies,
95
+ lsp: this.config.lsp ?? undefined,
96
+ embedder: this._embedder ?? undefined,
97
+ });
98
+ poller.start();
99
+ this._refresher = poller;
100
+ this.log.startup('poll mode started', {
101
+ rootDir: this.config.rootDir,
102
+ embeddingEnabled: !!this._embedder,
103
+ });
104
+ process.stderr.write(JSON.stringify({ level: 'info', source: 'cli', message: 'poll mode started', rootDir: this.config.rootDir, embeddingEnabled: !!this._embedder }) + '\n');
105
+ }
106
+ }
107
+ /**
108
+ * Gracefully tear down all managed resources.
109
+ *
110
+ * Safe to call multiple times — subsequent calls are no-ops.
111
+ */
112
+ async shutdown() {
113
+ if (!this._started)
114
+ return;
115
+ this._started = false;
116
+ if (this._refresher) {
117
+ this._refresher.stop();
118
+ this._refresher = null;
119
+ }
120
+ if (this._embedder) {
121
+ try {
122
+ await this._embedder.dispose();
123
+ }
124
+ catch {
125
+ /* best-effort */
126
+ }
127
+ this._embedder = null;
128
+ }
129
+ }
130
+ /**
131
+ * Register process-level signal handlers (`SIGINT`, `SIGTERM`) that call
132
+ * `shutdown()` and exit. Convenience for CLI entry points.
133
+ */
134
+ installSignalHandlers() {
135
+ const handler = () => {
136
+ // Stop refresher synchronously to match CLI expectations.
137
+ if (this._refresher) {
138
+ this._refresher.stop();
139
+ this._refresher = null;
140
+ }
141
+ // Dispose embedder best-effort in background, then exit.
142
+ if (this._embedder) {
143
+ this._embedder.dispose().catch(() => { });
144
+ this._embedder = null;
145
+ }
146
+ this._started = false;
147
+ process.exit(0);
148
+ };
149
+ process.on('SIGINT', handler);
150
+ process.on('SIGTERM', handler);
151
+ }
152
+ }
153
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jafreck/lore",
3
- "version": "0.2.5",
3
+ "version": "0.3.0",
4
4
  "description": "Language-aware codebase indexer — tree-sitter parsing, symbol extraction, call-graph construction, and optional embeddings for semantic search",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -61,36 +61,36 @@
61
61
  "fast-glob": "^3.3.3",
62
62
  "simple-git": "^3.32.3",
63
63
  "sqlite-vec": "^0.1.6",
64
- "tree-sitter": "0.22.4",
64
+ "tree-sitter": "0.25.0",
65
65
  "tree-sitter-bash": "^0.25.1",
66
- "tree-sitter-c": "^0.23.6",
67
- "tree-sitter-c-sharp": "0.23.1",
68
- "tree-sitter-cpp": "0.23.4",
66
+ "tree-sitter-c": "^0.24.1",
67
+ "tree-sitter-c-sharp": "^0.23.1",
68
+ "tree-sitter-cpp": "^0.23.4",
69
69
  "tree-sitter-dart": "^1.0.0",
70
70
  "tree-sitter-elixir": "^0.3.5",
71
71
  "tree-sitter-elm": "^4.5.0",
72
- "tree-sitter-go": "0.23.4",
72
+ "tree-sitter-go": ">=0.23.4",
73
73
  "tree-sitter-haskell": "^0.23.1",
74
- "tree-sitter-java": "0.23.5",
75
- "tree-sitter-javascript": "0.23.1",
74
+ "tree-sitter-java": "^0.23.5",
75
+ "tree-sitter-javascript": "^0.25.0",
76
76
  "tree-sitter-julia": "^0.23.1",
77
77
  "tree-sitter-kotlin": "^0.3.8",
78
78
  "tree-sitter-lua": "^2.1.3",
79
79
  "tree-sitter-objc": "^3.0.2",
80
80
  "tree-sitter-ocaml": "^0.24.2",
81
81
  "tree-sitter-php": "^0.24.2",
82
- "tree-sitter-python": "0.23.6",
82
+ "tree-sitter-python": ">=0.23.6",
83
83
  "tree-sitter-ruby": "^0.23.1",
84
- "tree-sitter-rust": "0.24.0",
84
+ "tree-sitter-rust": "^0.24.0",
85
85
  "tree-sitter-scala": "^0.24.0",
86
86
  "tree-sitter-swift": "^0.7.1",
87
- "tree-sitter-typescript": "0.23.2",
87
+ "tree-sitter-typescript": "^0.23.2",
88
88
  "tree-sitter-zig": "^0.2.0",
89
89
  "zod": "^4.3"
90
90
  },
91
91
  "devDependencies": {
92
92
  "@types/better-sqlite3": "^7.6.13",
93
- "@types/node": "^25",
93
+ "@types/node": "^22",
94
94
  "@vitest/coverage-v8": "^4.0",
95
95
  "typescript": "^5.9",
96
96
  "vitest": "^4.0"