@monoes/monograph 1.6.10 → 1.6.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 (83) hide show
  1. package/dist/src/pipeline/build-lock.d.ts +20 -0
  2. package/dist/src/pipeline/build-lock.d.ts.map +1 -0
  3. package/dist/src/pipeline/build-lock.js +144 -0
  4. package/dist/src/pipeline/build-lock.js.map +1 -0
  5. package/dist/src/pipeline/orchestrator.d.ts +3 -0
  6. package/dist/src/pipeline/orchestrator.d.ts.map +1 -1
  7. package/dist/src/pipeline/orchestrator.js +7 -60
  8. package/dist/src/pipeline/orchestrator.js.map +1 -1
  9. package/dist/src/pipeline/phases/orm-helpers.d.ts +11 -0
  10. package/dist/src/pipeline/phases/orm-helpers.d.ts.map +1 -0
  11. package/dist/src/pipeline/phases/orm-helpers.js +72 -0
  12. package/dist/src/pipeline/phases/orm-helpers.js.map +1 -0
  13. package/dist/src/pipeline/phases/orm-mongoose.d.ts +8 -0
  14. package/dist/src/pipeline/phases/orm-mongoose.d.ts.map +1 -0
  15. package/dist/src/pipeline/phases/orm-mongoose.js +51 -0
  16. package/dist/src/pipeline/phases/orm-mongoose.js.map +1 -0
  17. package/dist/src/pipeline/phases/orm-prisma.d.ts +8 -0
  18. package/dist/src/pipeline/phases/orm-prisma.d.ts.map +1 -0
  19. package/dist/src/pipeline/phases/orm-prisma.js +41 -0
  20. package/dist/src/pipeline/phases/orm-prisma.js.map +1 -0
  21. package/dist/src/pipeline/phases/orm-sequelize.d.ts +12 -0
  22. package/dist/src/pipeline/phases/orm-sequelize.d.ts.map +1 -0
  23. package/dist/src/pipeline/phases/orm-sequelize.js +97 -0
  24. package/dist/src/pipeline/phases/orm-sequelize.js.map +1 -0
  25. package/dist/src/pipeline/phases/orm-sqlalchemy.d.ts +8 -0
  26. package/dist/src/pipeline/phases/orm-sqlalchemy.d.ts.map +1 -0
  27. package/dist/src/pipeline/phases/orm-sqlalchemy.js +42 -0
  28. package/dist/src/pipeline/phases/orm-sqlalchemy.js.map +1 -0
  29. package/dist/src/pipeline/phases/orm-typeorm.d.ts +10 -0
  30. package/dist/src/pipeline/phases/orm-typeorm.d.ts.map +1 -0
  31. package/dist/src/pipeline/phases/orm-typeorm.js +52 -0
  32. package/dist/src/pipeline/phases/orm-typeorm.js.map +1 -0
  33. package/dist/src/pipeline/phases/orm.d.ts.map +1 -1
  34. package/dist/src/pipeline/phases/orm.js +6 -336
  35. package/dist/src/pipeline/phases/orm.js.map +1 -1
  36. package/dist/src/pipeline/phases/scope-resolution-edges.d.ts +9 -0
  37. package/dist/src/pipeline/phases/scope-resolution-edges.d.ts.map +1 -0
  38. package/dist/src/pipeline/phases/scope-resolution-edges.js +30 -0
  39. package/dist/src/pipeline/phases/scope-resolution-edges.js.map +1 -0
  40. package/dist/src/pipeline/phases/scope-resolution-function-index.d.ts +31 -0
  41. package/dist/src/pipeline/phases/scope-resolution-function-index.d.ts.map +1 -0
  42. package/dist/src/pipeline/phases/scope-resolution-function-index.js +96 -0
  43. package/dist/src/pipeline/phases/scope-resolution-function-index.js.map +1 -0
  44. package/dist/src/pipeline/phases/scope-resolution-target.d.ts +6 -0
  45. package/dist/src/pipeline/phases/scope-resolution-target.d.ts.map +1 -0
  46. package/dist/src/pipeline/phases/scope-resolution-target.js +69 -0
  47. package/dist/src/pipeline/phases/scope-resolution-target.js.map +1 -0
  48. package/dist/src/pipeline/phases/scope-resolution.d.ts.map +1 -1
  49. package/dist/src/pipeline/phases/scope-resolution.js +3 -189
  50. package/dist/src/pipeline/phases/scope-resolution.js.map +1 -1
  51. package/dist/src/staleness/git-staleness.d.ts.map +1 -1
  52. package/dist/src/staleness/git-staleness.js +2 -18
  53. package/dist/src/staleness/git-staleness.js.map +1 -1
  54. package/dist/src/storage/fts-store-hybrid.d.ts +17 -0
  55. package/dist/src/storage/fts-store-hybrid.d.ts.map +1 -0
  56. package/dist/src/storage/fts-store-hybrid.js +119 -0
  57. package/dist/src/storage/fts-store-hybrid.js.map +1 -0
  58. package/dist/src/storage/fts-store-search.d.ts +29 -0
  59. package/dist/src/storage/fts-store-search.d.ts.map +1 -0
  60. package/dist/src/storage/fts-store-search.js +177 -0
  61. package/dist/src/storage/fts-store-search.js.map +1 -0
  62. package/dist/src/storage/fts-store-terms.d.ts +8 -0
  63. package/dist/src/storage/fts-store-terms.d.ts.map +1 -0
  64. package/dist/src/storage/fts-store-terms.js +174 -0
  65. package/dist/src/storage/fts-store-terms.js.map +1 -0
  66. package/dist/src/storage/fts-store.d.ts +12 -46
  67. package/dist/src/storage/fts-store.d.ts.map +1 -1
  68. package/dist/src/storage/fts-store.js +11 -459
  69. package/dist/src/storage/fts-store.js.map +1 -1
  70. package/dist/src/watch/rebuild-queue.d.ts +12 -0
  71. package/dist/src/watch/rebuild-queue.d.ts.map +1 -1
  72. package/dist/src/watch/rebuild-queue.js +23 -4
  73. package/dist/src/watch/rebuild-queue.js.map +1 -1
  74. package/dist/src/web/api-queries.d.ts +89 -0
  75. package/dist/src/web/api-queries.d.ts.map +1 -0
  76. package/dist/src/web/api-queries.js +245 -0
  77. package/dist/src/web/api-queries.js.map +1 -0
  78. package/dist/src/web/api.d.ts +2 -87
  79. package/dist/src/web/api.d.ts.map +1 -1
  80. package/dist/src/web/api.js +3 -244
  81. package/dist/src/web/api.js.map +1 -1
  82. package/dist/tsconfig.tsbuildinfo +1 -1
  83. package/package.json +1 -1
@@ -0,0 +1,20 @@
1
+ export interface BuildLockHolder {
2
+ pid: number;
3
+ /** When the holder took the lock (epoch ms). */
4
+ startedAt: number;
5
+ lockPath: string;
6
+ }
7
+ export type BuildLock = {
8
+ acquired: true;
9
+ release: () => void;
10
+ } | {
11
+ acquired: false;
12
+ holder: BuildLockHolder | null;
13
+ };
14
+ export declare const buildLockPath: (dbPath: string) => string;
15
+ /** The process holding the build lock for `dbPath`, or null when no live build holds it. */
16
+ export declare function liveBuildLockHolder(dbPath: string): BuildLockHolder | null;
17
+ /** "(pid 123, running 2m)" — who holds a build lock, for log lines. */
18
+ export declare function describeBuildLockHolder(holder: BuildLockHolder): string;
19
+ export declare function acquireBuildLock(dbPath: string): BuildLock;
20
+ //# sourceMappingURL=build-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-lock.d.ts","sourceRoot":"","sources":["../../../src/pipeline/build-lock.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,GACvC;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,CAAC;AAExD,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,MAAgC,CAAC;AA6ChF,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAG1E;AAED,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CASvE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAiE1D"}
@@ -0,0 +1,144 @@
1
+ import { mkdirSync, readFileSync, statSync, unlinkSync, utimesSync, writeFileSync } from 'node:fs';
2
+ import { uptime } from 'node:os';
3
+ import { dirname } from 'node:path';
4
+ // Cross-process build mutex. Callers arrive from several independent entry points
5
+ // (session-start hook, MCP staleness auto-build, CLI, watcher), each with its own
6
+ // ad-hoc lock file that the others don't know about — concurrent builds then fail
7
+ // with "database is locked". Serialize in the one place all builders pass through.
8
+ //
9
+ // The file holds the holder's pid on line 1 (older readers parseInt the whole
10
+ // file) and when it took the lock on line 2. A lock is taken over when its
11
+ // holder is dead, when it predates the last boot (a recycled pid), or when
12
+ // nobody has refreshed it for STALE_AFTER_MS (#340). The holder touches it
13
+ // every HEARTBEAT_MS whenever the build yields the event loop, so a long build
14
+ // is not taken over for its age alone.
15
+ const HEARTBEAT_MS = 30_000;
16
+ const STALE_AFTER_MS = 30 * 60_000;
17
+ export const buildLockPath = (dbPath) => `${dbPath}.build-lock`;
18
+ function readLockFile(lockPath) {
19
+ try {
20
+ const raw = readFileSync(lockPath, 'utf8');
21
+ const { mtimeMs } = statSync(lockPath);
22
+ const [pidLine = '', startedLine = ''] = raw.split('\n');
23
+ const startedAt = Number.parseInt(startedLine, 10);
24
+ return {
25
+ raw,
26
+ mtimeMs,
27
+ holder: {
28
+ pid: Number.parseInt(pidLine, 10),
29
+ startedAt: Number.isFinite(startedAt) ? startedAt : mtimeMs,
30
+ lockPath,
31
+ },
32
+ };
33
+ }
34
+ catch {
35
+ return null;
36
+ }
37
+ }
38
+ function isPidAlive(pid) {
39
+ if (!Number.isInteger(pid) || pid <= 0)
40
+ return false;
41
+ try {
42
+ process.kill(pid, 0);
43
+ return true;
44
+ }
45
+ catch (err) {
46
+ // EPERM means the process exists but belongs to another user.
47
+ return err?.code === 'EPERM';
48
+ }
49
+ }
50
+ function isStale(lock) {
51
+ if (!isPidAlive(lock.holder.pid))
52
+ return true;
53
+ const bootedAt = Date.now() - uptime() * 1000;
54
+ return lock.mtimeMs < bootedAt || Date.now() - lock.mtimeMs > STALE_AFTER_MS;
55
+ }
56
+ /** The process holding the build lock for `dbPath`, or null when no live build holds it. */
57
+ export function liveBuildLockHolder(dbPath) {
58
+ const lock = readLockFile(buildLockPath(dbPath));
59
+ return lock && !isStale(lock) ? lock.holder : null;
60
+ }
61
+ /** "(pid 123, running 2m)" — who holds a build lock, for log lines. */
62
+ export function describeBuildLockHolder(holder) {
63
+ const secs = Math.max(0, Math.round((Date.now() - holder.startedAt) / 1000));
64
+ const age = secs < 60
65
+ ? `${secs}s`
66
+ : secs < 3600
67
+ ? `${Math.floor(secs / 60)}m`
68
+ : `${Math.floor(secs / 3600)}h`;
69
+ return `(pid ${holder.pid}, running ${age})`;
70
+ }
71
+ export function acquireBuildLock(dbPath) {
72
+ const lockPath = buildLockPath(dbPath);
73
+ mkdirSync(dirname(lockPath), { recursive: true });
74
+ const content = `${process.pid}\n${Date.now()}\n`;
75
+ const tryCreate = () => {
76
+ try {
77
+ writeFileSync(lockPath, content, { flag: 'wx' });
78
+ return true;
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ };
84
+ if (!tryCreate()) {
85
+ const current = readLockFile(lockPath);
86
+ if (current && !isStale(current))
87
+ return { acquired: false, holder: current.holder };
88
+ // Re-read before removing, so a lock another reclaimer just took is left alone.
89
+ if (current && readLockFile(lockPath)?.raw === current.raw) {
90
+ try {
91
+ unlinkSync(lockPath);
92
+ }
93
+ catch {
94
+ /* raced with another reclaimer */
95
+ }
96
+ }
97
+ if (!tryCreate())
98
+ return { acquired: false, holder: readLockFile(lockPath)?.holder ?? null };
99
+ }
100
+ const isOurs = () => {
101
+ try {
102
+ return readFileSync(lockPath, 'utf8') === content;
103
+ }
104
+ catch {
105
+ return false;
106
+ }
107
+ };
108
+ const heartbeat = setInterval(() => {
109
+ if (!isOurs())
110
+ return;
111
+ try {
112
+ const now = new Date();
113
+ utimesSync(lockPath, now, now);
114
+ }
115
+ catch {
116
+ /* removed underneath us */
117
+ }
118
+ }, HEARTBEAT_MS);
119
+ heartbeat.unref();
120
+ // process.exit() mid-build (an MCP server shutting down) skips the caller's
121
+ // finally, so release on 'exit'. A signal's default
122
+ // action skips 'exit' listeners too, but a JS signal handler would only run
123
+ // once the build yields the event loop, delaying the kill; that lock is left
124
+ // with a dead pid and the next build takes it over.
125
+ let released = false;
126
+ const release = () => {
127
+ if (released)
128
+ return;
129
+ released = true;
130
+ clearInterval(heartbeat);
131
+ process.off('exit', release);
132
+ if (!isOurs())
133
+ return;
134
+ try {
135
+ unlinkSync(lockPath);
136
+ }
137
+ catch {
138
+ /* already gone */
139
+ }
140
+ };
141
+ process.on('exit', release);
142
+ return { acquired: true, release };
143
+ }
144
+ //# sourceMappingURL=build-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-lock.js","sourceRoot":"","sources":["../../../src/pipeline/build-lock.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { PipelineProgress } from '../types.js';
2
+ import { type BuildLockHolder } from './build-lock.js';
2
3
  import type { PipelineOptions } from './types.js';
3
4
  export interface BuildOptions extends Partial<PipelineOptions> {
4
5
  onProgress?: (p: PipelineProgress) => void;
@@ -26,6 +27,8 @@ export type BuildResult = {
26
27
  status: 'skipped';
27
28
  reason: 'locked' | 'fresh';
28
29
  message: string;
30
+ /** Who holds the build lock, when a build was skipped for it (#340). */
31
+ holder?: BuildLockHolder;
29
32
  };
30
33
  export declare function buildAsync(repoPath: string, options?: BuildOptions): Promise<BuildResult>;
31
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/pipeline/orchestrator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,aAAa,CAAC;AA2BvE,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,YAAY,CAAC;AAWnE,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC5D,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oGAAoG;IACpG,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C,GACD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAwDvE,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAgBtB;AAoQD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EAAE,EACzB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAa7B"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/pipeline/orchestrator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,aAAa,CAAC;AACvE,OAAO,EAAoB,KAAK,eAAe,EAA2B,MAAM,iBAAiB,CAAC;AA2BlG,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,YAAY,CAAC;AAWnE,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC5D,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oGAAoG;IACpG,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B,CAAC;AAQN,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAiBtB;AAoQD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EAAE,EACzB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAa7B"}
@@ -5,6 +5,7 @@ import { analyzeChurn } from '../analysis/churn.js';
5
5
  import { ExtractionCache } from '../cache/extraction-cache.js';
6
6
  import { generateGraphReport } from '../reporting/graph-report.js';
7
7
  import { closeDb, openDb } from '../storage/db.js';
8
+ import { acquireBuildLock, describeBuildLockHolder } from './build-lock.js';
8
9
  import { isWithinScope, readIndexScope, scopeForOptions, writeIndexScope } from './index-scope.js';
9
10
  import { bridgeResolverPhase } from './phases/bridge-resolver.js';
10
11
  import { communitiesPhase } from './phases/communities.js';
@@ -44,76 +45,22 @@ function countGraph(db) {
44
45
  const count = (table) => db.prepare(`SELECT COUNT(*) AS n FROM ${table}`).get().n;
45
46
  return { nodes: count('nodes'), edges: count('edges') };
46
47
  }
47
- // Cross-process build mutex. Callers arrive from several independent entry points
48
- // (session-start hook, MCP staleness auto-build, CLI, watcher), each with its own
49
- // ad-hoc lock file that the others don't know about — concurrent builds then fail
50
- // with "database is locked". Serialize here, the one place all builders pass through.
51
- async function acquireBuildLock(dbPath) {
52
- const { writeFileSync, readFileSync, statSync, unlinkSync, mkdirSync } = await import('node:fs');
53
- const { dirname } = await import('node:path');
54
- const lockPath = `${dbPath}.build-lock`;
55
- mkdirSync(dirname(lockPath), { recursive: true });
56
- const tryAcquire = () => {
57
- try {
58
- writeFileSync(lockPath, String(process.pid), { flag: 'wx' });
59
- return true;
60
- }
61
- catch {
62
- return false;
63
- }
64
- };
65
- if (!tryAcquire()) {
66
- // Reclaim if the holder is dead or the lock is older than 30 minutes
67
- let stale = false;
68
- try {
69
- const pid = parseInt(readFileSync(lockPath, 'utf8'), 10);
70
- try {
71
- process.kill(pid, 0);
72
- }
73
- catch {
74
- stale = true;
75
- }
76
- if (!stale && Date.now() - statSync(lockPath).mtimeMs > 30 * 60 * 1000)
77
- stale = true;
78
- }
79
- catch {
80
- stale = true;
81
- }
82
- if (!stale)
83
- return null;
84
- try {
85
- unlinkSync(lockPath);
86
- }
87
- catch {
88
- /* raced with another reclaimer */
89
- }
90
- if (!tryAcquire())
91
- return null;
92
- }
93
- return () => {
94
- try {
95
- unlinkSync(lockPath);
96
- }
97
- catch {
98
- /* already gone */
99
- }
100
- };
101
- }
102
48
  export async function buildAsync(repoPath, options = {}) {
103
49
  const dbPath = resolve(join(repoPath, '.monomind', 'monograph.db'));
104
50
  const fullOptions = { ...DEFAULT_OPTIONS, ...options };
105
51
  clearWorkspacePackageMapCache(repoPath);
106
- const releaseLock = await acquireBuildLock(dbPath);
107
- if (!releaseLock) {
108
- const message = 'Another build is in progress — skipping';
52
+ const lock = acquireBuildLock(dbPath);
53
+ if (!lock.acquired) {
54
+ const who = lock.holder ? ` ${describeBuildLockHolder(lock.holder)}` : '';
55
+ const message = `Another build${who} is in progress — skipping`;
109
56
  options.onProgress?.({ phase: 'skip', message });
110
- return { status: 'skipped', reason: 'locked', message };
57
+ return { status: 'skipped', reason: 'locked', message, holder: lock.holder ?? undefined };
111
58
  }
112
59
  try {
113
60
  return await buildAsyncLocked(repoPath, dbPath, fullOptions, options);
114
61
  }
115
62
  finally {
116
- releaseLock();
63
+ lock.release();
117
64
  }
118
65
  }
119
66
  async function buildAsyncLocked(repoPath, dbPath, fullOptions, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/pipeline/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/pipeline/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { MonographEdge, MonographNode } from '../../types.js';
2
+ import type { FieldDef } from './orm.js';
3
+ export declare function addField(entityName: string, fieldName: string, fieldType: string, filePath: string, language: string, entityNodeId: string, fields: FieldDef[], fieldNodes: MonographNode[], edges: MonographEdge[]): void;
4
+ /**
5
+ * Extracts a balanced brace block from source starting at the position of the
6
+ * opening `{`. Returns the content between the braces (not including the braces).
7
+ */
8
+ export declare function extractBraceBlock(source: string, openPos: number, maxLen: number): string | undefined;
9
+ export declare function safeReadSource(absPath: string, maxBytes: number): string | undefined;
10
+ export declare function langFromExt(ext: string): string;
11
+ //# sourceMappingURL=orm-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orm-helpers.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIzC,wBAAgB,QAAQ,CACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,QAAQ,EAAE,EAClB,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,EAAE,aAAa,EAAE,GACrB,IAAI,CA4BN;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS,CAkBpB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQpF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C"}
@@ -0,0 +1,72 @@
1
+ import { readFileSync, statSync } from 'node:fs';
2
+ import { makeId, toNormLabel } from '../../types.js';
3
+ // Split out of orm.ts (file-size sweep). Pure move: no behaviour change.
4
+ export function addField(entityName, fieldName, fieldType, filePath, language, entityNodeId, fields, fieldNodes, edges) {
5
+ const fieldNodeId = makeId('field', entityName + fieldName + filePath);
6
+ const fieldNode = {
7
+ id: fieldNodeId,
8
+ label: 'Field',
9
+ name: fieldName,
10
+ normLabel: toNormLabel(fieldName),
11
+ filePath,
12
+ startLine: 0,
13
+ endLine: 0,
14
+ isExported: false,
15
+ language,
16
+ properties: { declaredType: fieldType },
17
+ };
18
+ fieldNodes.push(fieldNode);
19
+ const edgeId = makeId(entityNodeId, fieldNodeId, 'has_field');
20
+ edges.push({
21
+ id: edgeId,
22
+ sourceId: entityNodeId,
23
+ targetId: fieldNodeId,
24
+ relation: 'HAS_FIELD',
25
+ confidence: 'EXTRACTED',
26
+ confidenceScore: 0.9,
27
+ });
28
+ fields.push({ name: fieldName, type: fieldType, fieldNodeId });
29
+ }
30
+ /**
31
+ * Extracts a balanced brace block from source starting at the position of the
32
+ * opening `{`. Returns the content between the braces (not including the braces).
33
+ */
34
+ export function extractBraceBlock(source, openPos, maxLen) {
35
+ // Find the opening brace at or after openPos
36
+ const start = source.indexOf('{', openPos);
37
+ if (start === -1)
38
+ return undefined;
39
+ let depth = 0;
40
+ let i = start;
41
+ const end = Math.min(start + maxLen, source.length);
42
+ for (; i < end; i++) {
43
+ if (source[i] === '{')
44
+ depth++;
45
+ else if (source[i] === '}') {
46
+ depth--;
47
+ if (depth === 0)
48
+ return source.slice(start + 1, i);
49
+ }
50
+ }
51
+ // Return partial block if not closed within maxLen
52
+ return source.slice(start + 1, i);
53
+ }
54
+ export function safeReadSource(absPath, maxBytes) {
55
+ try {
56
+ const stat = statSync(absPath);
57
+ if (stat.size > maxBytes)
58
+ return undefined;
59
+ return readFileSync(absPath, 'utf-8');
60
+ }
61
+ catch {
62
+ return undefined;
63
+ }
64
+ }
65
+ export function langFromExt(ext) {
66
+ if (ext === '.ts' || ext === '.tsx')
67
+ return 'typescript';
68
+ if (ext === '.js' || ext === '.jsx' || ext === '.mjs' || ext === '.cjs')
69
+ return 'javascript';
70
+ return 'unknown';
71
+ }
72
+ //# sourceMappingURL=orm-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orm-helpers.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { MonographEdge, MonographNode } from '../../types.js';
2
+ import type { EntityDef } from './orm.js';
3
+ /** Mongoose: const XxxSchema = new Schema({ */
4
+ export declare const MONGOOSE_SCHEMA_RE: RegExp;
5
+ /** Mongoose field inside a Schema object: fieldName: { type: SomeType } or fieldName: SomeType */
6
+ export declare const MONGOOSE_FIELD_RE: RegExp;
7
+ export declare function detectMongooseEntities(source: string, filePath: string, language: string, entities: EntityDef[], entityNodes: MonographNode[], fieldNodes: MonographNode[], edges: MonographEdge[]): void;
8
+ //# sourceMappingURL=orm-mongoose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orm-mongoose.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-mongoose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAKpD,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,QAC+C,CAAC;AAE/E,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,QAAmD,CAAC;AAElF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,EAAE,EACrB,WAAW,EAAE,aAAa,EAAE,EAC5B,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,EAAE,aAAa,EAAE,GACrB,IAAI,CAwDN"}
@@ -0,0 +1,51 @@
1
+ import { makeId, toNormLabel } from '../../types.js';
2
+ import { addField, extractBraceBlock } from './orm-helpers.js';
3
+ // Split out of orm.ts (file-size sweep). Pure move: no behaviour change.
4
+ /** Mongoose: const XxxSchema = new Schema({ */
5
+ export const MONGOOSE_SCHEMA_RE = /(?:const|let|var)\s+(\w*[Ss]chema)\s*=\s*new\s+(?:\w+\.)?Schema\s*\(\s*\{/g;
6
+ /** Mongoose field inside a Schema object: fieldName: { type: SomeType } or fieldName: SomeType */
7
+ export const MONGOOSE_FIELD_RE = /(\w+)\s*:\s*(?:\{[^}]*type\s*:\s*(\w+)|(\w+))/g;
8
+ export function detectMongooseEntities(source, filePath, language, entities, entityNodes, fieldNodes, edges) {
9
+ const schemaRe = new RegExp(MONGOOSE_SCHEMA_RE.source, 'g');
10
+ let m;
11
+ while ((m = schemaRe.exec(source)) !== null) {
12
+ const schemaVarName = m[1];
13
+ // Remove 'Schema' suffix to get entity name
14
+ const entityName = schemaVarName.replace(/[Ss]chema$/, '') || schemaVarName;
15
+ const entityNodeId = makeId('entity', entityName + filePath);
16
+ const entityNode = {
17
+ id: entityNodeId,
18
+ label: 'Entity',
19
+ name: entityName,
20
+ normLabel: toNormLabel(entityName),
21
+ filePath,
22
+ startLine: 0,
23
+ endLine: 0,
24
+ isExported: true,
25
+ language,
26
+ };
27
+ entityNodes.push(entityNode);
28
+ // Extract a block after the Schema({ starting point
29
+ const blockStart = m.index + m[0].length;
30
+ const block = extractBraceBlock(source, blockStart - 1, 4000);
31
+ const fields = [];
32
+ if (block) {
33
+ const fieldRe = new RegExp(MONGOOSE_FIELD_RE.source, 'g');
34
+ let fm;
35
+ const seen = new Set();
36
+ while ((fm = fieldRe.exec(block)) !== null) {
37
+ const fieldName = fm[1];
38
+ const fieldType = fm[2] ?? fm[3] ?? 'Mixed';
39
+ if (seen.has(fieldName))
40
+ continue;
41
+ // Skip obvious non-field keys
42
+ if (['type', 'required', 'default', 'ref', 'index', 'unique', 'enum'].includes(fieldName))
43
+ continue;
44
+ seen.add(fieldName);
45
+ addField(entityName, fieldName, fieldType, filePath, language, entityNodeId, fields, fieldNodes, edges);
46
+ }
47
+ }
48
+ entities.push({ name: entityName, filePath, fields, entityNodeId });
49
+ }
50
+ }
51
+ //# sourceMappingURL=orm-mongoose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orm-mongoose.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-mongoose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { MonographEdge, MonographNode } from '../../types.js';
2
+ import type { EntityDef } from './orm.js';
3
+ /** Prisma model block: model Name { ... } */
4
+ export declare const PRISMA_MODEL_RE: RegExp;
5
+ /** Prisma field line inside a model block */
6
+ export declare const PRISMA_FIELD_RE: RegExp;
7
+ export declare function detectPrismaEntities(source: string, filePath: string, language: string, entities: EntityDef[], entityNodes: MonographNode[], fieldNodes: MonographNode[], edges: MonographEdge[]): void;
8
+ //# sourceMappingURL=orm-prisma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orm-prisma.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-prisma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAKpD,6CAA6C;AAC7C,eAAO,MAAM,eAAe,QAAmC,CAAC;AAEhE,6CAA6C;AAC7C,eAAO,MAAM,eAAe,QAAwB,CAAC;AAErD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,EAAE,EACrB,WAAW,EAAE,aAAa,EAAE,EAC5B,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,EAAE,aAAa,EAAE,GACrB,IAAI,CA8CN"}
@@ -0,0 +1,41 @@
1
+ import { makeId, toNormLabel } from '../../types.js';
2
+ import { addField } from './orm-helpers.js';
3
+ // Split out of orm.ts (file-size sweep). Pure move: no behaviour change.
4
+ /** Prisma model block: model Name { ... } */
5
+ export const PRISMA_MODEL_RE = /^model\s+(\w+)\s*\{([^}]+)\}/gm;
6
+ /** Prisma field line inside a model block */
7
+ export const PRISMA_FIELD_RE = /^\s+(\w+)\s+(\w+)/gm;
8
+ export function detectPrismaEntities(source, filePath, language, entities, entityNodes, fieldNodes, edges) {
9
+ const modelRe = new RegExp(PRISMA_MODEL_RE.source, 'gm');
10
+ let m;
11
+ while ((m = modelRe.exec(source)) !== null) {
12
+ const entityName = m[1];
13
+ const body = m[2];
14
+ const entityNodeId = makeId('entity', entityName + filePath);
15
+ const entityNode = {
16
+ id: entityNodeId,
17
+ label: 'Entity',
18
+ name: entityName,
19
+ normLabel: toNormLabel(entityName),
20
+ filePath,
21
+ startLine: 0,
22
+ endLine: 0,
23
+ isExported: true,
24
+ language,
25
+ };
26
+ entityNodes.push(entityNode);
27
+ const fields = [];
28
+ const fieldRe = new RegExp(PRISMA_FIELD_RE.source, 'gm');
29
+ let fm;
30
+ while ((fm = fieldRe.exec(body)) !== null) {
31
+ const fieldName = fm[1];
32
+ const fieldType = fm[2];
33
+ // Skip Prisma keywords
34
+ if (['model', 'enum', 'type', 'datasource', 'generator'].includes(fieldName))
35
+ continue;
36
+ addField(entityName, fieldName, fieldType, filePath, language, entityNodeId, fields, fieldNodes, edges);
37
+ }
38
+ entities.push({ name: entityName, filePath, fields, entityNodeId });
39
+ }
40
+ }
41
+ //# sourceMappingURL=orm-prisma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orm-prisma.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-prisma.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,yEAAyE;AAEzE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,gCAAgC,CAAC;AAEhE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAErD,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,QAAgB,EAChB,QAAgB,EAChB,QAAqB,EACrB,WAA4B,EAC5B,UAA2B,EAC3B,KAAsB;IAEtB,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,CAAyB,CAAC;IAE9B,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;QAE7D,MAAM,UAAU,GAAkB;YAChC,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;YAClC,QAAQ;YACR,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,IAAI;YAChB,QAAQ;SACT,CAAC;QACF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,EAA0B,CAAC;QAE/B,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACxB,uBAAuB;YACvB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,SAAS;YACvF,QAAQ,CACN,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAK,CACN,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { MonographEdge, MonographNode } from '../../types.js';
2
+ import type { EntityDef } from './orm.js';
3
+ /** Sequelize: class Foo extends Model (or extends Model.Model) */
4
+ export declare const SEQUELIZE_CLASS_RE: RegExp;
5
+ /** Sequelize Model.init({ field: ... }, { sequelize }) — capture the first arg block */
6
+ export declare const SEQUELIZE_INIT_RE: RegExp;
7
+ /** Sequelize sequelize.define('ModelName', { ... }) */
8
+ export declare const SEQUELIZE_DEFINE_RE: RegExp;
9
+ /** Sequelize field inside init/define block: fieldName: DataTypes.X or fieldName: { type: DataTypes.X } */
10
+ export declare const SEQUELIZE_FIELD_RE: RegExp;
11
+ export declare function detectSequelizeEntities(source: string, filePath: string, language: string, entities: EntityDef[], entityNodes: MonographNode[], fieldNodes: MonographNode[], edges: MonographEdge[]): void;
12
+ //# sourceMappingURL=orm-sequelize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orm-sequelize.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/orm-sequelize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAKpD,kEAAkE;AAClE,eAAO,MAAM,kBAAkB,QAAiD,CAAC;AAEjF,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,QAA2B,CAAC;AAE1D,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAE7E,2GAA2G;AAC3G,eAAO,MAAM,kBAAkB,QACmD,CAAC;AAEnF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,EAAE,EACrB,WAAW,EAAE,aAAa,EAAE,EAC5B,UAAU,EAAE,aAAa,EAAE,EAC3B,KAAK,EAAE,aAAa,EAAE,GACrB,IAAI,CAkHN"}