@roackb2/heddle 1.0.1 → 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 (36) hide show
  1. package/README.md +15 -5
  2. package/dist/src/cli/chat/components/ApprovalComposer.d.ts.map +1 -1
  3. package/dist/src/cli/chat/components/ApprovalComposer.js +5 -4
  4. package/dist/src/cli/chat/components/ApprovalComposer.js.map +1 -1
  5. package/dist/src/cli/chat/hooks/tui-direct-shell.js +1 -1
  6. package/dist/src/cli/chat/hooks/tui-direct-shell.js.map +1 -1
  7. package/dist/src/cli/chat/hooks/tui-tool-approval.js +1 -1
  8. package/dist/src/cli/chat/hooks/tui-tool-approval.js.map +1 -1
  9. package/dist/src/cli/chat/hooks/useApprovalFlow.d.ts +6 -0
  10. package/dist/src/cli/chat/hooks/useApprovalFlow.d.ts.map +1 -1
  11. package/dist/src/cli/chat/hooks/useApprovalFlow.js +39 -18
  12. package/dist/src/cli/chat/hooks/useApprovalFlow.js.map +1 -1
  13. package/dist/src/cli/chat/utils/format.d.ts +1 -0
  14. package/dist/src/cli/chat/utils/format.d.ts.map +1 -1
  15. package/dist/src/cli/chat/utils/format.js +39 -6
  16. package/dist/src/cli/chat/utils/format.js.map +1 -1
  17. package/dist/src/cli/main.js +2 -27
  18. package/dist/src/cli/main.js.map +1 -1
  19. package/dist/src/cli/project-agent-context.d.ts +4 -0
  20. package/dist/src/cli/project-agent-context.d.ts.map +1 -0
  21. package/dist/src/cli/project-agent-context.js +40 -0
  22. package/dist/src/cli/project-agent-context.js.map +1 -0
  23. package/dist/src/core/approvals/remembered-rules.d.ts +4 -3
  24. package/dist/src/core/approvals/remembered-rules.d.ts.map +1 -1
  25. package/dist/src/core/approvals/remembered-rules.js +29 -2
  26. package/dist/src/core/approvals/remembered-rules.js.map +1 -1
  27. package/dist/src/core/memory/catalog.js +1 -1
  28. package/dist/src/core/memory/catalog.js.map +1 -1
  29. package/dist/src/core/tools/toolkits/coding-files/search-files.d.ts +3 -0
  30. package/dist/src/core/tools/toolkits/coding-files/search-files.d.ts.map +1 -1
  31. package/dist/src/core/tools/toolkits/coding-files/search-files.js +280 -17
  32. package/dist/src/core/tools/toolkits/coding-files/search-files.js.map +1 -1
  33. package/dist/src/web/favicon.svg +6 -0
  34. package/dist/src/web/index.html +1 -1
  35. package/package.json +1 -1
  36. package/dist/src/web/assets/favicon-CT3fFV8g.jpeg +0 -0
@@ -1,16 +1,27 @@
1
1
  // ---------------------------------------------------------------------------
2
2
  // Tool: search_files
3
- // Uses grep the real human tool, per project philosophy.
3
+ // Uses mature local search tools while keeping defaults focused and bounded.
4
4
  // ---------------------------------------------------------------------------
5
- import { execSync } from 'node:child_process';
6
- import { resolve } from 'node:path';
7
- export const DEFAULT_SEARCH_EXCLUDED_DIRS = ['.git', 'dist', 'node_modules', 'local', '.heddle'];
5
+ import { execFileSync } from 'node:child_process';
6
+ import { existsSync, realpathSync } from 'node:fs';
7
+ import { homedir } from 'node:os';
8
+ import { dirname, relative, resolve } from 'node:path';
9
+ export const DEFAULT_SEARCH_EXCLUDED_DIRS = ['dist', 'node_modules', 'local'];
10
+ const PROTECTED_STATE_DIRS = ['.git', '.heddle'];
11
+ const SEARCH_TIMEOUT_MS = 15_000;
12
+ const SEARCH_MAX_BUFFER = 1024 * 1024;
13
+ const GREP_BATCH_SIZE = 200;
14
+ const PROJECT_IGNORE_FILE_NAMES = ['.gitignore', '.ignore', '.rgignore'];
15
+ let cachedRipgrepAvailable;
8
16
  export function createSearchFilesTool(options = {}) {
9
- const excludedDirNames = sanitizeExcludedDirs(options.excludedDirs);
17
+ const hasCustomExcludedDirs = Array.isArray(options.excludedDirs) && options.excludedDirs.length > 0;
18
+ const configuredExcludedDirNames = sanitizeExcludedDirs(options.excludedDirs);
19
+ const customExcludedDirNames = getCustomExcludedDirs(configuredExcludedDirNames, hasCustomExcludedDirs);
10
20
  const configuredWorkspaceRoot = options.workspaceRoot ? resolve(options.workspaceRoot) : undefined;
21
+ const backend = options.backend ?? 'auto';
11
22
  return {
12
23
  name: 'search_files',
13
- description: 'Search for a text pattern in files using grep. Use this when you need to locate a specific symbol or text string, not when a likely folder or file is already obvious from the workspace structure. Prefer searching for concrete terms such as tool names, symbols, or filenames rather than copying broad question text. Relative paths are resolved from the active workspace root and may also point to nearby parent or sibling folders. Returns newline-separated matches in grep-style path:line:content format, or "No matches found.". Ignores generated or state directories like .git, dist, node_modules, local, and .heddle by default, but if you explicitly target one of those directories via path then that path is searched. Example inputs: { "query": "createUser" }, { "query": "incident", "path": "../shared-notes" }',
24
+ description: 'Search for a text pattern in files. Prefer rg when available for fast ignored-aware search, with a grep fallback. Use this when you need to locate a specific symbol or text string, not when a likely folder or file is already obvious from the workspace structure. Prefer searching for concrete terms such as tool names, symbols, or filenames rather than copying broad question text. Relative paths are resolved from the active workspace root and may also point to nearby parent or sibling folders. Returns newline-separated matches in grep-style path:line:content format, or "No matches found.". By default, search honors project ignore files such as .gitignore when rg is available; when no ignore file is present, fallback excludes avoid expensive/generated folders like dist, node_modules, and local. .git and .heddle stay protected from accidental broad searches unless explicitly targeted. Set includeIgnored: true only when intentionally searching ignored/dependency content such as node_modules. Example inputs: { "query": "createUser" }, { "query": "incident", "path": "../shared-notes" }, { "query": "packageName", "path": "node_modules", "includeIgnored": true }',
14
25
  parameters: {
15
26
  type: 'object',
16
27
  additionalProperties: false,
@@ -23,25 +34,64 @@ export function createSearchFilesTool(options = {}) {
23
34
  type: 'string',
24
35
  description: 'Directory to search in. Defaults to "."',
25
36
  },
37
+ includeIgnored: {
38
+ type: 'boolean',
39
+ description: 'Whether to include ignored/dependency content such as node_modules. Defaults to false.',
40
+ },
26
41
  },
27
42
  required: ['query'],
28
43
  },
29
44
  async execute(raw) {
30
45
  if (!isSearchFilesInput(raw)) {
31
- return { ok: false, error: 'Invalid input for search_files. Required field: query. Optional field: path.' };
46
+ return {
47
+ ok: false,
48
+ error: 'Invalid input for search_files. Required field: query. Optional fields: path, includeIgnored.',
49
+ };
32
50
  }
33
51
  const input = raw;
34
52
  const workspaceRoot = configuredWorkspaceRoot ?? process.cwd();
35
53
  const dir = resolve(workspaceRoot, input.path ?? '.');
36
- const effectiveExcludedDirs = excludedDirNames.filter((name) => !isExplicitlyTargetingExcludedDir(dir, name));
37
- const excludedDirs = effectiveExcludedDirs.map((name) => `--exclude-dir=${escapeShellArg(name)}`).join(' ');
54
+ const explicitlyTargetedConfiguredDirs = configuredExcludedDirNames.filter((name) => isExplicitlyTargetingExcludedDir(dir, name));
55
+ const explicitlyTargetedProtectedDirs = PROTECTED_STATE_DIRS.filter((name) => isExplicitlyTargetingExcludedDir(dir, name));
56
+ const includeIgnored = input.includeIgnored === true || explicitlyTargetedConfiguredDirs.length > 0 || explicitlyTargetedProtectedDirs.length > 0;
57
+ const protectedExcludedDirs = getProtectedExcludedDirs(dir);
58
+ const customExcludedDirs = customExcludedDirNames.filter((name) => !isExplicitlyTargetingExcludedDir(dir, name));
59
+ const fallbackExcludedDirs = getFallbackExcludedDirs({
60
+ dir,
61
+ fallbackExcludedDirs: customExcludedDirNames.length > 0 ? customExcludedDirNames : DEFAULT_SEARCH_EXCLUDED_DIRS,
62
+ });
63
+ const selectedBackend = selectSearchBackend(backend, dir);
64
+ const gitRepoRoot = findGitRepoRoot(dir);
65
+ const hasProjectIgnoreFile = findProjectIgnoreFile(dir, gitRepoRoot ?? workspaceRoot) !== undefined;
66
+ const fallbackExcludesApply = !includeIgnored && !hasProjectIgnoreFile;
38
67
  try {
39
- // -r recursive, -n line numbers, -I skip binary, --include common text files
40
- const output = execSync(`grep -rnI ${excludedDirs} --include='*.ts' --include='*.js' --include='*.json' --include='*.md' --include='*.txt' --include='*.yaml' --include='*.yml' ${escapeShellArg(input.query)} ${escapeShellArg(dir)}`, { encoding: 'utf-8', timeout: 15_000, maxBuffer: 1024 * 1024 });
41
- return { ok: true, output: output.trim() };
68
+ const output = selectedBackend === 'rg'
69
+ ? runRipgrepSearch({
70
+ query: input.query,
71
+ dir,
72
+ includeIgnored,
73
+ excludedDirs: includeIgnored ? protectedExcludedDirs
74
+ : [
75
+ ...new Set([
76
+ ...protectedExcludedDirs,
77
+ ...customExcludedDirs,
78
+ ...(fallbackExcludesApply ? fallbackExcludedDirs : []),
79
+ ]),
80
+ ],
81
+ })
82
+ : runGrepFallbackSearch({
83
+ query: input.query,
84
+ dir,
85
+ includeIgnored,
86
+ gitRepoRoot,
87
+ fallbackExcludesApply,
88
+ protectedExcludedDirs,
89
+ fallbackExcludedDirs,
90
+ });
91
+ return { ok: true, output: output.trim() || 'No matches found.' };
42
92
  }
43
93
  catch (err) {
44
- if (err && typeof err === 'object' && 'status' in err && err.status === 1) {
94
+ if (isSearchNoMatchError(err)) {
45
95
  return { ok: true, output: 'No matches found.' };
46
96
  }
47
97
  return { ok: false, error: `Search failed: ${err instanceof Error ? err.message : String(err)}` };
@@ -56,16 +106,187 @@ function isSearchFilesInput(raw) {
56
106
  }
57
107
  const input = raw;
58
108
  const keys = Object.keys(input);
59
- if (keys.some((key) => key !== 'query' && key !== 'path')) {
109
+ if (keys.some((key) => key !== 'query' && key !== 'path' && key !== 'includeIgnored')) {
60
110
  return false;
61
111
  }
62
112
  if (typeof input.query !== 'string') {
63
113
  return false;
64
114
  }
65
- return input.path === undefined || typeof input.path === 'string';
115
+ const validPath = input.path === undefined || typeof input.path === 'string';
116
+ const validIncludeIgnored = input.includeIgnored === undefined || typeof input.includeIgnored === 'boolean';
117
+ return validPath && validIncludeIgnored;
118
+ }
119
+ function selectSearchBackend(preferred, dir) {
120
+ if (preferred === 'grep') {
121
+ return 'grep';
122
+ }
123
+ if (preferred === 'rg') {
124
+ return isRipgrepAvailableForDir(dir) ? 'rg' : 'grep';
125
+ }
126
+ return isRipgrepAvailableForDir(dir) ? 'rg' : 'grep';
66
127
  }
67
- function escapeShellArg(arg) {
68
- return `'${arg.replace(/'/g, "'\\''")}'`;
128
+ function isRipgrepAvailable() {
129
+ if (cachedRipgrepAvailable !== undefined) {
130
+ return cachedRipgrepAvailable;
131
+ }
132
+ try {
133
+ execFileSync('rg', ['--version'], { stdio: 'ignore', timeout: 2_000 });
134
+ cachedRipgrepAvailable = true;
135
+ }
136
+ catch {
137
+ cachedRipgrepAvailable = false;
138
+ }
139
+ return cachedRipgrepAvailable;
140
+ }
141
+ function isRipgrepAvailableForDir(dir) {
142
+ if (!isRipgrepAvailable()) {
143
+ return false;
144
+ }
145
+ try {
146
+ execFileSync('rg', ['--version'], {
147
+ cwd: dir,
148
+ stdio: 'ignore',
149
+ timeout: 2_000,
150
+ maxBuffer: SEARCH_MAX_BUFFER,
151
+ });
152
+ return true;
153
+ }
154
+ catch {
155
+ return false;
156
+ }
157
+ }
158
+ function runRipgrepSearch(args) {
159
+ const commandArgs = [
160
+ '--line-number',
161
+ '--no-heading',
162
+ '--color',
163
+ 'never',
164
+ ...args.excludedDirs.flatMap((name) => ['--glob', `!**/${name}/**`]),
165
+ ];
166
+ if (args.includeIgnored) {
167
+ commandArgs.push('--no-ignore', '--hidden');
168
+ }
169
+ commandArgs.push('--', args.query, '.');
170
+ return execFileSync('rg', commandArgs, {
171
+ cwd: args.dir,
172
+ encoding: 'utf-8',
173
+ timeout: SEARCH_TIMEOUT_MS,
174
+ maxBuffer: SEARCH_MAX_BUFFER,
175
+ });
176
+ }
177
+ function runGrepFallbackSearch(args) {
178
+ if (args.includeIgnored) {
179
+ return runBroadGrepSearch({
180
+ query: args.query,
181
+ dir: args.dir,
182
+ excludedDirs: args.protectedExcludedDirs,
183
+ });
184
+ }
185
+ if (args.gitRepoRoot) {
186
+ const targetPathspec = determineGitPathspec(args.gitRepoRoot, args.dir);
187
+ const searchableFiles = listGitSearchableFiles(args.gitRepoRoot, targetPathspec);
188
+ const filteredFiles = filterSearchableFiles(searchableFiles, args.fallbackExcludesApply ?
189
+ [...new Set([...args.protectedExcludedDirs, ...args.fallbackExcludedDirs])]
190
+ : args.protectedExcludedDirs);
191
+ return runGrepOnFiles({
192
+ query: args.query,
193
+ cwd: args.gitRepoRoot,
194
+ files: filteredFiles,
195
+ });
196
+ }
197
+ return runBroadGrepSearch({
198
+ query: args.query,
199
+ dir: args.dir,
200
+ excludedDirs: args.fallbackExcludedDirs,
201
+ });
202
+ }
203
+ function runBroadGrepSearch(args) {
204
+ return execFileSync('grep', [
205
+ '-rnI',
206
+ ...args.excludedDirs.map((name) => `--exclude-dir=${name}`),
207
+ '--',
208
+ args.query,
209
+ '.',
210
+ ], {
211
+ cwd: args.dir,
212
+ encoding: 'utf-8',
213
+ timeout: SEARCH_TIMEOUT_MS,
214
+ maxBuffer: SEARCH_MAX_BUFFER,
215
+ });
216
+ }
217
+ function runGrepOnFiles(args) {
218
+ if (args.files.length === 0) {
219
+ return '';
220
+ }
221
+ const outputs = [];
222
+ for (let index = 0; index < args.files.length; index += GREP_BATCH_SIZE) {
223
+ const batch = args.files.slice(index, index + GREP_BATCH_SIZE);
224
+ try {
225
+ const output = execFileSync('grep', ['-nI', '--', args.query, ...batch], {
226
+ cwd: args.cwd,
227
+ encoding: 'utf-8',
228
+ timeout: SEARCH_TIMEOUT_MS,
229
+ maxBuffer: SEARCH_MAX_BUFFER,
230
+ });
231
+ if (output.trim()) {
232
+ outputs.push(output.trim());
233
+ }
234
+ }
235
+ catch (err) {
236
+ if (!isSearchNoMatchError(err)) {
237
+ throw err;
238
+ }
239
+ }
240
+ }
241
+ return outputs.join('\n');
242
+ }
243
+ function findGitRepoRoot(dir) {
244
+ try {
245
+ const output = execFileSync('git', ['-C', dir, 'rev-parse', '--show-toplevel'], {
246
+ encoding: 'utf-8',
247
+ timeout: 2_000,
248
+ maxBuffer: SEARCH_MAX_BUFFER,
249
+ stdio: ['ignore', 'pipe', 'ignore'],
250
+ }).trim();
251
+ return output ? realpathSync(output) : undefined;
252
+ }
253
+ catch {
254
+ return undefined;
255
+ }
256
+ }
257
+ function determineGitPathspec(repoRoot, dir) {
258
+ const normalizedRepoRoot = realpathSync(repoRoot);
259
+ const normalizedDir = realpathSync(dir);
260
+ const pathspec = relative(normalizedRepoRoot, normalizedDir).replace(/\\/g, '/');
261
+ return pathspec && pathspec !== '' ? pathspec : '.';
262
+ }
263
+ function listGitSearchableFiles(repoRoot, pathspec) {
264
+ const output = execFileSync('git', ['-C', repoRoot, 'ls-files', '-co', '--exclude-standard', '--', pathspec], {
265
+ encoding: 'utf-8',
266
+ timeout: SEARCH_TIMEOUT_MS,
267
+ maxBuffer: SEARCH_MAX_BUFFER,
268
+ });
269
+ return output
270
+ .split(/\r?\n/)
271
+ .map((line) => line.trim())
272
+ .filter(Boolean);
273
+ }
274
+ function filterSearchableFiles(files, excludedDirNames) {
275
+ if (excludedDirNames.length === 0) {
276
+ return files;
277
+ }
278
+ return files.filter((filePath) => excludedDirNames.every((dirName) => !isPathInsideExcludedDir(filePath, dirName)));
279
+ }
280
+ function isPathInsideExcludedDir(filePath, excludedDirName) {
281
+ const normalizedExcludedName = excludedDirName.trim().replace(/^\.?\//, '').replace(/\/+$/, '');
282
+ if (!normalizedExcludedName) {
283
+ return false;
284
+ }
285
+ const segments = filePath.split(/[/\\]+/).filter(Boolean);
286
+ return segments.includes(normalizedExcludedName);
287
+ }
288
+ function isSearchNoMatchError(err) {
289
+ return Boolean(err && typeof err === 'object' && 'status' in err && err.status === 1);
69
290
  }
70
291
  function sanitizeExcludedDirs(custom) {
71
292
  if (!custom || custom.length === 0) {
@@ -77,6 +298,48 @@ function sanitizeExcludedDirs(custom) {
77
298
  .map((value) => value.replace(/^\.?\//, '').replace(/\/+$/, ''));
78
299
  return normalized.length > 0 ? normalized : DEFAULT_SEARCH_EXCLUDED_DIRS;
79
300
  }
301
+ function getCustomExcludedDirs(configuredExcludedDirs, hasCustomExcludedDirs) {
302
+ if (!hasCustomExcludedDirs) {
303
+ return [];
304
+ }
305
+ const nonProtectedDirs = configuredExcludedDirs.filter((name) => !PROTECTED_STATE_DIRS.includes(name));
306
+ if (nonProtectedDirs.every((name) => DEFAULT_SEARCH_EXCLUDED_DIRS.includes(name))) {
307
+ return [];
308
+ }
309
+ return nonProtectedDirs;
310
+ }
311
+ function getProtectedExcludedDirs(dir) {
312
+ return PROTECTED_STATE_DIRS.filter((name) => !isExplicitlyTargetingExcludedDir(dir, name));
313
+ }
314
+ function getFallbackExcludedDirs(args) {
315
+ return [
316
+ ...new Set([
317
+ ...getProtectedExcludedDirs(args.dir),
318
+ ...args.fallbackExcludedDirs.filter((name) => !isExplicitlyTargetingExcludedDir(args.dir, name)),
319
+ ]),
320
+ ];
321
+ }
322
+ function findProjectIgnoreFile(startDir, stopDir) {
323
+ let currentDir = resolve(startDir);
324
+ const normalizedStopDir = resolve(stopDir);
325
+ const homeDir = homedir();
326
+ while (true) {
327
+ for (const fileName of PROJECT_IGNORE_FILE_NAMES) {
328
+ const ignoreFilePath = resolve(currentDir, fileName);
329
+ if (existsSync(ignoreFilePath)) {
330
+ return ignoreFilePath;
331
+ }
332
+ }
333
+ if (currentDir === normalizedStopDir || currentDir === homeDir) {
334
+ return undefined;
335
+ }
336
+ const parentDir = dirname(currentDir);
337
+ if (parentDir === currentDir) {
338
+ return undefined;
339
+ }
340
+ currentDir = parentDir;
341
+ }
342
+ }
80
343
  function isExplicitlyTargetingExcludedDir(dir, excludedName) {
81
344
  const normalizedExcludedName = excludedName.trim().replace(/^\.?\//, '').replace(/\/+$/, '');
82
345
  if (!normalizedExcludedName) {
@@ -1 +1 @@
1
- {"version":3,"file":"search-files.js","sourceRoot":"","sources":["../../../../../../src/core/tools/toolkits/coding-files/search-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-files.js","sourceRoot":"","sources":["../../../../../../src/core/tools/toolkits/coding-files/search-files.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qBAAqB;AACrB,6EAA6E;AAC7E,8EAA8E;AAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWvD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAC9E,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACjD,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AACtC,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,yBAAyB,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAQzE,IAAI,sBAA2C,CAAC;AAEhD,MAAM,UAAU,qBAAqB,CAAC,UAA8B,EAAE;IACpE,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACrG,MAAM,0BAA0B,GAAG,oBAAoB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9E,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;IACxG,MAAM,uBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAE1C,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,qpCAAqpC;QACvpC,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;iBAC9C;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yCAAyC;iBACvD;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,wFAAwF;iBACtG;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;QACD,KAAK,CAAC,OAAO,CAAC,GAAY;YACxB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,+FAA+F;iBACvG,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAqB,GAAG,CAAC;YACpC,MAAM,aAAa,GAAG,uBAAuB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;YACtD,MAAM,gCAAgC,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gCAAgC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YAClI,MAAM,+BAA+B,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gCAAgC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3H,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,KAAK,IAAI,IAAI,gCAAgC,CAAC,MAAM,GAAG,CAAC,IAAI,+BAA+B,CAAC,MAAM,GAAG,CAAC,CAAC;YAClJ,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;YAC5D,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gCAAgC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACjH,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;gBACnD,GAAG;gBACH,oBAAoB,EAAE,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,4BAA4B;aAChH,CAAC,CAAC;YACH,MAAM,eAAe,GAAG,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,GAAG,EAAE,WAAW,IAAI,aAAa,CAAC,KAAK,SAAS,CAAC;YACpG,MAAM,qBAAqB,GAAG,CAAC,cAAc,IAAI,CAAC,oBAAoB,CAAC;YAEvE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,eAAe,KAAK,IAAI;oBACrC,CAAC,CAAC,gBAAgB,CAAC;wBACf,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,GAAG;wBACH,cAAc;wBACd,YAAY,EACV,cAAc,CAAC,CAAC,CAAC,qBAAqB;4BACtC,CAAC,CAAC;gCACE,GAAG,IAAI,GAAG,CAAC;oCACT,GAAG,qBAAqB;oCACxB,GAAG,kBAAkB;oCACrB,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;iCACvD,CAAC;6BACH;qBACN,CAAC;oBACJ,CAAC,CAAC,qBAAqB,CAAC;wBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,GAAG;wBACH,cAAc;wBACd,WAAW;wBACX,qBAAqB;wBACrB,qBAAqB;wBACrB,oBAAoB;qBACrB,CAAC,CAAC;gBACP,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,mBAAmB,EAAE,CAAC;YACpE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;gBACnD,CAAC;gBACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACpG,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAmB,qBAAqB,EAAE,CAAC;AAEvE,SAAS,kBAAkB,CAAC,GAAY;IACtC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,GAA8B,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,gBAAgB,CAAC,EAAE,CAAC;QACtF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;IAC7E,MAAM,mBAAmB,GAAG,KAAK,CAAC,cAAc,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC;IAC5G,OAAO,SAAS,IAAI,mBAAmB,CAAC;AAC1C,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAwB,EAAE,GAAW;IAChE,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACvD,CAAC;IAED,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACvD,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAED,IAAI,CAAC;QACH,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,sBAAsB,GAAG,IAAI,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB,GAAG,KAAK,CAAC;IACjC,CAAC;IAED,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW;IAC3C,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE;YAChC,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,iBAAiB;SAC7B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAKzB;IACC,MAAM,WAAW,GAAG;QAClB,eAAe;QACf,cAAc;QACd,SAAS;QACT,OAAO;QACP,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;KACrE,CAAC;IAEF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE;QACrC,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,iBAAiB;QAC1B,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,IAQ9B;IACC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,OAAO,kBAAkB,CAAC;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,YAAY,EAAE,IAAI,CAAC,qBAAqB;SACzC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACxE,MAAM,eAAe,GAAG,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,qBAAqB,CACzC,eAAe,EACf,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC1B,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC7E,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAC7B,CAAC;QACF,OAAO,cAAc,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,WAAW;YACrB,KAAK,EAAE,aAAa;SACrB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,kBAAkB,CAAC;QACxB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,YAAY,EAAE,IAAI,CAAC,oBAAoB;KACxC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,IAA4D;IACtF,OAAO,YAAY,CACjB,MAAM,EACN;QACE,MAAM;QACN,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAC3D,IAAI;QACJ,IAAI,CAAC,KAAK;QACV,GAAG;KACJ,EACD;QACE,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,iBAAiB;QAC1B,SAAS,EAAE,iBAAiB;KAC7B,CACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAqD;IAC3E,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,eAAe,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CACzB,MAAM,EACN,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,EACnC;gBACE,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,iBAAiB;gBAC1B,SAAS,EAAE,iBAAiB;aAC7B,CACF,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CACzB,KAAK,EACL,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,iBAAiB,CAAC,EAC3C;YACE,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,iBAAiB;YAC5B,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CACF,CAAC,IAAI,EAAE,CAAC;QACT,OAAO,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB,EAAE,GAAW;IACzD,MAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjF,OAAO,QAAQ,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACtD,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB,EAAE,QAAgB;IAChE,MAAM,MAAM,GAAG,YAAY,CACzB,KAAK,EACL,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,CAAC,EACzE;QACE,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,iBAAiB;QAC1B,SAAS,EAAE,iBAAiB;KAC7B,CACF,CAAC;IAEF,OAAO,MAAM;SACV,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAe,EAAE,gBAA0B;IACxE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC/B,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CACjF,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB,EAAE,eAAuB;IACxE,MAAM,sBAAsB,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1D,OAAO,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAY;IACxC,OAAO,OAAO,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA4B;IACxD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,4BAA4B,CAAC;IACtC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAEnE,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC;AAC3E,CAAC;AAED,SAAS,qBAAqB,CAAC,sBAAgC,EAAE,qBAA8B;IAC7F,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACvG,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,4BAA4B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW;IAC3C,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gCAAgC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,uBAAuB,CAAC,IAGhC;IACC,OAAO;QACL,GAAG,IAAI,GAAG,CAAC;YACT,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;YACrC,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gCAAgC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACjG,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB,EAAE,OAAe;IAC9D,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;IAE1B,OAAO,IAAI,EAAE,CAAC;QACZ,KAAK,MAAM,QAAQ,IAAI,yBAAyB,EAAE,CAAC;YACjD,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrD,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/B,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC;QAED,IAAI,UAAU,KAAK,iBAAiB,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YAC/D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,gCAAgC,CAAC,GAAW,EAAE,YAAoB;IACzE,MAAM,sBAAsB,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7F,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrD,OAAO,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,6 @@
1
+ <svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="256" height="256" rx="60" fill="#0A0A0C"/>
3
+ <rect x="2" y="2" width="252" height="252" rx="58" stroke="#ffffff" stroke-opacity="0.1" stroke-width="4"/>
4
+ <path d="M72 72L128 128L72 184" stroke="#a855f7" stroke-width="24" stroke-linecap="round" stroke-linejoin="round"/>
5
+ <path d="M144 184H192" stroke="#3B82F6" stroke-width="24" stroke-linecap="round" stroke-linejoin="round"/>
6
+ </svg>
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
6
- <link rel="icon" type="image/jpeg" href="/assets/favicon-CT3fFV8g.jpeg" />
6
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
7
7
  <title>Heddle Control Plane</title>
8
8
  <script type="module" crossorigin src="/assets/index-Du00cqAD.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-DECur_0Z.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roackb2/heddle",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "An open-source AI coding agent runtime and terminal CLI for real repositories, with persistent memory, sessions, approvals, heartbeat, and a browser control plane",
5
5
  "author": "Jay / Fienna Liang <roackb2@gmail.com>",
6
6
  "license": "MIT",