@jafreck/lore 0.2.4 → 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.
- package/README.md +63 -35
- package/dist/cli.js +41 -38
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +24 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -4
- package/dist/index.js.map +1 -1
- package/dist/indexer/call-graph.d.ts +29 -8
- package/dist/indexer/call-graph.d.ts.map +1 -1
- package/dist/indexer/call-graph.js +232 -31
- package/dist/indexer/call-graph.js.map +1 -1
- package/dist/indexer/config-parser.js +6 -1
- package/dist/indexer/config-parser.js.map +1 -1
- package/dist/indexer/coverage.js +3 -1
- package/dist/indexer/coverage.js.map +1 -1
- package/dist/indexer/db.d.ts.map +1 -1
- package/dist/indexer/db.js +70 -1
- package/dist/indexer/db.js.map +1 -1
- package/dist/indexer/docs.d.ts.map +1 -1
- package/dist/indexer/docs.js +4 -0
- package/dist/indexer/docs.js.map +1 -1
- package/dist/indexer/embedder.d.ts.map +1 -1
- package/dist/indexer/embedder.js +5 -0
- package/dist/indexer/embedder.js.map +1 -1
- package/dist/indexer/extractors/bash.d.ts.map +1 -1
- package/dist/indexer/extractors/bash.js +29 -1
- package/dist/indexer/extractors/bash.js.map +1 -1
- package/dist/indexer/extractors/c.d.ts +5 -2
- package/dist/indexer/extractors/c.d.ts.map +1 -1
- package/dist/indexer/extractors/c.js +277 -8
- package/dist/indexer/extractors/c.js.map +1 -1
- package/dist/indexer/extractors/cpp.d.ts +5 -2
- package/dist/indexer/extractors/cpp.d.ts.map +1 -1
- package/dist/indexer/extractors/cpp.js +349 -3
- package/dist/indexer/extractors/cpp.js.map +1 -1
- package/dist/indexer/extractors/csharp.d.ts.map +1 -1
- package/dist/indexer/extractors/csharp.js +166 -1
- package/dist/indexer/extractors/csharp.js.map +1 -1
- package/dist/indexer/extractors/dart.d.ts.map +1 -1
- package/dist/indexer/extractors/dart.js +134 -1
- package/dist/indexer/extractors/dart.js.map +1 -1
- package/dist/indexer/extractors/elixir.d.ts.map +1 -1
- package/dist/indexer/extractors/elixir.js +45 -0
- package/dist/indexer/extractors/elixir.js.map +1 -1
- package/dist/indexer/extractors/elm.d.ts.map +1 -1
- package/dist/indexer/extractors/elm.js +33 -0
- package/dist/indexer/extractors/elm.js.map +1 -1
- package/dist/indexer/extractors/go.d.ts.map +1 -1
- package/dist/indexer/extractors/go.js +206 -1
- package/dist/indexer/extractors/go.js.map +1 -1
- package/dist/indexer/extractors/haskell.d.ts.map +1 -1
- package/dist/indexer/extractors/haskell.js +29 -0
- package/dist/indexer/extractors/haskell.js.map +1 -1
- package/dist/indexer/extractors/java.d.ts.map +1 -1
- package/dist/indexer/extractors/java.js +170 -1
- package/dist/indexer/extractors/java.js.map +1 -1
- package/dist/indexer/extractors/javascript.d.ts.map +1 -1
- package/dist/indexer/extractors/javascript.js +24 -2
- package/dist/indexer/extractors/javascript.js.map +1 -1
- package/dist/indexer/extractors/julia.d.ts.map +1 -1
- package/dist/indexer/extractors/julia.js +23 -1
- package/dist/indexer/extractors/julia.js.map +1 -1
- package/dist/indexer/extractors/kotlin.d.ts.map +1 -1
- package/dist/indexer/extractors/kotlin.js +122 -1
- package/dist/indexer/extractors/kotlin.js.map +1 -1
- package/dist/indexer/extractors/lua.d.ts.map +1 -1
- package/dist/indexer/extractors/lua.js +19 -1
- package/dist/indexer/extractors/lua.js.map +1 -1
- package/dist/indexer/extractors/objc.d.ts.map +1 -1
- package/dist/indexer/extractors/objc.js +171 -1
- package/dist/indexer/extractors/objc.js.map +1 -1
- package/dist/indexer/extractors/ocaml.d.ts.map +1 -1
- package/dist/indexer/extractors/ocaml.js +29 -0
- package/dist/indexer/extractors/ocaml.js.map +1 -1
- package/dist/indexer/extractors/php.d.ts.map +1 -1
- package/dist/indexer/extractors/php.js +137 -1
- package/dist/indexer/extractors/php.js.map +1 -1
- package/dist/indexer/extractors/python.d.ts.map +1 -1
- package/dist/indexer/extractors/python.js +24 -3
- package/dist/indexer/extractors/python.js.map +1 -1
- package/dist/indexer/extractors/ruby.d.ts.map +1 -1
- package/dist/indexer/extractors/ruby.js +23 -1
- package/dist/indexer/extractors/ruby.js.map +1 -1
- package/dist/indexer/extractors/rust.d.ts.map +1 -1
- package/dist/indexer/extractors/rust.js +139 -2
- package/dist/indexer/extractors/rust.js.map +1 -1
- package/dist/indexer/extractors/scala.d.ts.map +1 -1
- package/dist/indexer/extractors/scala.js +24 -1
- package/dist/indexer/extractors/scala.js.map +1 -1
- package/dist/indexer/extractors/swift.d.ts.map +1 -1
- package/dist/indexer/extractors/swift.js +129 -1
- package/dist/indexer/extractors/swift.js.map +1 -1
- package/dist/indexer/extractors/types.d.ts +78 -2
- package/dist/indexer/extractors/types.d.ts.map +1 -1
- package/dist/indexer/extractors/types.js +167 -8
- package/dist/indexer/extractors/types.js.map +1 -1
- package/dist/indexer/extractors/typescript.d.ts.map +1 -1
- package/dist/indexer/extractors/typescript.js +217 -1
- package/dist/indexer/extractors/typescript.js.map +1 -1
- package/dist/indexer/extractors/zig.d.ts.map +1 -1
- package/dist/indexer/extractors/zig.js +30 -0
- package/dist/indexer/extractors/zig.js.map +1 -1
- package/dist/indexer/git-history.d.ts.map +1 -1
- package/dist/indexer/git-history.js +4 -8
- package/dist/indexer/git-history.js.map +1 -1
- package/dist/indexer/git-hooks.js +1 -1
- package/dist/indexer/git-hooks.js.map +1 -1
- package/dist/indexer/index.d.ts +27 -52
- package/dist/indexer/index.d.ts.map +1 -1
- package/dist/indexer/index.js +146 -773
- package/dist/indexer/index.js.map +1 -1
- package/dist/indexer/lsp/client.d.ts.map +1 -1
- package/dist/indexer/lsp/client.js +40 -15
- package/dist/indexer/lsp/client.js.map +1 -1
- package/dist/indexer/lsp/config.d.ts.map +1 -1
- package/dist/indexer/lsp/config.js +18 -4
- package/dist/indexer/lsp/config.js.map +1 -1
- package/dist/indexer/lsp/enrichment.d.ts +2 -0
- package/dist/indexer/lsp/enrichment.d.ts.map +1 -1
- package/dist/indexer/lsp/enrichment.js +67 -33
- package/dist/indexer/lsp/enrichment.js.map +1 -1
- package/dist/indexer/pipeline.d.ts +137 -0
- package/dist/indexer/pipeline.d.ts.map +1 -0
- package/dist/indexer/pipeline.js +84 -0
- package/dist/indexer/pipeline.js.map +1 -0
- package/dist/indexer/poller.d.ts +8 -0
- package/dist/indexer/poller.d.ts.map +1 -1
- package/dist/indexer/poller.js +3 -1
- package/dist/indexer/poller.js.map +1 -1
- package/dist/indexer/resolution-method.d.ts +40 -0
- package/dist/indexer/resolution-method.d.ts.map +1 -0
- package/dist/indexer/resolution-method.js +53 -0
- package/dist/indexer/resolution-method.js.map +1 -0
- package/dist/indexer/resolver.d.ts.map +1 -1
- package/dist/indexer/resolver.js +8 -4
- package/dist/indexer/resolver.js.map +1 -1
- package/dist/indexer/stages/dependency-api.d.ts +18 -0
- package/dist/indexer/stages/dependency-api.d.ts.map +1 -0
- package/dist/indexer/stages/dependency-api.js +174 -0
- package/dist/indexer/stages/dependency-api.js.map +1 -0
- package/dist/indexer/stages/docs-index.d.ts +20 -0
- package/dist/indexer/stages/docs-index.d.ts.map +1 -0
- package/dist/indexer/stages/docs-index.js +144 -0
- package/dist/indexer/stages/docs-index.js.map +1 -0
- package/dist/indexer/stages/embedding.d.ts +17 -0
- package/dist/indexer/stages/embedding.d.ts.map +1 -0
- package/dist/indexer/stages/embedding.js +217 -0
- package/dist/indexer/stages/embedding.js.map +1 -0
- package/dist/indexer/stages/import-resolution.d.ts +17 -0
- package/dist/indexer/stages/import-resolution.d.ts.map +1 -0
- package/dist/indexer/stages/import-resolution.js +47 -0
- package/dist/indexer/stages/import-resolution.js.map +1 -0
- package/dist/indexer/stages/index.d.ts +12 -0
- package/dist/indexer/stages/index.d.ts.map +1 -0
- package/dist/indexer/stages/index.js +12 -0
- package/dist/indexer/stages/index.js.map +1 -0
- package/dist/indexer/stages/lsp-enrichment.d.ts +48 -0
- package/dist/indexer/stages/lsp-enrichment.d.ts.map +1 -0
- package/dist/indexer/stages/lsp-enrichment.js +158 -0
- package/dist/indexer/stages/lsp-enrichment.js.map +1 -0
- package/dist/indexer/stages/source-index.d.ts +31 -0
- package/dist/indexer/stages/source-index.d.ts.map +1 -0
- package/dist/indexer/stages/source-index.js +314 -0
- package/dist/indexer/stages/source-index.js.map +1 -0
- package/dist/indexer/watcher.d.ts +8 -0
- package/dist/indexer/watcher.d.ts.map +1 -1
- package/dist/indexer/watcher.js +18 -1
- package/dist/indexer/watcher.js.map +1 -1
- package/dist/lore-server/db.d.ts +51 -4
- package/dist/lore-server/db.d.ts.map +1 -1
- package/dist/lore-server/db.js +102 -93
- package/dist/lore-server/db.js.map +1 -1
- package/dist/lore-server/server.d.ts +5 -0
- package/dist/lore-server/server.d.ts.map +1 -1
- package/dist/lore-server/server.js +52 -273
- package/dist/lore-server/server.js.map +1 -1
- package/dist/lore-server/tool-registry.d.ts +101 -0
- package/dist/lore-server/tool-registry.d.ts.map +1 -0
- package/dist/lore-server/tool-registry.js +227 -0
- package/dist/lore-server/tool-registry.js.map +1 -0
- package/dist/lore-server/tools/graph.d.ts +11 -3
- package/dist/lore-server/tools/graph.d.ts.map +1 -1
- package/dist/lore-server/tools/graph.js +108 -13
- package/dist/lore-server/tools/graph.js.map +1 -1
- package/dist/lore-server/tools/lookup.d.ts +9 -3
- package/dist/lore-server/tools/lookup.d.ts.map +1 -1
- package/dist/lore-server/tools/lookup.js +9 -4
- package/dist/lore-server/tools/lookup.js.map +1 -1
- package/dist/lore-server/tools/notes.d.ts.map +1 -1
- package/dist/lore-server/tools/notes.js +6 -2
- package/dist/lore-server/tools/notes.js.map +1 -1
- package/dist/lore-server/tools/search.d.ts +4 -0
- package/dist/lore-server/tools/search.d.ts.map +1 -1
- package/dist/lore-server/tools/search.js +50 -14
- package/dist/lore-server/tools/search.js.map +1 -1
- package/dist/runtime.d.ts +88 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +153 -0
- package/dist/runtime.js.map +1 -0
- package/package.json +12 -12
|
@@ -18,13 +18,17 @@ export declare const toolDef: {
|
|
|
18
18
|
};
|
|
19
19
|
readonly query: {
|
|
20
20
|
readonly type: "string";
|
|
21
|
-
readonly description:
|
|
21
|
+
readonly description: "Symbol name or file path to look up (includes persisted enrichment metadata when available).";
|
|
22
22
|
};
|
|
23
23
|
readonly mode: {
|
|
24
24
|
readonly type: "string";
|
|
25
25
|
readonly enum: readonly ["exact", "semantic", "fused"];
|
|
26
26
|
readonly description: "For kind=\"symbol\", choose exact, semantic, or fused retrieval mode (default: \"exact\").";
|
|
27
27
|
};
|
|
28
|
+
readonly branch: {
|
|
29
|
+
readonly type: "string";
|
|
30
|
+
readonly description: "Optional branch to filter results.";
|
|
31
|
+
};
|
|
28
32
|
readonly match_mode: {
|
|
29
33
|
readonly type: "string";
|
|
30
34
|
readonly enum: readonly ["exact", "prefix", "contains"];
|
|
@@ -43,11 +47,13 @@ export declare const toolDef: {
|
|
|
43
47
|
readonly description: "For kind=\"symbol\": optional indexed file language filter.";
|
|
44
48
|
};
|
|
45
49
|
readonly limit: {
|
|
46
|
-
readonly type: "
|
|
50
|
+
readonly type: "integer";
|
|
51
|
+
readonly minimum: 0;
|
|
47
52
|
readonly description: "For kind=\"symbol\" with empty query: maximum rows to return (default 20).";
|
|
48
53
|
};
|
|
49
54
|
readonly offset: {
|
|
50
|
-
readonly type: "
|
|
55
|
+
readonly type: "integer";
|
|
56
|
+
readonly minimum: 0;
|
|
51
57
|
readonly description: "For kind=\"symbol\" with empty query: rows to skip before returning results (default 0).";
|
|
52
58
|
};
|
|
53
59
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../src/lore-server/tools/lookup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAWzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAInE,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../src/lore-server/tools/lookup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAWzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAInE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DV,CAAC;AAIX,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyCD,oEAAoE;AACpE,wBAAsB,OAAO,CAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,OAAO,CAAC,YAAY,CAAC,CA2EvB"}
|
|
@@ -20,14 +20,17 @@ export const toolDef = {
|
|
|
20
20
|
},
|
|
21
21
|
query: {
|
|
22
22
|
type: 'string',
|
|
23
|
-
description: '
|
|
24
|
-
'For kind="file": the exact file path stored in the index.',
|
|
23
|
+
description: 'Symbol name or file path to look up (includes persisted enrichment metadata when available).',
|
|
25
24
|
},
|
|
26
25
|
mode: {
|
|
27
26
|
type: 'string',
|
|
28
27
|
enum: ['exact', 'semantic', 'fused'],
|
|
29
28
|
description: 'For kind="symbol", choose exact, semantic, or fused retrieval mode (default: "exact").',
|
|
30
29
|
},
|
|
30
|
+
branch: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: 'Optional branch to filter results.',
|
|
33
|
+
},
|
|
31
34
|
match_mode: {
|
|
32
35
|
type: 'string',
|
|
33
36
|
enum: ['exact', 'prefix', 'contains'],
|
|
@@ -46,11 +49,13 @@ export const toolDef = {
|
|
|
46
49
|
description: 'For kind="symbol": optional indexed file language filter.',
|
|
47
50
|
},
|
|
48
51
|
limit: {
|
|
49
|
-
type: '
|
|
52
|
+
type: 'integer',
|
|
53
|
+
minimum: 0,
|
|
50
54
|
description: 'For kind="symbol" with empty query: maximum rows to return (default 20).',
|
|
51
55
|
},
|
|
52
56
|
offset: {
|
|
53
|
-
type: '
|
|
57
|
+
type: 'integer',
|
|
58
|
+
minimum: 0,
|
|
54
59
|
description: 'For kind="symbol" with empty query: rows to skip before returning results (default 0).',
|
|
55
60
|
},
|
|
56
61
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../../src/lore-server/tools/lookup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,WAAW,EACX,SAAS,EACT,qBAAqB,GAGtB,MAAM,UAAU,CAAC;AAGlB,iFAAiF;AAEjF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,+EAA+E;QAC/E,0KAA0K;QAC1K,4FAA4F;IAC9F,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACxB,WAAW,EAAE,wCAAwC;aACtD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../../src/lore-server/tools/lookup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../../src/lore-server/tools/notes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../../src/lore-server/tools/notes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAWzD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBxB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;CAevB,CAAC;AAEX,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,OAAO;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAYD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAiB,SAAQ,OAAO;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EACR,sBAAsB,GACtB,cAAc,GACd,aAAa,GACb,oBAAoB,GACpB,2BAA2B,GAC3B,IAAI,CAAC;IACT,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAuBD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAgC5F;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,GAAG,eAAe,CA4HpG;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAwB,CAAC;AAClD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CAAuB,CAAC;AAChD,eAAO,MAAM,YAAY,8BAAwB,CAAC;AAClD,eAAO,MAAM,WAAW,6BAAuB,CAAC"}
|
|
@@ -9,6 +9,10 @@ import Database from 'better-sqlite3';
|
|
|
9
9
|
const DEFAULT_SCOPE = 'global';
|
|
10
10
|
const DEFAULT_LIMIT = 20;
|
|
11
11
|
const MAX_LIMIT = 200;
|
|
12
|
+
/** Escape SQL LIKE wildcard characters (`%` and `_`) so they match literally. */
|
|
13
|
+
function escapeLikeWildcards(value) {
|
|
14
|
+
return value.replace(/[%_]/g, (ch) => `\\${ch}`);
|
|
15
|
+
}
|
|
12
16
|
export const loreNotesWriteToolDef = {
|
|
13
17
|
name: 'lore_notes_write',
|
|
14
18
|
description: 'Upsert an LLM-authored note in the knowledge base by key and scope. ' +
|
|
@@ -106,8 +110,8 @@ export function loreNotesReadHandler(db, args) {
|
|
|
106
110
|
}
|
|
107
111
|
const keyPrefix = args.key_prefix?.trim();
|
|
108
112
|
if (keyPrefix) {
|
|
109
|
-
where.push(
|
|
110
|
-
params.push(`${keyPrefix}%`);
|
|
113
|
+
where.push(`key LIKE ? ESCAPE '\\'`);
|
|
114
|
+
params.push(`${escapeLikeWildcards(keyPrefix)}%`);
|
|
111
115
|
}
|
|
112
116
|
const scope = args.scope?.trim();
|
|
113
117
|
if (scope) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notes.js","sourceRoot":"","sources":["../../../src/lore-server/tools/notes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"notes.js","sourceRoot":"","sources":["../../../src/lore-server/tools/notes.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,6 +76,10 @@ export declare const toolDef: {
|
|
|
76
76
|
readonly type: "string";
|
|
77
77
|
readonly description: "Optional documentation kind filter for semantic/fused doc-section results.";
|
|
78
78
|
};
|
|
79
|
+
readonly branch: {
|
|
80
|
+
readonly type: "string";
|
|
81
|
+
readonly description: "Optional branch to filter results. Query-time retrieval uses SQLite-only persisted data.";
|
|
82
|
+
};
|
|
79
83
|
};
|
|
80
84
|
readonly required: readonly ["query"];
|
|
81
85
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/lore-server/tools/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAKnE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,aAAa,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;IACnD,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4FAA4F;AAC5F,MAAM,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAItE,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/lore-server/tools/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAKnE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,aAAa,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;IACnD,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4FAA4F;AAC5F,MAAM,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAItE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDV,CAAC;AAIX,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,QAAQ,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,aAAa,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,sBAAsB,CAAC;AA2P3E,6DAA6D;AAC7D,wBAAsB,OAAO,CAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,YAAY,CAAC,CAuDvB"}
|
|
@@ -55,6 +55,10 @@ export const toolDef = {
|
|
|
55
55
|
type: 'string',
|
|
56
56
|
description: 'Optional documentation kind filter for semantic/fused doc-section results.',
|
|
57
57
|
},
|
|
58
|
+
branch: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
description: 'Optional branch to filter results. Query-time retrieval uses SQLite-only persisted data.',
|
|
61
|
+
},
|
|
58
62
|
},
|
|
59
63
|
required: ['query'],
|
|
60
64
|
},
|
|
@@ -71,6 +75,10 @@ function sanitizeFts5Query(query) {
|
|
|
71
75
|
// Escape interior double-quotes, then wrap in double-quotes for a phrase query.
|
|
72
76
|
return `"${query.replace(/"/g, '""')}"`;
|
|
73
77
|
}
|
|
78
|
+
/** Escape SQL LIKE wildcard characters (`%` and `_`) so they match literally. */
|
|
79
|
+
function escapeLikeWildcards(value) {
|
|
80
|
+
return value.replace(/[%_]/g, (ch) => `\\${ch}`);
|
|
81
|
+
}
|
|
74
82
|
function symbolEnrichmentProjection(db) {
|
|
75
83
|
let columns = new Set();
|
|
76
84
|
try {
|
|
@@ -89,9 +97,27 @@ function symbolEnrichmentProjection(db) {
|
|
|
89
97
|
].join(',\n ');
|
|
90
98
|
}
|
|
91
99
|
/** Run a structural BM25 FTS5 search and return ranked rows. */
|
|
92
|
-
function structuralSearch(db, query, limit, branch) {
|
|
100
|
+
function structuralSearch(db, query, limit, branch, filters) {
|
|
93
101
|
const safeQuery = sanitizeFts5Query(query);
|
|
94
|
-
const
|
|
102
|
+
const extraClauses = [];
|
|
103
|
+
const extraParams = [];
|
|
104
|
+
if (branch !== undefined) {
|
|
105
|
+
extraClauses.push('f.branch = ?');
|
|
106
|
+
extraParams.push(branch);
|
|
107
|
+
}
|
|
108
|
+
if (filters?.path_prefix) {
|
|
109
|
+
extraClauses.push(`f.path LIKE ? ESCAPE '\\'`);
|
|
110
|
+
extraParams.push(`${escapeLikeWildcards(filters.path_prefix)}%`);
|
|
111
|
+
}
|
|
112
|
+
if (filters?.language) {
|
|
113
|
+
extraClauses.push('f.language = ?');
|
|
114
|
+
extraParams.push(filters.language);
|
|
115
|
+
}
|
|
116
|
+
if (filters?.kind) {
|
|
117
|
+
extraClauses.push('s.kind = ?');
|
|
118
|
+
extraParams.push(filters.kind);
|
|
119
|
+
}
|
|
120
|
+
const extraSql = extraClauses.length > 0 ? ` AND ${extraClauses.join(' AND ')}` : '';
|
|
95
121
|
const enrichmentProjection = symbolEnrichmentProjection(db);
|
|
96
122
|
try {
|
|
97
123
|
const sql = `SELECT 'symbol' AS result_type,
|
|
@@ -103,10 +129,10 @@ function structuralSearch(db, query, limit, branch) {
|
|
|
103
129
|
FROM symbols_fts
|
|
104
130
|
JOIN symbols s ON s.rowid = symbols_fts.rowid
|
|
105
131
|
JOIN files f ON f.id = s.file_id
|
|
106
|
-
WHERE symbols_fts MATCH ?${
|
|
132
|
+
WHERE symbols_fts MATCH ?${extraSql}
|
|
107
133
|
ORDER BY score
|
|
108
134
|
LIMIT ?`;
|
|
109
|
-
const params =
|
|
135
|
+
const params = [safeQuery, ...extraParams, limit];
|
|
110
136
|
const rows = db.prepare(sql).all(...params);
|
|
111
137
|
return rows;
|
|
112
138
|
}
|
|
@@ -121,9 +147,9 @@ function structuralSearch(db, query, limit, branch) {
|
|
|
121
147
|
f.branch AS branch
|
|
122
148
|
FROM symbols s
|
|
123
149
|
JOIN files f ON f.id = s.file_id
|
|
124
|
-
WHERE s.name LIKE ?${
|
|
150
|
+
WHERE s.name LIKE ?${extraSql}
|
|
125
151
|
LIMIT ?`;
|
|
126
|
-
const params =
|
|
152
|
+
const params = [likeQuery, ...extraParams, limit];
|
|
127
153
|
return db.prepare(sql).all(...params);
|
|
128
154
|
}
|
|
129
155
|
}
|
|
@@ -148,12 +174,13 @@ function semanticSymbolSearch(db, queryVector, limit, branch) {
|
|
|
148
174
|
FROM symbol_embeddings
|
|
149
175
|
JOIN symbols s ON s.rowid = symbol_embeddings.rowid
|
|
150
176
|
JOIN files f ON f.id = s.file_id
|
|
151
|
-
WHERE embedding MATCH
|
|
177
|
+
WHERE embedding MATCH ?
|
|
178
|
+
AND k = ?${branchClause}
|
|
152
179
|
ORDER BY distance
|
|
153
180
|
LIMIT ?`;
|
|
154
181
|
const params = branch !== undefined
|
|
155
|
-
? [JSON.stringify(queryVector), branch, limit]
|
|
156
|
-
: [JSON.stringify(queryVector), limit];
|
|
182
|
+
? [JSON.stringify(queryVector), limit, branch, limit]
|
|
183
|
+
: [JSON.stringify(queryVector), limit, limit];
|
|
157
184
|
try {
|
|
158
185
|
return db.prepare(sql).all(...params);
|
|
159
186
|
}
|
|
@@ -161,7 +188,7 @@ function semanticSymbolSearch(db, queryVector, limit, branch) {
|
|
|
161
188
|
return [];
|
|
162
189
|
}
|
|
163
190
|
}
|
|
164
|
-
function semanticDocSectionSearch(db, queryVector, limit, branch) {
|
|
191
|
+
function semanticDocSectionSearch(db, queryVector, limit, branch, docFilters) {
|
|
165
192
|
if (!hasVirtualTable(db, 'doc_section_embeddings')) {
|
|
166
193
|
return [];
|
|
167
194
|
}
|
|
@@ -170,6 +197,8 @@ function semanticDocSectionSearch(db, queryVector, limit, branch) {
|
|
|
170
197
|
queryVector,
|
|
171
198
|
branch,
|
|
172
199
|
limit,
|
|
200
|
+
...(docFilters?.doc_path_prefix && { path: docFilters.doc_path_prefix }),
|
|
201
|
+
...(docFilters?.doc_kind && { kind: docFilters.doc_kind }),
|
|
173
202
|
});
|
|
174
203
|
return rows.map((row) => ({
|
|
175
204
|
result_type: 'doc_section',
|
|
@@ -196,13 +225,13 @@ function semanticDocSectionSearch(db, queryVector, limit, branch) {
|
|
|
196
225
|
* Attempt a semantic (cosine) search via the vec0 virtual table.
|
|
197
226
|
* Returns `null` when no embedder is available or the table has no rows.
|
|
198
227
|
*/
|
|
199
|
-
async function semanticSearch(db, query, limit, embedder, branch) {
|
|
228
|
+
async function semanticSearch(db, query, limit, embedder, branch, docFilters) {
|
|
200
229
|
try {
|
|
201
230
|
const [queryVec] = await embedder.embed([query]);
|
|
202
231
|
if (!queryVec)
|
|
203
232
|
return null;
|
|
204
233
|
const symbolRows = semanticSymbolSearch(db, queryVec, limit, branch);
|
|
205
|
-
const docRows = semanticDocSectionSearch(db, queryVec, limit, branch);
|
|
234
|
+
const docRows = semanticDocSectionSearch(db, queryVec, limit, branch, docFilters);
|
|
206
235
|
const rows = [...symbolRows, ...docRows]
|
|
207
236
|
.sort((a, b) => a.score - b.score)
|
|
208
237
|
.slice(0, limit);
|
|
@@ -248,7 +277,11 @@ export async function handler(db, args, embedder, observer) {
|
|
|
248
277
|
const start = Date.now();
|
|
249
278
|
const limit = args.limit ?? 20;
|
|
250
279
|
const mode = args.mode ?? 'structural';
|
|
251
|
-
const structural = structuralSearch(db, args.query, limit, args.branch
|
|
280
|
+
const structural = structuralSearch(db, args.query, limit, args.branch, {
|
|
281
|
+
path_prefix: args.path_prefix,
|
|
282
|
+
language: args.language,
|
|
283
|
+
kind: args.kind,
|
|
284
|
+
});
|
|
252
285
|
let result;
|
|
253
286
|
if (mode === 'structural') {
|
|
254
287
|
result = { results: structural, mode_used: 'structural' };
|
|
@@ -258,7 +291,10 @@ export async function handler(db, args, embedder, observer) {
|
|
|
258
291
|
result = { results: structural, mode_used: 'structural (no query-time embedder)' };
|
|
259
292
|
}
|
|
260
293
|
else {
|
|
261
|
-
const semantic = await semanticSearch(db, args.query, limit, embedder, args.branch
|
|
294
|
+
const semantic = await semanticSearch(db, args.query, limit, embedder, args.branch, {
|
|
295
|
+
doc_path_prefix: args.doc_path_prefix,
|
|
296
|
+
doc_kind: args.doc_kind,
|
|
297
|
+
});
|
|
262
298
|
if (mode === 'semantic') {
|
|
263
299
|
result = semantic
|
|
264
300
|
? { results: semantic, mode_used: 'semantic' }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/lore-server/tools/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AA8BrD,iFAAiF;AAEjF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,yFAAyF;QACzF,sDAAsD;QACtD,+FAA+F;QAC/F,oEAAoE;IACtE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sBAAsB;aACpC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC;gBACzC,WAAW,EAAE,sCAAsC;aACpD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;aACjE;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6DAA6D;aAC3E;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qDAAqD;aACnE;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iDAAiD;aAC/D;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mFAAmF;aACjG;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4EAA4E;aAC1F;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;CACO,CAAC;AAoDX;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,KAAa;IACtC,gFAAgF;IAChF,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED,SAAS,0BAA0B,CAAC,EAAqB;IACvD,IAAI,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,GAAG,EAA6B,CAAC;QACvF,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAC/D,CAAC;IAEF,OAAO;QACL,MAAM,CAAC,yBAAyB,CAAC;QACjC,MAAM,CAAC,sBAAsB,CAAC;QAC9B,MAAM,CAAC,gBAAgB,CAAC;QACxB,MAAM,CAAC,iBAAiB,CAAC;KAC1B,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/lore-server/tools/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/dist/runtime.js
ADDED
|
@@ -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
|