@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.
Files changed (120) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -0
  3. package/dist/embed/embedder.d.ts +9 -0
  4. package/dist/embed/embedder.d.ts.map +1 -0
  5. package/dist/embed/embedder.js +25 -0
  6. package/dist/embed/embedder.js.map +1 -0
  7. package/dist/embed/reranker.d.ts +6 -0
  8. package/dist/embed/reranker.d.ts.map +1 -0
  9. package/dist/embed/reranker.js +24 -0
  10. package/dist/embed/reranker.js.map +1 -0
  11. package/dist/engines/astq.d.ts +3 -0
  12. package/dist/engines/astq.d.ts.map +1 -0
  13. package/dist/engines/astq.js +34 -0
  14. package/dist/engines/astq.js.map +1 -0
  15. package/dist/engines/bm25.d.ts +6 -0
  16. package/dist/engines/bm25.d.ts.map +1 -0
  17. package/dist/engines/bm25.js +65 -0
  18. package/dist/engines/bm25.js.map +1 -0
  19. package/dist/engines/files.d.ts +4 -0
  20. package/dist/engines/files.d.ts.map +1 -0
  21. package/dist/engines/files.js +58 -0
  22. package/dist/engines/files.js.map +1 -0
  23. package/dist/engines/git.d.ts +23 -0
  24. package/dist/engines/git.d.ts.map +1 -0
  25. package/dist/engines/git.js +154 -0
  26. package/dist/engines/git.js.map +1 -0
  27. package/dist/engines/lexical.d.ts +13 -0
  28. package/dist/engines/lexical.d.ts.map +1 -0
  29. package/dist/engines/lexical.js +68 -0
  30. package/dist/engines/lexical.js.map +1 -0
  31. package/dist/engines/semantic.d.ts +6 -0
  32. package/dist/engines/semantic.d.ts.map +1 -0
  33. package/dist/engines/semantic.js +44 -0
  34. package/dist/engines/semantic.js.map +1 -0
  35. package/dist/engines/symbols.d.ts +15 -0
  36. package/dist/engines/symbols.d.ts.map +1 -0
  37. package/dist/engines/symbols.js +91 -0
  38. package/dist/engines/symbols.js.map +1 -0
  39. package/dist/features.d.ts +5 -0
  40. package/dist/features.d.ts.map +1 -0
  41. package/dist/features.js +24 -0
  42. package/dist/features.js.map +1 -0
  43. package/dist/index.d.ts +22 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +104 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/indexer/chunker.d.ts +3 -0
  48. package/dist/indexer/chunker.d.ts.map +1 -0
  49. package/dist/indexer/chunker.js +51 -0
  50. package/dist/indexer/chunker.js.map +1 -0
  51. package/dist/indexer/indexer.d.ts +14 -0
  52. package/dist/indexer/indexer.d.ts.map +1 -0
  53. package/dist/indexer/indexer.js +55 -0
  54. package/dist/indexer/indexer.js.map +1 -0
  55. package/dist/indexer/languages.d.ts +13 -0
  56. package/dist/indexer/languages.d.ts.map +1 -0
  57. package/dist/indexer/languages.js +87 -0
  58. package/dist/indexer/languages.js.map +1 -0
  59. package/dist/indexer/symbols.d.ts +3 -0
  60. package/dist/indexer/symbols.d.ts.map +1 -0
  61. package/dist/indexer/symbols.js +115 -0
  62. package/dist/indexer/symbols.js.map +1 -0
  63. package/dist/plan/classify.d.ts +3 -0
  64. package/dist/plan/classify.d.ts.map +1 -0
  65. package/dist/plan/classify.js +24 -0
  66. package/dist/plan/classify.js.map +1 -0
  67. package/dist/plan/fuse.d.ts +10 -0
  68. package/dist/plan/fuse.d.ts.map +1 -0
  69. package/dist/plan/fuse.js +85 -0
  70. package/dist/plan/fuse.js.map +1 -0
  71. package/dist/render/budget.d.ts +2 -0
  72. package/dist/render/budget.d.ts.map +1 -0
  73. package/dist/render/budget.js +2 -0
  74. package/dist/render/budget.js.map +1 -0
  75. package/dist/render/cursor.d.ts +19 -0
  76. package/dist/render/cursor.d.ts.map +1 -0
  77. package/dist/render/cursor.js +35 -0
  78. package/dist/render/cursor.js.map +1 -0
  79. package/dist/render/text.d.ts +31 -0
  80. package/dist/render/text.d.ts.map +1 -0
  81. package/dist/render/text.js +134 -0
  82. package/dist/render/text.js.map +1 -0
  83. package/dist/store/db.d.ts +10 -0
  84. package/dist/store/db.d.ts.map +1 -0
  85. package/dist/store/db.js +95 -0
  86. package/dist/store/db.js.map +1 -0
  87. package/dist/store/index-store.d.ts +27 -0
  88. package/dist/store/index-store.d.ts.map +1 -0
  89. package/dist/store/index-store.js +47 -0
  90. package/dist/store/index-store.js.map +1 -0
  91. package/dist/testing.d.ts +5 -0
  92. package/dist/testing.d.ts.map +1 -0
  93. package/dist/testing.js +31 -0
  94. package/dist/testing.js.map +1 -0
  95. package/dist/types.d.ts +100 -0
  96. package/dist/types.d.ts.map +1 -0
  97. package/dist/types.js +2 -0
  98. package/dist/types.js.map +1 -0
  99. package/dist/verbs/context.d.ts +13 -0
  100. package/dist/verbs/context.d.ts.map +1 -0
  101. package/dist/verbs/context.js +68 -0
  102. package/dist/verbs/context.js.map +1 -0
  103. package/dist/verbs/dispatch.d.ts +18 -0
  104. package/dist/verbs/dispatch.d.ts.map +1 -0
  105. package/dist/verbs/dispatch.js +486 -0
  106. package/dist/verbs/dispatch.js.map +1 -0
  107. package/dist/workspace/floor.d.ts +3 -0
  108. package/dist/workspace/floor.d.ts.map +1 -0
  109. package/dist/workspace/floor.js +3 -0
  110. package/dist/workspace/floor.js.map +1 -0
  111. package/dist/workspace/glob.d.ts +2 -0
  112. package/dist/workspace/glob.d.ts.map +1 -0
  113. package/dist/workspace/glob.js +53 -0
  114. package/dist/workspace/glob.js.map +1 -0
  115. package/dist/workspace/scan.d.ts +7 -0
  116. package/dist/workspace/scan.d.ts.map +1 -0
  117. package/dist/workspace/scan.js +104 -0
  118. package/dist/workspace/scan.js.map +1 -0
  119. package/package.json +68 -0
  120. 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":"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"}
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}`);