@intentic/iq-engine 1.159.0 → 1.161.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +14 -4
  2. package/dist/engines/git.d.ts +11 -0
  3. package/dist/engines/git.d.ts.map +1 -1
  4. package/dist/engines/git.js +28 -11
  5. package/dist/engines/git.js.map +1 -1
  6. package/dist/engines/health.d.ts +32 -0
  7. package/dist/engines/health.d.ts.map +1 -0
  8. package/dist/engines/health.js +29 -0
  9. package/dist/engines/health.js.map +1 -0
  10. package/dist/engines/hotspots.d.ts +18 -0
  11. package/dist/engines/hotspots.d.ts.map +1 -0
  12. package/dist/engines/hotspots.js +31 -0
  13. package/dist/engines/hotspots.js.map +1 -0
  14. package/dist/engines/lexical.d.ts.map +1 -1
  15. package/dist/engines/lexical.js +4 -4
  16. package/dist/engines/lexical.js.map +1 -1
  17. package/dist/engines/map.d.ts +4 -0
  18. package/dist/engines/map.d.ts.map +1 -0
  19. package/dist/engines/map.js +161 -0
  20. package/dist/engines/map.js.map +1 -0
  21. package/dist/index.d.ts +8 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +105 -85
  24. package/dist/index.js.map +1 -1
  25. package/dist/indexer/complexity.d.ts +2 -0
  26. package/dist/indexer/complexity.d.ts.map +1 -0
  27. package/dist/indexer/complexity.js +49 -0
  28. package/dist/indexer/complexity.js.map +1 -0
  29. package/dist/indexer/imports.d.ts +2 -0
  30. package/dist/indexer/imports.d.ts.map +1 -0
  31. package/dist/indexer/imports.js +31 -0
  32. package/dist/indexer/imports.js.map +1 -0
  33. package/dist/indexer/index-worker.d.ts +26 -0
  34. package/dist/indexer/index-worker.d.ts.map +1 -0
  35. package/dist/indexer/index-worker.js +66 -0
  36. package/dist/indexer/index-worker.js.map +1 -0
  37. package/dist/indexer/indexer.d.ts +4 -0
  38. package/dist/indexer/indexer.d.ts.map +1 -1
  39. package/dist/indexer/indexer.js +34 -6
  40. package/dist/indexer/indexer.js.map +1 -1
  41. package/dist/indexer/languages.d.ts +1 -0
  42. package/dist/indexer/languages.d.ts.map +1 -1
  43. package/dist/indexer/languages.js +1 -0
  44. package/dist/indexer/languages.js.map +1 -1
  45. package/dist/indexer/parse-entry.d.ts +3 -0
  46. package/dist/indexer/parse-entry.d.ts.map +1 -0
  47. package/dist/indexer/parse-entry.js +14 -0
  48. package/dist/indexer/parse-entry.js.map +1 -0
  49. package/dist/indexer/sfc.d.ts +7 -0
  50. package/dist/indexer/sfc.d.ts.map +1 -0
  51. package/dist/indexer/sfc.js +19 -0
  52. package/dist/indexer/sfc.js.map +1 -0
  53. package/dist/indexer/symbols.d.ts.map +1 -1
  54. package/dist/indexer/symbols.js +14 -2
  55. package/dist/indexer/symbols.js.map +1 -1
  56. package/dist/plan/fuse.d.ts.map +1 -1
  57. package/dist/plan/fuse.js +1 -1
  58. package/dist/plan/fuse.js.map +1 -1
  59. package/dist/store/db.d.ts +3 -1
  60. package/dist/store/db.d.ts.map +1 -1
  61. package/dist/store/db.js +45 -27
  62. package/dist/store/db.js.map +1 -1
  63. package/dist/store/index-store.d.ts +4 -2
  64. package/dist/store/index-store.d.ts.map +1 -1
  65. package/dist/store/index-store.js +16 -2
  66. package/dist/store/index-store.js.map +1 -1
  67. package/dist/store/indexer-lock.d.ts +4 -0
  68. package/dist/store/indexer-lock.d.ts.map +1 -0
  69. package/dist/store/indexer-lock.js +30 -0
  70. package/dist/store/indexer-lock.js.map +1 -0
  71. package/dist/types.d.ts +1 -1
  72. package/dist/types.d.ts.map +1 -1
  73. package/dist/verbs/dispatch.d.ts +1 -0
  74. package/dist/verbs/dispatch.d.ts.map +1 -1
  75. package/dist/verbs/dispatch.js +65 -10
  76. package/dist/verbs/dispatch.js.map +1 -1
  77. package/dist/workspace/floor.d.ts +1 -0
  78. package/dist/workspace/floor.d.ts.map +1 -1
  79. package/dist/workspace/floor.js +3 -1
  80. package/dist/workspace/floor.js.map +1 -1
  81. package/dist/workspace/scan.d.ts.map +1 -1
  82. package/dist/workspace/scan.js +10 -9
  83. package/dist/workspace/scan.js.map +1 -1
  84. package/package.json +4 -4
package/dist/index.js CHANGED
@@ -1,13 +1,15 @@
1
1
  import { rmSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { loadEmbedder, MODEL_ID } from "./embed/embedder.js";
3
+ import { Worker } from "node:worker_threads";
4
+ import { loadEmbedder } from "./embed/embedder.js";
4
5
  import { loadReranker } from "./embed/reranker.js";
6
+ import { codebaseHealth } from "./engines/health.js";
5
7
  import { embedPending } from "./engines/semantic.js";
6
- import { chunkFile } from "./indexer/chunker.js";
7
- import { revalidate } from "./indexer/indexer.js";
8
- import { extractSymbols } from "./indexer/symbols.js";
9
- import { openIndex } from "./store/db.js";
10
- import { getMeta, setMeta } from "./store/index-store.js";
8
+ import { indexLag, revalidate, syncModel } from "./indexer/indexer.js";
9
+ import { parseEntry } from "./indexer/parse-entry.js";
10
+ import { isIndexBusy, openIndex } from "./store/db.js";
11
+ import { generationOf, readIndexStatus } from "./store/index-store.js";
12
+ import { claimIndexer, indexerAlive, releaseIndexer } from "./store/indexer-lock.js";
11
13
  import { FEATURES } from "./features.js";
12
14
  import { dispatch } from "./verbs/dispatch.js";
13
15
  import { IQ_DIR } from "./workspace/floor.js";
@@ -16,29 +18,13 @@ export { disabledOf, FEATURES, parseFeatures } from "./features.js";
16
18
  export { estimateTokens } from "./render/budget.js";
17
19
  export { isIqDenied, IQ_DIR } from "./workspace/floor.js";
18
20
  export { canonicalLang } from "./workspace/scan.js";
19
- const parseEntry = (path, lang, content) => {
20
- const symbols = extractSymbols(path, lang, content);
21
- return { symbols, chunks: chunkFile(path, symbols, content) };
22
- };
23
- const syncModel = (db, modelDir) => {
24
- if (modelDir === undefined) {
25
- return;
26
- }
27
- if (getMeta(db, "model_id") !== MODEL_ID) {
28
- db.run("UPDATE chunks SET embedding = NULL");
29
- setMeta(db, "model_id", MODEL_ID);
21
+ const freshnessOf = (db, entries, sweepStart, wrote) => {
22
+ const ageMs = Date.now() - sweepStart;
23
+ if (wrote) {
24
+ return { state: "fresh", ageMs };
30
25
  }
31
- };
32
- const status = (db, generation) => {
33
- const count = (sql) => Number(db.get(sql)?.["n"] ?? 0);
34
- return {
35
- files: count("SELECT COUNT(*) AS n FROM files"),
36
- symbols: count("SELECT COUNT(*) AS n FROM symbols"),
37
- chunks: count("SELECT COUNT(*) AS n FROM chunks"),
38
- embedded: count("SELECT COUNT(*) AS n FROM chunks WHERE embedding IS NOT NULL"),
39
- generation,
40
- freshness: { state: "fresh", ageMs: 0 },
41
- };
26
+ const lag = indexLag(db, entries);
27
+ return lag === 0 ? { state: "fresh", ageMs } : { state: "stale", ageMs, progress: 1 - lag / Math.max(entries.length, 1) };
42
28
  };
43
29
  export const createEngine = (options) => {
44
30
  const indexDir = options.indexDir ?? join(options.root, IQ_DIR);
@@ -46,26 +32,42 @@ export const createEngine = (options) => {
46
32
  const getEmbedder = () => (embedderPromise ??= loadEmbedder(options.modelDir));
47
33
  let rerankerPromise;
48
34
  const getReranker = () => (rerankerPromise ??= loadReranker(options.modelDir));
49
- const revalidated = async () => {
35
+ const opened = async () => {
50
36
  const sweepStart = Date.now();
51
37
  const entries = await sweep(options.root, false);
52
- const db = openIndex(indexDir);
53
- const { generation } = await revalidate(db, entries, parseEntry);
54
- syncModel(db, options.modelDir);
55
- return { db, generation, sweepStart, entries };
38
+ if (indexerAlive(indexDir)) {
39
+ const db = openIndex(indexDir, "read");
40
+ return { db, generation: generationOf(db), sweepStart, entries, indexed: false };
41
+ }
42
+ let db;
43
+ try {
44
+ db = openIndex(indexDir, "write");
45
+ const { generation } = await revalidate(db, entries, parseEntry);
46
+ syncModel(db, options.modelDir);
47
+ return { db, generation, sweepStart, entries, indexed: true };
48
+ }
49
+ catch (error) {
50
+ if (!isIndexBusy(error)) {
51
+ throw error;
52
+ }
53
+ db?.close();
54
+ const reader = openIndex(indexDir, "read");
55
+ return { db: reader, generation: generationOf(reader), sweepStart, entries, indexed: false };
56
+ }
56
57
  };
57
58
  return {
58
59
  async run(request) {
59
- const { db, generation, sweepStart, entries } = await revalidated();
60
+ const { db, generation, sweepStart, entries, indexed } = await opened();
60
61
  try {
61
62
  return await dispatch({
62
63
  root: options.root,
63
64
  indexDir,
64
65
  db,
65
66
  generation,
66
- freshness: { state: "fresh", ageMs: Date.now() - sweepStart },
67
+ freshness: freshnessOf(db, entries, sweepStart, indexed),
67
68
  getEmbedder,
68
69
  getReranker,
70
+ topUpEmbeddings: indexed,
69
71
  features: options.features ?? new Set(FEATURES),
70
72
  ...(options.rgPath !== undefined ? { rgPath: options.rgPath } : {}),
71
73
  }, request, entries);
@@ -75,18 +77,21 @@ export const createEngine = (options) => {
75
77
  }
76
78
  },
77
79
  async indexStatus() {
78
- const { db, generation } = await revalidated();
80
+ const { db, generation } = await opened();
79
81
  try {
80
- return status(db, generation);
82
+ return readIndexStatus(db, generation);
81
83
  }
82
84
  finally {
83
85
  db.close();
84
86
  }
85
87
  },
86
88
  async indexRebuild(onProgress) {
89
+ if (indexerAlive(indexDir)) {
90
+ throw new Error("another process owns this index (the sandbox daemon keeps it current) — it cannot be rebuilt from here");
91
+ }
87
92
  this.indexDrop();
88
93
  onProgress?.("rebuilding index from scratch");
89
- const { db, generation, entries } = await revalidated();
94
+ const { db, generation, entries } = await opened();
90
95
  try {
91
96
  onProgress?.(`indexed ${entries.length} files`);
92
97
  const embedder = await getEmbedder();
@@ -94,7 +99,7 @@ export const createEngine = (options) => {
94
99
  const remaining = await embedPending(db, embedder, Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);
95
100
  onProgress?.(remaining === 0 ? "embeddings complete" : `embeddings incomplete: ${remaining} chunks pending`);
96
101
  }
97
- return status(db, generation);
102
+ return readIndexStatus(db, generation);
98
103
  }
99
104
  finally {
100
105
  db.close();
@@ -105,11 +110,11 @@ export const createEngine = (options) => {
105
110
  },
106
111
  };
107
112
  };
108
- const REFRESH_DEBOUNCE_MS = 300;
113
+ const WORKER_URL = new URL("../dist/indexer/index-worker.js", import.meta.url);
109
114
  export const createResidentEngine = (options) => {
110
115
  const indexDir = options.indexDir ?? join(options.root, IQ_DIR);
111
- const db = openIndex(indexDir);
112
- syncModel(db, options.modelDir);
116
+ const db = openIndex(indexDir, "write");
117
+ claimIndexer(indexDir);
113
118
  let embedderPromise;
114
119
  const getEmbedder = () => (embedderPromise ??= loadEmbedder(options.modelDir));
115
120
  let rerankerPromise;
@@ -118,44 +123,67 @@ export const createResidentEngine = (options) => {
118
123
  let sweepStart = 0;
119
124
  let generation = 0;
120
125
  let revalidatedOnce = false;
121
- let dirty = true;
122
- let refreshing;
123
- let timer;
126
+ let dirtySeq = 0;
127
+ let appliedSeq = 0;
124
128
  let publishFirstSweep;
125
- const firstSweep = new Promise((resolve) => {
129
+ let failFirstSweep;
130
+ const firstSweep = new Promise((resolve, reject) => {
126
131
  publishFirstSweep = resolve;
132
+ failFirstSweep = reject;
127
133
  });
128
- const refresh = () => (refreshing ??= (async () => {
129
- try {
130
- do {
131
- dirty = false;
132
- const started = Date.now();
133
- entries = await sweep(options.root, false);
134
- sweepStart = started;
135
- publishFirstSweep();
136
- ({ generation } = await revalidate(db, entries, parseEntry));
137
- revalidatedOnce = true;
138
- } while (dirty);
134
+ let publishWarm;
135
+ let failWarm;
136
+ const warmed = new Promise((resolve, reject) => {
137
+ publishWarm = resolve;
138
+ failWarm = reject;
139
+ });
140
+ void firstSweep.catch(() => undefined);
141
+ void warmed.catch(() => undefined);
142
+ const worker = new Worker(WORKER_URL, {
143
+ workerData: { root: options.root, indexDir, modelDir: options.modelDir },
144
+ });
145
+ let warmSettled = false;
146
+ const fail = (error) => {
147
+ if (warmSettled) {
148
+ options.onIndexError?.(error);
149
+ }
150
+ warmSettled = true;
151
+ failFirstSweep(error);
152
+ failWarm(error);
153
+ };
154
+ worker.on("message", (event) => {
155
+ if (event.type === "swept") {
156
+ entries = event.entries;
157
+ sweepStart = event.sweepStart;
158
+ publishFirstSweep();
159
+ return;
160
+ }
161
+ if (event.type === "indexed") {
162
+ generation = event.generation;
163
+ appliedSeq = event.seq;
164
+ revalidatedOnce = true;
165
+ return;
139
166
  }
140
- finally {
141
- refreshing = undefined;
167
+ if (event.type === "warmed") {
168
+ warmSettled = true;
169
+ publishWarm(event.status);
170
+ return;
142
171
  }
143
- })());
172
+ fail(event.error);
173
+ });
174
+ worker.on("error", fail);
144
175
  const freshness = () => {
145
176
  const ageMs = Date.now() - sweepStart;
146
177
  if (!revalidatedOnce) {
147
178
  return { state: "building", ageMs };
148
179
  }
149
- if (dirty || refreshing !== undefined) {
180
+ if (appliedSeq < dirtySeq) {
150
181
  return { state: "stale", ageMs };
151
182
  }
152
183
  return { state: "fresh", ageMs };
153
184
  };
154
- return {
185
+ const engine = {
155
186
  async run(request, signal) {
156
- if (dirty && refreshing === undefined) {
157
- void refresh();
158
- }
159
187
  await firstSweep;
160
188
  return dispatch({
161
189
  root: options.root,
@@ -165,36 +193,28 @@ export const createResidentEngine = (options) => {
165
193
  freshness: freshness(),
166
194
  getEmbedder,
167
195
  getReranker,
196
+ topUpEmbeddings: false,
168
197
  features: options.features ?? new Set(FEATURES),
169
198
  ...(options.rgPath !== undefined ? { rgPath: options.rgPath } : {}),
170
199
  ...(signal !== undefined ? { signal } : {}),
171
200
  }, request, entries);
172
201
  },
173
- markDirty() {
174
- dirty = true;
175
- if (refreshing !== undefined) {
176
- return;
177
- }
178
- timer ??= setTimeout(() => {
179
- timer = undefined;
180
- if (dirty) {
181
- void refresh();
182
- }
183
- }, REFRESH_DEBOUNCE_MS);
202
+ async health(request) {
203
+ await firstSweep;
204
+ return codebaseHealth({ db, root: options.root, freshness: freshness() }, request, entries);
184
205
  },
185
- async warm() {
186
- await refresh();
187
- const embedder = await getEmbedder();
188
- if (embedder !== undefined) {
189
- await embedPending(db, embedder, Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);
190
- }
191
- return status(db, generation);
206
+ markDirty() {
207
+ dirtySeq += 1;
208
+ worker.postMessage({ type: "dirty", seq: dirtySeq });
192
209
  },
210
+ warm: () => warmed,
193
211
  async close() {
194
- clearTimeout(timer);
195
- await refreshing;
212
+ await worker.terminate();
196
213
  db.close();
214
+ releaseIndexer(indexDir);
197
215
  },
198
216
  };
217
+ engine.markDirty();
218
+ return engine;
199
219
  };
200
220
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const fileComplexity: (path: string, lang: string | undefined, content: string) => number;
2
+ //# sourceMappingURL=complexity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complexity.d.ts","sourceRoot":"","sources":["../../src/indexer/complexity.ts"],"names":[],"mappings":"AAoEA,eAAO,MAAM,cAAc,SAAU,MAAM,QAAQ,MAAM,GAAG,SAAS,WAAW,MAAM,KAAG,MAWxF,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { NON_CODE, parseLang } from "./languages.js";
2
+ import { scriptBlocksOf } from "./sfc.js";
3
+ const BRANCH_KINDS = new Set([
4
+ "if_statement",
5
+ "if_expression",
6
+ "elif_clause",
7
+ "conditional_expression",
8
+ "ternary_expression",
9
+ "for_statement",
10
+ "for_in_statement",
11
+ "enhanced_for_statement",
12
+ "for_expression",
13
+ "while_statement",
14
+ "while_expression",
15
+ "do_statement",
16
+ "loop_expression",
17
+ "switch_case",
18
+ "switch_label",
19
+ "expression_case",
20
+ "type_case",
21
+ "case_clause",
22
+ "match_arm",
23
+ "catch_clause",
24
+ "except_clause",
25
+ ]);
26
+ const LOGICAL_OPERATORS = new Set(["&&", "||", "??", "and", "or"]);
27
+ const walk = (node) => {
28
+ let count = BRANCH_KINDS.has(node.kind()) ? 1 : 0;
29
+ if (LOGICAL_OPERATORS.has(node.field("operator")?.text() ?? "")) {
30
+ count++;
31
+ }
32
+ for (const child of node.children()) {
33
+ count += walk(child);
34
+ }
35
+ return count;
36
+ };
37
+ const LEXICAL_BRANCHES = /\b(?:if|elif|for|while|case|when|catch|except|rescue)\b|&&|\|\||\?\?/g;
38
+ const lexicalComplexity = (content) => content.match(LEXICAL_BRANCHES)?.length ?? 0;
39
+ export const fileComplexity = (path, lang, content) => {
40
+ if (NON_CODE.test(path)) {
41
+ return 0;
42
+ }
43
+ if (lang === "vue") {
44
+ return scriptBlocksOf(content).reduce((total, block) => total + fileComplexity(path, block.lang, block.content), 0);
45
+ }
46
+ const root = lang === undefined ? undefined : parseLang(lang, content)?.root();
47
+ return root === undefined ? lexicalComplexity(content) : walk(root);
48
+ };
49
+ //# sourceMappingURL=complexity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complexity.js","sourceRoot":"","sources":["../../src/indexer/complexity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAc1C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAEzB,cAAc;IACd,eAAe;IACf,aAAa;IACb,wBAAwB;IACxB,oBAAoB;IAEpB,eAAe;IACf,kBAAkB;IAClB,wBAAwB;IACxB,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;IACd,iBAAiB;IAIjB,aAAa;IACb,cAAc;IACd,iBAAiB;IACjB,WAAW;IACX,aAAa;IACb,WAAW;IAEX,cAAc;IACd,eAAe;CAClB,CAAC,CAAC;AAIH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAEnE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE;IAElC,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,KAAK,EAAE,CAAC;IACZ,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAIF,MAAM,gBAAgB,GAAG,uEAAuE,CAAC;AAEjG,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;AAEpG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,IAAwB,EAAE,OAAe,EAAU,EAAE;IAC9F,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC;IACb,CAAC;IAGD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACjB,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACxH,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;IAC/E,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const extractImports: (path: string, lang: string | undefined, content: string) => string[];
2
+ //# sourceMappingURL=imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../src/indexer/imports.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,cAAc,SAAU,MAAM,QAAQ,MAAM,GAAG,SAAS,WAAW,MAAM,KAAG,MAAM,EAkB9F,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { NON_CODE } from "./languages.js";
2
+ import { scriptBlocksOf } from "./sfc.js";
3
+ const PATTERNS = [
4
+ /\b(?:import|export)\b[^;\n]*?\bfrom\s*["']([^"'\n]+)["']/g,
5
+ /\bimport\s*["']([^"'\n]+)["']/g,
6
+ /\b(?:require|import)\s*\(\s*["']([^"'\n]+)["']\s*\)/g,
7
+ /^\s*from\s+([\w.]+)\s+import\b/gm,
8
+ /^\s*import\s+([\w.]+)\s*$/gm,
9
+ /^\s*use\s+([\w:]+)/gm,
10
+ /^\s*import\s+([\w.]+);/gm,
11
+ ];
12
+ export const extractImports = (path, lang, content) => {
13
+ if (NON_CODE.test(path)) {
14
+ return [];
15
+ }
16
+ if (lang === "vue") {
17
+ return scriptBlocksOf(content).flatMap((block) => extractImports(path, block.lang, block.content));
18
+ }
19
+ const specifiers = new Set();
20
+ for (const pattern of PATTERNS) {
21
+ pattern.lastIndex = 0;
22
+ for (let match = pattern.exec(content); match !== null; match = pattern.exec(content)) {
23
+ const specifier = match[1].trim();
24
+ if (specifier !== "") {
25
+ specifiers.add(specifier);
26
+ }
27
+ }
28
+ }
29
+ return [...specifiers];
30
+ };
31
+ //# sourceMappingURL=imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../src/indexer/imports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAW1C,MAAM,QAAQ,GAAsB;IAEhC,2DAA2D;IAE3D,gCAAgC;IAEhC,sDAAsD;IAEtD,kCAAkC;IAClC,6BAA6B;IAE7B,sBAAsB;IACtB,0BAA0B;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,IAAwB,EAAE,OAAe,EAAY,EAAE;IAChG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACjB,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpF,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;gBACnB,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;AAC3B,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { FileEntry, IndexStatus } from "../types.js";
2
+ export interface IndexWorkerData {
3
+ readonly root: string;
4
+ readonly indexDir: string;
5
+ readonly modelDir: string | undefined;
6
+ }
7
+ export interface IndexWorkerRequest {
8
+ readonly type: "dirty";
9
+ readonly seq: number;
10
+ }
11
+ export type IndexWorkerEvent = {
12
+ readonly type: "swept";
13
+ readonly entries: FileEntry[];
14
+ readonly sweepStart: number;
15
+ } | {
16
+ readonly type: "indexed";
17
+ readonly generation: number;
18
+ readonly seq: number;
19
+ } | {
20
+ readonly type: "warmed";
21
+ readonly status: IndexStatus;
22
+ } | {
23
+ readonly type: "failed";
24
+ readonly error: Error;
25
+ };
26
+ //# sourceMappingURL=index-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-worker.d.ts","sourceRoot":"","sources":["../../src/indexer/index-worker.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA0B1D,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAID,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB;AAKD,MAAM,MAAM,gBAAgB,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC/E;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { parentPort, workerData } from "node:worker_threads";
2
+ import { loadEmbedder } from "../embed/embedder.js";
3
+ import { embedPending } from "../engines/semantic.js";
4
+ import { openIndex } from "../store/db.js";
5
+ import { readIndexStatus } from "../store/index-store.js";
6
+ import { sweep } from "../workspace/scan.js";
7
+ import { revalidate, syncModel } from "./indexer.js";
8
+ import { parseEntry } from "./parse-entry.js";
9
+ const port = parentPort;
10
+ if (port === null) {
11
+ throw new Error("iq index worker: not started as a worker thread");
12
+ }
13
+ const { root, indexDir, modelDir } = workerData;
14
+ const post = (event) => {
15
+ port.postMessage(event);
16
+ };
17
+ const db = openIndex(indexDir, "write");
18
+ syncModel(db, modelDir);
19
+ let embedderPromise;
20
+ const getEmbedder = () => (embedderPromise ??= loadEmbedder(modelDir));
21
+ let requested = 0;
22
+ let applied = 0;
23
+ let draining = false;
24
+ let warmed = false;
25
+ const pass = async (target) => {
26
+ const sweepStart = Date.now();
27
+ const entries = await sweep(root, false);
28
+ post({ type: "swept", entries, sweepStart });
29
+ const { generation } = await revalidate(db, entries, parseEntry);
30
+ applied = target;
31
+ post({ type: "indexed", generation, seq: applied });
32
+ const embedder = await getEmbedder();
33
+ if (embedder !== undefined) {
34
+ await embedPending(db, embedder, Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);
35
+ }
36
+ if (!warmed) {
37
+ warmed = true;
38
+ post({ type: "warmed", status: readIndexStatus(db, generation) });
39
+ }
40
+ };
41
+ const drain = async () => {
42
+ if (draining) {
43
+ return;
44
+ }
45
+ draining = true;
46
+ try {
47
+ for (;;) {
48
+ const target = requested;
49
+ if (applied >= target) {
50
+ return;
51
+ }
52
+ await pass(target);
53
+ }
54
+ }
55
+ catch (error) {
56
+ post({ type: "failed", error: error instanceof Error ? error : new Error(String(error)) });
57
+ }
58
+ finally {
59
+ draining = false;
60
+ }
61
+ };
62
+ port.on("message", (request) => {
63
+ requested = Math.max(requested, request.seq);
64
+ void drain();
65
+ });
66
+ //# sourceMappingURL=index-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-worker.js","sourceRoot":"","sources":["../../src/indexer/index-worker.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,15 @@ import type { ChunkRow, FileEntry, SymbolRow } from "../types.js";
3
3
  export type ParseFile = (path: string, lang: string | undefined, content: string) => {
4
4
  symbols: SymbolRow[];
5
5
  chunks: ChunkRow[];
6
+ complexity: number;
7
+ imports: string[];
6
8
  };
7
9
  export interface RevalidateResult {
8
10
  readonly generation: number;
9
11
  readonly fileCount: number;
10
12
  readonly changed: number;
11
13
  }
14
+ export declare const syncModel: (db: IndexDb, modelDir: string | undefined) => void;
15
+ export declare const indexLag: (db: IndexDb, entries: readonly FileEntry[]) => number;
12
16
  export declare const revalidate: (db: IndexDb, entries: readonly FileEntry[], parse?: ParseFile) => Promise<RevalidateResult>;
13
17
  //# sourceMappingURL=indexer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/indexer/indexer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAWlE,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,KAAK;IAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC;AAElI,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAMD,eAAO,MAAM,UAAU,OAAc,OAAO,WAAW,SAAS,SAAS,EAAE,UAAU,SAAS,KAAG,OAAO,CAAC,gBAAgB,CA8ExH,CAAC"}
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/indexer/indexer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAY9C,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYlE,MAAM,MAAM,SAAS,GAAG,CACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,KACd;IAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAMD,eAAO,MAAM,SAAS,OAAQ,OAAO,YAAY,MAAM,GAAG,SAAS,KAAG,IAQrE,CAAC;AAYF,eAAO,MAAM,QAAQ,OAAQ,OAAO,WAAW,SAAS,SAAS,EAAE,KAAG,MAgBrE,CAAC;AAIF,eAAO,MAAM,UAAU,OAAc,OAAO,WAAW,SAAS,SAAS,EAAE,UAAU,SAAS,KAAG,OAAO,CAAC,gBAAgB,CAqFxH,CAAC"}