@aria-cli/tools 1.0.2 → 1.0.3

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 (157) hide show
  1. package/dist/.aria-build-stamp.json +1 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/definitions/code-intelligence.d.ts +9 -0
  4. package/dist/definitions/code-intelligence.d.ts.map +1 -0
  5. package/dist/definitions/code-intelligence.js +471 -0
  6. package/dist/definitions/code-intelligence.js.map +1 -0
  7. package/dist/definitions/core.d.ts +3 -0
  8. package/dist/definitions/core.d.ts.map +1 -1
  9. package/dist/definitions/core.js +13 -1
  10. package/dist/definitions/core.js.map +1 -1
  11. package/dist/definitions/filesystem.d.ts +3 -2
  12. package/dist/definitions/filesystem.d.ts.map +1 -1
  13. package/dist/definitions/filesystem.js +4 -38
  14. package/dist/definitions/filesystem.js.map +1 -1
  15. package/dist/definitions/frg.d.ts +4 -0
  16. package/dist/definitions/frg.d.ts.map +1 -0
  17. package/dist/definitions/frg.js +64 -0
  18. package/dist/definitions/frg.js.map +1 -0
  19. package/dist/definitions/index.d.ts +3 -0
  20. package/dist/definitions/index.d.ts.map +1 -1
  21. package/dist/definitions/index.js +3 -0
  22. package/dist/definitions/index.js.map +1 -1
  23. package/dist/definitions/search.d.ts +10 -0
  24. package/dist/definitions/search.d.ts.map +1 -0
  25. package/dist/definitions/search.js +61 -0
  26. package/dist/definitions/search.js.map +1 -0
  27. package/dist/executors/apply-patch.d.ts.map +1 -1
  28. package/dist/executors/apply-patch.js +18 -0
  29. package/dist/executors/apply-patch.js.map +1 -1
  30. package/dist/executors/code-intelligence.d.ts +139 -0
  31. package/dist/executors/code-intelligence.d.ts.map +1 -0
  32. package/dist/executors/code-intelligence.js +883 -0
  33. package/dist/executors/code-intelligence.js.map +1 -0
  34. package/dist/executors/filesystem.d.ts.map +1 -1
  35. package/dist/executors/filesystem.js +14 -8
  36. package/dist/executors/filesystem.js.map +1 -1
  37. package/dist/executors/frg-freshness.d.ts +94 -0
  38. package/dist/executors/frg-freshness.d.ts.map +1 -0
  39. package/dist/executors/frg-freshness.js +577 -0
  40. package/dist/executors/frg-freshness.js.map +1 -0
  41. package/dist/executors/frg.d.ts +28 -0
  42. package/dist/executors/frg.d.ts.map +1 -0
  43. package/dist/executors/frg.js +299 -0
  44. package/dist/executors/frg.js.map +1 -0
  45. package/dist/executors/index.d.ts +6 -0
  46. package/dist/executors/index.d.ts.map +1 -1
  47. package/dist/executors/index.js +5 -0
  48. package/dist/executors/index.js.map +1 -1
  49. package/dist/executors/lsp-client.d.ts +39 -0
  50. package/dist/executors/lsp-client.d.ts.map +1 -0
  51. package/dist/executors/lsp-client.js +297 -0
  52. package/dist/executors/lsp-client.js.map +1 -0
  53. package/dist/executors/restart.d.ts +4 -9
  54. package/dist/executors/restart.d.ts.map +1 -1
  55. package/dist/executors/restart.js +20 -51
  56. package/dist/executors/restart.js.map +1 -1
  57. package/dist/executors/search-freshness.d.ts +51 -0
  58. package/dist/executors/search-freshness.d.ts.map +1 -0
  59. package/dist/executors/search-freshness.js +196 -0
  60. package/dist/executors/search-freshness.js.map +1 -0
  61. package/dist/executors/search.d.ts +12 -0
  62. package/dist/executors/search.d.ts.map +1 -0
  63. package/dist/executors/search.js +67 -0
  64. package/dist/executors/search.js.map +1 -0
  65. package/dist/headless-control-contract.d.ts +4 -0
  66. package/dist/headless-control-contract.d.ts.map +1 -1
  67. package/dist/index.d.ts +2 -2
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +1 -1
  70. package/dist/index.js.map +1 -1
  71. package/dist/network-runtime/local-control-contract.d.ts +2 -0
  72. package/dist/network-runtime/local-control-contract.d.ts.map +1 -1
  73. package/dist/network-runtime/local-control-contract.js +2 -0
  74. package/dist/network-runtime/local-control-contract.js.map +1 -1
  75. package/dist-cjs/.tsbuildinfo +1 -1
  76. package/dist-cjs/definitions/code-intelligence.d.ts +8 -0
  77. package/dist-cjs/definitions/code-intelligence.js +474 -0
  78. package/dist-cjs/definitions/code-intelligence.js.map +1 -0
  79. package/dist-cjs/definitions/core.d.ts +3 -0
  80. package/dist-cjs/definitions/core.js +17 -2
  81. package/dist-cjs/definitions/core.js.map +1 -1
  82. package/dist-cjs/definitions/filesystem.d.ts +3 -2
  83. package/dist-cjs/definitions/filesystem.js +3 -37
  84. package/dist-cjs/definitions/filesystem.js.map +1 -1
  85. package/dist-cjs/definitions/frg.d.ts +3 -0
  86. package/dist-cjs/definitions/frg.js +67 -0
  87. package/dist-cjs/definitions/frg.js.map +1 -0
  88. package/dist-cjs/definitions/index.d.ts +3 -0
  89. package/dist-cjs/definitions/index.js +7 -1
  90. package/dist-cjs/definitions/index.js.map +1 -1
  91. package/dist-cjs/definitions/search.d.ts +9 -0
  92. package/dist-cjs/definitions/search.js +64 -0
  93. package/dist-cjs/definitions/search.js.map +1 -0
  94. package/dist-cjs/executors/apply-patch.js +18 -0
  95. package/dist-cjs/executors/apply-patch.js.map +1 -1
  96. package/dist-cjs/executors/code-intelligence.d.ts +138 -0
  97. package/dist-cjs/executors/code-intelligence.js +926 -0
  98. package/dist-cjs/executors/code-intelligence.js.map +1 -0
  99. package/dist-cjs/executors/filesystem.js +17 -8
  100. package/dist-cjs/executors/filesystem.js.map +1 -1
  101. package/dist-cjs/executors/frg-freshness.d.ts +93 -0
  102. package/dist-cjs/executors/frg-freshness.js +628 -0
  103. package/dist-cjs/executors/frg-freshness.js.map +1 -0
  104. package/dist-cjs/executors/frg.d.ts +27 -0
  105. package/dist-cjs/executors/frg.js +335 -0
  106. package/dist-cjs/executors/frg.js.map +1 -0
  107. package/dist-cjs/executors/index.d.ts +6 -0
  108. package/dist-cjs/executors/index.js +34 -2
  109. package/dist-cjs/executors/index.js.map +1 -1
  110. package/dist-cjs/executors/lsp-client.d.ts +38 -0
  111. package/dist-cjs/executors/lsp-client.js +311 -0
  112. package/dist-cjs/executors/lsp-client.js.map +1 -0
  113. package/dist-cjs/executors/restart.d.ts +4 -9
  114. package/dist-cjs/executors/restart.js +19 -50
  115. package/dist-cjs/executors/restart.js.map +1 -1
  116. package/dist-cjs/executors/search-freshness.d.ts +50 -0
  117. package/dist-cjs/executors/search-freshness.js +235 -0
  118. package/dist-cjs/executors/search-freshness.js.map +1 -0
  119. package/dist-cjs/executors/search.d.ts +11 -0
  120. package/dist-cjs/executors/search.js +103 -0
  121. package/dist-cjs/executors/search.js.map +1 -0
  122. package/dist-cjs/headless-control-contract.d.ts +15 -11
  123. package/dist-cjs/index.d.ts +2 -2
  124. package/dist-cjs/index.js +22 -2
  125. package/dist-cjs/index.js.map +1 -1
  126. package/dist-cjs/network-runtime/local-control-contract.d.ts +2 -0
  127. package/dist-cjs/network-runtime/local-control-contract.js +2 -0
  128. package/dist-cjs/network-runtime/local-control-contract.js.map +1 -1
  129. package/package.json +9 -5
  130. package/src/definitions/code-intelligence.ts +526 -0
  131. package/src/definitions/core.ts +13 -1
  132. package/src/definitions/filesystem.ts +3 -39
  133. package/src/definitions/frg.ts +67 -0
  134. package/src/definitions/index.ts +3 -0
  135. package/src/definitions/search.ts +67 -0
  136. package/src/executors/apply-patch.ts +20 -0
  137. package/src/executors/code-intelligence.ts +1179 -0
  138. package/src/executors/filesystem.ts +15 -8
  139. package/src/executors/frg-freshness.ts +743 -0
  140. package/src/executors/frg.ts +394 -0
  141. package/src/executors/index.ts +58 -0
  142. package/src/executors/lsp-client.ts +355 -0
  143. package/src/executors/restart.ts +21 -56
  144. package/src/executors/search-freshness.ts +249 -0
  145. package/src/executors/search.ts +89 -0
  146. package/src/index.ts +25 -0
  147. package/src/network-runtime/local-control-contract.ts +2 -0
  148. package/tests/definitions/tool-inventory.test.ts +17 -6
  149. package/tests/executors/frg-freshness.test.ts +136 -0
  150. package/tests/executors/frg-merge.test.ts +70 -0
  151. package/tests/executors/frg-session-content.test.ts +40 -0
  152. package/tests/executors/frg.test.ts +56 -0
  153. package/tests/integration/headless-control-contract.integration.test.ts +2 -0
  154. package/tests/loading-tier.test.ts +6 -6
  155. package/tests/test-lane-manifest.ts +4 -0
  156. package/tsconfig.cjs.json +9 -1
  157. package/tsconfig.json +1 -1
@@ -0,0 +1,577 @@
1
+ import * as fsSync from "node:fs";
2
+ import * as fs from "node:fs/promises";
3
+ import * as nodePath from "node:path";
4
+ import { execFileSync } from "node:child_process";
5
+ import { frg } from "@aria-cli/fastripgrep";
6
+ const repoStates = new Map();
7
+ const flushStates = new Map();
8
+ export const DEFAULT_BACKGROUND_FRG_FLUSH_DELAY_MS = 750;
9
+ export const BACKGROUND_FRG_MAX_FLUSH_DELAY_MS = 30_000;
10
+ export const MAX_PENDING_MUTATIONS_BEFORE_SYNC_FLUSH = 32;
11
+ export const MAX_PENDING_MUTATION_BYTES_BEFORE_SYNC_FLUSH = 512 * 1024;
12
+ export const MAX_CACHED_MUTATION_CONTENT_BYTES = 256 * 1024;
13
+ function normalizePath(p) {
14
+ return nodePath.resolve(p);
15
+ }
16
+ function walDir(repoRoot) {
17
+ return nodePath.join(normalizePath(repoRoot), ".frg", "session");
18
+ }
19
+ function walPath(repoRoot) {
20
+ return nodePath.join(walDir(repoRoot), "aria-pending.jsonl");
21
+ }
22
+ function ensureSessionStorageDir(repoRoot) {
23
+ fsSync.mkdirSync(walDir(repoRoot), { recursive: true });
24
+ }
25
+ function normalizeStoredContent(content) {
26
+ if (typeof content !== "string") {
27
+ return undefined;
28
+ }
29
+ return Buffer.byteLength(content, "utf8") <= MAX_CACHED_MUTATION_CONTENT_BYTES
30
+ ? content
31
+ : undefined;
32
+ }
33
+ function getRepoState(repoRoot) {
34
+ const normalizedRepoRoot = normalizePath(repoRoot);
35
+ const existing = repoStates.get(normalizedRepoRoot);
36
+ if (existing) {
37
+ ensureRepoStateLoaded(normalizedRepoRoot, existing);
38
+ return existing;
39
+ }
40
+ const created = { loaded: false, sequence: 0, pending: new Map() };
41
+ repoStates.set(normalizedRepoRoot, created);
42
+ ensureRepoStateLoaded(normalizedRepoRoot, created);
43
+ return created;
44
+ }
45
+ function getFlushState(repoRoot) {
46
+ const normalizedRepoRoot = normalizePath(repoRoot);
47
+ const existing = flushStates.get(normalizedRepoRoot);
48
+ if (existing)
49
+ return existing;
50
+ const created = { timer: null, inFlight: false, retryCount: 0 };
51
+ flushStates.set(normalizedRepoRoot, created);
52
+ return created;
53
+ }
54
+ function ensureRepoStateLoaded(repoRoot, state) {
55
+ const normalizedRepoRoot = normalizePath(repoRoot);
56
+ const currentState = state ?? repoStates.get(normalizedRepoRoot);
57
+ if (!currentState || currentState.loaded) {
58
+ return;
59
+ }
60
+ const pendingWalPath = walPath(normalizedRepoRoot);
61
+ if (fsSync.existsSync(pendingWalPath)) {
62
+ try {
63
+ const lines = fsSync.readFileSync(pendingWalPath, "utf8").split(/\r?\n/).filter(Boolean);
64
+ for (const line of lines) {
65
+ const parsed = JSON.parse(line);
66
+ const normalizedPath = normalizePath(parsed.path);
67
+ currentState.pending.set(normalizedPath, {
68
+ ...parsed,
69
+ repoRoot: normalizedRepoRoot,
70
+ path: normalizedPath,
71
+ content: normalizeStoredContent(parsed.content),
72
+ });
73
+ currentState.sequence = Math.max(currentState.sequence, parsed.sequence ?? 0);
74
+ }
75
+ }
76
+ catch {
77
+ // Ignore malformed WAL and proceed with empty/in-memory state.
78
+ }
79
+ }
80
+ currentState.loaded = true;
81
+ }
82
+ function rewriteWal(repoRoot) {
83
+ const normalizedRepoRoot = normalizePath(repoRoot);
84
+ const state = repoStates.get(normalizedRepoRoot);
85
+ if (!state || state.pending.size === 0) {
86
+ try {
87
+ fsSync.rmSync(walPath(normalizedRepoRoot), { force: true });
88
+ }
89
+ catch {
90
+ // ignore
91
+ }
92
+ return;
93
+ }
94
+ ensureSessionStorageDir(normalizedRepoRoot);
95
+ const records = [...state.pending.values()].sort((a, b) => a.sequence - b.sequence);
96
+ const content = records.map((record) => JSON.stringify(record)).join("\n") + "\n";
97
+ fsSync.writeFileSync(walPath(normalizedRepoRoot), content, "utf8");
98
+ }
99
+ function appendWalRecord(repoRoot, record) {
100
+ ensureSessionStorageDir(repoRoot);
101
+ fsSync.appendFileSync(walPath(repoRoot), `${JSON.stringify(record)}\n`, "utf8");
102
+ }
103
+ function findGitRepoRoot(startPath) {
104
+ let current = normalizePath(startPath);
105
+ try {
106
+ const stat = fsSync.statSync(current);
107
+ if (!stat.isDirectory()) {
108
+ current = nodePath.dirname(current);
109
+ }
110
+ }
111
+ catch {
112
+ current = nodePath.dirname(current);
113
+ }
114
+ while (true) {
115
+ if (fsSync.existsSync(nodePath.join(current, ".git"))) {
116
+ return current;
117
+ }
118
+ const parent = nodePath.dirname(current);
119
+ if (parent === current) {
120
+ return null;
121
+ }
122
+ current = parent;
123
+ }
124
+ }
125
+ function escapeRegex(text) {
126
+ return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
127
+ }
128
+ function compilePattern(options) {
129
+ let pattern = options.literal ? escapeRegex(options.pattern) : options.pattern;
130
+ const smartCaseInsensitive = options.smartCase && !/[A-Z]/.test(options.pattern);
131
+ const flags = `${options.caseInsensitive || smartCaseInsensitive ? "i" : ""}g`;
132
+ return new RegExp(pattern, flags);
133
+ }
134
+ function globToRegExp(glob) {
135
+ const escaped = glob
136
+ .replace(/[.+^${}()|[\]\\]/g, "\\$&")
137
+ .replace(/\*\*/g, "::DOUBLE_STAR::")
138
+ .replace(/\*/g, "[^/]*")
139
+ .replace(/::DOUBLE_STAR::/g, ".*")
140
+ .replace(/\?/g, ".");
141
+ return new RegExp(`^${escaped}$`);
142
+ }
143
+ function pathMatchesFilters(relativePath, options) {
144
+ if (options.fileType) {
145
+ const ext = options.fileType.startsWith(".") ? options.fileType : `.${options.fileType}`;
146
+ if (!relativePath.endsWith(ext)) {
147
+ return false;
148
+ }
149
+ }
150
+ if (options.glob) {
151
+ const re = globToRegExp(options.glob);
152
+ if (!re.test(relativePath)) {
153
+ return false;
154
+ }
155
+ }
156
+ return true;
157
+ }
158
+ function buildContextLines(lines, lineIndex, radius) {
159
+ const before = [];
160
+ const after = [];
161
+ for (let i = Math.max(0, lineIndex - radius); i < lineIndex; i++) {
162
+ before.push({ line: i + 1, content: lines[i] ?? "" });
163
+ }
164
+ for (let i = lineIndex + 1; i <= Math.min(lines.length - 1, lineIndex + radius); i++) {
165
+ after.push({ line: i + 1, content: lines[i] ?? "" });
166
+ }
167
+ return { before, after };
168
+ }
169
+ function relativeToRepo(repoRoot, filePath) {
170
+ return nodePath.relative(repoRoot, filePath).split(nodePath.sep).join("/");
171
+ }
172
+ function isBinaryBuffer(content) {
173
+ const checkLength = Math.min(content.length, 8192);
174
+ for (let i = 0; i < checkLength; i++) {
175
+ if (content[i] === 0) {
176
+ return true;
177
+ }
178
+ }
179
+ return false;
180
+ }
181
+ function setMutationRecordForRepo(repoRoot, filePath, operation, content, options) {
182
+ const normalizedRepoRoot = normalizePath(repoRoot);
183
+ const state = getRepoState(normalizedRepoRoot);
184
+ state.sequence += 1;
185
+ const normalizedPath = normalizePath(filePath);
186
+ const record = {
187
+ repoRoot: normalizedRepoRoot,
188
+ path: normalizedPath,
189
+ operation,
190
+ sequence: state.sequence,
191
+ recordedAt: Date.now(),
192
+ content: normalizeStoredContent(content),
193
+ };
194
+ state.pending.set(normalizedPath, record);
195
+ if (options?.persistWal !== false) {
196
+ appendWalRecord(normalizedRepoRoot, record);
197
+ }
198
+ if (options?.scheduleFlush !== false) {
199
+ scheduleBackgroundFrgFlush(normalizedRepoRoot);
200
+ }
201
+ }
202
+ function runGit(repoRoot, args) {
203
+ try {
204
+ return execFileSync("git", args, {
205
+ cwd: normalizePath(repoRoot),
206
+ encoding: "utf8",
207
+ stdio: ["ignore", "pipe", "ignore"],
208
+ }).trim();
209
+ }
210
+ catch {
211
+ return null;
212
+ }
213
+ }
214
+ export function getTrackedRepoRootForPath(filePath) {
215
+ return findGitRepoRoot(filePath);
216
+ }
217
+ export function ensureFrgRepoStateLoaded(repoRoot) {
218
+ void getRepoState(repoRoot);
219
+ }
220
+ export function recordFrgMutation(filePath, operation, content) {
221
+ const repoRoot = getTrackedRepoRootForPath(filePath);
222
+ if (!repoRoot)
223
+ return;
224
+ setMutationRecordForRepo(repoRoot, filePath, operation, content);
225
+ }
226
+ export function getPendingFrgMutations(repoRoot) {
227
+ const state = getRepoState(repoRoot);
228
+ return [...state.pending.values()].sort((a, b) => a.sequence - b.sequence);
229
+ }
230
+ export function getPendingFrgMutationBytes(repoRoot) {
231
+ return getPendingFrgMutations(repoRoot).reduce((total, record) => {
232
+ if (typeof record.content === "string") {
233
+ return total + Buffer.byteLength(record.content, "utf8");
234
+ }
235
+ try {
236
+ return total + fsSync.statSync(record.path).size;
237
+ }
238
+ catch {
239
+ return total;
240
+ }
241
+ }, 0);
242
+ }
243
+ export function clearPendingFrgMutations(repoRoot) {
244
+ const normalizedRepoRoot = normalizePath(repoRoot);
245
+ repoStates.delete(normalizedRepoRoot);
246
+ try {
247
+ fsSync.rmSync(walPath(normalizedRepoRoot), { force: true });
248
+ }
249
+ catch {
250
+ // ignore
251
+ }
252
+ const flushState = flushStates.get(normalizedRepoRoot);
253
+ if (flushState?.timer) {
254
+ clearTimeout(flushState.timer);
255
+ }
256
+ flushStates.delete(normalizedRepoRoot);
257
+ }
258
+ export function flushPendingFrgMutations(repoRoot) {
259
+ const normalizedRepoRoot = normalizePath(repoRoot);
260
+ const state = getRepoState(normalizedRepoRoot);
261
+ const flushState = getFlushState(normalizedRepoRoot);
262
+ const pendingCount = state.pending.size;
263
+ if (pendingCount === 0) {
264
+ return { flushed: false, reason: "no-pending-mutations", pendingCount };
265
+ }
266
+ if (flushState.timer) {
267
+ clearTimeout(flushState.timer);
268
+ flushState.timer = null;
269
+ }
270
+ if (flushState.inFlight) {
271
+ return { flushed: false, reason: "flush-in-flight", pendingCount };
272
+ }
273
+ flushState.inFlight = true;
274
+ try {
275
+ maybeBuildFrgIndexForRepo(normalizedRepoRoot);
276
+ // Targeted update: pass only changed/deleted files instead of full directory walk.
277
+ // O(changed_files) instead of O(all_files).
278
+ const pending = [...state.pending.values()];
279
+ const targetChanged = pending.filter((r) => r.operation === "write").map((r) => r.path);
280
+ const targetDeleted = pending.filter((r) => r.operation === "delete").map((r) => r.path);
281
+ const result = targetChanged.length > 0 || targetDeleted.length > 0
282
+ ? frg({ command: "update", path: normalizedRepoRoot, targetChanged, targetDeleted })
283
+ : frg({ command: "update", path: normalizedRepoRoot });
284
+ state.pending.clear();
285
+ rewriteWal(normalizedRepoRoot);
286
+ flushState.lastFlushAt = Date.now();
287
+ flushState.lastError = undefined;
288
+ flushState.retryCount = 0;
289
+ flushState.retryDelayMs = undefined;
290
+ return { flushed: true, pendingCount, result };
291
+ }
292
+ catch (error) {
293
+ flushState.lastError = error instanceof Error ? error.message : String(error);
294
+ flushState.retryCount += 1;
295
+ flushState.retryDelayMs = Math.min((flushState.retryDelayMs ?? DEFAULT_BACKGROUND_FRG_FLUSH_DELAY_MS) * 2, BACKGROUND_FRG_MAX_FLUSH_DELAY_MS);
296
+ return { flushed: false, reason: "flush-failed", pendingCount };
297
+ }
298
+ finally {
299
+ flushState.inFlight = false;
300
+ }
301
+ }
302
+ export function maybeBuildFrgIndexForRepo(repoRoot) {
303
+ const normalizedRepoRoot = normalizePath(repoRoot);
304
+ const frgDir = nodePath.join(normalizedRepoRoot, ".frg");
305
+ if (fsSync.existsSync(frgDir))
306
+ return;
307
+ try {
308
+ frg({ command: "init", path: normalizedRepoRoot });
309
+ }
310
+ catch {
311
+ // best effort; search may still fall back to noIndex if init fails
312
+ }
313
+ }
314
+ export function scheduleBackgroundFrgFlush(repoRoot, delayMs = DEFAULT_BACKGROUND_FRG_FLUSH_DELAY_MS) {
315
+ const normalizedRepoRoot = normalizePath(repoRoot);
316
+ const state = getRepoState(normalizedRepoRoot);
317
+ if (state.pending.size === 0) {
318
+ return;
319
+ }
320
+ const flushState = getFlushState(normalizedRepoRoot);
321
+ flushState.lastScheduledAt = Date.now();
322
+ if (flushState.inFlight) {
323
+ return;
324
+ }
325
+ if (flushState.timer) {
326
+ clearTimeout(flushState.timer);
327
+ }
328
+ const effectiveDelay = flushState.retryDelayMs ?? delayMs;
329
+ flushState.timer = setTimeout(() => {
330
+ flushState.timer = null;
331
+ const result = flushPendingFrgMutations(normalizedRepoRoot);
332
+ if (!result.flushed && result.reason === "flush-failed" && result.pendingCount > 0) {
333
+ scheduleBackgroundFrgFlush(normalizedRepoRoot, flushState.retryDelayMs ?? delayMs);
334
+ }
335
+ }, effectiveDelay);
336
+ if (typeof flushState.timer.unref === "function") {
337
+ flushState.timer.unref();
338
+ }
339
+ }
340
+ export function shouldForceSynchronousFrgFlush(repoRoot) {
341
+ const pendingCount = getPendingFrgMutations(repoRoot).length;
342
+ const pendingBytes = getPendingFrgMutationBytes(repoRoot);
343
+ return (pendingCount >= MAX_PENDING_MUTATIONS_BEFORE_SYNC_FLUSH ||
344
+ pendingBytes >= MAX_PENDING_MUTATION_BYTES_BEFORE_SYNC_FLUSH);
345
+ }
346
+ export function getFrgFlushStatus(repoRoot) {
347
+ const flushState = getFlushState(repoRoot);
348
+ return {
349
+ inFlight: flushState.inFlight,
350
+ scheduled: Boolean(flushState.timer),
351
+ lastScheduledAt: flushState.lastScheduledAt,
352
+ lastFlushAt: flushState.lastFlushAt,
353
+ lastError: flushState.lastError,
354
+ retryCount: flushState.retryCount,
355
+ retryDelayMs: flushState.retryDelayMs,
356
+ };
357
+ }
358
+ export function getGitDirtyStatus(repoRoot) {
359
+ const normalizedRepoRoot = normalizePath(repoRoot);
360
+ const headCommit = runGit(normalizedRepoRoot, ["rev-parse", "HEAD"]) ?? undefined;
361
+ const headTree = runGit(normalizedRepoRoot, ["rev-parse", "HEAD^{tree}"]) ?? undefined;
362
+ const tracked = [];
363
+ const trackedOutput = runGit(normalizedRepoRoot, ["diff", "--name-status", "-z", "HEAD", "--"]);
364
+ if (trackedOutput) {
365
+ const tokens = trackedOutput.split("\0").filter(Boolean);
366
+ for (let i = 0; i < tokens.length; i++) {
367
+ const status = tokens[i] ?? "";
368
+ if (status.startsWith("R")) {
369
+ const oldPath = tokens[++i];
370
+ const newPath = tokens[++i];
371
+ if (oldPath)
372
+ tracked.push({
373
+ path: normalizePath(nodePath.join(normalizedRepoRoot, oldPath)),
374
+ operation: "delete",
375
+ });
376
+ if (newPath)
377
+ tracked.push({
378
+ path: normalizePath(nodePath.join(normalizedRepoRoot, newPath)),
379
+ operation: "write",
380
+ });
381
+ continue;
382
+ }
383
+ const filePath = tokens[++i];
384
+ if (!filePath)
385
+ continue;
386
+ tracked.push({
387
+ path: normalizePath(nodePath.join(normalizedRepoRoot, filePath)),
388
+ operation: status.startsWith("D") ? "delete" : "write",
389
+ });
390
+ }
391
+ }
392
+ const untracked = [];
393
+ const untrackedOutput = runGit(normalizedRepoRoot, [
394
+ "ls-files",
395
+ "-o",
396
+ "--exclude-standard",
397
+ "-z",
398
+ ]);
399
+ if (untrackedOutput) {
400
+ for (const token of untrackedOutput.split("\0").filter(Boolean)) {
401
+ untracked.push(normalizePath(nodePath.join(normalizedRepoRoot, token)));
402
+ }
403
+ }
404
+ return { headCommit, headTree, tracked, untracked };
405
+ }
406
+ export function reconcileGitDirtyMutations(repoRoot) {
407
+ const normalizedRepoRoot = normalizePath(repoRoot);
408
+ const status = getGitDirtyStatus(normalizedRepoRoot);
409
+ const state = getRepoState(normalizedRepoRoot);
410
+ let changed = false;
411
+ for (const entry of status.tracked) {
412
+ const existing = state.pending.get(entry.path);
413
+ if (!existing || existing.operation !== entry.operation) {
414
+ setMutationRecordForRepo(normalizedRepoRoot, entry.path, entry.operation, undefined, {
415
+ persistWal: false,
416
+ scheduleFlush: false,
417
+ });
418
+ changed = true;
419
+ }
420
+ }
421
+ for (const filePath of status.untracked) {
422
+ const existing = state.pending.get(filePath);
423
+ if (!existing || existing.operation !== "write") {
424
+ setMutationRecordForRepo(normalizedRepoRoot, filePath, "write", undefined, {
425
+ persistWal: false,
426
+ scheduleFlush: false,
427
+ });
428
+ changed = true;
429
+ }
430
+ }
431
+ if (changed) {
432
+ rewriteWal(normalizedRepoRoot);
433
+ scheduleBackgroundFrgFlush(normalizedRepoRoot);
434
+ }
435
+ return status;
436
+ }
437
+ export function getFrgFreshnessSnapshot(repoRoot, indexed) {
438
+ const normalizedRepoRoot = normalizePath(repoRoot);
439
+ const gitStatus = getGitDirtyStatus(normalizedRepoRoot);
440
+ const flush = getFrgFlushStatus(normalizedRepoRoot);
441
+ const sessionPendingCount = getPendingFrgMutations(normalizedRepoRoot).length;
442
+ const sessionPendingBytes = getPendingFrgMutationBytes(normalizedRepoRoot);
443
+ let freshnessState = "fresh";
444
+ if (!indexed) {
445
+ freshnessState = "missing";
446
+ }
447
+ else if (flush.inFlight) {
448
+ freshnessState = "syncing";
449
+ }
450
+ else if (flush.scheduled) {
451
+ freshnessState = "sync-scheduled";
452
+ }
453
+ else if ((indexed.tree_hash ?? null) &&
454
+ gitStatus.headTree &&
455
+ indexed.tree_hash !== gitStatus.headTree) {
456
+ freshnessState = "head-mismatch";
457
+ }
458
+ else if (sessionPendingCount > 0) {
459
+ freshnessState = "session-dirty";
460
+ }
461
+ else if (gitStatus.tracked.length > 0 || gitStatus.untracked.length > 0) {
462
+ freshnessState = "overlay-dirty";
463
+ }
464
+ else if ((indexed.age_seconds ?? 0) > 86400) {
465
+ freshnessState = "stale";
466
+ }
467
+ return {
468
+ headCommit: gitStatus.headCommit,
469
+ headTree: gitStatus.headTree,
470
+ dirtyTrackedCount: gitStatus.tracked.length,
471
+ dirtyUntrackedCount: gitStatus.untracked.length,
472
+ sessionPendingCount,
473
+ sessionPendingBytes,
474
+ flush,
475
+ freshnessState,
476
+ };
477
+ }
478
+ export async function searchPendingFrgMutations(repoRoot, options) {
479
+ const pending = getPendingFrgMutations(repoRoot);
480
+ if (pending.length === 0) {
481
+ return null;
482
+ }
483
+ const regex = compilePattern(options);
484
+ const fileSet = new Set();
485
+ const counts = new Map();
486
+ const matches = [];
487
+ let matched = false;
488
+ for (const record of pending) {
489
+ if (record.operation === "delete") {
490
+ continue;
491
+ }
492
+ const relativePath = relativeToRepo(repoRoot, record.path);
493
+ if (!pathMatchesFilters(relativePath, options)) {
494
+ continue;
495
+ }
496
+ let content;
497
+ if (typeof record.content === "string") {
498
+ content = record.content;
499
+ }
500
+ else {
501
+ let raw;
502
+ try {
503
+ raw = await fs.readFile(record.path);
504
+ }
505
+ catch {
506
+ continue;
507
+ }
508
+ if (isBinaryBuffer(raw)) {
509
+ continue;
510
+ }
511
+ content = raw.toString("utf8");
512
+ }
513
+ const lines = content.split(/\r?\n/);
514
+ let fileMatchCount = 0;
515
+ for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
516
+ const line = lines[lineIndex] ?? "";
517
+ regex.lastIndex = 0;
518
+ let lineMatched = false;
519
+ let execMatch;
520
+ while ((execMatch = regex.exec(line)) !== null) {
521
+ matched = true;
522
+ lineMatched = true;
523
+ fileMatchCount += 1;
524
+ if (!options.filesOnly && !options.count && !options.quiet) {
525
+ const context = buildContextLines(lines, lineIndex, options.context ?? 0);
526
+ matches.push({
527
+ file: relativePath,
528
+ line: lineIndex + 1,
529
+ content: line,
530
+ match_start: execMatch.index,
531
+ match_end: execMatch.index + execMatch[0].length,
532
+ context_before: context.before,
533
+ context_after: context.after,
534
+ });
535
+ }
536
+ if ((options.maxCount ?? Number.POSITIVE_INFINITY) <= fileMatchCount) {
537
+ break;
538
+ }
539
+ if (execMatch[0].length === 0) {
540
+ regex.lastIndex += 1;
541
+ }
542
+ }
543
+ if (options.filesOnly && lineMatched) {
544
+ fileSet.add(relativePath);
545
+ break;
546
+ }
547
+ if ((options.maxCount ?? Number.POSITIVE_INFINITY) <= fileMatchCount) {
548
+ break;
549
+ }
550
+ }
551
+ if (options.count && fileMatchCount > 0) {
552
+ counts.set(relativePath, fileMatchCount);
553
+ }
554
+ if (options.filesOnly && fileMatchCount > 0) {
555
+ fileSet.add(relativePath);
556
+ }
557
+ if (options.quiet && fileMatchCount > 0) {
558
+ return { mode: "quiet", matched: true };
559
+ }
560
+ }
561
+ if (options.quiet) {
562
+ return { mode: "quiet", matched };
563
+ }
564
+ if (options.filesOnly) {
565
+ return { mode: "files", files: [...fileSet].sort() };
566
+ }
567
+ if (options.count) {
568
+ return {
569
+ mode: "counts",
570
+ counts: [...counts.entries()]
571
+ .sort((a, b) => a[0].localeCompare(b[0]))
572
+ .map(([file, count]) => ({ file, count })),
573
+ };
574
+ }
575
+ return { mode: "matches", matches };
576
+ }
577
+ //# sourceMappingURL=frg-freshness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frg-freshness.js","sourceRoot":"","sources":["../../src/executors/frg-freshness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAuB,MAAM,uBAAuB,CAAC;AAuFjE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;AAChD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,CAAC;AACzD,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC;AACxD,MAAM,CAAC,MAAM,uCAAuC,GAAG,EAAE,CAAC;AAC1D,MAAM,CAAC,MAAM,4CAA4C,GAAG,GAAG,GAAG,IAAI,CAAC;AACvE,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,GAAG,IAAI,CAAC;AAE5D,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,MAAM,CAAC,QAAgB;IAC9B,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,OAAO,CAAC,QAAgB;IAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB;IAC/C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAgB;IAC9C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,iCAAiC;QAC5E,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACpD,IAAI,QAAQ,EAAE,CAAC;QACb,qBAAqB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAc,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IAC9E,UAAU,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAC5C,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACrD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,OAAO,GAAe,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAC5E,WAAW,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB,EAAE,KAAiB;IAChE,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,KAAK,IAAI,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACjE,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACzC,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,CAAC;gBACrD,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClD,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE;oBACvC,GAAG,MAAM;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC;iBAChD,CAAC,CAAC;gBACH,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;IACH,CAAC;IAED,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;AAC7B,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB;IAClC,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,OAAO;IACT,CAAC;IAED,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClF,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,MAAyB;IAClE,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACxC,IAAI,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YACtD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,cAAc,CAAC,OAAqC;IAC3D,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC/E,MAAM,oBAAoB,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,eAAe,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAC/E,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,OAAO,GAAG,IAAI;SACjB,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACpC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC;SACnC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;SACvB,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;SACjC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvB,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAoB,EAAE,OAAqC;IACrF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAe,EACf,SAAiB,EACjB,MAAc;IAKd,MAAM,MAAM,GAA6C,EAAE,CAAC;IAC5D,MAAM,KAAK,GAA6C,EAAE,CAAC;IAC3D,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACrF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,QAAgB;IACxD,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAC/B,QAAgB,EAChB,QAAgB,EAChB,SAA+B,EAC/B,OAAgB,EAChB,OAA2D;IAE3D,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC/C,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpB,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAsB;QAChC,QAAQ,EAAE,kBAAkB;QAC5B,IAAI,EAAE,cAAc;QACpB,SAAS;QACT,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QACtB,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC;KACzC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAE1C,IAAI,OAAO,EAAE,UAAU,KAAK,KAAK,EAAE,CAAC;QAClC,eAAe,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,EAAE,aAAa,KAAK,KAAK,EAAE,CAAC;QACrC,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,QAAgB,EAAE,IAAc;IAC9C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;YAC/B,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC;YAC5B,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,SAA+B,EAC/B,OAAgB;IAEhB,MAAM,QAAQ,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC/D,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC;YACH,OAAO,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACvD,IAAI,UAAU,EAAE,KAAK,EAAE,CAAC;QACtB,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAAgB;IAIhB,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IACxC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,YAAY,EAAE,CAAC;IAC1E,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;IACrE,CAAC;IAED,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC;QACH,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;QAC9C,mFAAmF;QACnF,4CAA4C;QAC5C,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzF,MAAM,MAAM,GACV,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;YAClD,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;YACpF,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAC/B,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;QACjC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;QAC1B,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC;QACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9E,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC;QAC3B,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAChC,CAAC,UAAU,CAAC,YAAY,IAAI,qCAAqC,CAAC,GAAG,CAAC,EACtE,iCAAiC,CAClC,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;IAClE,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO;IACtC,IAAI,CAAC;QACH,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,UAAkB,qCAAqC;IAEvD,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACrD,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAExC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,IAAI,OAAO,CAAC;IAC1D,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QACjC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;QACxB,MAAM,MAAM,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YACnF,0BAA0B,CAAC,kBAAkB,EAAE,UAAU,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC;QACrF,CAAC;IACH,CAAC,EAAE,cAAc,CAAC,CAAC;IAEnB,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACjD,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,QAAgB;IAC7D,MAAM,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC7D,MAAM,YAAY,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAC1D,OAAO,CACL,YAAY,IAAI,uCAAuC;QACvD,YAAY,IAAI,4CAA4C,CAC7D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO;QACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;QACpC,eAAe,EAAE,UAAU,CAAC,eAAe;QAC3C,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,YAAY,EAAE,UAAU,CAAC,YAAY;KACtC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,SAAS,CAAC;IAClF,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,IAAI,SAAS,CAAC;IAEvF,MAAM,OAAO,GAA6D,EAAE,CAAC;IAC7E,MAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAChG,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,IAAI,OAAO;oBACT,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;wBAC/D,SAAS,EAAE,QAAQ;qBACpB,CAAC,CAAC;gBACL,IAAI,OAAO;oBACT,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;wBAC/D,SAAS,EAAE,OAAO;qBACnB,CAAC,CAAC;gBACL,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ;gBAAE,SAAS;YACxB,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;gBAChE,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;aACvD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,eAAe,GAAG,MAAM,CAAC,kBAAkB,EAAE;QACjD,UAAU;QACV,IAAI;QACJ,oBAAoB;QACpB,IAAI;KACL,CAAC,CAAC;IACH,IAAI,eAAe,EAAE,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAChE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC/C,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACxD,wBAAwB,CAAC,kBAAkB,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE;gBACnF,UAAU,EAAE,KAAK;gBACjB,aAAa,EAAE,KAAK;aACrB,CAAC,CAAC;YACH,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YAChD,wBAAwB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE;gBACzE,UAAU,EAAE,KAAK;gBACjB,aAAa,EAAE,KAAK;aACrB,CAAC,CAAC;YACH,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAC/B,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,QAAgB,EAChB,OAA0F;IAE1F,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IACpD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC;IAC9E,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;IAE3E,IAAI,cAAc,GAA2C,OAAO,CAAC;IACrE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,cAAc,GAAG,SAAS,CAAC;IAC7B,CAAC;SAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1B,cAAc,GAAG,SAAS,CAAC;IAC7B,CAAC;SAAM,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAC3B,cAAc,GAAG,gBAAgB,CAAC;IACpC,CAAC;SAAM,IACL,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;QAC3B,SAAS,CAAC,QAAQ;QAClB,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ,EACxC,CAAC;QACD,cAAc,GAAG,eAAe,CAAC;IACnC,CAAC;SAAM,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;QACnC,cAAc,GAAG,eAAe,CAAC;IACnC,CAAC;SAAM,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1E,cAAc,GAAG,eAAe,CAAC;IACnC,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;QAC9C,cAAc,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,iBAAiB,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM;QAC3C,mBAAmB,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM;QAC/C,mBAAmB;QACnB,mBAAmB;QACnB,KAAK;QACL,cAAc;KACf,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,QAAgB,EAChB,OAAqC;IAErC,MAAM,OAAO,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC;YAC/C,SAAS;QACX,CAAC;QAED,IAAI,OAAe,CAAC;QACpB,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,GAAW,CAAC;YAChB,IAAI,CAAC;gBACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YACD,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACpC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;YACpB,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,SAAiC,CAAC;YACtC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/C,OAAO,GAAG,IAAI,CAAC;gBACf,WAAW,GAAG,IAAI,CAAC;gBACnB,cAAc,IAAI,CAAC,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC3D,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;oBAC1E,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,SAAS,GAAG,CAAC;wBACnB,OAAO,EAAE,IAAI;wBACb,WAAW,EAAE,SAAS,CAAC,KAAK;wBAC5B,SAAS,EAAE,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM;wBAChD,cAAc,EAAE,OAAO,CAAC,MAAM;wBAC9B,aAAa,EAAE,OAAO,CAAC,KAAK;qBAC7B,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,cAAc,EAAE,CAAC;oBACrE,MAAM;gBACR,CAAC;gBACD,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC1B,MAAM;YACR,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,cAAc,EAAE,CAAC;gBACrE,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;iBAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SAC7C,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { ToolContext, ToolResult } from "../types.js";
2
+ export interface FrgInput {
3
+ command: "index" | "search" | "update" | "status" | "replace" | "init" | "watch" | "man" | "completions" | "upgrade";
4
+ pattern?: string;
5
+ replacement?: string;
6
+ path?: string;
7
+ noIndex?: boolean;
8
+ literal?: boolean;
9
+ caseInsensitive?: boolean;
10
+ smartCase?: boolean;
11
+ filesOnly?: boolean;
12
+ count?: boolean;
13
+ maxCount?: number;
14
+ quiet?: boolean;
15
+ context?: number;
16
+ json?: boolean;
17
+ glob?: string;
18
+ fileType?: string;
19
+ follow?: boolean;
20
+ extraPatterns?: string[];
21
+ maxFilesize?: number;
22
+ force?: boolean;
23
+ write?: boolean;
24
+ hook?: boolean;
25
+ shell?: "bash" | "elvish" | "fish" | "powershell" | "zsh";
26
+ }
27
+ export declare function executeFrg(input: unknown, ctx: ToolContext): Promise<ToolResult>;
28
+ //# sourceMappingURL=frg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frg.d.ts","sourceRoot":"","sources":["../../src/executors/frg.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAyD3D,MAAM,WAAW,QAAQ;IACvB,OAAO,EACH,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,GACP,KAAK,GACL,aAAa,GACb,SAAS,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,KAAK,CAAC;CAC3D;AAiOD,wBAAsB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAyEtF"}