repomemory 0.1.0 → 0.2.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 (62) hide show
  1. package/README.md +151 -104
  2. package/dist/commands/analyze.d.ts +2 -0
  3. package/dist/commands/analyze.d.ts.map +1 -1
  4. package/dist/commands/analyze.js +162 -188
  5. package/dist/commands/analyze.js.map +1 -1
  6. package/dist/commands/dashboard.d.ts +5 -0
  7. package/dist/commands/dashboard.d.ts.map +1 -0
  8. package/dist/commands/dashboard.js +520 -0
  9. package/dist/commands/dashboard.js.map +1 -0
  10. package/dist/commands/init.d.ts.map +1 -1
  11. package/dist/commands/init.js +33 -34
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/serve.d.ts.map +1 -1
  14. package/dist/commands/serve.js +2 -1
  15. package/dist/commands/serve.js.map +1 -1
  16. package/dist/commands/setup.d.ts.map +1 -1
  17. package/dist/commands/setup.js +151 -35
  18. package/dist/commands/setup.js.map +1 -1
  19. package/dist/commands/status.d.ts +4 -0
  20. package/dist/commands/status.d.ts.map +1 -0
  21. package/dist/commands/status.js +87 -0
  22. package/dist/commands/status.js.map +1 -0
  23. package/dist/commands/sync.d.ts.map +1 -1
  24. package/dist/commands/sync.js +57 -27
  25. package/dist/commands/sync.js.map +1 -1
  26. package/dist/commands/wizard.d.ts +4 -0
  27. package/dist/commands/wizard.d.ts.map +1 -0
  28. package/dist/commands/wizard.js +184 -0
  29. package/dist/commands/wizard.js.map +1 -0
  30. package/dist/index.js +37 -42
  31. package/dist/index.js.map +1 -1
  32. package/dist/lib/ai-provider.d.ts +11 -0
  33. package/dist/lib/ai-provider.d.ts.map +1 -1
  34. package/dist/lib/ai-provider.js +138 -69
  35. package/dist/lib/ai-provider.js.map +1 -1
  36. package/dist/lib/config.d.ts +11 -15
  37. package/dist/lib/config.d.ts.map +1 -1
  38. package/dist/lib/config.js +33 -21
  39. package/dist/lib/config.js.map +1 -1
  40. package/dist/lib/context-store.d.ts +11 -0
  41. package/dist/lib/context-store.d.ts.map +1 -1
  42. package/dist/lib/context-store.js +51 -18
  43. package/dist/lib/context-store.js.map +1 -1
  44. package/dist/lib/git.d.ts +1 -0
  45. package/dist/lib/git.d.ts.map +1 -1
  46. package/dist/lib/git.js +34 -20
  47. package/dist/lib/git.js.map +1 -1
  48. package/dist/lib/json-repair.d.ts +24 -0
  49. package/dist/lib/json-repair.d.ts.map +1 -0
  50. package/dist/lib/json-repair.js +140 -0
  51. package/dist/lib/json-repair.js.map +1 -0
  52. package/dist/lib/repo-scanner.d.ts.map +1 -1
  53. package/dist/lib/repo-scanner.js +103 -26
  54. package/dist/lib/repo-scanner.js.map +1 -1
  55. package/dist/lib/search.d.ts +10 -4
  56. package/dist/lib/search.d.ts.map +1 -1
  57. package/dist/lib/search.js +136 -51
  58. package/dist/lib/search.js.map +1 -1
  59. package/dist/mcp/server.d.ts.map +1 -1
  60. package/dist/mcp/server.js +128 -54
  61. package/dist/mcp/server.js.map +1 -1
  62. package/package.json +20 -8
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Utilities for extracting and repairing JSON from AI model responses.
3
+ *
4
+ * AI models often wrap JSON in markdown code fences, include preamble/postamble text,
5
+ * or produce truncated output. These functions handle those cases.
6
+ */
7
+ /**
8
+ * Robustly extracts a JSON object from an AI response that may contain
9
+ * markdown code fences, preamble text, or other wrapping.
10
+ */
11
+ export function extractJSON(raw) {
12
+ let text = raw.trim();
13
+ // Strategy 1: Strip outermost code fences
14
+ const fenceMatch = text.match(/^```(?:json)?\s*\n([\s\S]*)\n\s*```\s*$/);
15
+ if (fenceMatch) {
16
+ text = fenceMatch[1].trim();
17
+ }
18
+ // Strategy 2: Find first { to last }
19
+ if (!text.startsWith("{")) {
20
+ const firstBrace = text.indexOf("{");
21
+ const lastBrace = text.lastIndexOf("}");
22
+ if (firstBrace !== -1 && lastBrace > firstBrace) {
23
+ text = text.slice(firstBrace, lastBrace + 1);
24
+ }
25
+ }
26
+ const attempts = [
27
+ () => text,
28
+ () => fixJsonNewlines(text),
29
+ () => repairTruncatedJSON(text),
30
+ () => repairTruncatedJSON(fixJsonNewlines(text)),
31
+ ];
32
+ let lastError = null;
33
+ for (const attempt of attempts) {
34
+ try {
35
+ return JSON.parse(attempt());
36
+ }
37
+ catch (e) {
38
+ lastError = e;
39
+ }
40
+ }
41
+ throw lastError ?? new Error("Failed to parse AI response as JSON");
42
+ }
43
+ /**
44
+ * Fixes literal newlines, carriage returns, and tabs that appear
45
+ * inside JSON string values (unescaped). Walks the string character
46
+ * by character tracking whether we are inside a quoted string.
47
+ */
48
+ export function fixJsonNewlines(json) {
49
+ const chars = [];
50
+ let inString = false;
51
+ let escaped = false;
52
+ for (let i = 0; i < json.length; i++) {
53
+ const ch = json[i];
54
+ if (escaped) {
55
+ chars.push(ch);
56
+ escaped = false;
57
+ continue;
58
+ }
59
+ if (ch === "\\") {
60
+ chars.push(ch);
61
+ escaped = true;
62
+ continue;
63
+ }
64
+ if (ch === '"') {
65
+ inString = !inString;
66
+ chars.push(ch);
67
+ continue;
68
+ }
69
+ if (inString && ch === "\n") {
70
+ chars.push("\\n");
71
+ continue;
72
+ }
73
+ if (inString && ch === "\r") {
74
+ continue;
75
+ }
76
+ if (inString && ch === "\t") {
77
+ chars.push("\\t");
78
+ continue;
79
+ }
80
+ chars.push(ch);
81
+ }
82
+ return chars.join("");
83
+ }
84
+ /**
85
+ * Attempts to repair truncated JSON by closing any open brackets,
86
+ * braces, and strings. Useful when the AI response was cut off
87
+ * mid-output due to token limits.
88
+ */
89
+ export function repairTruncatedJSON(json) {
90
+ let text = json.trim();
91
+ if (text.endsWith("}")) {
92
+ try {
93
+ JSON.parse(text);
94
+ return text;
95
+ }
96
+ catch {
97
+ // Fall through to repair
98
+ }
99
+ }
100
+ let inString = false;
101
+ let escaped = false;
102
+ const stack = [];
103
+ for (let i = 0; i < text.length; i++) {
104
+ const ch = text[i];
105
+ if (escaped) {
106
+ escaped = false;
107
+ continue;
108
+ }
109
+ if (ch === "\\") {
110
+ escaped = true;
111
+ continue;
112
+ }
113
+ if (ch === '"') {
114
+ inString = !inString;
115
+ continue;
116
+ }
117
+ if (inString)
118
+ continue;
119
+ if (ch === "{")
120
+ stack.push("}");
121
+ else if (ch === "[")
122
+ stack.push("]");
123
+ else if (ch === "}" || ch === "]")
124
+ stack.pop();
125
+ }
126
+ if (inString) {
127
+ text += '"';
128
+ }
129
+ text = text.replace(/,\s*$/, "");
130
+ while (stack.length > 0) {
131
+ const closer = stack.pop();
132
+ if (closer === "]") {
133
+ text = text.replace(/,\s*\{[^}]*$/, "");
134
+ text = text.replace(/,\s*"[^"]*$/, "");
135
+ }
136
+ text += closer;
137
+ }
138
+ return text;
139
+ }
140
+ //# sourceMappingURL=json-repair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-repair.js","sourceRoot":"","sources":["../../src/lib/json-repair.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"repo-scanner.d.ts","sourceRoot":"","sources":["../../src/lib/repo-scanner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AAwED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,GACxB,QAAQ,CAgJV"}
1
+ {"version":3,"file":"repo-scanner.d.ts","sourceRoot":"","sources":["../../src/lib/repo-scanner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AAgGD,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,GACxB,QAAQ,CAwLV"}
@@ -1,4 +1,4 @@
1
- import { readdirSync, readFileSync, statSync } from "fs";
1
+ import { readdirSync, readFileSync, statSync, existsSync } from "fs";
2
2
  import { join, relative, extname, basename } from "path";
3
3
  const LANGUAGE_MAP = {
4
4
  ".ts": "TypeScript",
@@ -18,6 +18,12 @@ const LANGUAGE_MAP = {
18
18
  ".c": "C",
19
19
  ".vue": "Vue",
20
20
  ".svelte": "Svelte",
21
+ ".zig": "Zig",
22
+ ".ex": "Elixir",
23
+ ".exs": "Elixir",
24
+ ".scala": "Scala",
25
+ ".dart": "Dart",
26
+ ".lua": "Lua",
21
27
  };
22
28
  const BINARY_EXTENSIONS = new Set([
23
29
  ".png", ".jpg", ".jpeg", ".gif", ".ico", ".svg", ".webp", ".avif",
@@ -29,13 +35,30 @@ const BINARY_EXTENSIONS = new Set([
29
35
  ".sqlite", ".db",
30
36
  ".wasm",
31
37
  ]);
38
+ function loadGitignorePatterns(repoRoot) {
39
+ const gitignorePath = join(repoRoot, ".gitignore");
40
+ if (!existsSync(gitignorePath))
41
+ return [];
42
+ try {
43
+ return readFileSync(gitignorePath, "utf-8")
44
+ .split("\n")
45
+ .map((line) => line.trim())
46
+ .filter((line) => line && !line.startsWith("#"))
47
+ .map((line) => line.replace(/\/$/, "")); // Remove trailing slash
48
+ }
49
+ catch {
50
+ return [];
51
+ }
52
+ }
32
53
  function shouldIgnore(name, ignorePatterns) {
33
54
  return ignorePatterns.some((pattern) => {
34
- if (pattern.includes("*")) {
35
- const regex = new RegExp("^" + pattern.replace(/\*/g, ".*").replace(/\?/g, ".") + "$");
55
+ // Strip leading /
56
+ const p = pattern.startsWith("/") ? pattern.slice(1) : pattern;
57
+ if (p.includes("*")) {
58
+ const regex = new RegExp("^" + p.replace(/\./g, "\\.").replace(/\*\*/g, ".*").replace(/\*/g, "[^/]*").replace(/\?/g, ".") + "$");
36
59
  return regex.test(name);
37
60
  }
38
- return name === pattern;
61
+ return name === p;
39
62
  });
40
63
  }
41
64
  function isBinaryFile(filePath) {
@@ -47,13 +70,13 @@ function matchesKeyPattern(relativePath, patterns) {
47
70
  if (pattern.includes("**/")) {
48
71
  const suffix = pattern.replace("**/", "");
49
72
  if (suffix.includes("*")) {
50
- const regex = new RegExp(suffix.replace(/\*/g, ".*").replace(/\?/g, "."));
73
+ const regex = new RegExp(suffix.replace(/\./g, "\\.").replace(/\*/g, "[^/]*").replace(/\?/g, "."));
51
74
  return regex.test(name);
52
75
  }
53
76
  return relativePath.endsWith(suffix) || name === suffix;
54
77
  }
55
78
  if (pattern.includes("*")) {
56
- const regex = new RegExp("^" + pattern.replace(/\*/g, ".*").replace(/\?/g, ".") + "$");
79
+ const regex = new RegExp("^" + pattern.replace(/\./g, "\\.").replace(/\*/g, "[^/]*").replace(/\?/g, ".") + "$");
57
80
  return regex.test(name);
58
81
  }
59
82
  return name === pattern || relativePath === pattern;
@@ -64,9 +87,12 @@ export function scanRepo(root, config) {
64
87
  const treeLines = [];
65
88
  const languages = {};
66
89
  let totalDirs = 0;
90
+ // Merge gitignore patterns with config patterns
91
+ const gitignorePatterns = loadGitignorePatterns(root);
92
+ const allIgnorePatterns = [...config.ignorePatterns, ...gitignorePatterns];
67
93
  function walk(dir, prefix, depth) {
68
94
  if (depth > 6)
69
- return; // Don't go too deep
95
+ return;
70
96
  let entries;
71
97
  try {
72
98
  entries = readdirSync(dir).sort();
@@ -74,28 +100,28 @@ export function scanRepo(root, config) {
74
100
  catch {
75
101
  return;
76
102
  }
77
- const filtered = entries.filter((e) => !shouldIgnore(e, config.ignorePatterns) && !e.startsWith("."));
103
+ const filtered = entries.filter((e) => !shouldIgnore(e, allIgnorePatterns) && !e.startsWith("."));
78
104
  filtered.forEach((entry, idx) => {
79
105
  const fullPath = join(dir, entry);
80
106
  const relPath = relative(root, fullPath);
81
107
  const isLast = idx === filtered.length - 1;
82
- const connector = isLast ? "└── " : "├── ";
83
- const childPrefix = isLast ? " " : " ";
108
+ const connector = isLast ? "\u2514\u2500\u2500 " : "\u251c\u2500\u2500 ";
109
+ const childPrefix = isLast ? " " : "\u2502 ";
84
110
  try {
85
111
  const stat = statSync(fullPath);
86
112
  if (stat.isDirectory()) {
87
113
  totalDirs++;
88
- treeLines.push(`${prefix}${connector}${entry}/`);
114
+ if (depth <= 3) {
115
+ treeLines.push(`${prefix}${connector}${entry}/`);
116
+ }
89
117
  walk(fullPath, prefix + childPrefix, depth + 1);
90
118
  }
91
119
  else {
92
- // Track file
93
120
  const ext = extname(entry).toLowerCase();
94
121
  if (LANGUAGE_MAP[ext]) {
95
122
  languages[LANGUAGE_MAP[ext]] =
96
123
  (languages[LANGUAGE_MAP[ext]] || 0) + 1;
97
124
  }
98
- // Only add to tree at shallow depths
99
125
  if (depth <= 3) {
100
126
  treeLines.push(`${prefix}${connector}${entry}`);
101
127
  }
@@ -117,6 +143,7 @@ export function scanRepo(root, config) {
117
143
  const packageManagers = [];
118
144
  const frameworks = [];
119
145
  const fileNames = new Set(allFiles.map((f) => basename(f.relativePath)));
146
+ const rootFiles = new Set(allFiles.filter((f) => !f.relativePath.includes("/")).map((f) => f.relativePath));
120
147
  if (fileNames.has("package-lock.json"))
121
148
  packageManagers.push("npm");
122
149
  if (fileNames.has("yarn.lock"))
@@ -125,6 +152,14 @@ export function scanRepo(root, config) {
125
152
  packageManagers.push("pnpm");
126
153
  if (fileNames.has("bun.lockb"))
127
154
  packageManagers.push("bun");
155
+ if (rootFiles.has("Cargo.toml"))
156
+ packageManagers.push("cargo");
157
+ if (rootFiles.has("go.mod"))
158
+ packageManagers.push("go modules");
159
+ if (rootFiles.has("Gemfile"))
160
+ packageManagers.push("bundler");
161
+ if (rootFiles.has("requirements.txt") || rootFiles.has("pyproject.toml"))
162
+ packageManagers.push("pip");
128
163
  // Read package.json for framework detection
129
164
  const pkgJsonPath = join(root, "package.json");
130
165
  try {
@@ -135,11 +170,13 @@ export function scanRepo(root, config) {
135
170
  };
136
171
  if (allDeps["next"])
137
172
  frameworks.push("Next.js");
138
- if (allDeps["react"])
173
+ if (allDeps["react"] && !allDeps["next"])
139
174
  frameworks.push("React");
140
175
  if (allDeps["vue"])
141
176
  frameworks.push("Vue");
142
- if (allDeps["svelte"])
177
+ if (allDeps["nuxt"])
178
+ frameworks.push("Nuxt");
179
+ if (allDeps["svelte"] || allDeps["@sveltejs/kit"])
143
180
  frameworks.push("Svelte");
144
181
  if (allDeps["express"])
145
182
  frameworks.push("Express");
@@ -151,34 +188,74 @@ export function scanRepo(root, config) {
151
188
  frameworks.push("Drizzle ORM");
152
189
  if (allDeps["prisma"] || allDeps["@prisma/client"])
153
190
  frameworks.push("Prisma");
154
- if (allDeps["django"])
155
- frameworks.push("Django");
156
- if (allDeps["flask"])
157
- frameworks.push("Flask");
158
191
  if (allDeps["@cloudflare/workers-types"])
159
192
  frameworks.push("Cloudflare Workers");
193
+ if (allDeps["astro"])
194
+ frameworks.push("Astro");
195
+ if (allDeps["remix"] || allDeps["@remix-run/node"])
196
+ frameworks.push("Remix");
197
+ if (allDeps["angular"] || allDeps["@angular/core"])
198
+ frameworks.push("Angular");
199
+ if (allDeps["tailwindcss"])
200
+ frameworks.push("Tailwind CSS");
160
201
  }
161
202
  catch {
162
203
  // No package.json or can't parse
163
204
  }
164
- // Check for monorepo
205
+ // Detect from other ecosystem files
206
+ if (rootFiles.has("Cargo.toml")) {
207
+ try {
208
+ const cargo = readFileSync(join(root, "Cargo.toml"), "utf-8");
209
+ if (cargo.includes("actix"))
210
+ frameworks.push("Actix");
211
+ if (cargo.includes("axum"))
212
+ frameworks.push("Axum");
213
+ if (cargo.includes("tokio"))
214
+ frameworks.push("Tokio");
215
+ }
216
+ catch { }
217
+ }
218
+ if (rootFiles.has("go.mod")) {
219
+ try {
220
+ const gomod = readFileSync(join(root, "go.mod"), "utf-8");
221
+ if (gomod.includes("gin-gonic"))
222
+ frameworks.push("Gin");
223
+ if (gomod.includes("fiber"))
224
+ frameworks.push("Fiber");
225
+ if (gomod.includes("echo"))
226
+ frameworks.push("Echo");
227
+ }
228
+ catch { }
229
+ }
230
+ if (rootFiles.has("pyproject.toml") || rootFiles.has("requirements.txt")) {
231
+ try {
232
+ const pyfile = rootFiles.has("pyproject.toml")
233
+ ? readFileSync(join(root, "pyproject.toml"), "utf-8")
234
+ : readFileSync(join(root, "requirements.txt"), "utf-8");
235
+ if (pyfile.includes("django"))
236
+ frameworks.push("Django");
237
+ if (pyfile.includes("flask"))
238
+ frameworks.push("Flask");
239
+ if (pyfile.includes("fastapi"))
240
+ frameworks.push("FastAPI");
241
+ }
242
+ catch { }
243
+ }
244
+ // Check for monorepo — root package.json with workspaces field
165
245
  const hasWorkspaces = allFiles.some((f) => f.relativePath === "pnpm-workspace.yaml") ||
166
- allFiles.some((f) => {
167
- if (basename(f.relativePath) !== "package.json" || f.relativePath !== "package.json")
168
- return false;
246
+ (() => {
169
247
  try {
170
- const pkg = JSON.parse(readFileSync(f.path, "utf-8"));
248
+ const pkg = JSON.parse(readFileSync(pkgJsonPath, "utf-8"));
171
249
  return pkg.workspaces != null;
172
250
  }
173
251
  catch {
174
252
  return false;
175
253
  }
176
- });
254
+ })();
177
255
  // Read key files
178
256
  const keyFiles = allFiles
179
257
  .filter((f) => f.isKeyFile && !isBinaryFile(f.path) && f.size <= config.maxFileSize)
180
258
  .sort((a, b) => {
181
- // Prioritize root-level files
182
259
  const aDepth = a.relativePath.split("/").length;
183
260
  const bDepth = b.relativePath.split("/").length;
184
261
  return aDepth - bDepth;
@@ -1 +1 @@
1
- {"version":3,"file":"repo-scanner.js","sourceRoot":"","sources":["../../src/lib/repo-scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo-scanner.js","sourceRoot":"","sources":["../../src/lib/repo-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAyBzD,MAAM,YAAY,GAA2B;IAC3C,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACzC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IACvC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAC5C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACxC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ;IAC/B,SAAS,EAAE,KAAK;IAChB,OAAO;CACR,CAAC,CAAC;AAEH,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;aACxC,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAC/C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,wBAAwB;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,cAAwB;IAC1D,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QACrC,kBAAkB;QAClB,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAE/D,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,MAAM,CACtB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CACvG,CAAC;YACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,OAAO,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,iBAAiB,CAAC,YAAoB,EAAE,QAAkB;IACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,IAAI,MAAM,CACtB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACzE,CAAC;gBACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,MAAM,CAAC;QAC1D,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,MAAM,CACtB,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CACtF,CAAC;YACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,KAAK,OAAO,IAAI,YAAY,KAAK,OAAO,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,IAAY,EACZ,MAAyB;IAEzB,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,gDAAgD;IAChD,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,iBAAiB,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,EAAE,GAAG,iBAAiB,CAAC,CAAC;IAE3E,SAAS,IAAI,CAAC,GAAW,EAAE,MAAc,EAAE,KAAa;QACtD,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO;QAEtB,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CACjE,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,GAAG,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC;YACzE,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;YAElD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEhC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,SAAS,EAAE,CAAC;oBACZ,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;wBACf,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;oBACnD,CAAC;oBACD,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;oBACzC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtB,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;4BAC1B,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC5C,CAAC;oBAED,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;wBACf,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC;oBAClD,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,OAAO;wBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,SAAS,EAAE,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC;qBAC9D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAElB,yCAAyC;IACzC,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAE5G,IAAI,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChE,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9D,IAAI,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtG,4CAA4C;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG;YACd,GAAG,GAAG,CAAC,YAAY;YACnB,GAAG,GAAG,CAAC,eAAe;SACvB,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,KAAK,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7E,IAAI,OAAO,CAAC,SAAS,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,SAAS,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,MAAM,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,aAAa,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9E,IAAI,OAAO,CAAC,2BAA2B,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAChF,IAAI,OAAO,CAAC,OAAO,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7E,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,aAAa,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IAED,oCAAoC;IACpC,IAAI,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1D,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,IAAI,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBAC5C,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;gBACrD,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1D,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,+DAA+D;IAC/D,MAAM,aAAa,GACjB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,qBAAqB,CAAC;QAC9D,CAAC,GAAG,EAAE;YACJ,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC3D,OAAO,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IAEP,iBAAiB;IACjB,MAAM,QAAQ,GAAG,QAAQ;SACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC;SACnF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QAChD,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QAChD,OAAO,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,CAAC;YACH,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,YAAY;gBACpB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;aACpE,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACpE,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,QAAQ;QACR,QAAQ;QACR,KAAK,EAAE;YACL,UAAU,EAAE,QAAQ,CAAC,MAAM;YAC3B,SAAS;YACT,SAAS;YACT,WAAW,EAAE,aAAa;YAC1B,eAAe;YACf,UAAU;SACX;KACF,CAAC;AACJ,CAAC"}
@@ -9,13 +9,19 @@ export interface SearchResult {
9
9
  }
10
10
  export declare class SearchIndex {
11
11
  private db;
12
+ private dbPath;
12
13
  private store;
14
+ private initialized;
13
15
  constructor(contextDir: string, store: ContextStore);
14
- private init;
15
- rebuild(): void;
16
- indexEntry(entry: ContextEntry): void;
17
- search(query: string, category?: string, limit?: number): SearchResult[];
16
+ private ensureDb;
17
+ private initSchema;
18
+ rebuild(): Promise<void>;
19
+ indexEntry(entry: ContextEntry): Promise<void>;
20
+ removeEntry(category: string, filename: string): Promise<void>;
21
+ search(query: string, category?: string, limit?: number): Promise<SearchResult[]>;
22
+ private mapResults;
18
23
  private extractSnippet;
24
+ private save;
19
25
  close(): void;
20
26
  }
21
27
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,KAAK,CAAe;gBAEhB,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;IAOnD,OAAO,CAAC,IAAI;IAoDZ,OAAO,IAAI,IAAI;IA0Bf,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAkBrC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,YAAY,EAAE;IAqD5E,OAAO,CAAC,cAAc;IA8BtB,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AA0BD,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAA8B;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,WAAW,CAAS;gBAEhB,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;YAKrC,QAAQ;IAwBtB,OAAO,CAAC,UAAU;IAmDZ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBxB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB9C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA+D3F,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,IAAI;IAUZ,KAAK,IAAI,IAAI;CAQd"}