dsh-locator 0.5.2 → 0.6.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 (70) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +0 -0
  3. package/README-es.md +0 -0
  4. package/README-hi.md +0 -0
  5. package/README-pt.md +0 -0
  6. package/README.en.md +5 -0
  7. package/README.md +109 -153
  8. package/SECURITY.md +0 -0
  9. package/bin/darwin-arm64/indexd +0 -0
  10. package/bin/darwin-x64/indexd +0 -0
  11. package/bin/linux-arm64/indexd +0 -0
  12. package/bin/linux-x64/indexd +0 -0
  13. package/bin/win32-arm64/indexd.exe +0 -0
  14. package/bin/win32-x64/indexd.exe +0 -0
  15. package/client.js +83 -16
  16. package/cordis.patch.yml +0 -0
  17. package/docs/assets/architecture.svg +0 -0
  18. package/docs/assets/panel-en.png +0 -0
  19. package/docs/assets/panel-zh.png +0 -0
  20. package/lib/config.d.ts +12 -0
  21. package/lib/config.d.ts.map +1 -1
  22. package/lib/config.js +6 -0
  23. package/lib/config.js.map +1 -1
  24. package/lib/content.d.ts +56 -0
  25. package/lib/content.d.ts.map +1 -0
  26. package/lib/content.js +274 -0
  27. package/lib/content.js.map +1 -0
  28. package/lib/export.d.ts +0 -0
  29. package/lib/export.d.ts.map +0 -0
  30. package/lib/export.js +0 -0
  31. package/lib/export.js.map +0 -0
  32. package/lib/find.d.ts +8 -0
  33. package/lib/find.d.ts.map +1 -0
  34. package/lib/find.js +75 -0
  35. package/lib/find.js.map +1 -0
  36. package/lib/http.d.ts +2 -1
  37. package/lib/http.d.ts.map +1 -1
  38. package/lib/http.js +12 -1
  39. package/lib/http.js.map +1 -1
  40. package/lib/index.d.ts +0 -0
  41. package/lib/index.d.ts.map +1 -1
  42. package/lib/index.js +33 -1
  43. package/lib/index.js.map +1 -1
  44. package/lib/paths.d.ts +0 -0
  45. package/lib/paths.d.ts.map +0 -0
  46. package/lib/paths.js +0 -0
  47. package/lib/paths.js.map +0 -0
  48. package/lib/reveal.d.ts +0 -0
  49. package/lib/reveal.d.ts.map +0 -0
  50. package/lib/reveal.js +0 -0
  51. package/lib/reveal.js.map +0 -0
  52. package/lib/runtime.d.ts +0 -0
  53. package/lib/runtime.d.ts.map +1 -1
  54. package/lib/runtime.js +2 -0
  55. package/lib/runtime.js.map +1 -1
  56. package/lib/tools.d.ts +0 -0
  57. package/lib/tools.d.ts.map +0 -0
  58. package/lib/tools.js +0 -0
  59. package/lib/tools.js.map +0 -0
  60. package/package.json +1 -1
  61. package/src/config.ts +18 -0
  62. package/src/content.ts +253 -0
  63. package/src/export.ts +0 -0
  64. package/src/find.ts +76 -0
  65. package/src/http.ts +13 -1
  66. package/src/index.ts +30 -1
  67. package/src/paths.ts +0 -0
  68. package/src/reveal.ts +0 -0
  69. package/src/runtime.ts +1 -0
  70. package/src/tools.ts +0 -0
package/lib/index.js CHANGED
@@ -4,7 +4,9 @@
4
4
  * @module dsh-locator
5
5
  */
6
6
  import { Config as ConfigSchema } from "./config.js";
7
+ import { ContentIndex } from "./content.js";
7
8
  import { makeExportTool } from "./export.js";
9
+ import { makeFindTool } from "./find.js";
8
10
  import { registerHttp } from "./http.js";
9
11
  import { resolveBinary, resolveRoots, resolveStateDir } from "./paths.js";
10
12
  import { LocatorRuntime } from "./runtime.js";
@@ -28,14 +30,26 @@ export function apply(ctx, config) {
28
30
  const binary = resolveBinary(config, cwd);
29
31
  const logger = ctx.logger('dsh-locator');
30
32
  const rt = new LocatorRuntime(config, roots, stateDir, binary, cwd);
33
+ const content = config.contentIndex
34
+ ? new ContentIndex(rt, {
35
+ stateDir,
36
+ sessionDirs: config.contentSessionDirs,
37
+ maxFileBytes: config.contentMaxFileBytes,
38
+ maxFiles: config.contentMaxFiles,
39
+ maxSessions: config.contentMaxSessions,
40
+ })
41
+ : undefined;
31
42
  ctx.effect(() => {
32
43
  // Let the host finish starting before a cold scan starts reading the disk.
33
44
  const timer = setTimeout(() => {
34
45
  rt.start();
35
46
  logger.info(`index roots: ${roots.join(', ')} (state ${stateDir})`);
47
+ if (content !== undefined)
48
+ void startContent(rt, content, logger);
36
49
  }, 1500);
37
50
  return () => {
38
51
  clearTimeout(timer);
52
+ content?.close();
39
53
  void rt.stop();
40
54
  };
41
55
  });
@@ -43,8 +57,26 @@ export function apply(ctx, config) {
43
57
  ctx.tools.register(makeStatusTool(rt));
44
58
  ctx.tools.register(makeRebuildTool(rt));
45
59
  ctx.tools.register(makeExportTool(rt));
60
+ if (content !== undefined)
61
+ ctx.tools.register(makeFindTool(content));
46
62
  // The Web GUI panel is optional: profiles without a Web server keep the
47
63
  // three tools and never mount an HTTP route.
48
- registerHttp(ctx, rt);
64
+ registerHttp(ctx, rt, content);
65
+ }
66
+ async function startContent(rt, content, logger) {
67
+ try {
68
+ await rt.waitReady();
69
+ for (let i = 0; i < 900; i++) {
70
+ const status = await rt.engineStatus();
71
+ if (status === undefined || !status.scanning)
72
+ break;
73
+ await new Promise(resolve => setTimeout(resolve, 2_000));
74
+ }
75
+ content.start();
76
+ logger.info('content index started');
77
+ }
78
+ catch (error) {
79
+ logger.info(`content index skipped: ${error instanceof Error ? error.message : String(error)}`);
80
+ }
49
81
  }
50
82
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE5E,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,CAAA;AAEjC,0BAA0B;AAC1B,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAA;AAEjC,2DAA2D;AAC3D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,CAAA;AAE/B;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,MAAc;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAM;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IACxC,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;IAEnE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;QACd,2EAA2E;QAC3E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,EAAE,CAAC,KAAK,EAAE,CAAA;YACV,MAAM,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,QAAQ,GAAG,CAAC,CAAA;QACrE,CAAC,EAAE,IAAI,CAAC,CAAA;QACR,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAA;QAChB,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAA;IACvC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAA;IAEtC,wEAAwE;IACxE,6CAA6C;IAC7C,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AACvB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/paths.d.ts CHANGED
File without changes
File without changes
package/lib/paths.js CHANGED
File without changes
package/lib/paths.js.map CHANGED
File without changes
package/lib/reveal.d.ts CHANGED
File without changes
File without changes
package/lib/reveal.js CHANGED
File without changes
package/lib/reveal.js.map CHANGED
File without changes
package/lib/runtime.d.ts CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/lib/runtime.js CHANGED
@@ -74,6 +74,8 @@ export class LocatorRuntime {
74
74
  args.push('--refresh', `${String(this.config.refreshIntervalMs)}ms`);
75
75
  if (this.config.scanWorkers > 0)
76
76
  args.push('--workers', String(this.config.scanWorkers));
77
+ if (this.config.memoryLimitMB > 0)
78
+ args.push('--memory-limit-mb', String(this.config.memoryLimitMB));
77
79
  if (this.config.windowsUsn)
78
80
  args.push('--usn');
79
81
  let child;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/lib/tools.d.ts CHANGED
File without changes
File without changes
package/lib/tools.js CHANGED
File without changes
package/lib/tools.js.map CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-locator",
3
- "version": "0.5.2",
3
+ "version": "0.6.0",
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/config.ts CHANGED
@@ -23,6 +23,18 @@ export interface Config {
23
23
  refreshIntervalMs: number
24
24
  /** Directory reader concurrency during scans; 0 uses the CPU count. */
25
25
  scanWorkers: number
26
+ /** Soft Go heap limit in MiB for the engine; 0 leaves it to GOMEMLIMIT/GOGC. */
27
+ memoryLimitMB: number
28
+ /** Index text-file bodies and DSH session messages into the content database. */
29
+ contentIndex: boolean
30
+ /** Maximum bytes read from one text file. */
31
+ contentMaxFileBytes: number
32
+ /** Maximum text files indexed per build; 0 means no cap. */
33
+ contentMaxFiles: number
34
+ /** Most recent session logs indexed; 0 means all. */
35
+ contentMaxSessions: number
36
+ /** Extra session directories; empty means $DSH_HOME/sessions. */
37
+ contentSessionDirs: string[]
26
38
  /**
27
39
  * Try the NTFS USN/MFT enumeration before the portable walk (Windows only,
28
40
  * requires running DSH as administrator). Falls back automatically.
@@ -58,6 +70,12 @@ export const Config: Schema<Config> = Schema.object({
58
70
  watch: Schema.boolean().default(true),
59
71
  refreshIntervalMs: Schema.number().default(1_800_000),
60
72
  scanWorkers: Schema.number().default(0),
73
+ memoryLimitMB: Schema.number().default(0),
74
+ contentIndex: Schema.boolean().default(true),
75
+ contentMaxFileBytes: Schema.number().default(1_000_000),
76
+ contentMaxFiles: Schema.number().default(50_000),
77
+ contentMaxSessions: Schema.number().default(50),
78
+ contentSessionDirs: Schema.array(Schema.string()).default([]),
61
79
  windowsUsn: Schema.boolean().default(false),
62
80
  stateDir: Schema.string().default(''),
63
81
  binaryPath: Schema.string().default(''),
package/src/content.ts ADDED
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Content search: text files and DSH session messages in SQLite FTS5.
3
+ *
4
+ * The file-name index stays in the Go engine. This store is built beside it:
5
+ * the engine's `dump` RPC supplies the already-scanned file list, Node reads
6
+ * text files and decompresses `session.v4.jsonl.zstd` logs, and SQLite's
7
+ * trigram tokenizer gives substring/CJK search with snippets.
8
+ * @module dsh-locator/content
9
+ */
10
+
11
+ import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs'
12
+ import { homedir } from 'node:os'
13
+ import { basename, dirname, extname, join } from 'node:path'
14
+ import { zstdDecompressSync } from 'node:zlib'
15
+ import type { LocatorRuntime } from './runtime.ts'
16
+
17
+ const TEXT_EXTENSIONS = new Set([
18
+ '.txt', '.md', '.markdown', '.rst', '.log', '.csv', '.tsv', '.json', '.jsonl',
19
+ '.yaml', '.yml', '.toml', '.ini', '.cfg', '.conf', '.xml', '.html', '.htm',
20
+ '.css', '.scss', '.less', '.js', '.mjs', '.cjs', '.ts', '.tsx', '.jsx',
21
+ '.go', '.rs', '.py', '.rb', '.php', '.java', '.kt', '.swift', '.c', '.h',
22
+ '.cc', '.cpp', '.hpp', '.cs', '.sh', '.bash', '.zsh', '.fish', '.ps1',
23
+ '.sql', '.graphql', '.proto', '.tex', '.org', '.adoc',
24
+ ])
25
+
26
+ /** One searchable document. */
27
+ export interface ContentHit {
28
+ kind: 'file' | 'session'
29
+ path: string
30
+ title: string
31
+ snippet: string
32
+ sessionId?: string
33
+ messageId?: string
34
+ score: number
35
+ }
36
+
37
+ /** Build progress shown by the panel/status. */
38
+ export interface ContentState {
39
+ building: boolean
40
+ files: number
41
+ sessions: number
42
+ messages: number
43
+ error: string
44
+ updatedAt: number
45
+ }
46
+
47
+ /** The content store; one instance per plugin. */
48
+ export class ContentIndex {
49
+ private db: import('node:sqlite').DatabaseSync | null = null
50
+ private readonly state: ContentState = { building: false, files: 0, sessions: 0, messages: 0, error: '', updatedAt: 0 }
51
+ private generation = 0
52
+
53
+ constructor(private readonly rt: LocatorRuntime, private readonly options: {
54
+ stateDir: string
55
+ sessionDirs: string[]
56
+ maxFileBytes: number
57
+ maxFiles: number
58
+ maxSessions: number
59
+ }) {}
60
+
61
+ status(): ContentState { return { ...this.state } }
62
+
63
+ /** Close the database when the plugin unmounts. */
64
+ close(): void {
65
+ this.generation++
66
+ this.db?.close()
67
+ this.db = null
68
+ this.state.building = false
69
+ }
70
+
71
+ /** Build in the background; stale generations stop at their next checkpoint. */
72
+ start(): void {
73
+ const generation = ++this.generation
74
+ this.state.building = true
75
+ this.state.error = ''
76
+ void this.build(generation).catch(error => {
77
+ if (generation !== this.generation) return
78
+ this.state.error = messageOf(error)
79
+ this.state.building = false
80
+ })
81
+ }
82
+
83
+ private async build(generation: number): Promise<void> {
84
+ const { DatabaseSync } = await import('node:sqlite')
85
+ const path = join(this.options.stateDir, 'content.db')
86
+ this.db?.close()
87
+ this.db = new DatabaseSync(path)
88
+ this.db.exec('PRAGMA journal_mode = WAL')
89
+ this.db.exec('PRAGMA synchronous = OFF')
90
+ this.db.exec('DROP TABLE IF EXISTS docs')
91
+ this.db.exec(`CREATE VIRTUAL TABLE docs USING fts5(
92
+ body,
93
+ kind UNINDEXED,
94
+ path UNINDEXED,
95
+ title UNINDEXED,
96
+ session_id UNINDEXED,
97
+ message_id UNINDEXED,
98
+ tokenize = 'trigram'
99
+ )`)
100
+ const insert = this.db.prepare('INSERT INTO docs (body, kind, path, title, session_id, message_id) VALUES (?, ?, ?, ?, ?, ?)')
101
+ const flush = (rows: Array<[string, string, string, string, string | null, string | null]>) => {
102
+ if (rows.length === 0) return
103
+ this.db!.exec('BEGIN')
104
+ try {
105
+ for (const row of rows) insert.run(...row)
106
+ this.db!.exec('COMMIT')
107
+ } catch (error) {
108
+ this.db!.exec('ROLLBACK')
109
+ throw error
110
+ }
111
+ }
112
+
113
+ await this.indexSessions(flush, generation)
114
+ if (generation !== this.generation) return
115
+ await this.indexFiles(flush, generation)
116
+ if (generation !== this.generation) return
117
+ this.state.building = false
118
+ this.state.updatedAt = Date.now()
119
+ }
120
+
121
+ private async indexSessions(flush: (rows: Array<[string, string, string, string, string | null, string | null]>) => void, generation: number): Promise<void> {
122
+ const files: Array<{ path: string; mtime: number }> = []
123
+ for (const root of this.sessionRoots()) {
124
+ walkSessions(root, files, 0)
125
+ }
126
+ files.sort((a, b) => b.mtime - a.mtime)
127
+ const limit = this.options.maxSessions > 0 ? this.options.maxSessions : files.length
128
+ let batch: Array<[string, string, string, string, string | null, string | null]> = []
129
+ for (const file of files.slice(0, limit)) {
130
+ if (generation !== this.generation) return
131
+ let text: string
132
+ try { text = zstdDecompressSync(readFileSync(file.path)).toString('utf8') } catch { continue }
133
+ const sessionId = basename(dirname(file.path))
134
+ let title = ''
135
+ let messages = 0
136
+ for (const line of text.split('\n')) {
137
+ if (!line) continue
138
+ let event: { type?: string; data?: Record<string, unknown> }
139
+ try { event = JSON.parse(line) } catch { continue }
140
+ const extracted = messageText(event)
141
+ if (extracted === undefined) continue
142
+ if (title === '') title = extracted.text.replace(/\s+/g, ' ').slice(0, 90)
143
+ batch.push([extracted.text.slice(0, 8_000), 'session', file.path, title || sessionId, sessionId, extracted.id])
144
+ messages++
145
+ if (batch.length >= 200) { flush(batch); batch = [] }
146
+ }
147
+ this.state.sessions++
148
+ this.state.messages += messages
149
+ }
150
+ flush(batch)
151
+ }
152
+
153
+ private async indexFiles(flush: (rows: Array<[string, string, string, string, string | null, string | null]>) => void, generation: number): Promise<void> {
154
+ let after = 0
155
+ let batch: Array<[string, string, string, string, string | null, string | null]> = []
156
+ let seen = 0
157
+ for (;;) {
158
+ if (generation !== this.generation) return
159
+ const page = await this.rt.dump(after, 2_000)
160
+ for (const entry of page.entries) {
161
+ if (entry.dir || entry.size <= 0 || entry.size > this.options.maxFileBytes) continue
162
+ if (!TEXT_EXTENSIONS.has(extname(entry.name).toLowerCase())) continue
163
+ if (this.options.maxFiles > 0 && seen >= this.options.maxFiles) break
164
+ let body: string
165
+ try { body = readFileSync(entry.path, 'utf8') } catch { continue }
166
+ if (body.includes('\u0000')) continue
167
+ seen++
168
+ this.state.files++
169
+ batch.push([body.slice(0, this.options.maxFileBytes), 'file', entry.path, entry.name, null, null])
170
+ if (batch.length >= 200) { flush(batch); batch = [] }
171
+ }
172
+ after = page.next
173
+ if (page.done || page.entries.length === 0) break
174
+ }
175
+ flush(batch)
176
+ }
177
+
178
+ private sessionRoots(): string[] {
179
+ if (this.options.sessionDirs.length > 0) return this.options.sessionDirs
180
+ const home = process.env.DSH_HOME || join(homedir(), '.dsh')
181
+ return [join(home, 'sessions')]
182
+ }
183
+
184
+ /** Query the FTS table; short queries fall back to LIKE because trigram needs 3 chars. */
185
+ search(query: string, limit: number): ContentHit[] {
186
+ if (this.db === null) return []
187
+ const text = query.trim()
188
+ if (text === '') return []
189
+ const capped = Math.max(1, Math.min(100, limit))
190
+ try {
191
+ let rows: Array<Record<string, unknown>>
192
+ if ([...text].length < 3) {
193
+ rows = this.db.prepare(`SELECT kind, path, title, session_id, message_id, body, 0 AS score
194
+ FROM docs WHERE body LIKE '%' || ? || '%' LIMIT ?`).all(text, capped) as Array<Record<string, unknown>>
195
+ } else {
196
+ const match = text.split(/\s+/).filter(Boolean).map(term => '"' + term.replace(/"/g, '') + '"').join(' AND ')
197
+ rows = this.db.prepare(`SELECT kind, path, title, session_id, message_id,
198
+ snippet(docs, 0, char(1), char(2), '…', 16) AS snippet, bm25(docs) AS score
199
+ FROM docs WHERE docs MATCH ? ORDER BY score LIMIT ?`).all(match, capped) as Array<Record<string, unknown>>
200
+ }
201
+ return rows.map(row => ({
202
+ kind: row.kind === 'session' ? 'session' : 'file',
203
+ path: String(row.path ?? ''),
204
+ title: String(row.title ?? ''),
205
+ snippet: String(row.snippet ?? row.body ?? '').replace(/[\u0001\u0002]/g, ''),
206
+ ...(row.session_id ? { sessionId: String(row.session_id) } : {}),
207
+ ...(row.message_id ? { messageId: String(row.message_id) } : {}),
208
+ score: Number(row.score ?? 0),
209
+ }))
210
+ } catch (error) {
211
+ this.state.error = messageOf(error)
212
+ return []
213
+ }
214
+ }
215
+ }
216
+
217
+ function messageText(event: { type?: string; data?: Record<string, unknown> }): { text: string; id: string } | undefined {
218
+ if (event.type !== 'user/message' && event.type !== 'assistant/message') return undefined
219
+ const data = event.data ?? {}
220
+ if (event.type === 'user/message') {
221
+ const source = (data.source ?? {}) as Record<string, unknown>
222
+ if (source.kind === 'time-context') return undefined
223
+ }
224
+ const message = (data.message ?? {}) as Record<string, unknown>
225
+ const content = event.type === 'user/message' ? data.content : message.content
226
+ if (!Array.isArray(content)) return undefined
227
+ const text = content
228
+ .filter((block): block is { type: string; text: string } => typeof block === 'object' && block !== null && (block as { type?: string }).type === 'text' && typeof (block as { text?: unknown }).text === 'string')
229
+ .map(block => block.text)
230
+ .join('\n')
231
+ .trim()
232
+ if (text === '') return undefined
233
+ const id = event.type === 'user/message'
234
+ ? String(data.id ?? '')
235
+ : String(message.id ?? '')
236
+ return { text, id: id || `seq-${String(data.seq ?? '')}` }
237
+ }
238
+
239
+ function walkSessions(root: string, out: Array<{ path: string; mtime: number }>, depth: number): void {
240
+ if (depth > 4 || !existsSync(root)) return
241
+ let entries
242
+ try { entries = readdirSync(root, { withFileTypes: true }) } catch { return }
243
+ for (const entry of entries) {
244
+ const path = join(root, entry.name)
245
+ if (entry.isDirectory()) { walkSessions(path, out, depth + 1); continue }
246
+ if (!entry.isFile() || !entry.name.endsWith('.v4.jsonl.zstd')) continue
247
+ try { out.push({ path, mtime: statSync(path).mtimeMs }) } catch { /* ignore */ }
248
+ }
249
+ }
250
+
251
+ function messageOf(error: unknown): string {
252
+ return error instanceof Error ? error.message : String(error)
253
+ }
package/src/export.ts CHANGED
File without changes
package/src/find.ts ADDED
@@ -0,0 +1,76 @@
1
+ /**
2
+ * locator_find — search file bodies and DSH session messages.
3
+ * @module dsh-locator/find
4
+ */
5
+
6
+ import { defineTool } from '@deepseek-ai/dsh-tools'
7
+ import type { ContentIndex, ContentState } from './content.ts'
8
+
9
+ const HIT = {
10
+ type: 'object',
11
+ additionalProperties: false,
12
+ properties: {
13
+ kind: { type: 'string', enum: ['file', 'session'], required: true },
14
+ path: { type: 'string', required: true },
15
+ title: { type: 'string' },
16
+ snippet: { type: 'string' },
17
+ sessionId: { type: 'string' },
18
+ messageId: { type: 'string' },
19
+ score: { type: 'number' },
20
+ },
21
+ } as const
22
+
23
+ /** Build the locator_find tool. */
24
+ export function makeFindTool(content: ContentIndex) {
25
+ return defineTool({
26
+ name: 'locator_find',
27
+ description: [
28
+ 'Search the **contents** of text files and DSH session messages (dsh-locator).',
29
+ '',
30
+ 'Use it when the user remembers a phrase, a sentence, a decision or a code snippet rather than a file name. `locator_search` searches names and paths; this searches bodies and returns snippets plus `sessionId`/`messageId` for session hits, so the result can be opened at its source.',
31
+ '',
32
+ 'Content is built asynchronously after start: results may be partial while `state.building` is true. Text files are capped by `contentMaxFileBytes`; session logs are decompressed from `$DSH_HOME/sessions`.',
33
+ ].join('\n'),
34
+ parameters: {
35
+ query: { type: 'string', required: true, description: 'Words or a phrase to find in file/session content.' },
36
+ limit: { type: 'integer', description: 'Maximum hits (default 30, at most 100).' },
37
+ },
38
+ output: {
39
+ schema: {
40
+ type: 'object',
41
+ additionalProperties: false,
42
+ properties: {
43
+ ok: { type: 'boolean', required: true },
44
+ query: { type: 'string' },
45
+ hits: { type: 'array', items: HIT },
46
+ state: {
47
+ type: 'object',
48
+ additionalProperties: false,
49
+ properties: {
50
+ building: { type: 'boolean' },
51
+ files: { type: 'integer' },
52
+ sessions: { type: 'integer' },
53
+ messages: { type: 'integer' },
54
+ updatedAt: { type: 'integer' },
55
+ error: { type: 'string' },
56
+ },
57
+ },
58
+ error: { type: 'string' },
59
+ },
60
+ },
61
+ render: (_args, value) => {
62
+ const v = value as { ok: boolean; hits?: Array<{ kind: string; title?: string; snippet?: string; path?: string }>; error?: string; state?: ContentState }
63
+ if (!v.ok) return [{ type: 'text', text: `locator_find failed: ${v.error ?? 'unknown'}` }]
64
+ const lines = (v.hits ?? []).map((hit, index) => `${String(index + 1)}. [${hit.kind}] ${hit.title ?? ''} — ${hit.snippet ?? ''}\n ${hit.path ?? ''}`)
65
+ return [{ type: 'text', text: `${String(v.hits?.length ?? 0)} content hit(s)${v.state?.building ? ' (index still building)' : ''}\n${lines.join('\n')}` }]
66
+ },
67
+ },
68
+ async execute(args) {
69
+ const query = args.query.trim()
70
+ if (query === '') return { ok: false as const, error: 'query is empty' }
71
+ const limit = Math.max(1, Math.min(100, args.limit ?? 30))
72
+ const hits = content.search(query, limit)
73
+ return { ok: true as const, query, hits, state: content.status() }
74
+ },
75
+ })
76
+ }
package/src/http.ts CHANGED
@@ -15,6 +15,7 @@
15
15
  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
+ import type { ContentIndex } from './content.ts'
18
19
  import { openWithDefaultApp, revealInFileManager, withinRoots } from './reveal.ts'
19
20
  import { statSync } from 'node:fs'
20
21
 
@@ -46,7 +47,7 @@ interface SearchBody {
46
47
  const BODY_LIMIT = 64 * 1024
47
48
 
48
49
  /** Mount the panel's routes when this profile runs a Web server. */
49
- export function registerHttp(ctx: Context, rt: LocatorRuntime): void {
50
+ export function registerHttp(ctx: Context, rt: LocatorRuntime, content?: ContentIndex): void {
50
51
  const inject = (ctx as unknown as {
51
52
  inject?: (deps: string[], callback: (scoped: Context) => void) => void
52
53
  }).inject
@@ -69,6 +70,17 @@ export function registerHttp(ctx: Context, rt: LocatorRuntime): void {
69
70
  path: '/dsh-locator/reveal',
70
71
  handler: handler(scoped, async body => await reveal(rt, body)),
71
72
  }))
73
+ if (content !== undefined) {
74
+ scoped.effect(() => server.register({
75
+ kind: 'exact',
76
+ path: '/dsh-locator/content',
77
+ handler: handler(scoped, async body => {
78
+ const query = typeof body.query === 'string' ? body.query : ''
79
+ const limit = typeof body.limit === 'number' ? body.limit : 30
80
+ return { ok: true, query, hits: content.search(query, limit), state: content.status() }
81
+ }),
82
+ }))
83
+ }
72
84
  scoped.effect(() => server.register({
73
85
  kind: 'exact',
74
86
  path: '/dsh-locator/open',