@intentic/iq-engine 1.15.1
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.
- package/LICENSE +21 -0
- package/README.md +10 -0
- package/dist/embed/embedder.d.ts +9 -0
- package/dist/embed/embedder.d.ts.map +1 -0
- package/dist/embed/embedder.js +25 -0
- package/dist/embed/embedder.js.map +1 -0
- package/dist/embed/reranker.d.ts +6 -0
- package/dist/embed/reranker.d.ts.map +1 -0
- package/dist/embed/reranker.js +24 -0
- package/dist/embed/reranker.js.map +1 -0
- package/dist/engines/astq.d.ts +3 -0
- package/dist/engines/astq.d.ts.map +1 -0
- package/dist/engines/astq.js +34 -0
- package/dist/engines/astq.js.map +1 -0
- package/dist/engines/bm25.d.ts +6 -0
- package/dist/engines/bm25.d.ts.map +1 -0
- package/dist/engines/bm25.js +65 -0
- package/dist/engines/bm25.js.map +1 -0
- package/dist/engines/files.d.ts +4 -0
- package/dist/engines/files.d.ts.map +1 -0
- package/dist/engines/files.js +58 -0
- package/dist/engines/files.js.map +1 -0
- package/dist/engines/git.d.ts +23 -0
- package/dist/engines/git.d.ts.map +1 -0
- package/dist/engines/git.js +154 -0
- package/dist/engines/git.js.map +1 -0
- package/dist/engines/lexical.d.ts +13 -0
- package/dist/engines/lexical.d.ts.map +1 -0
- package/dist/engines/lexical.js +68 -0
- package/dist/engines/lexical.js.map +1 -0
- package/dist/engines/semantic.d.ts +6 -0
- package/dist/engines/semantic.d.ts.map +1 -0
- package/dist/engines/semantic.js +44 -0
- package/dist/engines/semantic.js.map +1 -0
- package/dist/engines/symbols.d.ts +15 -0
- package/dist/engines/symbols.d.ts.map +1 -0
- package/dist/engines/symbols.js +91 -0
- package/dist/engines/symbols.js.map +1 -0
- package/dist/features.d.ts +5 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/features.js +24 -0
- package/dist/features.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +104 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer/chunker.d.ts +3 -0
- package/dist/indexer/chunker.d.ts.map +1 -0
- package/dist/indexer/chunker.js +51 -0
- package/dist/indexer/chunker.js.map +1 -0
- package/dist/indexer/indexer.d.ts +14 -0
- package/dist/indexer/indexer.d.ts.map +1 -0
- package/dist/indexer/indexer.js +55 -0
- package/dist/indexer/indexer.js.map +1 -0
- package/dist/indexer/languages.d.ts +13 -0
- package/dist/indexer/languages.d.ts.map +1 -0
- package/dist/indexer/languages.js +87 -0
- package/dist/indexer/languages.js.map +1 -0
- package/dist/indexer/symbols.d.ts +3 -0
- package/dist/indexer/symbols.d.ts.map +1 -0
- package/dist/indexer/symbols.js +115 -0
- package/dist/indexer/symbols.js.map +1 -0
- package/dist/plan/classify.d.ts +3 -0
- package/dist/plan/classify.d.ts.map +1 -0
- package/dist/plan/classify.js +24 -0
- package/dist/plan/classify.js.map +1 -0
- package/dist/plan/fuse.d.ts +10 -0
- package/dist/plan/fuse.d.ts.map +1 -0
- package/dist/plan/fuse.js +85 -0
- package/dist/plan/fuse.js.map +1 -0
- package/dist/render/budget.d.ts +2 -0
- package/dist/render/budget.d.ts.map +1 -0
- package/dist/render/budget.js +2 -0
- package/dist/render/budget.js.map +1 -0
- package/dist/render/cursor.d.ts +19 -0
- package/dist/render/cursor.d.ts.map +1 -0
- package/dist/render/cursor.js +35 -0
- package/dist/render/cursor.js.map +1 -0
- package/dist/render/text.d.ts +31 -0
- package/dist/render/text.d.ts.map +1 -0
- package/dist/render/text.js +134 -0
- package/dist/render/text.js.map +1 -0
- package/dist/store/db.d.ts +10 -0
- package/dist/store/db.d.ts.map +1 -0
- package/dist/store/db.js +95 -0
- package/dist/store/db.js.map +1 -0
- package/dist/store/index-store.d.ts +27 -0
- package/dist/store/index-store.d.ts.map +1 -0
- package/dist/store/index-store.js +47 -0
- package/dist/store/index-store.js.map +1 -0
- package/dist/testing.d.ts +5 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +31 -0
- package/dist/testing.js.map +1 -0
- package/dist/types.d.ts +100 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/verbs/context.d.ts +13 -0
- package/dist/verbs/context.d.ts.map +1 -0
- package/dist/verbs/context.js +68 -0
- package/dist/verbs/context.js.map +1 -0
- package/dist/verbs/dispatch.d.ts +18 -0
- package/dist/verbs/dispatch.d.ts.map +1 -0
- package/dist/verbs/dispatch.js +486 -0
- package/dist/verbs/dispatch.js.map +1 -0
- package/dist/workspace/floor.d.ts +3 -0
- package/dist/workspace/floor.d.ts.map +1 -0
- package/dist/workspace/floor.js +3 -0
- package/dist/workspace/floor.js.map +1 -0
- package/dist/workspace/glob.d.ts +2 -0
- package/dist/workspace/glob.d.ts.map +1 -0
- package/dist/workspace/glob.js +53 -0
- package/dist/workspace/glob.js.map +1 -0
- package/dist/workspace/scan.d.ts +7 -0
- package/dist/workspace/scan.d.ts.map +1 -0
- package/dist/workspace/scan.js +104 -0
- package/dist/workspace/scan.js.map +1 -0
- package/package.json +68 -0
- package/scripts/fetch-model.mjs +18 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { readdir, stat } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { createIgnoreScope } from "@intentic/workspace-ignore";
|
|
4
|
+
import { isIqDenied } from "./floor.js";
|
|
5
|
+
import { globToRegExp } from "./glob.js";
|
|
6
|
+
const MAX_FILES = 100_000;
|
|
7
|
+
export const sweep = async (root, includeIgnored) => {
|
|
8
|
+
const entries = [];
|
|
9
|
+
const walk = async (dir, rel, scope, repo) => {
|
|
10
|
+
const here = await scope.descend(dir, rel);
|
|
11
|
+
const dirents = await readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
12
|
+
const ownsGit = dirents.some((d) => d.name === ".git" && d.isDirectory());
|
|
13
|
+
const repoHere = ownsGit ? rel : repo;
|
|
14
|
+
for (const dirent of dirents.toSorted((a, b) => (a.name < b.name ? -1 : 1))) {
|
|
15
|
+
if (dirent.isSymbolicLink()) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const relPath = rel === "" ? dirent.name : `${rel}/${dirent.name}`;
|
|
19
|
+
if (isIqDenied(relPath) || (!includeIgnored && here.isIgnored(dirent.name, relPath, dirent.isDirectory()))) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (dirent.isDirectory()) {
|
|
23
|
+
await walk(join(dir, dirent.name), relPath, here, repoHere);
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
if (!dirent.isFile() || entries.length >= MAX_FILES) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const stats = await stat(join(dir, dirent.name)).catch(() => undefined);
|
|
30
|
+
if (stats === undefined) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
entries.push({
|
|
34
|
+
path: relPath,
|
|
35
|
+
abs: join(dir, dirent.name),
|
|
36
|
+
mtimeMs: stats.mtimeMs,
|
|
37
|
+
size: stats.size,
|
|
38
|
+
...(repoHere !== undefined ? { repo: repoHere } : {}),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
await walk(root, "", createIgnoreScope(), undefined);
|
|
43
|
+
return entries.toSorted((a, b) => (a.path < b.path ? -1 : 1));
|
|
44
|
+
};
|
|
45
|
+
const CLASS_TESTS = /(^|\/)((__tests__|tests?)\/|test_[^/]*$)|\.(test|spec)\.[^/.]+$/;
|
|
46
|
+
const CLASS_DOCS = /(^|\/)(docs?\/)|\.(md|mdx|rst|txt)$/i;
|
|
47
|
+
const CLASS_CONFIG = /(^|\/)[^/]*\.(json|jsonc|ya?ml|toml|ini)$|(^|\/)\.[^/]*rc[^/]*$|(^|\/)[^/]*\.config\.[^/.]+$/;
|
|
48
|
+
const matchesClass = (path, cls) => {
|
|
49
|
+
if (cls === "tests") {
|
|
50
|
+
return CLASS_TESTS.test(path);
|
|
51
|
+
}
|
|
52
|
+
if (cls === "docs") {
|
|
53
|
+
return CLASS_DOCS.test(path);
|
|
54
|
+
}
|
|
55
|
+
if (cls === "config") {
|
|
56
|
+
return CLASS_CONFIG.test(path);
|
|
57
|
+
}
|
|
58
|
+
return !CLASS_TESTS.test(path) && !CLASS_DOCS.test(path) && !CLASS_CONFIG.test(path);
|
|
59
|
+
};
|
|
60
|
+
export const EXT_LANG = {
|
|
61
|
+
ts: "ts",
|
|
62
|
+
tsx: "tsx",
|
|
63
|
+
mts: "ts",
|
|
64
|
+
cts: "ts",
|
|
65
|
+
js: "js",
|
|
66
|
+
jsx: "js",
|
|
67
|
+
mjs: "js",
|
|
68
|
+
cjs: "js",
|
|
69
|
+
py: "python",
|
|
70
|
+
go: "go",
|
|
71
|
+
rs: "rust",
|
|
72
|
+
java: "java",
|
|
73
|
+
};
|
|
74
|
+
export const langOf = (path) => EXT_LANG[path.slice(path.lastIndexOf(".") + 1)];
|
|
75
|
+
const LANG_NAMES = new Set(Object.values(EXT_LANG));
|
|
76
|
+
export const canonicalLang = (token) => EXT_LANG[token] ?? (LANG_NAMES.has(token) ? token : undefined);
|
|
77
|
+
export const filterScope = (entries, scope) => {
|
|
78
|
+
const globs = scope.globs?.map(globToRegExp);
|
|
79
|
+
const notGlobs = scope.notGlobs?.map(globToRegExp);
|
|
80
|
+
const prefixes = scope.paths?.map((p) => p.replace(/^\.\//, "").replace(/\/+$/, ""));
|
|
81
|
+
const langs = scope.langs?.map((token) => canonicalLang(token) ?? token);
|
|
82
|
+
return entries.filter((entry) => {
|
|
83
|
+
if (prefixes !== undefined && !prefixes.some((p) => entry.path === p || entry.path.startsWith(`${p}/`))) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
if (scope.repo !== undefined && entry.repo !== scope.repo && entry.repo !== `repositories/${scope.repo}`) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
if (langs !== undefined && !langs.includes(langOf(entry.path) ?? "")) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (globs !== undefined && !globs.some((g) => g.test(entry.path))) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
if (notGlobs?.some((g) => g.test(entry.path))) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
if (scope.only !== undefined && !matchesClass(entry.path, scope.only)) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
return true;
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/workspace/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAoB,MAAM,4BAA4B,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,SAAS,GAAG,OAAO,CAAC;AAI1B,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,IAAY,EAAE,cAAuB,EAAwB,EAAE;IACvF,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAW,EAAE,GAAW,EAAE,KAAkB,EAAE,IAAwB,EAAiB,EAAE;QACzG,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC1B,SAAS;YACb,CAAC;YACD,MAAM,OAAO,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACnE,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;gBACzG,SAAS;YACb,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC5D,SAAS;YACb,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBAClD,SAAS;YACb,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACxE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,SAAS;YACb,CAAC;YACD,OAAO,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxD,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC;IACF,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,SAAS,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,iEAAiE,CAAC;AACtF,MAAM,UAAU,GAAG,sCAAsC,CAAC;AAC1D,MAAM,YAAY,GAAG,8FAA8F,CAAC;AAEpH,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,GAAc,EAAW,EAAE;IAC3D,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QAClB,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACjB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnB,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC5C,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAsB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE5G,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAIpD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAsB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAGnI,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAA6B,EAAE,KAAY,EAAe,EAAE;IACpF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;IACzE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5B,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACtG,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACvG,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACnE,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAChE,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpE,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@intentic/iq-engine",
|
|
3
|
+
"version": "1.15.1",
|
|
4
|
+
"description": "Search engine behind the iq CLI — disk index (node:sqlite), lexical/structural/semantic/git engines, rank fusion, budget renderer",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://gitlab.com/radarsu/intentic.git",
|
|
10
|
+
"directory": "_libs/iq-engine"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"scripts"
|
|
15
|
+
],
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public",
|
|
18
|
+
"registry": "https://registry.npmjs.org/"
|
|
19
|
+
},
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"import": {
|
|
24
|
+
"@intentic/src": "./src/index.ts",
|
|
25
|
+
"default": "./dist/index.js"
|
|
26
|
+
},
|
|
27
|
+
"require": {
|
|
28
|
+
"@intentic/src": "./src/index.ts",
|
|
29
|
+
"default": "./dist/index.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"./testing": {
|
|
33
|
+
"types": "./dist/testing.d.ts",
|
|
34
|
+
"import": {
|
|
35
|
+
"@intentic/src": "./src/testing.ts",
|
|
36
|
+
"default": "./dist/testing.js"
|
|
37
|
+
},
|
|
38
|
+
"require": {
|
|
39
|
+
"@intentic/src": "./src/testing.ts",
|
|
40
|
+
"default": "./dist/testing.js"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@ast-grep/lang-go": "0.0.6",
|
|
46
|
+
"@ast-grep/lang-java": "0.0.7",
|
|
47
|
+
"@ast-grep/lang-python": "0.0.6",
|
|
48
|
+
"@ast-grep/lang-rust": "0.0.7",
|
|
49
|
+
"@ast-grep/napi": "0.44.1",
|
|
50
|
+
"@huggingface/transformers": "4.2.0",
|
|
51
|
+
"tslib": "2.8.1",
|
|
52
|
+
"zod": "4.4.3",
|
|
53
|
+
"@intentic/sandbox-contract": "1.15.1",
|
|
54
|
+
"@intentic/workspace-ignore": "1.15.1"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@types/node": "24.13.2",
|
|
58
|
+
"typescript": "5.9.3",
|
|
59
|
+
"vitest": "4.1.9",
|
|
60
|
+
"@intentic/tsconfig": "0.0.0"
|
|
61
|
+
},
|
|
62
|
+
"scripts": {
|
|
63
|
+
"build": "tsc",
|
|
64
|
+
"watch": "tsc --build --watch",
|
|
65
|
+
"test": "vitest run",
|
|
66
|
+
"test:watch": "vitest"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Downloads the iq models into <dest> at Docker build time, so `iq ask` runs fully offline: the bge embedder
|
|
3
|
+
// (semantic retrieval) and the ms-marco cross-encoder (rerank stage).
|
|
4
|
+
// Usage: node scripts/fetch-model.mjs /opt/iq-models
|
|
5
|
+
import { AutoModelForSequenceClassification, AutoTokenizer, env, pipeline } from "@huggingface/transformers";
|
|
6
|
+
|
|
7
|
+
const dest = process.argv[2];
|
|
8
|
+
if (dest === undefined) {
|
|
9
|
+
console.error("usage: fetch-model.mjs <dest-dir>");
|
|
10
|
+
process.exit(2);
|
|
11
|
+
}
|
|
12
|
+
env.cacheDir = dest;
|
|
13
|
+
env.localModelPath = dest;
|
|
14
|
+
// Same model ids + dtypes as src/embed/{embedder,reranker}.ts — instantiating pulls every needed artifact.
|
|
15
|
+
await pipeline("feature-extraction", "Xenova/bge-small-en-v1.5", { dtype: "q8" });
|
|
16
|
+
await AutoTokenizer.from_pretrained("Xenova/ms-marco-MiniLM-L-6-v2");
|
|
17
|
+
await AutoModelForSequenceClassification.from_pretrained("Xenova/ms-marco-MiniLM-L-6-v2", { dtype: "q8" });
|
|
18
|
+
console.log(`models cached in ${dest}`);
|