openlore 2.0.10 → 2.0.12

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 (72) hide show
  1. package/dist/cli/commands/generate.d.ts.map +1 -1
  2. package/dist/cli/commands/generate.js +3 -2
  3. package/dist/cli/commands/generate.js.map +1 -1
  4. package/dist/cli/commands/mcp.d.ts.map +1 -1
  5. package/dist/cli/commands/mcp.js +106 -244
  6. package/dist/cli/commands/mcp.js.map +1 -1
  7. package/dist/cli/commands/serve.d.ts +49 -0
  8. package/dist/cli/commands/serve.d.ts.map +1 -0
  9. package/dist/cli/commands/serve.js +450 -0
  10. package/dist/cli/commands/serve.js.map +1 -0
  11. package/dist/cli/commands/setup.d.ts.map +1 -1
  12. package/dist/cli/commands/setup.js +32 -8
  13. package/dist/cli/commands/setup.js.map +1 -1
  14. package/dist/cli/index.js +2 -0
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/core/analyzer/artifact-generator.d.ts +1 -13
  17. package/dist/core/analyzer/artifact-generator.d.ts.map +1 -1
  18. package/dist/core/analyzer/artifact-generator.js +5 -23
  19. package/dist/core/analyzer/artifact-generator.js.map +1 -1
  20. package/dist/core/analyzer/call-graph.d.ts.map +1 -1
  21. package/dist/core/analyzer/call-graph.js +19 -10
  22. package/dist/core/analyzer/call-graph.js.map +1 -1
  23. package/dist/core/analyzer/file-walker.d.ts.map +1 -1
  24. package/dist/core/analyzer/file-walker.js +9 -1
  25. package/dist/core/analyzer/file-walker.js.map +1 -1
  26. package/dist/core/analyzer/test-file.d.ts +19 -0
  27. package/dist/core/analyzer/test-file.d.ts.map +1 -0
  28. package/dist/core/analyzer/test-file.js +29 -0
  29. package/dist/core/analyzer/test-file.js.map +1 -0
  30. package/dist/core/decisions/consolidator.d.ts.map +1 -1
  31. package/dist/core/decisions/consolidator.js +7 -1
  32. package/dist/core/decisions/consolidator.js.map +1 -1
  33. package/dist/core/decisions/syncer.js +8 -0
  34. package/dist/core/decisions/syncer.js.map +1 -1
  35. package/dist/core/services/edge-store.d.ts.map +1 -1
  36. package/dist/core/services/edge-store.js +3 -0
  37. package/dist/core/services/edge-store.js.map +1 -1
  38. package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -1
  39. package/dist/core/services/mcp-handlers/analysis.js +2 -1
  40. package/dist/core/services/mcp-handlers/analysis.js.map +1 -1
  41. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
  42. package/dist/core/services/mcp-handlers/semantic.js +7 -3
  43. package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
  44. package/dist/core/services/mcp-handlers/utils.d.ts +13 -0
  45. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -1
  46. package/dist/core/services/mcp-handlers/utils.js +49 -0
  47. package/dist/core/services/mcp-handlers/utils.js.map +1 -1
  48. package/dist/core/services/mcp-watcher.d.ts +9 -0
  49. package/dist/core/services/mcp-watcher.d.ts.map +1 -1
  50. package/dist/core/services/mcp-watcher.js +15 -5
  51. package/dist/core/services/mcp-watcher.js.map +1 -1
  52. package/dist/core/services/serve-client.d.ts +40 -0
  53. package/dist/core/services/serve-client.d.ts.map +1 -0
  54. package/dist/core/services/serve-client.js +115 -0
  55. package/dist/core/services/serve-client.js.map +1 -0
  56. package/dist/core/services/tool-dispatch.d.ts +35 -0
  57. package/dist/core/services/tool-dispatch.d.ts.map +1 -0
  58. package/dist/core/services/tool-dispatch.js +253 -0
  59. package/dist/core/services/tool-dispatch.js.map +1 -0
  60. package/dist/pi/extension.d.ts +62 -0
  61. package/dist/pi/extension.d.ts.map +1 -0
  62. package/dist/pi/extension.js +508 -0
  63. package/dist/pi/extension.js.map +1 -0
  64. package/examples/pi/README.md +98 -0
  65. package/package.json +16 -2
  66. package/skills/openlore-orient/README.md +73 -0
  67. package/skills/openlore-orient/SKILL.md +73 -0
  68. package/skills/openlore-orient/examples/example-orient-output.json +103 -0
  69. package/skills/openlore-orient/examples/example-task-prompt.md +26 -0
  70. package/skills/openlore-orient/scripts/orient-via-mcp.mjs +124 -0
  71. package/skills/openlore-orient/scripts/orient.ps1 +36 -0
  72. package/skills/openlore-orient/scripts/orient.sh +28 -0
@@ -0,0 +1,450 @@
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, OPENLORE_ANALYSIS_SUBDIR } from '../../constants.js';
33
+ import { dispatchTool, UnknownToolError } from '../../core/services/tool-dispatch.js';
34
+ import { validateDirectory, waitForGraphRebuild } from '../../core/services/mcp-handlers/utils.js';
35
+ import { EdgeStore } from '../../core/services/edge-store.js';
36
+ import { McpWatcher } from '../../core/services/mcp-watcher.js';
37
+ import { openloreAnalyze } from '../../api/analyze.js';
38
+ import { TOOL_DEFINITIONS, TOOL_PRESETS, selectActiveTools } from './mcp.js';
39
+ /**
40
+ * Debounce before a full call-graph re-analyze after edits settle. Longer than
41
+ * the watcher's signature debounce (WATCH_DEBOUNCE_MS=400) because re-analysis
42
+ * is heavier; a few seconds of quiet is the signal that an edit burst is done.
43
+ */
44
+ const REANALYZE_DEBOUNCE_MS = 4000;
45
+ const _require = createRequire(import.meta.url);
46
+ const _pkgVersion = _require('../../../package.json').version;
47
+ const SERVE_FILE = 'serve.json';
48
+ const MAX_BODY_BYTES = 1_000_000; // tool args are small; reject anything larger
49
+ function serveFilePath(root) {
50
+ return join(root, OPENLORE_DIR, SERVE_FILE);
51
+ }
52
+ /** Read a JSON request body with a hard size ceiling. Rejects on overflow/parse error. */
53
+ function readJsonBody(req) {
54
+ return new Promise((resolve_, reject) => {
55
+ const chunks = [];
56
+ let size = 0;
57
+ req.on('data', (c) => {
58
+ size += c.length;
59
+ if (size > MAX_BODY_BYTES) {
60
+ reject(new Error('request body too large'));
61
+ req.destroy();
62
+ return;
63
+ }
64
+ chunks.push(c);
65
+ });
66
+ req.on('end', () => {
67
+ const raw = Buffer.concat(chunks).toString('utf-8').trim();
68
+ if (!raw)
69
+ return resolve_({});
70
+ try {
71
+ resolve_(JSON.parse(raw));
72
+ }
73
+ catch {
74
+ reject(new Error('invalid JSON body'));
75
+ }
76
+ });
77
+ req.on('error', reject);
78
+ });
79
+ }
80
+ function sendJson(res, status, body) {
81
+ const text = JSON.stringify(body);
82
+ res.writeHead(status, {
83
+ 'content-type': 'application/json',
84
+ 'content-length': Buffer.byteLength(text),
85
+ });
86
+ res.end(text);
87
+ }
88
+ /** Read <root>/.openlore/serve.json if present. */
89
+ async function readDescriptor(root) {
90
+ try {
91
+ return JSON.parse(await readFile(serveFilePath(root), 'utf-8'));
92
+ }
93
+ catch {
94
+ return null;
95
+ }
96
+ }
97
+ /**
98
+ * Confirm a descriptor points at a LIVE openlore daemon — not a stale serve.json
99
+ * left by a SIGKILL'd process, nor a recycled port now owned by something else.
100
+ * Verifies GET /health returns our `ok: true` shape, so we never signal a PID we
101
+ * can't positively identify as our own daemon.
102
+ */
103
+ async function daemonAlive(desc) {
104
+ try {
105
+ const res = await fetch(`http://${desc.host}:${desc.port}/health`, {
106
+ signal: AbortSignal.timeout(1000),
107
+ });
108
+ if (!res.ok)
109
+ return false;
110
+ const body = (await res.json().catch(() => null));
111
+ return body?.ok === true;
112
+ }
113
+ catch {
114
+ return false;
115
+ }
116
+ }
117
+ /** Stop a daemon previously started for `root` by signalling its recorded pid. */
118
+ async function stopDaemon(root) {
119
+ const path = serveFilePath(root);
120
+ const desc = await readDescriptor(root);
121
+ if (!desc) {
122
+ logger.warning(`No running openlore serve daemon found for ${root}.`);
123
+ return;
124
+ }
125
+ // Only signal a PID we've confirmed is our live daemon on the recorded port.
126
+ // A stale serve.json could otherwise point at a recycled PID belonging to an
127
+ // unrelated process — SIGTERM to that would be a nasty surprise.
128
+ if (!(await daemonAlive(desc))) {
129
+ await unlink(path).catch(() => { });
130
+ logger.warning(`No live daemon at ${desc.host}:${desc.port}; removed stale ${SERVE_FILE}.`);
131
+ return;
132
+ }
133
+ try {
134
+ process.kill(desc.pid, 'SIGTERM');
135
+ logger.success(`Sent SIGTERM to openlore serve (pid ${desc.pid}).`);
136
+ }
137
+ catch {
138
+ await unlink(path).catch(() => { });
139
+ logger.warning(`Daemon pid ${desc.pid} not signalable; removed stale ${SERVE_FILE}.`);
140
+ }
141
+ }
142
+ export async function startServe(options) {
143
+ const root = resolve(options.directory ?? process.cwd());
144
+ if (options.stop) {
145
+ await stopDaemon(root);
146
+ return undefined;
147
+ }
148
+ const host = options.host ?? '127.0.0.1';
149
+ const presetName = options.preset ?? 'navigation';
150
+ if (presetName !== 'all' && !TOOL_PRESETS[presetName]) {
151
+ logger.error(`Unknown --preset "${presetName}". Known: ${Object.keys(TOOL_PRESETS).join(', ')}, all.`);
152
+ process.exitCode = 1;
153
+ return;
154
+ }
155
+ // Active tool surface: 'all' = every tool, otherwise the named preset.
156
+ const activeNames = new Set((presetName === 'all'
157
+ ? TOOL_DEFINITIONS
158
+ : selectActiveTools(TOOL_DEFINITIONS, { preset: presetName })).map((t) => t.name));
159
+ // Don't start a second daemon for a root already served by a healthy one —
160
+ // a concurrent spawn (two MCP clients, or pi + MCP) would otherwise leave two
161
+ // watchers racing on the same .openlore/analysis. Reuse the live one instead.
162
+ const existing = await readDescriptor(root);
163
+ if (existing && (await daemonAlive(existing))) {
164
+ logger.success(`openlore serve already running for ${root} at http://${existing.host}:${existing.port} — reusing.`);
165
+ return {
166
+ port: existing.port,
167
+ host: existing.host,
168
+ token: existing.token,
169
+ baseUrl: `http://${existing.host}:${existing.port}`,
170
+ close: async () => { }, // never tear down a daemon this process didn't start
171
+ };
172
+ }
173
+ const token = options.token ?? (process.env.OPENLORE_SERVE_TOKEN || undefined);
174
+ const startedAt = new Date().toISOString();
175
+ const startMs = Date.now();
176
+ // Per-directory schema-reset flag. Set once (at startup or first request);
177
+ // cleared after waitForGraphRebuild() succeeds so subsequent requests don't
178
+ // re-open EdgeStore. Uses a Map because the daemon can serve multiple dirs.
179
+ const schemaResetByDir = new Map();
180
+ // Single forced-rebuild coordinator, keyed by directory. BOTH the schema-reset
181
+ // healer (below) and the watcher's debounced re-analyze (further down) funnel
182
+ // through here, so at most one `analyze --force` ever runs per directory at a
183
+ // time — two concurrent ones would clear+repopulate the same EdgeStore
184
+ // non-atomically and could tear the graph. A trigger that arrives mid-rebuild
185
+ // is coalesced into a single follow-up run rather than dropped or stacked.
186
+ //
187
+ // Why serve must drive this at all: a schema-version bump makes EdgeStore.open()
188
+ // wipe the DB and report wasReset ONCE (the on-disk version is rewritten on that
189
+ // first open, so every later open reports false). serve consumes that flag at
190
+ // startup / first request, so the watcher's wasReset-keyed self-heal never sees
191
+ // it; without an explicit trigger, waitForGraphRebuild() would poll an empty
192
+ // store until it times out.
193
+ const rebuildRunning = new Set();
194
+ const rebuildPending = new Set();
195
+ function triggerRebuild(directory) {
196
+ if (rebuildRunning.has(directory)) {
197
+ rebuildPending.add(directory);
198
+ return;
199
+ }
200
+ rebuildRunning.add(directory);
201
+ logger.discovery(`[serve] rebuilding graph index (${directory})`);
202
+ void openloreAnalyze({ rootPath: directory, force: true })
203
+ .then(() => logger.discovery(`[serve] graph index rebuilt (${directory})`))
204
+ .catch((err) => logger.warning(`[serve] graph rebuild failed: ${err instanceof Error ? err.message : String(err)}`))
205
+ .finally(() => {
206
+ rebuildRunning.delete(directory);
207
+ if (rebuildPending.delete(directory)) {
208
+ // Re-run for the coalesced trigger. For the served root, go back through
209
+ // the debounce so sustained editing doesn't spin back-to-back analyzes;
210
+ // other dirs (per-request schema heal) re-run immediately.
211
+ if (directory === root)
212
+ scheduleReanalyze();
213
+ else
214
+ triggerRebuild(directory);
215
+ }
216
+ });
217
+ }
218
+ const server = createServer((req, res) => {
219
+ void handleRequest(req, res).catch((err) => {
220
+ sendJson(res, 500, { error: err instanceof Error ? err.message : String(err) });
221
+ });
222
+ });
223
+ async function handleRequest(req, res) {
224
+ const url = new URL(req.url ?? '/', `http://${host}`);
225
+ // Token gate (skips /health so liveness checks need no secret).
226
+ if (token && url.pathname !== '/health') {
227
+ if (req.headers['x-openlore-token'] !== token) {
228
+ sendJson(res, 401, { error: 'invalid or missing x-openlore-token' });
229
+ return;
230
+ }
231
+ }
232
+ if (req.method === 'GET' && url.pathname === '/health') {
233
+ sendJson(res, 200, {
234
+ ok: true,
235
+ version: _pkgVersion,
236
+ root,
237
+ preset: presetName,
238
+ tools: [...activeNames],
239
+ uptimeMs: Date.now() - startMs,
240
+ });
241
+ return;
242
+ }
243
+ if (req.method === 'POST' && url.pathname.startsWith('/tool/')) {
244
+ const name = decodeURIComponent(url.pathname.slice('/tool/'.length));
245
+ // The preset is ADVISORY (reported by /health for clients that want a
246
+ // curated list, e.g. the Pi extension). The daemon dispatches any known
247
+ // tool so it can back multiple clients with different surfaces — notably
248
+ // the MCP server, which delegates all ~45 tools here. Unknown tools 404
249
+ // via UnknownToolError below.
250
+ let body;
251
+ try {
252
+ body = await readJsonBody(req);
253
+ }
254
+ catch (err) {
255
+ sendJson(res, 400, { error: err instanceof Error ? err.message : 'bad request' });
256
+ return;
257
+ }
258
+ const args = body.args ?? {};
259
+ // Directory precedence: explicit body.directory → args.directory → served root.
260
+ const directory = (typeof body.directory === 'string' && body.directory)
261
+ || (typeof args.directory === 'string' && args.directory)
262
+ || root;
263
+ // Ensure handlers receive directory in args (they read it from there).
264
+ if (typeof args.directory !== 'string')
265
+ args.directory = directory;
266
+ try {
267
+ await validateDirectory(directory);
268
+ }
269
+ catch (err) {
270
+ sendJson(res, 400, { error: err instanceof Error ? err.message : 'invalid directory' });
271
+ return;
272
+ }
273
+ // Auto-heal schema mismatch: on first request for a directory, open
274
+ // EdgeStore once to detect wasReset; cache the result so we never
275
+ // re-open on subsequent requests. If reset, block until rebuild done.
276
+ if (!schemaResetByDir.has(directory)) {
277
+ try {
278
+ const analysisDir = join(directory, OPENLORE_DIR, OPENLORE_ANALYSIS_SUBDIR);
279
+ if (EdgeStore.exists(analysisDir)) {
280
+ const es = EdgeStore.open(EdgeStore.dbPath(analysisDir));
281
+ schemaResetByDir.set(directory, es.wasReset);
282
+ es.close();
283
+ }
284
+ else {
285
+ schemaResetByDir.set(directory, false);
286
+ }
287
+ }
288
+ catch {
289
+ schemaResetByDir.set(directory, false);
290
+ }
291
+ }
292
+ if (schemaResetByDir.get(directory)) {
293
+ logger.debug(`[serve] Schema mismatch — waiting for graph rebuild before dispatching…`);
294
+ // Kick the rebuild ourselves (coalesced) — nothing else will, because the
295
+ // wasReset flag has already been consumed by the open above.
296
+ triggerRebuild(directory);
297
+ // waitForGraphRebuild polls readCachedContext until edgeStore is
298
+ // non-null. readCachedContext invalidates on llm-context.json mtime,
299
+ // which openloreAnalyze rewrites as its last step — so the poll sees
300
+ // the rebuilt state as soon as analyze completes.
301
+ const rebuilt = await waitForGraphRebuild(directory, 60_000);
302
+ schemaResetByDir.set(directory, !rebuilt);
303
+ if (!rebuilt)
304
+ logger.warning(`[serve] Graph rebuild timed out — graph tools may return empty results.`);
305
+ }
306
+ try {
307
+ const result = await dispatchTool(name, args, directory);
308
+ sendJson(res, 200, result ?? null);
309
+ }
310
+ catch (err) {
311
+ if (err instanceof UnknownToolError) {
312
+ sendJson(res, 404, { error: err.message });
313
+ return;
314
+ }
315
+ sendJson(res, 500, { error: err instanceof Error ? err.message : String(err) });
316
+ }
317
+ return;
318
+ }
319
+ sendJson(res, 404, { error: `No route for ${req.method} ${url.pathname}` });
320
+ }
321
+ // Bind (port 0 → OS picks a free ephemeral port).
322
+ const port = options.port ? parseInt(options.port, 10) : 0;
323
+ await new Promise((resolve_, reject) => {
324
+ server.once('error', reject);
325
+ server.listen(port, host, resolve_);
326
+ });
327
+ const addr = server.address();
328
+ const boundPort = typeof addr === 'object' && addr ? addr.port : port;
329
+ const descriptor = {
330
+ port: boundPort,
331
+ pid: process.pid,
332
+ host,
333
+ token,
334
+ startedAt,
335
+ version: _pkgVersion,
336
+ };
337
+ await mkdir(join(root, OPENLORE_DIR), { recursive: true });
338
+ await writeFile(serveFilePath(root), JSON.stringify(descriptor, null, 2) + '\n', 'utf-8');
339
+ logger.success(`openlore serve listening on http://${host}:${boundPort} (preset: ${presetName})`);
340
+ logger.discovery(`Discovery file: ${serveFilePath(root)}`);
341
+ // Pre-populate the schema-reset flag for the served root so the startup
342
+ // warning fires immediately and the first request doesn't pay the open cost.
343
+ try {
344
+ const analysisDir = join(root, OPENLORE_DIR, OPENLORE_ANALYSIS_SUBDIR);
345
+ if (EdgeStore.exists(analysisDir)) {
346
+ const es = EdgeStore.open(EdgeStore.dbPath(analysisDir));
347
+ const reset = es.wasReset;
348
+ es.close();
349
+ schemaResetByDir.set(root, reset);
350
+ if (reset) {
351
+ logger.warning(`[serve] Schema version mismatch detected — graph index is being rebuilt in the background. ` +
352
+ `Graph-dependent tools will wait for completion on first request.`);
353
+ // Actually start the rebuild — the warning above is only honest if
354
+ // something kicks `analyze --force`. The watcher won't: its self-heal
355
+ // keys off wasReset, which this startup open just consumed.
356
+ triggerRebuild(root);
357
+ }
358
+ }
359
+ else {
360
+ schemaResetByDir.set(root, false);
361
+ }
362
+ }
363
+ catch (err) {
364
+ logger.debug(`[serve] Failed to check schema on startup: ${err instanceof Error ? err.message : String(err)}`);
365
+ schemaResetByDir.set(root, false);
366
+ }
367
+ // ── Freshness: watcher (signatures + vector) + debounced call-graph re-analyze ──
368
+ // The watcher keeps signatures/vector fresh between commits and primes the read
369
+ // cache in place. Its onBatchFlushed hook schedules a heavier full re-analyze so
370
+ // the CALL GRAPH (which the watcher deliberately skips) also stays fresh between
371
+ // commits — turning divergence from "wait for the next commit" into continuous.
372
+ let watcher;
373
+ let reanalyzeTimer;
374
+ // Debounced call-graph re-analyze. Routes through triggerRebuild so it shares
375
+ // the single-flight lock with the schema-reset healer (no concurrent --force).
376
+ function scheduleReanalyze() {
377
+ if (reanalyzeTimer)
378
+ clearTimeout(reanalyzeTimer);
379
+ reanalyzeTimer = setTimeout(() => triggerRebuild(root), REANALYZE_DEBOUNCE_MS);
380
+ }
381
+ if (options.watch !== false) {
382
+ watcher = new McpWatcher({ rootPath: root, onBatchFlushed: () => scheduleReanalyze() });
383
+ try {
384
+ await watcher.start();
385
+ logger.discovery(`[serve] watching ${root} — signatures/vector live, call-graph re-analyze debounced`);
386
+ }
387
+ catch (err) {
388
+ logger.warning(`[serve] watcher failed to start: ${err instanceof Error ? err.message : String(err)}`);
389
+ watcher = undefined;
390
+ }
391
+ }
392
+ // Clean shutdown: drop the descriptor so clients don't reuse a dead port.
393
+ // Signal handlers exit the process; the returned close() is for in-process
394
+ // callers (tests) that must not kill the host.
395
+ // Store handler refs so teardown() can remove them — without this, every
396
+ // startServe() call (including each test) adds permanent process listeners
397
+ // that accumulate and trigger MaxListenersExceededWarning.
398
+ let shuttingDown = false;
399
+ const teardown = async () => {
400
+ if (shuttingDown)
401
+ return;
402
+ shuttingDown = true;
403
+ process.off('SIGINT', onSigInt);
404
+ process.off('SIGTERM', onSigTerm);
405
+ if (reanalyzeTimer)
406
+ clearTimeout(reanalyzeTimer);
407
+ if (watcher)
408
+ await watcher.stop().catch(() => { });
409
+ await unlink(serveFilePath(root)).catch(() => { });
410
+ await new Promise((res) => server.close(() => res()));
411
+ };
412
+ const exitAfterTeardown = async () => {
413
+ await teardown();
414
+ process.exit(0);
415
+ };
416
+ const onSigInt = () => void exitAfterTeardown();
417
+ const onSigTerm = () => void exitAfterTeardown();
418
+ process.on('SIGINT', onSigInt);
419
+ process.on('SIGTERM', onSigTerm);
420
+ return {
421
+ port: boundPort,
422
+ host,
423
+ token,
424
+ baseUrl: `http://${host}:${boundPort}`,
425
+ close: teardown,
426
+ };
427
+ }
428
+ export const serveCommand = new Command('serve')
429
+ .description('Start a warm local HTTP daemon exposing openlore tools (loopback, for editor/agent integrations like Pi)')
430
+ .option('-d, --directory <path>', 'Project root to serve (discovery file written here)', process.cwd())
431
+ .option('-p, --port <number>', 'Port to bind (default: ephemeral free port)')
432
+ .option('--host <host>', 'Host to bind', '127.0.0.1')
433
+ .option('--preset <name>', 'Advisory tool surface reported by /health (minimal, navigation, or all). The daemon still ' +
434
+ 'dispatches any known tool; clients curate their own surface. Default: navigation', 'navigation')
435
+ .option('--token <token>', 'Require this token as the x-openlore-token header (default: $OPENLORE_SERVE_TOKEN)')
436
+ .option('--no-watch', 'Disable the freshness watcher + debounced call-graph re-analyze')
437
+ .option('--stop', 'Stop a running daemon for --directory and exit')
438
+ .addHelpText('after', `
439
+ Examples:
440
+ $ openlore serve Warm daemon, navigation preset, ephemeral port
441
+ $ openlore serve --preset all --port 7077 All tools on a fixed port
442
+ $ openlore serve --stop Stop the daemon serving this directory
443
+
444
+ $ curl 127.0.0.1:$PORT/health
445
+ $ curl -XPOST 127.0.0.1:$PORT/tool/orient -d '{"args":{"task":"add rate limiting"}}'
446
+ `)
447
+ .action(async (options) => {
448
+ await startServe(options);
449
+ });
450
+ //# 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;AA4QpC,eAAO,MAAM,YAAY,SAgLrB,CAAC"}
@@ -15,7 +15,7 @@
15
15
  * Assets are read from the `examples/` directory shipped with the openlore package.
16
16
  */
17
17
  import { Command } from 'commander';
18
- import { readFile, writeFile, mkdir, access } from 'node:fs/promises';
18
+ import { readFile, writeFile, mkdir, access, unlink } from 'node:fs/promises';
19
19
  import { join, dirname } from 'node:path';
20
20
  import { homedir } from 'node:os';
21
21
  import { fileURLToPath } from 'node:url';
@@ -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) — compiled JS extension from dist/pi/. Project-local by default;
186
+ // --global installs it for every project via ~/.pi/agent/extensions/.
187
+ pi: [
188
+ {
189
+ src: join(PACKAGE_ROOT, 'dist', 'pi', 'extension.js'),
190
+ dest: piGlobal
191
+ ? join(homedir(), '.pi', 'agent', 'extensions', 'openlore.js')
192
+ : join(projectRoot, '.pi', 'extensions', 'openlore.js'),
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]) {
@@ -196,6 +206,14 @@ async function runSetup(projectRoot, tools, force) {
196
206
  logger.warning(`setup: source not found — ${entry.src} (re-install openlore to fix)`);
197
207
  continue;
198
208
  }
209
+ // Remove the old .ts counterpart when installing the .js Pi extension.
210
+ // Prior versions of setup distributed openlore.ts; Pi loads all files in the
211
+ // extensions dir, so both registering the same tools causes a conflict.
212
+ if (tool === 'pi' && entry.dest.endsWith('.js')) {
213
+ const oldTs = entry.dest.slice(0, -3) + '.ts';
214
+ if (await fileExists(oldTs))
215
+ await unlink(oldTs);
216
+ }
199
217
  const status = await copyFile(entry.src, entry.dest, force);
200
218
  const rel = entry.dest.startsWith(projectRoot)
201
219
  ? entry.dest.slice(projectRoot.length).replace(/^\//, '')
@@ -211,17 +229,18 @@ async function runSetup(projectRoot, tools, force) {
211
229
  export const setupCommand = new Command('setup')
212
230
  .description('Install workflow skills and agent integration files into this project.\n' +
213
231
  '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)')
232
+ .option('--tools <list>', 'Comma-separated list of tools to install: vibe, cline, claude, opencode, gsd, bmad, pi (default: all)')
215
233
  .option('--force', 'Overwrite existing files (use after upgrading openlore to pull in updated skills)', false)
216
234
  .option('--dir <path>', 'Project root directory', process.cwd())
235
+ .option('--global', 'For the pi target: install the extension to ~/.pi/agent/extensions/ instead of the project', false)
217
236
  .action(async (options) => {
218
237
  const projectRoot = options.dir;
219
- const allTools = ['vibe', 'cline', 'gsd', 'bmad', 'claude', 'opencode', 'omoa'];
238
+ const allTools = ['vibe', 'cline', 'gsd', 'bmad', 'claude', 'opencode', 'omoa', 'pi'];
220
239
  let tools;
221
240
  if (options.tools) {
222
241
  tools = options.tools.split(',').map((t) => t.trim()).filter((t) => allTools.includes(t));
223
242
  if (tools.length === 0) {
224
- logger.error('setup: no valid tools specified. Valid values: vibe, cline, gsd, bmad, claude, opencode, omoa');
243
+ logger.error('setup: no valid tools specified. Valid values: vibe, cline, gsd, bmad, claude, opencode, omoa, pi');
225
244
  process.exit(1);
226
245
  }
227
246
  }
@@ -262,6 +281,10 @@ export const setupCommand = new Command('setup')
262
281
  value: 'omoa',
263
282
  checked: omoaDetected,
264
283
  },
284
+ {
285
+ name: 'Pi (.pi/extensions/openlore.js — warm-daemon extension; --global for ~/.pi)',
286
+ value: 'pi',
287
+ },
265
288
  ],
266
289
  });
267
290
  if (selected.length === 0) {
@@ -279,7 +302,7 @@ export const setupCommand = new Command('setup')
279
302
  logger.success(`Installing workflow skills into ${projectRoot}`);
280
303
  let results;
281
304
  try {
282
- results = await runSetup(projectRoot, tools, options.force);
305
+ results = await runSetup(projectRoot, tools, options.force, options.global);
283
306
  }
284
307
  catch (err) {
285
308
  logger.error(`setup failed: ${err instanceof Error ? err.message : String(err)}`);
@@ -305,6 +328,7 @@ export const setupCommand = new Command('setup')
305
328
  gsd: 'get-shit-done (GSD)',
306
329
  bmad: 'BMAD',
307
330
  omoa: 'oh-my-openagent (SDD plugins)',
331
+ pi: 'Pi (pi.dev)',
308
332
  };
309
333
  for (const tool of tools) {
310
334
  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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"}