openlore 2.0.10 → 2.0.11

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.
@@ -0,0 +1,362 @@
1
+ /**
2
+ * openlore serve — local HTTP daemon (warm, loopback-only).
3
+ *
4
+ * A long-lived process that keeps openlore's caches warm across calls and
5
+ * exposes the tool surface over plain HTTP so non-MCP clients (e.g. a Pi
6
+ * extension) can hit it with `fetch` — no JSON-RPC, no subprocess-per-call.
7
+ *
8
+ * It reuses the SAME tool dispatch as the stdio MCP server
9
+ * ({@link dispatchTool}) so the two transports can't drift, and the SAME tool
10
+ * presets ({@link selectActiveTools}) so a small-model client gets a focused
11
+ * surface (default: `navigation`).
12
+ *
13
+ * Endpoints (all loopback):
14
+ * GET /health → { ok, version, root, preset, tools, uptimeMs }
15
+ * POST /tool/:name body { directory?, args } → handler result (JSON)
16
+ *
17
+ * Discovery: writes `.openlore/serve.json` { port, pid, host, token?, startedAt }
18
+ * in the served root so a client can find and reuse a running daemon.
19
+ *
20
+ * Security: binds 127.0.0.1 only. An optional --token must be presented as the
21
+ * `x-openlore-token` header, keeping other local users off the port.
22
+ *
23
+ * Freshness (watcher + continuous re-analyze) is layered on separately; this
24
+ * module is the transport + lifecycle core.
25
+ */
26
+ import { Command } from 'commander';
27
+ import { createServer } from 'node:http';
28
+ import { createRequire } from 'node:module';
29
+ import { writeFile, readFile, unlink, mkdir } from 'node:fs/promises';
30
+ import { join, resolve } from 'node:path';
31
+ import { logger } from '../../utils/logger.js';
32
+ import { OPENLORE_DIR } from '../../constants.js';
33
+ import { dispatchTool, UnknownToolError } from '../../core/services/tool-dispatch.js';
34
+ import { validateDirectory } from '../../core/services/mcp-handlers/utils.js';
35
+ import { McpWatcher } from '../../core/services/mcp-watcher.js';
36
+ import { openloreAnalyze } from '../../api/analyze.js';
37
+ import { TOOL_DEFINITIONS, TOOL_PRESETS, selectActiveTools } from './mcp.js';
38
+ /**
39
+ * Debounce before a full call-graph re-analyze after edits settle. Longer than
40
+ * the watcher's signature debounce (WATCH_DEBOUNCE_MS=400) because re-analysis
41
+ * is heavier; a few seconds of quiet is the signal that an edit burst is done.
42
+ */
43
+ const REANALYZE_DEBOUNCE_MS = 4000;
44
+ const _require = createRequire(import.meta.url);
45
+ const _pkgVersion = _require('../../../package.json').version;
46
+ const SERVE_FILE = 'serve.json';
47
+ const MAX_BODY_BYTES = 1_000_000; // tool args are small; reject anything larger
48
+ function serveFilePath(root) {
49
+ return join(root, OPENLORE_DIR, SERVE_FILE);
50
+ }
51
+ /** Read a JSON request body with a hard size ceiling. Rejects on overflow/parse error. */
52
+ function readJsonBody(req) {
53
+ return new Promise((resolve_, reject) => {
54
+ const chunks = [];
55
+ let size = 0;
56
+ req.on('data', (c) => {
57
+ size += c.length;
58
+ if (size > MAX_BODY_BYTES) {
59
+ reject(new Error('request body too large'));
60
+ req.destroy();
61
+ return;
62
+ }
63
+ chunks.push(c);
64
+ });
65
+ req.on('end', () => {
66
+ const raw = Buffer.concat(chunks).toString('utf-8').trim();
67
+ if (!raw)
68
+ return resolve_({});
69
+ try {
70
+ resolve_(JSON.parse(raw));
71
+ }
72
+ catch {
73
+ reject(new Error('invalid JSON body'));
74
+ }
75
+ });
76
+ req.on('error', reject);
77
+ });
78
+ }
79
+ function sendJson(res, status, body) {
80
+ const text = JSON.stringify(body);
81
+ res.writeHead(status, {
82
+ 'content-type': 'application/json',
83
+ 'content-length': Buffer.byteLength(text),
84
+ });
85
+ res.end(text);
86
+ }
87
+ /** Read <root>/.openlore/serve.json if present. */
88
+ async function readDescriptor(root) {
89
+ try {
90
+ return JSON.parse(await readFile(serveFilePath(root), 'utf-8'));
91
+ }
92
+ catch {
93
+ return null;
94
+ }
95
+ }
96
+ /**
97
+ * Confirm a descriptor points at a LIVE openlore daemon — not a stale serve.json
98
+ * left by a SIGKILL'd process, nor a recycled port now owned by something else.
99
+ * Verifies GET /health returns our `ok: true` shape, so we never signal a PID we
100
+ * can't positively identify as our own daemon.
101
+ */
102
+ async function daemonAlive(desc) {
103
+ try {
104
+ const res = await fetch(`http://${desc.host}:${desc.port}/health`, {
105
+ signal: AbortSignal.timeout(1000),
106
+ });
107
+ if (!res.ok)
108
+ return false;
109
+ const body = (await res.json().catch(() => null));
110
+ return body?.ok === true;
111
+ }
112
+ catch {
113
+ return false;
114
+ }
115
+ }
116
+ /** Stop a daemon previously started for `root` by signalling its recorded pid. */
117
+ async function stopDaemon(root) {
118
+ const path = serveFilePath(root);
119
+ const desc = await readDescriptor(root);
120
+ if (!desc) {
121
+ logger.warning(`No running openlore serve daemon found for ${root}.`);
122
+ return;
123
+ }
124
+ // Only signal a PID we've confirmed is our live daemon on the recorded port.
125
+ // A stale serve.json could otherwise point at a recycled PID belonging to an
126
+ // unrelated process — SIGTERM to that would be a nasty surprise.
127
+ if (!(await daemonAlive(desc))) {
128
+ await unlink(path).catch(() => { });
129
+ logger.warning(`No live daemon at ${desc.host}:${desc.port}; removed stale ${SERVE_FILE}.`);
130
+ return;
131
+ }
132
+ try {
133
+ process.kill(desc.pid, 'SIGTERM');
134
+ logger.success(`Sent SIGTERM to openlore serve (pid ${desc.pid}).`);
135
+ }
136
+ catch {
137
+ await unlink(path).catch(() => { });
138
+ logger.warning(`Daemon pid ${desc.pid} not signalable; removed stale ${SERVE_FILE}.`);
139
+ }
140
+ }
141
+ export async function startServe(options) {
142
+ const root = resolve(options.directory ?? process.cwd());
143
+ if (options.stop) {
144
+ await stopDaemon(root);
145
+ return undefined;
146
+ }
147
+ const host = options.host ?? '127.0.0.1';
148
+ const presetName = options.preset ?? 'navigation';
149
+ if (presetName !== 'all' && !TOOL_PRESETS[presetName]) {
150
+ logger.error(`Unknown --preset "${presetName}". Known: ${Object.keys(TOOL_PRESETS).join(', ')}, all.`);
151
+ process.exitCode = 1;
152
+ return;
153
+ }
154
+ // Active tool surface: 'all' = every tool, otherwise the named preset.
155
+ const activeNames = new Set((presetName === 'all'
156
+ ? TOOL_DEFINITIONS
157
+ : selectActiveTools(TOOL_DEFINITIONS, { preset: presetName })).map((t) => t.name));
158
+ // Don't start a second daemon for a root already served by a healthy one —
159
+ // a concurrent spawn (two MCP clients, or pi + MCP) would otherwise leave two
160
+ // watchers racing on the same .openlore/analysis. Reuse the live one instead.
161
+ const existing = await readDescriptor(root);
162
+ if (existing && (await daemonAlive(existing))) {
163
+ logger.success(`openlore serve already running for ${root} at http://${existing.host}:${existing.port} — reusing.`);
164
+ return {
165
+ port: existing.port,
166
+ host: existing.host,
167
+ token: existing.token,
168
+ baseUrl: `http://${existing.host}:${existing.port}`,
169
+ close: async () => { }, // never tear down a daemon this process didn't start
170
+ };
171
+ }
172
+ const token = options.token ?? (process.env.OPENLORE_SERVE_TOKEN || undefined);
173
+ const startedAt = new Date().toISOString();
174
+ const startMs = Date.now();
175
+ const server = createServer((req, res) => {
176
+ void handleRequest(req, res).catch((err) => {
177
+ sendJson(res, 500, { error: err instanceof Error ? err.message : String(err) });
178
+ });
179
+ });
180
+ async function handleRequest(req, res) {
181
+ const url = new URL(req.url ?? '/', `http://${host}`);
182
+ // Token gate (skips /health so liveness checks need no secret).
183
+ if (token && url.pathname !== '/health') {
184
+ if (req.headers['x-openlore-token'] !== token) {
185
+ sendJson(res, 401, { error: 'invalid or missing x-openlore-token' });
186
+ return;
187
+ }
188
+ }
189
+ if (req.method === 'GET' && url.pathname === '/health') {
190
+ sendJson(res, 200, {
191
+ ok: true,
192
+ version: _pkgVersion,
193
+ root,
194
+ preset: presetName,
195
+ tools: [...activeNames],
196
+ uptimeMs: Date.now() - startMs,
197
+ });
198
+ return;
199
+ }
200
+ if (req.method === 'POST' && url.pathname.startsWith('/tool/')) {
201
+ const name = decodeURIComponent(url.pathname.slice('/tool/'.length));
202
+ // The preset is ADVISORY (reported by /health for clients that want a
203
+ // curated list, e.g. the Pi extension). The daemon dispatches any known
204
+ // tool so it can back multiple clients with different surfaces — notably
205
+ // the MCP server, which delegates all ~45 tools here. Unknown tools 404
206
+ // via UnknownToolError below.
207
+ let body;
208
+ try {
209
+ body = await readJsonBody(req);
210
+ }
211
+ catch (err) {
212
+ sendJson(res, 400, { error: err instanceof Error ? err.message : 'bad request' });
213
+ return;
214
+ }
215
+ const args = body.args ?? {};
216
+ // Directory precedence: explicit body.directory → args.directory → served root.
217
+ const directory = (typeof body.directory === 'string' && body.directory)
218
+ || (typeof args.directory === 'string' && args.directory)
219
+ || root;
220
+ // Ensure handlers receive directory in args (they read it from there).
221
+ if (typeof args.directory !== 'string')
222
+ args.directory = directory;
223
+ try {
224
+ await validateDirectory(directory);
225
+ }
226
+ catch (err) {
227
+ sendJson(res, 400, { error: err instanceof Error ? err.message : 'invalid directory' });
228
+ return;
229
+ }
230
+ try {
231
+ const result = await dispatchTool(name, args, directory);
232
+ sendJson(res, 200, result ?? null);
233
+ }
234
+ catch (err) {
235
+ if (err instanceof UnknownToolError) {
236
+ sendJson(res, 404, { error: err.message });
237
+ return;
238
+ }
239
+ sendJson(res, 500, { error: err instanceof Error ? err.message : String(err) });
240
+ }
241
+ return;
242
+ }
243
+ sendJson(res, 404, { error: `No route for ${req.method} ${url.pathname}` });
244
+ }
245
+ // Bind (port 0 → OS picks a free ephemeral port).
246
+ const port = options.port ? parseInt(options.port, 10) : 0;
247
+ await new Promise((resolve_, reject) => {
248
+ server.once('error', reject);
249
+ server.listen(port, host, resolve_);
250
+ });
251
+ const addr = server.address();
252
+ const boundPort = typeof addr === 'object' && addr ? addr.port : port;
253
+ const descriptor = {
254
+ port: boundPort,
255
+ pid: process.pid,
256
+ host,
257
+ token,
258
+ startedAt,
259
+ version: _pkgVersion,
260
+ };
261
+ await mkdir(join(root, OPENLORE_DIR), { recursive: true });
262
+ await writeFile(serveFilePath(root), JSON.stringify(descriptor, null, 2) + '\n', 'utf-8');
263
+ logger.success(`openlore serve listening on http://${host}:${boundPort} (preset: ${presetName})`);
264
+ logger.discovery(`Discovery file: ${serveFilePath(root)}`);
265
+ // ── Freshness: watcher (signatures + vector) + debounced call-graph re-analyze ──
266
+ // The watcher keeps signatures/vector fresh between commits and primes the read
267
+ // cache in place. Its onBatchFlushed hook schedules a heavier full re-analyze so
268
+ // the CALL GRAPH (which the watcher deliberately skips) also stays fresh between
269
+ // commits — turning divergence from "wait for the next commit" into continuous.
270
+ let watcher;
271
+ let reanalyzeTimer;
272
+ let reanalyzeRunning = false;
273
+ let reanalyzePending = false;
274
+ const runReanalyze = async () => {
275
+ if (reanalyzeRunning) {
276
+ reanalyzePending = true;
277
+ return;
278
+ } // single-flight + coalesce
279
+ reanalyzeRunning = true;
280
+ try {
281
+ await openloreAnalyze({ rootPath: root, force: true });
282
+ logger.discovery(`[serve] call graph re-analyzed (${root})`);
283
+ }
284
+ catch (err) {
285
+ logger.warning(`[serve] re-analyze failed: ${err instanceof Error ? err.message : String(err)}`);
286
+ }
287
+ finally {
288
+ reanalyzeRunning = false;
289
+ if (reanalyzePending) {
290
+ reanalyzePending = false;
291
+ scheduleReanalyze();
292
+ }
293
+ }
294
+ };
295
+ function scheduleReanalyze() {
296
+ if (reanalyzeTimer)
297
+ clearTimeout(reanalyzeTimer);
298
+ reanalyzeTimer = setTimeout(() => void runReanalyze(), REANALYZE_DEBOUNCE_MS);
299
+ }
300
+ if (options.watch !== false) {
301
+ watcher = new McpWatcher({ rootPath: root, onBatchFlushed: () => scheduleReanalyze() });
302
+ try {
303
+ await watcher.start();
304
+ logger.discovery(`[serve] watching ${root} — signatures/vector live, call-graph re-analyze debounced`);
305
+ }
306
+ catch (err) {
307
+ logger.warning(`[serve] watcher failed to start: ${err instanceof Error ? err.message : String(err)}`);
308
+ watcher = undefined;
309
+ }
310
+ }
311
+ // Clean shutdown: drop the descriptor so clients don't reuse a dead port.
312
+ // Signal handlers exit the process; the returned close() is for in-process
313
+ // callers (tests) that must not kill the host.
314
+ let shuttingDown = false;
315
+ const teardown = async () => {
316
+ if (shuttingDown)
317
+ return;
318
+ shuttingDown = true;
319
+ if (reanalyzeTimer)
320
+ clearTimeout(reanalyzeTimer);
321
+ if (watcher)
322
+ await watcher.stop().catch(() => { });
323
+ await unlink(serveFilePath(root)).catch(() => { });
324
+ await new Promise((res) => server.close(() => res()));
325
+ };
326
+ const exitAfterTeardown = async () => {
327
+ await teardown();
328
+ process.exit(0);
329
+ };
330
+ process.on('SIGINT', () => void exitAfterTeardown());
331
+ process.on('SIGTERM', () => void exitAfterTeardown());
332
+ return {
333
+ port: boundPort,
334
+ host,
335
+ token,
336
+ baseUrl: `http://${host}:${boundPort}`,
337
+ close: teardown,
338
+ };
339
+ }
340
+ export const serveCommand = new Command('serve')
341
+ .description('Start a warm local HTTP daemon exposing openlore tools (loopback, for editor/agent integrations like Pi)')
342
+ .option('-d, --directory <path>', 'Project root to serve (discovery file written here)', process.cwd())
343
+ .option('-p, --port <number>', 'Port to bind (default: ephemeral free port)')
344
+ .option('--host <host>', 'Host to bind', '127.0.0.1')
345
+ .option('--preset <name>', 'Advisory tool surface reported by /health (minimal, navigation, or all). The daemon still ' +
346
+ 'dispatches any known tool; clients curate their own surface. Default: navigation', 'navigation')
347
+ .option('--token <token>', 'Require this token as the x-openlore-token header (default: $OPENLORE_SERVE_TOKEN)')
348
+ .option('--no-watch', 'Disable the freshness watcher + debounced call-graph re-analyze')
349
+ .option('--stop', 'Stop a running daemon for --directory and exit')
350
+ .addHelpText('after', `
351
+ Examples:
352
+ $ openlore serve Warm daemon, navigation preset, ephemeral port
353
+ $ openlore serve --preset all --port 7077 All tools on a fixed port
354
+ $ openlore serve --stop Stop the daemon serving this directory
355
+
356
+ $ curl 127.0.0.1:$PORT/health
357
+ $ curl -XPOST 127.0.0.1:$PORT/tool/orient -d '{"args":{"task":"add rate limiting"}}'
358
+ `)
359
+ .action(async (options) => {
360
+ await startServe(options);
361
+ });
362
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0PpC,eAAO,MAAM,YAAY,SA0KrB,CAAC"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqQpC,eAAO,MAAM,YAAY,SAgLrB,CAAC"}
@@ -88,7 +88,7 @@ async function copyFile(src, dest, force) {
88
88
  // ============================================================================
89
89
  // SKILL MANIFESTS
90
90
  // ============================================================================
91
- function buildManifest(projectRoot) {
91
+ function buildManifest(projectRoot, piGlobal = false) {
92
92
  const ex = join(PACKAGE_ROOT, 'examples');
93
93
  const VIBE_SKILLS = [
94
94
  'openlore-analyze-codebase',
@@ -182,13 +182,23 @@ function buildManifest(projectRoot) {
182
182
  dest: join(projectRoot, '.opencode', 'prompts', 'sisyphus-sdd.md'),
183
183
  },
184
184
  ],
185
+ // Pi (pi.dev) — a single TS extension, not per-skill markdown. Project-local
186
+ // by default; --global installs it for every project.
187
+ pi: [
188
+ {
189
+ src: join(ex, 'pi', 'openlore.ts'),
190
+ dest: piGlobal
191
+ ? join(homedir(), '.pi', 'agent', 'extensions', 'openlore.ts')
192
+ : join(projectRoot, '.pi', 'extensions', 'openlore.ts'),
193
+ },
194
+ ],
185
195
  };
186
196
  }
187
197
  // ============================================================================
188
198
  // CORE
189
199
  // ============================================================================
190
- async function runSetup(projectRoot, tools, force) {
191
- const manifest = buildManifest(projectRoot);
200
+ async function runSetup(projectRoot, tools, force, piGlobal = false) {
201
+ const manifest = buildManifest(projectRoot, piGlobal);
192
202
  const results = [];
193
203
  for (const tool of tools) {
194
204
  for (const entry of manifest[tool]) {
@@ -211,17 +221,18 @@ async function runSetup(projectRoot, tools, force) {
211
221
  export const setupCommand = new Command('setup')
212
222
  .description('Install workflow skills and agent integration files into this project.\n' +
213
223
  'Copies static assets from the openlore package — safe to re-run (skips existing files).')
214
- .option('--tools <list>', 'Comma-separated list of tools to install: vibe, cline, claude, opencode, gsd, bmad (default: all)')
224
+ .option('--tools <list>', 'Comma-separated list of tools to install: vibe, cline, claude, opencode, gsd, bmad, pi (default: all)')
215
225
  .option('--force', 'Overwrite existing files (use after upgrading openlore to pull in updated skills)', false)
216
226
  .option('--dir <path>', 'Project root directory', process.cwd())
227
+ .option('--global', 'For the pi target: install the extension to ~/.pi/agent/extensions/ instead of the project', false)
217
228
  .action(async (options) => {
218
229
  const projectRoot = options.dir;
219
- const allTools = ['vibe', 'cline', 'gsd', 'bmad', 'claude', 'opencode', 'omoa'];
230
+ const allTools = ['vibe', 'cline', 'gsd', 'bmad', 'claude', 'opencode', 'omoa', 'pi'];
220
231
  let tools;
221
232
  if (options.tools) {
222
233
  tools = options.tools.split(',').map((t) => t.trim()).filter((t) => allTools.includes(t));
223
234
  if (tools.length === 0) {
224
- logger.error('setup: no valid tools specified. Valid values: vibe, cline, gsd, bmad, claude, opencode, omoa');
235
+ logger.error('setup: no valid tools specified. Valid values: vibe, cline, gsd, bmad, claude, opencode, omoa, pi');
225
236
  process.exit(1);
226
237
  }
227
238
  }
@@ -262,6 +273,10 @@ export const setupCommand = new Command('setup')
262
273
  value: 'omoa',
263
274
  checked: omoaDetected,
264
275
  },
276
+ {
277
+ name: 'Pi (.pi/extensions/openlore.ts — warm-daemon extension; --global for ~/.pi)',
278
+ value: 'pi',
279
+ },
265
280
  ],
266
281
  });
267
282
  if (selected.length === 0) {
@@ -279,7 +294,7 @@ export const setupCommand = new Command('setup')
279
294
  logger.success(`Installing workflow skills into ${projectRoot}`);
280
295
  let results;
281
296
  try {
282
- results = await runSetup(projectRoot, tools, options.force);
297
+ results = await runSetup(projectRoot, tools, options.force, options.global);
283
298
  }
284
299
  catch (err) {
285
300
  logger.error(`setup failed: ${err instanceof Error ? err.message : String(err)}`);
@@ -305,6 +320,7 @@ export const setupCommand = new Command('setup')
305
320
  gsd: 'get-shit-done (GSD)',
306
321
  bmad: 'BMAD',
307
322
  omoa: 'oh-my-openagent (SDD plugins)',
323
+ pi: 'Pi (pi.dev)',
308
324
  };
309
325
  for (const tool of tools) {
310
326
  const entries = byTool[tool] ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -29,6 +29,7 @@ import { installCommand } from './install/index.js';
29
29
  import { preflightCommand } from './preflight/index.js';
30
30
  import { exportCommand } from './export/index.js';
31
31
  import { manifestCommand } from './manifest/index.js';
32
+ import { serveCommand } from './commands/serve.js';
32
33
  import { configureLogger } from '../utils/logger.js';
33
34
  // Read version from package.json at runtime so it never drifts from the published version
34
35
  const require = createRequire(import.meta.url);
@@ -130,5 +131,6 @@ program.addCommand(installCommand);
130
131
  program.addCommand(preflightCommand);
131
132
  program.addCommand(exportCommand);
132
133
  program.addCommand(manifestCommand);
134
+ program.addCommand(serveCommand);
133
135
  program.parse();
134
136
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,14 @@ export interface McpWatcherOptions {
40
40
  embedFileCeiling?: number;
41
41
  /** Extra glob patterns to ignore in addition to defaults */
42
42
  ignore?: string[];
43
+ /**
44
+ * Fired after each coalesced batch is flushed to disk (signatures + vector).
45
+ * Lets a host — e.g. the `openlore serve` daemon — schedule heavier work, such
46
+ * as a debounced full call-graph re-analyze, off the watcher's own lane. The
47
+ * watcher deliberately excludes the call graph (too expensive synchronously),
48
+ * so this is the seam where continuous call-graph freshness is layered on.
49
+ */
50
+ onBatchFlushed?: (changedAbsPaths: string[]) => void;
43
51
  }
44
52
  /**
45
53
  * True if a root-relative path should never be watched. Evaluated as a cheap
@@ -60,6 +68,7 @@ export declare class McpWatcher {
60
68
  private readonly embedFileCeiling;
61
69
  private readonly extraIgnore;
62
70
  private readonly debug;
71
+ private readonly onBatchFlushed?;
63
72
  private fsWatcher?;
64
73
  private gitWatcher?;
65
74
  private pending;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-watcher.d.ts","sourceRoot":"","sources":["../../../src/core/services/mcp-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAuCH,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AA4CD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAUzD;AAID,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAW;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAEhC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAY;IAG/B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,UAAU,CAAC,CAAgC;IACnD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAgB;gBAE7B,OAAO,EAAE,iBAAiB;IAgBhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiEtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B;;;OAGG;IACH,OAAO,CAAC,OAAO;IASf,kFAAkF;IAClF,OAAO,CAAC,UAAU;IASlB;;;;OAIG;IACH,OAAO,CAAC,KAAK;IAqBb;;;;OAIG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD;;;;;;OAMG;YACW,WAAW;IAuHzB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IA0BjC;;;;;OAKG;IACH,OAAO,KAAK,kBAAkB,GAE7B;IAED;;;;;;;OAOG;YACW,WAAW;YASX,cAAc;IAc5B,OAAO,CAAC,aAAa;YAUP,YAAY;IAyB1B;;;OAGG;YACW,aAAa;IAuD3B,iFAAiF;YACnE,gBAAgB;CAwB/B"}
1
+ {"version":3,"file":"mcp-watcher.d.ts","sourceRoot":"","sources":["../../../src/core/services/mcp-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAuCH,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACtD;AA4CD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAUzD;AAID,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAW;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAsC;IAEtE,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAY;IAG/B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,UAAU,CAAC,CAAgC;IACnD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAgB;gBAE7B,OAAO,EAAE,iBAAiB;IAiBhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiEtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B;;;OAGG;IACH,OAAO,CAAC,OAAO;IASf,kFAAkF;IAClF,OAAO,CAAC,UAAU;IASlB;;;;OAIG;IACH,OAAO,CAAC,KAAK;IAqBb;;;;OAIG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD;;;;;;OAMG;YACW,WAAW;IA6HzB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IA0BjC;;;;;OAKG;IACH,OAAO,KAAK,kBAAkB,GAE7B;IAED;;;;;;;OAOG;YACW,WAAW;YASX,cAAc;IAc5B,OAAO,CAAC,aAAa;YAUP,YAAY;IAyB1B;;;OAGG;YACW,aAAa;IAuD3B,iFAAiF;YACnE,gBAAgB;CAwB/B"}
@@ -113,6 +113,7 @@ export class McpWatcher {
113
113
  embedFileCeiling;
114
114
  extraIgnore;
115
115
  debug;
116
+ onBatchFlushed;
116
117
  fsWatcher;
117
118
  gitWatcher;
118
119
  // ── Coalescing queue (Step 1) ──────────────────────────────────────────────
@@ -141,6 +142,7 @@ export class McpWatcher {
141
142
  this.embed = options.embed ?? true;
142
143
  this.extraIgnore = options.ignore ?? [];
143
144
  this.debug = !!process.env.OPENLORE_WATCH_DEBUG;
145
+ this.onBatchFlushed = options.onBatchFlushed;
144
146
  }
145
147
  // ── Lifecycle ──────────────────────────────────────────────────────────────
146
148
  async start() {
@@ -407,6 +409,14 @@ export class McpWatcher {
407
409
  // 5. One summary line per batch (Step 6). Per-file detail is behind debug.
408
410
  const n = changedFiles.length;
409
411
  process.stderr.write(`[mcp-watcher] ${isBulk ? `coalesced ${n} changes` : `updated ${n} file${n === 1 ? '' : 's'}`} (${Date.now() - t0}ms)\n`);
412
+ // Real change flushed (signatures + edges patched on disk). Hand off to any
413
+ // host lane — e.g. serve's debounced call-graph re-analyze. Reached only when
414
+ // a meaningful batch was processed (the no-op early returns above skip it).
415
+ // Best-effort: a host callback error must never break the watcher.
416
+ try {
417
+ this.onBatchFlushed?.(absPaths);
418
+ }
419
+ catch { /* host lane is best-effort */ }
410
420
  }
411
421
  /**
412
422
  * Self-heal a schema-reset graph by spawning one detached `analyze --force`