@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 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/render/text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type Row = Record<string, string | number | bigint | Uint8Array | null>;
2
+ export interface IndexDb {
3
+ all(sql: string, ...params: (string | number | bigint | Uint8Array | null)[]): Row[];
4
+ get(sql: string, ...params: (string | number | bigint | Uint8Array | null)[]): Row | undefined;
5
+ run(sql: string, ...params: (string | number | bigint | Uint8Array | null)[]): void;
6
+ transaction(fn: () => void): void;
7
+ close(): void;
8
+ }
9
+ export declare const openIndex: (dir: string) => IndexDb;
10
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/store/db.ts"],"names":[],"mappings":"AAuDA,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;AAI/E,MAAM,WAAW,OAAO;IACpB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;IACrF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,SAAS,CAAC;IAC/F,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACpF,WAAW,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAClC,KAAK,IAAI,IAAI,CAAC;CACjB;AAuCD,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,OAOvC,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { mkdirSync, rmSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { DatabaseSync } from "node:sqlite";
4
+ const SCHEMA_VERSION = "4";
5
+ const DDL = `
6
+ CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT NOT NULL);
7
+ CREATE TABLE IF NOT EXISTS files (
8
+ id INTEGER PRIMARY KEY,
9
+ path TEXT NOT NULL UNIQUE,
10
+ repo TEXT,
11
+ lang TEXT,
12
+ mtime_ms INTEGER NOT NULL,
13
+ size INTEGER NOT NULL,
14
+ hash TEXT NOT NULL
15
+ );
16
+ CREATE TABLE IF NOT EXISTS symbols (
17
+ id INTEGER PRIMARY KEY,
18
+ file_id INTEGER NOT NULL REFERENCES files(id) ON DELETE CASCADE,
19
+ name TEXT NOT NULL,
20
+ kind TEXT NOT NULL,
21
+ line INTEGER NOT NULL,
22
+ end_line INTEGER NOT NULL,
23
+ signature TEXT NOT NULL,
24
+ exported INTEGER NOT NULL DEFAULT 0,
25
+ heuristic INTEGER NOT NULL DEFAULT 0
26
+ );
27
+ CREATE INDEX IF NOT EXISTS symbols_name ON symbols(name);
28
+ CREATE INDEX IF NOT EXISTS symbols_file ON symbols(file_id);
29
+ CREATE TABLE IF NOT EXISTS chunks (
30
+ id INTEGER PRIMARY KEY,
31
+ file_id INTEGER NOT NULL REFERENCES files(id) ON DELETE CASCADE,
32
+ start_line INTEGER NOT NULL,
33
+ end_line INTEGER NOT NULL,
34
+ hash TEXT NOT NULL,
35
+ text TEXT NOT NULL,
36
+ embedding BLOB
37
+ );
38
+ CREATE INDEX IF NOT EXISTS chunks_file ON chunks(file_id);
39
+ CREATE INDEX IF NOT EXISTS chunks_hash ON chunks(hash);
40
+ -- BM25 over chunk text (the sparse tier of hybrid retrieval). External-content: rows live in chunks; the
41
+ -- triggers keep the FTS index in sync — verified to fire on FK-cascade deletes too. tokenchars keeps
42
+ -- snake_case/$identifiers whole.
43
+ CREATE VIRTUAL TABLE IF NOT EXISTS chunks_fts USING fts5(text, content='chunks', content_rowid='id', tokenize="unicode61 tokenchars '_$'");
44
+ CREATE TRIGGER IF NOT EXISTS chunks_fts_ai AFTER INSERT ON chunks BEGIN
45
+ INSERT INTO chunks_fts(rowid, text) VALUES (new.id, new.text);
46
+ END;
47
+ CREATE TRIGGER IF NOT EXISTS chunks_fts_ad AFTER DELETE ON chunks BEGIN
48
+ INSERT INTO chunks_fts(chunks_fts, rowid, text) VALUES ('delete', old.id, old.text);
49
+ END;
50
+ `;
51
+ const open = (dir) => {
52
+ mkdirSync(join(dir, "spool"), { recursive: true });
53
+ const db = new DatabaseSync(join(dir, "index.db"));
54
+ db.exec("PRAGMA journal_mode = WAL; PRAGMA synchronous = NORMAL; PRAGMA busy_timeout = 5000; PRAGMA foreign_keys = ON;");
55
+ db.exec(DDL);
56
+ const wrapped = {
57
+ all: (sql, ...params) => db.prepare(sql).all(...params),
58
+ get: (sql, ...params) => db.prepare(sql).get(...params),
59
+ run: (sql, ...params) => {
60
+ db.prepare(sql).run(...params);
61
+ },
62
+ transaction: (fn) => {
63
+ db.exec("BEGIN");
64
+ try {
65
+ fn();
66
+ db.exec("COMMIT");
67
+ }
68
+ catch (error) {
69
+ db.exec("ROLLBACK");
70
+ throw error;
71
+ }
72
+ },
73
+ close: () => db.close(),
74
+ };
75
+ const version = wrapped.get("SELECT value FROM meta WHERE key = 'schema_version'")?.["value"];
76
+ if (version === undefined) {
77
+ wrapped.run("INSERT INTO meta (key, value) VALUES ('schema_version', ?)", SCHEMA_VERSION);
78
+ return wrapped;
79
+ }
80
+ if (version !== SCHEMA_VERSION) {
81
+ db.close();
82
+ throw new Error(`iq index schema ${String(version)} != ${SCHEMA_VERSION}`);
83
+ }
84
+ return wrapped;
85
+ };
86
+ export const openIndex = (dir) => {
87
+ try {
88
+ return open(dir);
89
+ }
90
+ catch {
91
+ rmSync(dir, { recursive: true, force: true });
92
+ return open(dir);
93
+ }
94
+ };
95
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/store/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CX,CAAC;AAcF,MAAM,IAAI,GAAG,CAAC,GAAW,EAAW,EAAE;IAClC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;IACnD,EAAE,CAAC,IAAI,CAAC,+GAA+G,CAAC,CAAC;IACzH,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,OAAO,GAAY;QACrB,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAU;QAChE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAoB;QAC1E,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,EAAE;YACpB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE;YAChB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjB,IAAI,CAAC;gBACD,EAAE,EAAE,CAAC;gBACL,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACpB,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE;KAC1B,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC9F,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,4DAA4D,EAAE,cAAc,CAAC,CAAC;QAC1F,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC7B,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,OAAO,CAAC,OAAO,cAAc,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAW,EAAE;IAC9C,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { ChunkRow, SymbolRow } from "../types.js";
2
+ import type { IndexDb } from "./db.js";
3
+ export interface StoredFile {
4
+ readonly id: number;
5
+ readonly path: string;
6
+ readonly repo: string | undefined;
7
+ readonly lang: string | undefined;
8
+ readonly mtimeMs: number;
9
+ readonly size: number;
10
+ readonly hash: string;
11
+ }
12
+ export declare const listFiles: (db: IndexDb) => Map<string, StoredFile>;
13
+ export declare const touchFile: (db: IndexDb, id: number, mtimeMs: number, size: number) => void;
14
+ export declare const deleteFile: (db: IndexDb, id: number) => void;
15
+ export declare const replaceFile: (db: IndexDb, file: {
16
+ path: string;
17
+ repo: string | undefined;
18
+ lang: string | undefined;
19
+ mtimeMs: number;
20
+ size: number;
21
+ hash: string;
22
+ }, symbols: readonly SymbolRow[], chunks: readonly ChunkRow[]) => void;
23
+ export declare const getMeta: (db: IndexDb, key: string) => string | undefined;
24
+ export declare const setMeta: (db: IndexDb, key: string, value: string) => void;
25
+ export declare const bumpGeneration: (db: IndexDb) => number;
26
+ export declare const generationOf: (db: IndexDb) => number;
27
+ //# sourceMappingURL=index-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-store.d.ts","sourceRoot":"","sources":["../../src/store/index-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,SAAS,GAAI,IAAI,OAAO,KAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAc7D,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,IAAI,OAAO,EAAE,IAAI,MAAM,EAAE,SAAS,MAAM,EAAE,MAAM,MAAM,KAAG,IAElF,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,IAAI,OAAO,EAAE,IAAI,MAAM,KAAG,IAEpD,CAAC;AAIF,eAAO,MAAM,WAAW,GACpB,IAAI,OAAO,EACX,MAAM;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACvH,SAAS,SAAS,SAAS,EAAE,EAC7B,QAAQ,SAAS,QAAQ,EAAE,KAC5B,IA2CF,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,IAAI,OAAO,EAAE,KAAK,MAAM,KAAG,MAAM,GAAG,SAC4B,CAAC;AAEzF,eAAO,MAAM,OAAO,GAAI,IAAI,OAAO,EAAE,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,IAEjE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,IAAI,OAAO,KAAG,MAI5C,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,IAAI,OAAO,KAAG,MAAkD,CAAC"}
@@ -0,0 +1,47 @@
1
+ export const listFiles = (db) => {
2
+ const map = new Map();
3
+ for (const row of db.all("SELECT id, path, repo, lang, mtime_ms, size, hash FROM files")) {
4
+ map.set(row["path"], {
5
+ id: Number(row["id"]),
6
+ path: row["path"],
7
+ repo: row["repo"] ?? undefined,
8
+ lang: row["lang"] ?? undefined,
9
+ mtimeMs: Number(row["mtime_ms"]),
10
+ size: Number(row["size"]),
11
+ hash: row["hash"],
12
+ });
13
+ }
14
+ return map;
15
+ };
16
+ export const touchFile = (db, id, mtimeMs, size) => {
17
+ db.run("UPDATE files SET mtime_ms = ?, size = ? WHERE id = ?", Math.round(mtimeMs), size, id);
18
+ };
19
+ export const deleteFile = (db, id) => {
20
+ db.run("DELETE FROM files WHERE id = ?", id);
21
+ };
22
+ export const replaceFile = (db, file, symbols, chunks) => {
23
+ const previousEmbeddings = new Map();
24
+ for (const row of db.all("SELECT c.hash, c.embedding FROM chunks c JOIN files f ON f.id = c.file_id WHERE f.path = ? AND c.embedding IS NOT NULL", file.path)) {
25
+ previousEmbeddings.set(row["hash"], row["embedding"]);
26
+ }
27
+ db.run("DELETE FROM files WHERE path = ?", file.path);
28
+ db.run("INSERT INTO files (path, repo, lang, mtime_ms, size, hash) VALUES (?, ?, ?, ?, ?, ?)", file.path, file.repo ?? null, file.lang ?? null, Math.round(file.mtimeMs), file.size, file.hash);
29
+ const id = Number(db.get("SELECT id FROM files WHERE path = ?", file.path)["id"]);
30
+ for (const symbol of symbols) {
31
+ db.run("INSERT INTO symbols (file_id, name, kind, line, end_line, signature, exported, heuristic) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", id, symbol.name, symbol.kind, symbol.line, symbol.endLine, symbol.signature, symbol.exported ? 1 : 0, symbol.heuristic ? 1 : 0);
32
+ }
33
+ for (const chunk of chunks) {
34
+ db.run("INSERT INTO chunks (file_id, start_line, end_line, hash, text, embedding) VALUES (?, ?, ?, ?, ?, ?)", id, chunk.startLine, chunk.endLine, chunk.hash, chunk.text, previousEmbeddings.get(chunk.hash) ?? null);
35
+ }
36
+ };
37
+ export const getMeta = (db, key) => db.get("SELECT value FROM meta WHERE key = ?", key)?.["value"];
38
+ export const setMeta = (db, key, value) => {
39
+ db.run("INSERT INTO meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value", key, value);
40
+ };
41
+ export const bumpGeneration = (db) => {
42
+ const next = Number(getMeta(db, "generation") ?? "0") + 1;
43
+ setMeta(db, "generation", String(next));
44
+ return next;
45
+ };
46
+ export const generationOf = (db) => Number(getMeta(db, "generation") ?? "0");
47
+ //# sourceMappingURL=index-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-store.js","sourceRoot":"","sources":["../../src/store/index-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const makeFixtureWorkspace: () => Promise<{
2
+ root: string;
3
+ cleanup: () => Promise<void>;
4
+ }>;
5
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,oBAAoB,QAAa,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAkBnG,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { execFile } from "node:child_process";
2
+ import { cp, mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { dirname, join } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import { promisify } from "node:util";
7
+ const exec = promisify(execFile);
8
+ const GIT_ENV = {
9
+ ...process.env,
10
+ GIT_AUTHOR_NAME: "fixture-author",
11
+ GIT_AUTHOR_EMAIL: "fixture@example.com",
12
+ GIT_COMMITTER_NAME: "fixture-author",
13
+ GIT_COMMITTER_EMAIL: "fixture@example.com",
14
+ };
15
+ export const makeFixtureWorkspace = async () => {
16
+ const root = await mkdtemp(join(tmpdir(), "iq-fixture-"));
17
+ await cp(join(dirname(fileURLToPath(import.meta.url)), "../src/__fixtures__/workspace"), root, { recursive: true });
18
+ await writeFile(join(root, ".env"), "FIXTURE_SECRET_TOKEN=fixture-secret-value\n");
19
+ await writeFile(join(root, ".env.example"), "FIXTURE_SECRET_TOKEN=\n");
20
+ await mkdir(join(root, ".intentic/iq/spool"), { recursive: true });
21
+ await writeFile(join(root, ".intentic/iq/decoy.txt"), "index dir contents must never be surfaced\n");
22
+ const alpha = join(root, "repositories/alpha");
23
+ await mkdir(join(alpha, "dist"), { recursive: true });
24
+ await writeFile(join(alpha, "dist/decoy.js"), "export const IGNORED_BUILD_ARTIFACT = true;\n");
25
+ await exec("git", ["-C", alpha, "init", "-q"], { env: GIT_ENV });
26
+ await exec("git", ["-C", alpha, "remote", "add", "origin", "https://token@example.com/repo.git"], { env: GIT_ENV });
27
+ await exec("git", ["-C", alpha, "add", "-A"], { env: GIT_ENV });
28
+ await exec("git", ["-C", alpha, "commit", "-q", "-m", "add widget module"], { env: GIT_ENV });
29
+ return { root, cleanup: () => rm(root, { recursive: true, force: true }) };
30
+ };
31
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,OAAO,GAAG;IACZ,GAAG,OAAO,CAAC,GAAG;IACd,eAAe,EAAE,gBAAgB;IACjC,gBAAgB,EAAE,qBAAqB;IACvC,kBAAkB,EAAE,gBAAgB;IACpC,mBAAmB,EAAE,qBAAqB;CAC7C,CAAC;AAKF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,IAA6D,EAAE;IACpG,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IAE1D,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpH,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,6CAA6C,CAAC,CAAC;IACnF,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,yBAAyB,CAAC,CAAC;IACvE,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,CAAC,EAAE,6CAA6C,CAAC,CAAC;IACrG,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAG/C,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,+CAA+C,CAAC,CAAC;IAC/F,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,oCAAoC,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACpH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9F,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/E,CAAC,CAAC"}
@@ -0,0 +1,100 @@
1
+ import type { WorkspaceSearchFreshness, WorkspaceSearchResult, WorkspaceSearchTag } from "@intentic/sandbox-contract";
2
+ export type Verb = "q" | "find" | "files" | "def" | "refs" | "sym" | "ast" | "ask" | "outline" | "context" | "recent" | "log" | "who";
3
+ export type FileClass = "tests" | "src" | "docs" | "config";
4
+ export interface Scope {
5
+ readonly paths?: readonly string[];
6
+ readonly repo?: string;
7
+ readonly langs?: readonly string[];
8
+ readonly globs?: readonly string[];
9
+ readonly notGlobs?: readonly string[];
10
+ readonly only?: FileClass;
11
+ readonly ignored?: boolean;
12
+ }
13
+ export interface RenderOptions {
14
+ readonly budget: number;
15
+ readonly limit?: number;
16
+ readonly contextLines?: number;
17
+ readonly filesOnly?: boolean;
18
+ readonly count?: boolean;
19
+ readonly full?: boolean;
20
+ readonly after?: string;
21
+ }
22
+ export interface VerbOptions {
23
+ readonly literal?: boolean;
24
+ readonly word?: boolean;
25
+ readonly caseSensitive?: boolean;
26
+ readonly refKind?: "call" | "import" | "type" | "write";
27
+ readonly symKind?: "fn" | "method" | "class" | "type" | "const" | "route" | "test";
28
+ readonly astLang?: string;
29
+ readonly since?: string;
30
+ readonly author?: string;
31
+ readonly path?: string;
32
+ readonly logRegex?: boolean;
33
+ readonly globExact?: boolean;
34
+ readonly mode?: Verb;
35
+ }
36
+ export interface QueryRequest {
37
+ readonly verb: Verb;
38
+ readonly query: string;
39
+ readonly scope: Scope;
40
+ readonly render: RenderOptions;
41
+ readonly options: VerbOptions;
42
+ readonly echo: string;
43
+ }
44
+ export interface QueryOutcome {
45
+ readonly result: WorkspaceSearchResult;
46
+ readonly text: string;
47
+ readonly exitCode: 0 | 1;
48
+ }
49
+ export interface FileEntry {
50
+ readonly path: string;
51
+ readonly abs: string;
52
+ readonly mtimeMs: number;
53
+ readonly size: number;
54
+ readonly repo?: string;
55
+ }
56
+ export interface EngineHit {
57
+ readonly path: string;
58
+ readonly line: number;
59
+ readonly text: string;
60
+ readonly start?: number;
61
+ readonly end?: number;
62
+ readonly tags: readonly WorkspaceSearchTag[];
63
+ context?: string;
64
+ }
65
+ export interface EngineResult {
66
+ readonly engine: string;
67
+ readonly hits: readonly EngineHit[];
68
+ }
69
+ export interface RankedHit extends EngineHit {
70
+ readonly score: number;
71
+ }
72
+ export interface RankedGroup {
73
+ readonly path: string;
74
+ readonly score: number;
75
+ readonly hits: readonly RankedHit[];
76
+ }
77
+ export interface SymbolRow {
78
+ readonly name: string;
79
+ readonly kind: "fn" | "method" | "class" | "type" | "const" | "route" | "test";
80
+ readonly line: number;
81
+ readonly endLine: number;
82
+ readonly signature: string;
83
+ readonly exported: boolean;
84
+ readonly heuristic: boolean;
85
+ }
86
+ export interface ChunkRow {
87
+ readonly startLine: number;
88
+ readonly endLine: number;
89
+ readonly hash: string;
90
+ readonly text: string;
91
+ }
92
+ export interface IndexStatus {
93
+ readonly files: number;
94
+ readonly symbols: number;
95
+ readonly chunks: number;
96
+ readonly embedded: number;
97
+ readonly generation: number;
98
+ readonly freshness: WorkspaceSearchFreshness;
99
+ }
100
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { IndexDb } from "../store/db.js";
2
+ import type { RankedGroup } from "../types.js";
3
+ export declare const outlineOf: (db: IndexDb, root: string, rawPath: string) => Promise<RankedGroup[]>;
4
+ export declare const parseAnchor: (anchor: string) => {
5
+ path: string;
6
+ line: number;
7
+ endLine?: number;
8
+ };
9
+ export declare const contextOf: (db: IndexDb, root: string, anchor: string, grow: number) => Promise<{
10
+ groups: RankedGroup[];
11
+ label: string;
12
+ }>;
13
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/verbs/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAsC/C,eAAO,MAAM,SAAS,GAAU,IAAI,OAAO,EAAE,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,WAAW,EAAE,CAmBjG,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,KAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAM1F,CAAC;AAGF,eAAO,MAAM,SAAS,GAAU,IAAI,OAAO,EAAE,MAAM,MAAM,EAAE,QAAQ,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkBzI,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { isIqDenied } from "../workspace/floor.js";
4
+ const FALLBACK_RADIUS = 20;
5
+ const symbolsOfFile = (db, path) => db
6
+ .all("SELECT s.name, s.kind, s.line, s.end_line, s.signature, s.heuristic FROM symbols s JOIN files f ON f.id = s.file_id WHERE f.path = ? ORDER BY s.line", path)
7
+ .map((row) => ({
8
+ name: row["name"],
9
+ kind: row["kind"],
10
+ line: Number(row["line"]),
11
+ endLine: Number(row["end_line"]),
12
+ signature: row["signature"],
13
+ heuristic: row["heuristic"] === 1,
14
+ }));
15
+ const guard = (path) => {
16
+ const normalized = path.replace(/^\.\//, "");
17
+ if (isIqDenied(normalized) || normalized.startsWith("..") || normalized.startsWith("/")) {
18
+ throw new Error(`iq: path is denied or outside the workspace: ${path}`);
19
+ }
20
+ return normalized;
21
+ };
22
+ export const outlineOf = async (db, root, rawPath) => {
23
+ const path = guard(rawPath);
24
+ const symbols = symbolsOfFile(db, path);
25
+ if (symbols.length === 0) {
26
+ return [];
27
+ }
28
+ const lines = (await readFile(join(root, path), "utf8").catch(() => "")).split(/\r?\n/);
29
+ const hits = symbols.map((symbol, index) => {
30
+ const above = lines[symbol.line - 2]?.trim() ?? "";
31
+ const doc = /^(\/\/|\/\*|\*|#)/.test(above) ? ` ${above.replace(/^(\/\/|\/\*+|\*|#)\s?/, "// ")}` : "";
32
+ return {
33
+ path,
34
+ line: symbol.line,
35
+ text: `${symbol.signature}${doc}`,
36
+ tags: symbol.heuristic ? [{ kind: "heuristic" }] : [],
37
+ score: 1 / (index + 1),
38
+ };
39
+ });
40
+ return [{ path, score: 1, hits }];
41
+ };
42
+ export const parseAnchor = (anchor) => {
43
+ const match = /^(.+?):(\d+)(?:-(\d+))?$/.exec(anchor);
44
+ if (match === null) {
45
+ throw new Error(`iq: expected an anchor like path:line, got: ${anchor}`);
46
+ }
47
+ return { path: guard(match[1]), line: Number(match[2]), ...(match[3] !== undefined ? { endLine: Number(match[3]) } : {}) };
48
+ };
49
+ export const contextOf = async (db, root, anchor, grow) => {
50
+ const { path, line } = parseAnchor(anchor);
51
+ const content = await readFile(join(root, path), "utf8").catch(() => undefined);
52
+ if (content === undefined) {
53
+ throw new Error(`iq: no such file: ${path}`);
54
+ }
55
+ const lines = content.split(/\r?\n/);
56
+ const enclosing = symbolsOfFile(db, path)
57
+ .filter((symbol) => symbol.line <= line && symbol.endLine >= line)
58
+ .toSorted((a, b) => a.endLine - a.line - (b.endLine - b.line))[0];
59
+ const from = Math.max(1, (enclosing?.line ?? line - FALLBACK_RADIUS) - grow);
60
+ const to = Math.min(lines.length, (enclosing?.endLine ?? line + FALLBACK_RADIUS) + grow);
61
+ const hits = [];
62
+ for (let i = from; i <= to; i++) {
63
+ hits.push({ path, line: i, text: lines[i - 1] ?? "", tags: [], score: 1 });
64
+ }
65
+ const label = enclosing !== undefined ? `${enclosing.name} (${enclosing.kind}) ${path}:${from}-${to}` : `${path}:${from}-${to}`;
66
+ return { groups: [{ path, score: 1, hits }], label };
67
+ };
68
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/verbs/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Embedder } from "../embed/embedder.js";
2
+ import type { Reranker } from "../embed/reranker.js";
3
+ import { type Feature } from "../features.js";
4
+ import type { IndexDb } from "../store/db.js";
5
+ import type { FileEntry, QueryOutcome, QueryRequest } from "../types.js";
6
+ export interface DispatchContext {
7
+ readonly root: string;
8
+ readonly indexDir: string;
9
+ readonly db: IndexDb;
10
+ readonly generation: number;
11
+ readonly sweepStart: number;
12
+ readonly getEmbedder: () => Promise<Embedder | undefined>;
13
+ readonly getReranker: () => Promise<Reranker | undefined>;
14
+ readonly features: ReadonlySet<Feature>;
15
+ readonly rgPath?: string;
16
+ }
17
+ export declare const dispatch: (context: DispatchContext, request: QueryRequest, defaultEntries: readonly FileEntry[]) => Promise<QueryOutcome>;
18
+ //# sourceMappingURL=dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/verbs/dispatch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQrD,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAK1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAA2B,SAAS,EAAE,YAAY,EAAE,YAAY,EAAgC,MAAM,aAAa,CAAC;AAIhI,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC1D,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC5B;AAqfD,eAAO,MAAM,QAAQ,GAAU,SAAS,eAAe,EAAE,SAAS,YAAY,EAAE,gBAAgB,SAAS,SAAS,EAAE,KAAG,OAAO,CAAC,YAAY,CA+F1I,CAAC"}