@monoes/monograph 1.6.9 → 1.6.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,121 @@
1
+ import { relative } from 'node:path';
2
+ import { describeBuildLockHolder } from '../pipeline/build-lock.js';
3
+ /**
4
+ * Serializes watch-triggered rebuilds. Changes that arrive while a build runs
5
+ * are folded into the next one, and a batch whose build found the build lock
6
+ * held (another process's build, or a session-start/init background build) is
7
+ * kept and retried. Each change batch used to start its own fire-and-forget
8
+ * build, so a lock-skipped batch was dropped for good while the log still said
9
+ * the rebuild completed (#338).
10
+ */
11
+ export function createRebuildQueue(opts) {
12
+ const retryDelayMs = opts.retryDelayMs ?? 2000;
13
+ const maxDeferMs = opts.maxDeferMs ?? 10 * 60_000;
14
+ let pending = new Set();
15
+ let running = false;
16
+ let stopped = false;
17
+ let retryTimer = null;
18
+ // Set while a deferred batch is being retried, so a lock held for minutes
19
+ // logs one "deferred" line rather than one per retry.
20
+ let deferred = false;
21
+ let deferredSince = 0;
22
+ const drain = async () => {
23
+ if (running || stopped || retryTimer)
24
+ return;
25
+ running = true;
26
+ try {
27
+ while (pending.size > 0 && !stopped) {
28
+ const files = [...pending];
29
+ pending = new Set();
30
+ if (!deferred)
31
+ opts.onEvent({ kind: 'start', files });
32
+ const started = Date.now();
33
+ let result;
34
+ try {
35
+ result = await opts.build(files);
36
+ }
37
+ catch (error) {
38
+ deferred = false;
39
+ opts.onEvent({ kind: 'failed', files, error });
40
+ continue;
41
+ }
42
+ if (result?.status === 'skipped' && result.reason === 'locked') {
43
+ for (const f of files)
44
+ pending.add(f);
45
+ const { holder } = result;
46
+ if (!deferred) {
47
+ deferred = true;
48
+ deferredSince = started;
49
+ opts.onEvent({ kind: 'deferred', files, retryInMs: retryDelayMs, holder });
50
+ }
51
+ const waitedMs = Date.now() - deferredSince;
52
+ if (waitedMs >= maxDeferMs) {
53
+ // Keep the files: the next change retries them along with its own.
54
+ deferred = false;
55
+ opts.onEvent({ kind: 'stalled', files, waitedMs, holder });
56
+ return;
57
+ }
58
+ retryTimer = setTimeout(() => {
59
+ retryTimer = null;
60
+ void drain();
61
+ }, retryDelayMs);
62
+ return;
63
+ }
64
+ deferred = false;
65
+ if (result?.status === 'built') {
66
+ opts.onEvent({ kind: 'built', files, result, durationMs: Date.now() - started });
67
+ }
68
+ else if (result?.status === 'skipped') {
69
+ opts.onEvent({ kind: 'skipped', files, message: result.message });
70
+ }
71
+ }
72
+ }
73
+ finally {
74
+ running = false;
75
+ }
76
+ };
77
+ return {
78
+ enqueue(files) {
79
+ for (const f of files)
80
+ pending.add(f);
81
+ void drain();
82
+ },
83
+ stop() {
84
+ stopped = true;
85
+ if (retryTimer)
86
+ clearTimeout(retryTimer);
87
+ retryTimer = null;
88
+ },
89
+ };
90
+ }
91
+ const signed = (n) => (n >= 0 ? `+${n}` : String(n));
92
+ /** One log line per event, stating what actually happened to the graph. */
93
+ export function describeRebuildEvent(e, repoPath) {
94
+ switch (e.kind) {
95
+ case 'start': {
96
+ const shown = e.files.slice(0, 3).map((f) => relative(repoPath, f) || f);
97
+ const more = e.files.length > 3 ? ` (+${e.files.length - 3} more)` : '';
98
+ return `Rebuilding for ${e.files.length} changed file(s): ${shown.join(', ')}${more}…`;
99
+ }
100
+ case 'built': {
101
+ const { nodes, edges } = e.result;
102
+ return (`Graph updated in ${(e.durationMs / 1000).toFixed(1)}s — ` +
103
+ `nodes ${signed(nodes.after - nodes.before)} (now ${nodes.after}), ` +
104
+ `edges ${signed(edges.after - edges.before)} (now ${edges.after})`);
105
+ }
106
+ case 'deferred':
107
+ return (`Rebuild deferred — another build is in progress` +
108
+ `${e.holder ? ` ${describeBuildLockHolder(e.holder)}` : ''}; retrying ` +
109
+ `${e.files.length} changed file(s) every ${(e.retryInMs / 1000).toFixed(1)}s until it finishes`);
110
+ case 'stalled':
111
+ return (`Rebuild still blocked after ${Math.round(e.waitedMs / 60_000)}m — the build lock is held` +
112
+ `${e.holder ? ` by ${describeBuildLockHolder(e.holder).slice(1, -1)} (${e.holder.lockPath})` : ''}. ` +
113
+ `Stopped retrying; the ${e.files.length} changed file(s) are rebuilt on the next change, ` +
114
+ `or run \`monomind monograph build\` once that build has ended.`);
115
+ case 'skipped':
116
+ return `Rebuild skipped — ${e.message}`;
117
+ case 'failed':
118
+ return `Rebuild failed: ${e.error instanceof Error ? e.error.message : String(e.error)}`;
119
+ }
120
+ }
121
+ //# sourceMappingURL=rebuild-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rebuild-queue.js","sourceRoot":"","sources":["../../../src/watch/rebuild-queue.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export interface WatchAsyncOptions extends WatcherOptions {
10
10
  llmMaxSections?: number;
11
11
  /** Auto-stop after this many ms of no file changes. Default 30min. 0 = never. */
12
12
  idleTimeoutMs?: number;
13
+ /** Delay before retrying a rebuild that found the build lock held. Default 2000ms. */
14
+ retryDelayMs?: number;
13
15
  }
14
16
  /** Convenience: start a watcher and trigger buildAsync on every change. Returns stop() fn. */
15
17
  export declare function watchAsync(repoPath: string, opts?: WatchAsyncOptions): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../../src/watch/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAWpD,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,8FAA8F;AAC9F,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA2FxC;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAO9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN3B,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YACmB,QAAQ,EAAE,MAAM,EACjC,IAAI,GAAE,cAAmB,EAI1B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B3B;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1B;IAED,OAAO,CAAC,YAAY;CAarB"}
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../../src/watch/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAYpD,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,8FAA8F;AAC9F,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAiFxC;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAO9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN3B,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YACmB,QAAQ,EAAE,MAAM,EACjC,IAAI,GAAE,cAAmB,EAI1B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B3B;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1B;IAED,OAAO,CAAC,YAAY;CAarB"}
@@ -2,6 +2,7 @@ import { EventEmitter } from 'node:events';
2
2
  import { extname, relative } from 'node:path';
3
3
  import chokidar from 'chokidar';
4
4
  import { isSupportedExtension } from '../parsers/loader.js';
5
+ import { createRebuildQueue, describeRebuildEvent } from './rebuild-queue.js';
5
6
  /** Tested against '/'-separated paths relative to the watched repo root. */
6
7
  const IGNORED_RELATIVE_PATHS = [
7
8
  /(^|\/)\../, // dotfiles
@@ -60,43 +61,28 @@ export async function watchAsync(repoPath, opts = {}) {
60
61
  }, FULL_REBUILD_IDLE_MS);
61
62
  fullRebuildTimer.unref?.();
62
63
  };
63
- let building = false;
64
- let pendingFiles = new Set();
65
- watcher.on('monograph:updated', async (files) => {
66
- resetIdle();
67
- for (const f of files)
68
- pendingFiles.add(f);
69
- if (building)
70
- return;
71
- building = true;
72
- try {
73
- while (pendingFiles.size > 0) {
74
- const batch = [...pendingFiles];
75
- pendingFiles = new Set();
76
- opts.onProgress?.({ phase: 'watch', message: `Changed: ${batch.slice(0, 3).join(', ')}` });
77
- try {
78
- await buildIncrementalAsync(repoPath, batch, {
79
- onProgress: opts.onProgress,
80
- force: opts.force,
81
- codeOnly: opts.codeOnly,
82
- llmMaxSections: opts.llmMaxSections ?? 0,
83
- });
84
- incrementalSinceLastFull = true;
85
- scheduleFullRebuild();
86
- opts.onProgress?.({ phase: 'watch', message: 'Graph updated (incremental).' });
87
- }
88
- catch (err) {
89
- watcher.emit('monograph:error', err);
90
- opts.onProgress?.({
91
- phase: 'watch',
92
- message: `Rebuild failed: ${err instanceof Error ? err.message : String(err)}`,
93
- });
94
- }
64
+ const queue = createRebuildQueue({
65
+ retryDelayMs: opts.retryDelayMs,
66
+ build: (batch) => buildIncrementalAsync(repoPath, batch, {
67
+ onProgress: opts.onProgress,
68
+ force: opts.force,
69
+ codeOnly: opts.codeOnly,
70
+ llmMaxSections: opts.llmMaxSections ?? 0,
71
+ }),
72
+ onEvent: (e) => {
73
+ if (e.kind === 'built') {
74
+ incrementalSinceLastFull = true;
75
+ scheduleFullRebuild();
76
+ }
77
+ else if (e.kind === 'failed') {
78
+ watcher.emit('monograph:error', e.error);
95
79
  }
96
- }
97
- finally {
98
- building = false;
99
- }
80
+ opts.onProgress?.({ phase: 'watch', message: describeRebuildEvent(e, repoPath) });
81
+ },
82
+ });
83
+ watcher.on('monograph:updated', (files) => {
84
+ resetIdle();
85
+ queue.enqueue(files);
100
86
  });
101
87
  await watcher.start();
102
88
  resetIdle();
@@ -106,6 +92,7 @@ export async function watchAsync(repoPath, opts = {}) {
106
92
  clearTimeout(idleTimer);
107
93
  if (fullRebuildTimer)
108
94
  clearTimeout(fullRebuildTimer);
95
+ queue.stop();
109
96
  await watcher.stop();
110
97
  },
111
98
  };
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/watch/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/watch/watcher.ts"],"names":[],"mappings":"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"}