dsh-locator 0.7.7 → 0.8.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.
- package/CHANGELOG.md +24 -0
- package/README-es.md +9 -12
- package/README-hi.md +9 -12
- package/README-pt.md +9 -12
- package/README.en.md +10 -13
- package/README.md +10 -12
- package/client.js +858 -320
- package/lib/combined.d.ts +110 -0
- package/lib/combined.d.ts.map +1 -0
- package/lib/combined.js +190 -0
- package/lib/combined.js.map +1 -0
- package/lib/content-search.d.ts.map +1 -1
- package/lib/content-search.js +3 -0
- package/lib/content-search.js.map +1 -1
- package/lib/content.d.ts +2 -0
- package/lib/content.d.ts.map +1 -1
- package/lib/content.js +21 -6
- package/lib/content.js.map +1 -1
- package/lib/find.d.ts.map +1 -1
- package/lib/find.js +1 -0
- package/lib/find.js.map +1 -1
- package/lib/http.d.ts.map +1 -1
- package/lib/http.js +30 -2
- package/lib/http.js.map +1 -1
- package/package.json +1 -1
- package/src/combined.ts +267 -0
- package/src/content-search.ts +3 -0
- package/src/content.ts +24 -7
- package/src/find.ts +1 -0
- package/src/http.ts +36 -2
package/lib/find.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.js","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"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"}
|
package/lib/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,cAAc,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,cAAc,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAgChD,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAwDhH"}
|
package/lib/http.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* service, and the plugin still works there through its tools.
|
|
12
12
|
* @module dsh-locator/http
|
|
13
13
|
*/
|
|
14
|
+
import { readCombinedRequest, runCombinedSearch } from "./combined.js";
|
|
14
15
|
import { openWithDefaultApp, revealInFileManager, withinRoots } from "./reveal.js";
|
|
15
16
|
import { statSync } from 'node:fs';
|
|
16
17
|
const BODY_LIMIT = 64 * 1024;
|
|
@@ -31,13 +32,18 @@ export function registerHttp(ctx, rt, content, ensure) {
|
|
|
31
32
|
scoped.effect(() => server.register({
|
|
32
33
|
kind: 'exact',
|
|
33
34
|
path: '/dsh-locator/status',
|
|
34
|
-
handler: handler(scoped, async () => await status(rt)),
|
|
35
|
+
handler: handler(scoped, async () => await status(rt, content)),
|
|
35
36
|
}));
|
|
36
37
|
scoped.effect(() => server.register({
|
|
37
38
|
kind: 'exact',
|
|
38
39
|
path: '/dsh-locator/reveal',
|
|
39
40
|
handler: handler(scoped, async (body) => await reveal(rt, body)),
|
|
40
41
|
}));
|
|
42
|
+
scoped.effect(() => server.register({
|
|
43
|
+
kind: 'exact',
|
|
44
|
+
path: '/dsh-locator/combined',
|
|
45
|
+
handler: handler(scoped, async (body) => await combined(rt, content, ensure, body)),
|
|
46
|
+
}));
|
|
41
47
|
if (content !== undefined) {
|
|
42
48
|
scoped.effect(() => server.register({
|
|
43
49
|
kind: 'exact',
|
|
@@ -117,6 +123,26 @@ async function search(rt, raw) {
|
|
|
117
123
|
hits: result.hits,
|
|
118
124
|
};
|
|
119
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* One panel search across all enabled scopes. The stores are injected so the
|
|
128
|
+
* orchestration (scope gating, lazy-build guard, de-duplication) stays testable
|
|
129
|
+
* without an HTTP request or an engine process.
|
|
130
|
+
*/
|
|
131
|
+
async function combined(rt, content, ensure, raw) {
|
|
132
|
+
rt.start();
|
|
133
|
+
const deps = {
|
|
134
|
+
search: async (args) => await rt.search(args),
|
|
135
|
+
maxResults: rt.config.maxResults,
|
|
136
|
+
...(content === undefined ? {} : {
|
|
137
|
+
contentSearch: async (query, limit) => await content.search(query, limit),
|
|
138
|
+
contentStatus: () => content.status(),
|
|
139
|
+
...(ensure === undefined ? {} : { ensure }),
|
|
140
|
+
}),
|
|
141
|
+
};
|
|
142
|
+
const request = readCombinedRequest(raw, rt.config.maxResults);
|
|
143
|
+
const result = await runCombinedSearch(deps, request);
|
|
144
|
+
return { query: request.query, ...result };
|
|
145
|
+
}
|
|
120
146
|
async function reveal(rt, raw) {
|
|
121
147
|
const path = typeof raw.path === 'string' ? raw.path : '';
|
|
122
148
|
if (path === '' || !withinRoots(path, rt.roots)) {
|
|
@@ -159,9 +185,10 @@ async function openPath(rt, raw) {
|
|
|
159
185
|
return { ok: false, error: messageOf(error) };
|
|
160
186
|
}
|
|
161
187
|
}
|
|
162
|
-
async function status(rt) {
|
|
188
|
+
async function status(rt, content) {
|
|
163
189
|
rt.start();
|
|
164
190
|
const engine = await rt.engineStatus();
|
|
191
|
+
const contentState = content === undefined ? { enabled: false } : { enabled: true, ...content.status() };
|
|
165
192
|
return {
|
|
166
193
|
running: rt.status.running,
|
|
167
194
|
entries: engine?.entries ?? 0,
|
|
@@ -173,6 +200,7 @@ async function status(rt) {
|
|
|
173
200
|
scanning: engine?.scanning === true || rt.status.scanning !== undefined,
|
|
174
201
|
stateDir: engine?.stateDir ?? rt.stateDir,
|
|
175
202
|
version: engine?.version ?? '',
|
|
203
|
+
content: contentState,
|
|
176
204
|
...(rt.status.error === undefined ? {} : { error: rt.status.error }),
|
|
177
205
|
...(rt.status.warning === undefined ? {} : { warning: rt.status.warning }),
|
|
178
206
|
};
|
package/lib/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-locator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "Whole-disk, millisecond file search for DeepSeek Harness without Everything: a self-built cross-platform index, an Everything-style query language, agent tools and a Web search panel (Ctrl+Shift+F). Windows, macOS and Linux.",
|
|
5
5
|
"author": "PerryLink contributors",
|
|
6
6
|
"repository": {
|
package/src/combined.ts
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combined search: one request for the three scopes the Web panel shows by
|
|
3
|
+
* default — content (bodies and sessions), files and directories.
|
|
4
|
+
*
|
|
5
|
+
* The name index and the content index live in different stores, so this module
|
|
6
|
+
* owns the orchestration and the merge rules as pure, injectable functions:
|
|
7
|
+
* scope gating, the lazy-build guard for empty queries, per-group degradation
|
|
8
|
+
* and de-duplication of a path that appears both as a body hit and a name hit.
|
|
9
|
+
* @module dsh-locator/combined
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { ContentHit, ContentState } from './content.ts'
|
|
13
|
+
import type { SearchArgs, SearchHit, SearchResult } from './runtime.ts'
|
|
14
|
+
|
|
15
|
+
/** Which groups a combined request asked for; every scope is on by default. */
|
|
16
|
+
export interface CombinedScopes {
|
|
17
|
+
content: boolean
|
|
18
|
+
files: boolean
|
|
19
|
+
dirs: boolean
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** A validated combined request with per-group limits already clamped. */
|
|
23
|
+
export interface CombinedRequest {
|
|
24
|
+
query: string
|
|
25
|
+
limit: number
|
|
26
|
+
contentLimit: number
|
|
27
|
+
sort: string
|
|
28
|
+
desc: boolean
|
|
29
|
+
scopes: CombinedScopes
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** One name-index group: files or directories. */
|
|
33
|
+
export interface NameGroup {
|
|
34
|
+
hits: SearchHit[]
|
|
35
|
+
returned: number
|
|
36
|
+
total: number
|
|
37
|
+
truncated: boolean
|
|
38
|
+
/** Rows dropped because the same path already appears in the content group. */
|
|
39
|
+
deduped: number
|
|
40
|
+
tookMs: number
|
|
41
|
+
error?: string
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** The content group: body/session hits plus the index state at query time. */
|
|
45
|
+
export interface ContentGroup {
|
|
46
|
+
hits: ContentHit[]
|
|
47
|
+
returned: number
|
|
48
|
+
/** True when the group was cut off by its page limit. */
|
|
49
|
+
capped: boolean
|
|
50
|
+
building: boolean
|
|
51
|
+
files: number
|
|
52
|
+
sessions: number
|
|
53
|
+
messages: number
|
|
54
|
+
truncated: boolean
|
|
55
|
+
/** Wall-clock time of the content lookup; 0 when it was skipped. */
|
|
56
|
+
tookMs: number
|
|
57
|
+
error?: string
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** Everything the panel needs from one combined search. */
|
|
61
|
+
export interface CombinedResponse {
|
|
62
|
+
scopes: CombinedScopes
|
|
63
|
+
/** False when the plugin runs with `contentIndex: false`. */
|
|
64
|
+
contentEnabled: boolean
|
|
65
|
+
content?: ContentGroup
|
|
66
|
+
files?: NameGroup
|
|
67
|
+
dirs?: NameGroup
|
|
68
|
+
tookMs: number
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** Dependencies required to run a combined search; the HTTP layer supplies them. */
|
|
72
|
+
export interface CombinedDeps {
|
|
73
|
+
search(args: SearchArgs): Promise<SearchResult>
|
|
74
|
+
contentSearch?: (query: string, limit: number) => Promise<ContentHit[]>
|
|
75
|
+
contentStatus?: () => ContentState
|
|
76
|
+
ensure?: () => void
|
|
77
|
+
maxResults: number
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Read the three scope flags from a request body. Anything that is not an
|
|
82
|
+
* explicit `false` counts as enabled, so a panel that only sends `{ content:
|
|
83
|
+
* true }` still gets the name groups.
|
|
84
|
+
* @param body - parsed request body.
|
|
85
|
+
* @returns normalized scopes.
|
|
86
|
+
*/
|
|
87
|
+
export function readScopes(body: Record<string, unknown>): CombinedScopes {
|
|
88
|
+
return {
|
|
89
|
+
content: body.content !== false,
|
|
90
|
+
files: body.files !== false,
|
|
91
|
+
dirs: body.dirs !== false,
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Validate and clamp a combined request body. The two pages have separate
|
|
97
|
+
* limits: content hits are heavier (bodies/snippets) than name rows.
|
|
98
|
+
* @param body - parsed request body.
|
|
99
|
+
* @param maxResults - the plugin's hard per-page cap.
|
|
100
|
+
* @returns a normalized request.
|
|
101
|
+
*/
|
|
102
|
+
export function readCombinedRequest(body: Record<string, unknown>, maxResults: number): CombinedRequest {
|
|
103
|
+
const nameLimit = clamp(body.limit, 1, Math.max(1, maxResults), 50)
|
|
104
|
+
const contentLimit = clamp(body.contentLimit, 1, 100, 30)
|
|
105
|
+
return {
|
|
106
|
+
query: typeof body.query === 'string' ? body.query : '',
|
|
107
|
+
limit: nameLimit,
|
|
108
|
+
contentLimit,
|
|
109
|
+
sort: sortKey(body.sort),
|
|
110
|
+
desc: body.desc === true,
|
|
111
|
+
scopes: readScopes(body),
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Drop name hits whose path is already present in the content group. Content
|
|
117
|
+
* rows carry the snippet and the jump target, so one row per path is enough;
|
|
118
|
+
* directories are never dropped.
|
|
119
|
+
* @param contentHits - body/session hits from the content index.
|
|
120
|
+
* @param nameHits - hits from the name index.
|
|
121
|
+
* @returns the kept hits and how many were dropped.
|
|
122
|
+
*/
|
|
123
|
+
export function dedupeNameHits(
|
|
124
|
+
contentHits: readonly ContentHit[],
|
|
125
|
+
nameHits: readonly SearchHit[],
|
|
126
|
+
): { hits: SearchHit[], deduped: number } {
|
|
127
|
+
const seen = new Set<string>()
|
|
128
|
+
for (const hit of contentHits) seen.add(hit.path)
|
|
129
|
+
if (seen.size === 0) return { hits: [...nameHits], deduped: 0 }
|
|
130
|
+
const hits: SearchHit[] = []
|
|
131
|
+
let deduped = 0
|
|
132
|
+
for (const hit of nameHits) {
|
|
133
|
+
if (!hit.dir && seen.has(hit.path)) {
|
|
134
|
+
deduped++
|
|
135
|
+
continue
|
|
136
|
+
}
|
|
137
|
+
hits.push(hit)
|
|
138
|
+
}
|
|
139
|
+
return { hits, deduped }
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Run one combined search. Empty queries never touch the content index: the
|
|
144
|
+
* panel opens with an empty box, and a lazy content build there would cost
|
|
145
|
+
* minutes and gigabytes for no results. Failures are contained per group so a
|
|
146
|
+
* broken content cache still shows name results.
|
|
147
|
+
* @param deps - stores and the lazy-start hook.
|
|
148
|
+
* @param request - normalized request.
|
|
149
|
+
* @returns grouped result in content → files → dirs order.
|
|
150
|
+
*/
|
|
151
|
+
export async function runCombinedSearch(deps: CombinedDeps, request: CombinedRequest): Promise<CombinedResponse> {
|
|
152
|
+
const started = Date.now()
|
|
153
|
+
const { scopes, query } = request
|
|
154
|
+
const contentEnabled = deps.contentSearch !== undefined
|
|
155
|
+
const wantsContent = scopes.content && contentEnabled
|
|
156
|
+
// Two characters are the floor for the content store: one-character queries
|
|
157
|
+
// fall back to an unindexed LIKE scan and are not worth a build or a query.
|
|
158
|
+
const askContent = wantsContent && query.trim().length >= 2
|
|
159
|
+
|
|
160
|
+
const contentPromise = wantsContent ? contentGroup(deps, request, askContent) : Promise.resolve(undefined)
|
|
161
|
+
const filesPromise = scopes.files ? nameGroup(deps, request, true) : Promise.resolve(undefined)
|
|
162
|
+
const dirsPromise = scopes.dirs ? nameGroup(deps, request, false) : Promise.resolve(undefined)
|
|
163
|
+
const [content, files, dirs] = await Promise.all([contentPromise, filesPromise, dirsPromise])
|
|
164
|
+
|
|
165
|
+
const dedupedFiles = files === undefined
|
|
166
|
+
? undefined
|
|
167
|
+
: (() => {
|
|
168
|
+
const result = dedupeNameHits(content?.hits ?? [], files.hits)
|
|
169
|
+
return {
|
|
170
|
+
...files,
|
|
171
|
+
hits: result.hits,
|
|
172
|
+
returned: result.hits.length,
|
|
173
|
+
deduped: result.deduped,
|
|
174
|
+
truncated: files.truncated || result.deduped > 0,
|
|
175
|
+
}
|
|
176
|
+
})()
|
|
177
|
+
|
|
178
|
+
return {
|
|
179
|
+
scopes,
|
|
180
|
+
contentEnabled,
|
|
181
|
+
...(content === undefined ? {} : { content }),
|
|
182
|
+
...(dedupedFiles === undefined ? {} : { files: dedupedFiles }),
|
|
183
|
+
...(dirs === undefined ? {} : { dirs }),
|
|
184
|
+
tookMs: Date.now() - started,
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/** Page through a directory-shaped name query. */
|
|
189
|
+
async function nameGroup(deps: CombinedDeps, request: CombinedRequest, files: boolean): Promise<NameGroup> {
|
|
190
|
+
const started = Date.now()
|
|
191
|
+
try {
|
|
192
|
+
const result = await deps.search({
|
|
193
|
+
query: request.query,
|
|
194
|
+
limit: request.limit,
|
|
195
|
+
offset: 0,
|
|
196
|
+
sort: request.sort,
|
|
197
|
+
desc: request.desc,
|
|
198
|
+
regex: false,
|
|
199
|
+
caseSensitive: false,
|
|
200
|
+
wholeWord: false,
|
|
201
|
+
filesOnly: files,
|
|
202
|
+
dirsOnly: !files,
|
|
203
|
+
})
|
|
204
|
+
return {
|
|
205
|
+
hits: result.hits,
|
|
206
|
+
returned: result.hits.length,
|
|
207
|
+
total: result.total,
|
|
208
|
+
truncated: result.truncated,
|
|
209
|
+
deduped: 0,
|
|
210
|
+
tookMs: result.tookNs / 1e6,
|
|
211
|
+
}
|
|
212
|
+
} catch (error) {
|
|
213
|
+
return { hits: [], returned: 0, total: 0, truncated: false, deduped: 0, tookMs: Date.now() - started, error: messageOf(error) }
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/** Query the content store, or report its state without starting a build. */
|
|
218
|
+
async function contentGroup(deps: CombinedDeps, request: CombinedRequest, ask: boolean): Promise<ContentGroup> {
|
|
219
|
+
const started = Date.now()
|
|
220
|
+
const empty = (): ContentGroup => {
|
|
221
|
+
const state = deps.contentStatus?.()
|
|
222
|
+
return {
|
|
223
|
+
hits: [],
|
|
224
|
+
returned: 0,
|
|
225
|
+
capped: false,
|
|
226
|
+
building: state?.building ?? false,
|
|
227
|
+
files: state?.files ?? 0,
|
|
228
|
+
sessions: state?.sessions ?? 0,
|
|
229
|
+
messages: state?.messages ?? 0,
|
|
230
|
+
truncated: state?.truncated ?? false,
|
|
231
|
+
tookMs: 0,
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (!ask || deps.contentSearch === undefined) return empty()
|
|
235
|
+
try {
|
|
236
|
+
deps.ensure?.()
|
|
237
|
+
const hits = await deps.contentSearch(request.query, request.contentLimit)
|
|
238
|
+
const state = deps.contentStatus?.()
|
|
239
|
+
return {
|
|
240
|
+
hits,
|
|
241
|
+
returned: hits.length,
|
|
242
|
+
capped: hits.length >= request.contentLimit,
|
|
243
|
+
building: state?.building ?? false,
|
|
244
|
+
files: state?.files ?? 0,
|
|
245
|
+
sessions: state?.sessions ?? 0,
|
|
246
|
+
messages: state?.messages ?? 0,
|
|
247
|
+
truncated: state?.truncated ?? false,
|
|
248
|
+
tookMs: Date.now() - started,
|
|
249
|
+
}
|
|
250
|
+
} catch (error) {
|
|
251
|
+
return { ...empty(), error: messageOf(error), tookMs: Date.now() - started }
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
function clamp(value: unknown, min: number, max: number, fallback: number): number {
|
|
256
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) return fallback
|
|
257
|
+
return Math.min(max, Math.max(min, Math.trunc(value)))
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
function sortKey(value: unknown): string {
|
|
261
|
+
return value === 'name' || value === 'path' || value === 'size' || value === 'mtime' || value === 'ext' ? value : 'mtime'
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
function messageOf(error: unknown): string {
|
|
265
|
+
return error instanceof Error ? error.message : String(error)
|
|
266
|
+
}
|
|
267
|
+
|
package/src/content-search.ts
CHANGED
|
@@ -22,6 +22,7 @@ export function searchContent(db: DatabaseSync, query: string, limit: number): C
|
|
|
22
22
|
// A one- or two-character query cannot use the trigram index, so bound the
|
|
23
23
|
// payload as well as the row count: never ship a whole megabyte body.
|
|
24
24
|
rows = db.prepare(`SELECT kind, path, title, session_id, message_id,
|
|
25
|
+
(SELECT node_key FROM docs_meta WHERE docs_meta.rowid = docs.rowid) AS node_key,
|
|
25
26
|
substr(body, 1, 400) AS snippet, 0 AS score
|
|
26
27
|
FROM docs WHERE body LIKE '%' || ? || '%' LIMIT ?`).all(text, capped) as Array<Record<string, unknown>>
|
|
27
28
|
} else {
|
|
@@ -30,6 +31,7 @@ export function searchContent(db: DatabaseSync, query: string, limit: number): C
|
|
|
30
31
|
// inside a matching query (a rowid subquery silently degrades both). The
|
|
31
32
|
// query runs in the search worker, so its cost stays off the host thread.
|
|
32
33
|
rows = db.prepare(`SELECT kind, path, title, session_id, message_id,
|
|
34
|
+
(SELECT node_key FROM docs_meta WHERE docs_meta.rowid = docs.rowid) AS node_key,
|
|
33
35
|
snippet(docs, 0, char(1), char(2), '…', 16) AS snippet, bm25(docs) AS score
|
|
34
36
|
FROM docs WHERE docs MATCH ? ORDER BY score LIMIT ?`).all(match, capped) as Array<Record<string, unknown>>
|
|
35
37
|
}
|
|
@@ -40,6 +42,7 @@ export function searchContent(db: DatabaseSync, query: string, limit: number): C
|
|
|
40
42
|
snippet: String(row.snippet ?? row.body ?? '').replace(/[\u0001\u0002]/g, ''),
|
|
41
43
|
...(row.session_id ? { sessionId: String(row.session_id) } : {}),
|
|
42
44
|
...(row.message_id ? { messageId: String(row.message_id) } : {}),
|
|
45
|
+
...(row.node_key ? { nodeKey: String(row.node_key) } : {}),
|
|
43
46
|
score: Number(row.score ?? 0),
|
|
44
47
|
}))
|
|
45
48
|
}
|
package/src/content.ts
CHANGED
|
@@ -30,7 +30,7 @@ import { Worker } from 'node:worker_threads'
|
|
|
30
30
|
import { searchContent } from './content-search.ts'
|
|
31
31
|
import type { LocatorRuntime } from './runtime.ts'
|
|
32
32
|
|
|
33
|
-
const SCHEMA_VERSION =
|
|
33
|
+
const SCHEMA_VERSION = 3
|
|
34
34
|
|
|
35
35
|
/** Work budget between two event-loop yields; keeps host latency low. */
|
|
36
36
|
const SLICE_MS = 8
|
|
@@ -65,6 +65,8 @@ export interface ContentHit {
|
|
|
65
65
|
snippet: string
|
|
66
66
|
sessionId?: string
|
|
67
67
|
messageId?: string
|
|
68
|
+
/** Exact `data-chat-node-key` of the rendered row, when the host has one. */
|
|
69
|
+
nodeKey?: string
|
|
68
70
|
score: number
|
|
69
71
|
}
|
|
70
72
|
|
|
@@ -110,6 +112,7 @@ interface DocRow {
|
|
|
110
112
|
title: string
|
|
111
113
|
sessionId: string | null
|
|
112
114
|
messageId: string | null
|
|
115
|
+
nodeKey: string | null
|
|
113
116
|
mtime: number
|
|
114
117
|
}
|
|
115
118
|
|
|
@@ -332,7 +335,7 @@ export class ContentIndex {
|
|
|
332
335
|
body, kind UNINDEXED, path UNINDEXED, title UNINDEXED,
|
|
333
336
|
session_id UNINDEXED, message_id UNINDEXED, tokenize = 'trigram'
|
|
334
337
|
)`)
|
|
335
|
-
this.db.exec('CREATE TABLE IF NOT EXISTS docs_meta (rowid INTEGER PRIMARY KEY, doc_key TEXT UNIQUE, path TEXT, mtime INTEGER, kind TEXT)')
|
|
338
|
+
this.db.exec('CREATE TABLE IF NOT EXISTS docs_meta (rowid INTEGER PRIMARY KEY, doc_key TEXT UNIQUE, path TEXT, mtime INTEGER, kind TEXT, node_key TEXT)')
|
|
336
339
|
this.db.exec('CREATE TABLE IF NOT EXISTS sources (path TEXT PRIMARY KEY, mtime INTEGER)')
|
|
337
340
|
this.db.exec('CREATE INDEX IF NOT EXISTS docs_meta_path ON docs_meta(path)')
|
|
338
341
|
if (fresh) {
|
|
@@ -509,7 +512,7 @@ export class ContentIndex {
|
|
|
509
512
|
return false
|
|
510
513
|
}
|
|
511
514
|
this.deleteDoc(row.key)
|
|
512
|
-
const meta = this.db!.prepare('INSERT INTO docs_meta (doc_key, path, mtime, kind) VALUES (?, ?, ?, ?)').run(row.key, row.path, row.mtime, row.kind)
|
|
515
|
+
const meta = this.db!.prepare('INSERT INTO docs_meta (doc_key, path, mtime, kind, node_key) VALUES (?, ?, ?, ?, ?)').run(row.key, row.path, row.mtime, row.kind, row.nodeKey)
|
|
513
516
|
const rowid = meta.lastInsertRowid
|
|
514
517
|
this.db!.prepare('INSERT INTO docs (rowid, body, kind, path, title, session_id, message_id) VALUES (?, ?, ?, ?, ?, ?, ?)').run(rowid, row.body, row.kind, row.path, row.title, row.sessionId, row.messageId)
|
|
515
518
|
this.totalBytes += row.body.length
|
|
@@ -623,7 +626,7 @@ export class ContentIndex {
|
|
|
623
626
|
try { buffer = await readFile(path) } catch { return null }
|
|
624
627
|
if (buffer.includes(0)) return null
|
|
625
628
|
const body = buffer.toString('utf8').slice(0, this.options.maxFileBytes)
|
|
626
|
-
return { key: `file:${path}`, body, kind: 'file', path, title: name, sessionId: null, messageId: null, mtime }
|
|
629
|
+
return { key: `file:${path}`, body, kind: 'file', path, title: name, sessionId: null, messageId: null, nodeKey: null, mtime }
|
|
627
630
|
}
|
|
628
631
|
|
|
629
632
|
private async indexSessions(generation: number): Promise<void> {
|
|
@@ -680,7 +683,7 @@ export class ContentIndex {
|
|
|
680
683
|
if (extracted === undefined) continue
|
|
681
684
|
if (title === '') title = extracted.text.replace(/\s+/g, ' ').slice(0, 90)
|
|
682
685
|
const body = extracted.text.slice(0, SESSION_BODY_BYTES)
|
|
683
|
-
const row: DocRow = { key: `session:${sessionId}:${extracted.id}`, body, kind: 'session', path: file.path, title: title || sessionId, sessionId, messageId: extracted.id, mtime: file.mtime }
|
|
686
|
+
const row: DocRow = { key: `session:${sessionId}:${extracted.id}`, body, kind: 'session', path: file.path, title: title || sessionId, sessionId, messageId: extracted.id, nodeKey: extracted.nodeKey, mtime: file.mtime }
|
|
684
687
|
if (!this.addDoc(row)) return false
|
|
685
688
|
}
|
|
686
689
|
return true
|
|
@@ -766,7 +769,12 @@ async function archivedSessionIds(): Promise<Set<string>> {
|
|
|
766
769
|
}
|
|
767
770
|
}
|
|
768
771
|
|
|
769
|
-
|
|
772
|
+
/** Conversation node key format used by the host DOM (`${kind.length}:${kind}${id}`). */
|
|
773
|
+
function conversationNodeKey(kind: string, id: string): string {
|
|
774
|
+
return `${kind.length}:${kind}${id}`
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
function messageText(event: { type?: string; data?: Record<string, unknown> }): { text: string; id: string; nodeKey: string | null } | undefined {
|
|
770
778
|
if (event.type !== 'user/message' && event.type !== 'assistant/message') return undefined
|
|
771
779
|
const data = event.data ?? {}
|
|
772
780
|
if (event.type === 'user/message') {
|
|
@@ -783,7 +791,16 @@ function messageText(event: { type?: string; data?: Record<string, unknown> }):
|
|
|
783
791
|
.trim()
|
|
784
792
|
if (text === '') return undefined
|
|
785
793
|
const id = event.type === 'user/message' ? String(data.id ?? '') : String(message.id ?? '')
|
|
786
|
-
|
|
794
|
+
const safeId = id || `seq-${String(data.seq ?? '')}`
|
|
795
|
+
let nodeKey: string | null = null
|
|
796
|
+
if (event.type === 'user/message' && id !== '') {
|
|
797
|
+
nodeKey = conversationNodeKey('input-message', id)
|
|
798
|
+
} else if (event.type === 'assistant/message') {
|
|
799
|
+
const turn = Number(data.turn)
|
|
800
|
+
const step = Number(data.step)
|
|
801
|
+
if (Number.isInteger(turn) && Number.isInteger(step)) nodeKey = conversationNodeKey('assistant-step', `${turn}:${step}`)
|
|
802
|
+
}
|
|
803
|
+
return { text, id: safeId, nodeKey }
|
|
787
804
|
}
|
|
788
805
|
|
|
789
806
|
async function sessionFiles(roots: string[]): Promise<Array<{ path: string; mtime: number }>> {
|
package/src/find.ts
CHANGED
package/src/http.ts
CHANGED
|
@@ -16,6 +16,7 @@ import type { Context } from '@deepseek-ai/cordis'
|
|
|
16
16
|
import type { IncomingMessage, ServerResponse } from 'node:http'
|
|
17
17
|
import type { LocatorRuntime, SearchArgs } from './runtime.ts'
|
|
18
18
|
import type { ContentIndex } from './content.ts'
|
|
19
|
+
import { readCombinedRequest, runCombinedSearch, type CombinedDeps } from './combined.ts'
|
|
19
20
|
import { openWithDefaultApp, revealInFileManager, withinRoots } from './reveal.ts'
|
|
20
21
|
import { statSync } from 'node:fs'
|
|
21
22
|
|
|
@@ -63,13 +64,18 @@ export function registerHttp(ctx: Context, rt: LocatorRuntime, content?: Content
|
|
|
63
64
|
scoped.effect(() => server.register({
|
|
64
65
|
kind: 'exact',
|
|
65
66
|
path: '/dsh-locator/status',
|
|
66
|
-
handler: handler(scoped, async () => await status(rt)),
|
|
67
|
+
handler: handler(scoped, async () => await status(rt, content)),
|
|
67
68
|
}))
|
|
68
69
|
scoped.effect(() => server.register({
|
|
69
70
|
kind: 'exact',
|
|
70
71
|
path: '/dsh-locator/reveal',
|
|
71
72
|
handler: handler(scoped, async body => await reveal(rt, body)),
|
|
72
73
|
}))
|
|
74
|
+
scoped.effect(() => server.register({
|
|
75
|
+
kind: 'exact',
|
|
76
|
+
path: '/dsh-locator/combined',
|
|
77
|
+
handler: handler(scoped, async body => await combined(rt, content, ensure, body)),
|
|
78
|
+
}))
|
|
73
79
|
if (content !== undefined) {
|
|
74
80
|
scoped.effect(() => server.register({
|
|
75
81
|
kind: 'exact',
|
|
@@ -154,6 +160,32 @@ async function search(rt: LocatorRuntime, raw: Record<string, unknown>): Promise
|
|
|
154
160
|
}
|
|
155
161
|
}
|
|
156
162
|
|
|
163
|
+
/**
|
|
164
|
+
* One panel search across all enabled scopes. The stores are injected so the
|
|
165
|
+
* orchestration (scope gating, lazy-build guard, de-duplication) stays testable
|
|
166
|
+
* without an HTTP request or an engine process.
|
|
167
|
+
*/
|
|
168
|
+
async function combined(
|
|
169
|
+
rt: LocatorRuntime,
|
|
170
|
+
content: ContentIndex | undefined,
|
|
171
|
+
ensure: (() => void) | undefined,
|
|
172
|
+
raw: Record<string, unknown>,
|
|
173
|
+
): Promise<unknown> {
|
|
174
|
+
rt.start()
|
|
175
|
+
const deps: CombinedDeps = {
|
|
176
|
+
search: async args => await rt.search(args),
|
|
177
|
+
maxResults: rt.config.maxResults,
|
|
178
|
+
...(content === undefined ? {} : {
|
|
179
|
+
contentSearch: async (query: string, limit: number) => await content.search(query, limit),
|
|
180
|
+
contentStatus: () => content.status(),
|
|
181
|
+
...(ensure === undefined ? {} : { ensure }),
|
|
182
|
+
}),
|
|
183
|
+
}
|
|
184
|
+
const request = readCombinedRequest(raw, rt.config.maxResults)
|
|
185
|
+
const result = await runCombinedSearch(deps, request)
|
|
186
|
+
return { query: request.query, ...result }
|
|
187
|
+
}
|
|
188
|
+
|
|
157
189
|
async function reveal(rt: LocatorRuntime, raw: Record<string, unknown>): Promise<unknown> {
|
|
158
190
|
const path = typeof raw.path === 'string' ? raw.path : ''
|
|
159
191
|
if (path === '' || !withinRoots(path, rt.roots)) {
|
|
@@ -192,9 +224,10 @@ async function openPath(rt: LocatorRuntime, raw: Record<string, unknown>): Promi
|
|
|
192
224
|
}
|
|
193
225
|
}
|
|
194
226
|
|
|
195
|
-
async function status(rt: LocatorRuntime): Promise<unknown> {
|
|
227
|
+
async function status(rt: LocatorRuntime, content?: ContentIndex): Promise<unknown> {
|
|
196
228
|
rt.start()
|
|
197
229
|
const engine = await rt.engineStatus()
|
|
230
|
+
const contentState = content === undefined ? { enabled: false } : { enabled: true, ...content.status() }
|
|
198
231
|
return {
|
|
199
232
|
running: rt.status.running,
|
|
200
233
|
entries: engine?.entries ?? 0,
|
|
@@ -206,6 +239,7 @@ async function status(rt: LocatorRuntime): Promise<unknown> {
|
|
|
206
239
|
scanning: engine?.scanning === true || rt.status.scanning !== undefined,
|
|
207
240
|
stateDir: engine?.stateDir ?? rt.stateDir,
|
|
208
241
|
version: engine?.version ?? '',
|
|
242
|
+
content: contentState,
|
|
209
243
|
...(rt.status.error === undefined ? {} : { error: rt.status.error }),
|
|
210
244
|
...(rt.status.warning === undefined ? {} : { warning: rt.status.warning }),
|
|
211
245
|
}
|