oh-my-claude-sisyphus 1.9.0 → 1.10.2

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 (53) hide show
  1. package/dist/agents/definitions.js +1 -1
  2. package/dist/agents/orchestrator-sisyphus.js +1 -1
  3. package/dist/features/auto-update.d.ts +20 -0
  4. package/dist/features/auto-update.d.ts.map +1 -1
  5. package/dist/features/auto-update.js +35 -0
  6. package/dist/features/auto-update.js.map +1 -1
  7. package/dist/features/builtin-skills/skills.d.ts.map +1 -1
  8. package/dist/features/builtin-skills/skills.js +146 -13
  9. package/dist/features/builtin-skills/skills.js.map +1 -1
  10. package/dist/hooks/bridge.d.ts +1 -1
  11. package/dist/hooks/bridge.d.ts.map +1 -1
  12. package/dist/hooks/bridge.js +97 -1
  13. package/dist/hooks/bridge.js.map +1 -1
  14. package/dist/hooks/index.d.ts +4 -0
  15. package/dist/hooks/index.d.ts.map +1 -1
  16. package/dist/hooks/index.js +12 -0
  17. package/dist/hooks/index.js.map +1 -1
  18. package/dist/hooks/persistent-mode/index.d.ts +40 -0
  19. package/dist/hooks/persistent-mode/index.d.ts.map +1 -0
  20. package/dist/hooks/persistent-mode/index.js +322 -0
  21. package/dist/hooks/persistent-mode/index.js.map +1 -0
  22. package/dist/hooks/plugin-patterns/index.d.ts +107 -0
  23. package/dist/hooks/plugin-patterns/index.d.ts.map +1 -0
  24. package/dist/hooks/plugin-patterns/index.js +286 -0
  25. package/dist/hooks/plugin-patterns/index.js.map +1 -0
  26. package/dist/hooks/preemptive-compaction/index.js +2 -2
  27. package/dist/hooks/preemptive-compaction/index.js.map +1 -1
  28. package/dist/hooks/ralph-verifier/index.d.ts +72 -0
  29. package/dist/hooks/ralph-verifier/index.d.ts.map +1 -0
  30. package/dist/hooks/ralph-verifier/index.js +223 -0
  31. package/dist/hooks/ralph-verifier/index.js.map +1 -0
  32. package/dist/hooks/thinking-block-validator/index.d.ts +3 -34
  33. package/dist/hooks/thinking-block-validator/index.d.ts.map +1 -1
  34. package/dist/hooks/thinking-block-validator/index.js +21 -70
  35. package/dist/hooks/thinking-block-validator/index.js.map +1 -1
  36. package/dist/hooks/ultrawork-state/index.d.ts +60 -0
  37. package/dist/hooks/ultrawork-state/index.d.ts.map +1 -0
  38. package/dist/hooks/ultrawork-state/index.js +207 -0
  39. package/dist/hooks/ultrawork-state/index.js.map +1 -0
  40. package/dist/installer/hooks.d.ts +38 -2
  41. package/dist/installer/hooks.d.ts.map +1 -1
  42. package/dist/installer/hooks.js +682 -8
  43. package/dist/installer/hooks.js.map +1 -1
  44. package/dist/installer/index.d.ts.map +1 -1
  45. package/dist/installer/index.js +126 -10
  46. package/dist/installer/index.js.map +1 -1
  47. package/dist/tools/ast-tools.d.ts +3 -3
  48. package/dist/tools/ast-tools.d.ts.map +1 -1
  49. package/dist/tools/ast-tools.js +205 -104
  50. package/dist/tools/ast-tools.js.map +1 -1
  51. package/package.json +1 -1
  52. package/scripts/install.sh +70 -3
  53. package/scripts/uninstall.sh +116 -3
@@ -6,59 +6,103 @@
6
6
  * - Code replacement while preserving structure
7
7
  * - Support for 25+ programming languages
8
8
  */
9
- import { z } from 'zod';
10
- import { readFileSync, readdirSync, statSync, writeFileSync } from 'fs';
11
- import { join, extname, resolve } from 'path';
9
+ import { z } from "zod";
10
+ import { readFileSync, readdirSync, statSync, writeFileSync } from "fs";
11
+ import { join, extname, resolve } from "path";
12
12
  // Dynamic import for @ast-grep/napi (ESM module)
13
13
  let sgModule = null;
14
14
  async function getSgModule() {
15
15
  if (!sgModule) {
16
- sgModule = await import('@ast-grep/napi');
16
+ sgModule = await import("@ast-grep/napi");
17
17
  }
18
18
  return sgModule;
19
19
  }
20
+ /**
21
+ * Convert lowercase language string to ast-grep Lang enum value
22
+ * This provides type-safe language conversion without using 'as any'
23
+ */
24
+ function toLangEnum(sg, language) {
25
+ const langMap = {
26
+ javascript: sg.Lang.JavaScript,
27
+ typescript: sg.Lang.TypeScript,
28
+ tsx: sg.Lang.Tsx,
29
+ python: sg.Lang.Python,
30
+ ruby: sg.Lang.Ruby,
31
+ go: sg.Lang.Go,
32
+ rust: sg.Lang.Rust,
33
+ java: sg.Lang.Java,
34
+ kotlin: sg.Lang.Kotlin,
35
+ swift: sg.Lang.Swift,
36
+ c: sg.Lang.C,
37
+ cpp: sg.Lang.Cpp,
38
+ csharp: sg.Lang.CSharp,
39
+ html: sg.Lang.Html,
40
+ css: sg.Lang.Css,
41
+ json: sg.Lang.Json,
42
+ yaml: sg.Lang.Yaml,
43
+ };
44
+ const lang = langMap[language];
45
+ if (!lang) {
46
+ throw new Error(`Unsupported language: ${language}`);
47
+ }
48
+ return lang;
49
+ }
20
50
  /**
21
51
  * Supported languages for AST analysis
22
52
  * Maps to ast-grep language identifiers
23
53
  */
24
54
  export const SUPPORTED_LANGUAGES = [
25
- 'javascript', 'typescript', 'tsx', 'python', 'ruby', 'go', 'rust',
26
- 'java', 'kotlin', 'swift', 'c', 'cpp', 'csharp',
27
- 'html', 'css', 'json', 'yaml'
55
+ "javascript",
56
+ "typescript",
57
+ "tsx",
58
+ "python",
59
+ "ruby",
60
+ "go",
61
+ "rust",
62
+ "java",
63
+ "kotlin",
64
+ "swift",
65
+ "c",
66
+ "cpp",
67
+ "csharp",
68
+ "html",
69
+ "css",
70
+ "json",
71
+ "yaml",
28
72
  ];
29
73
  /**
30
74
  * Map file extensions to ast-grep language identifiers
31
75
  */
32
76
  const EXT_TO_LANG = {
33
- '.js': 'javascript',
34
- '.mjs': 'javascript',
35
- '.cjs': 'javascript',
36
- '.jsx': 'javascript',
37
- '.ts': 'typescript',
38
- '.mts': 'typescript',
39
- '.cts': 'typescript',
40
- '.tsx': 'tsx',
41
- '.py': 'python',
42
- '.rb': 'ruby',
43
- '.go': 'go',
44
- '.rs': 'rust',
45
- '.java': 'java',
46
- '.kt': 'kotlin',
47
- '.kts': 'kotlin',
48
- '.swift': 'swift',
49
- '.c': 'c',
50
- '.h': 'c',
51
- '.cpp': 'cpp',
52
- '.cc': 'cpp',
53
- '.cxx': 'cpp',
54
- '.hpp': 'cpp',
55
- '.cs': 'csharp',
56
- '.html': 'html',
57
- '.htm': 'html',
58
- '.css': 'css',
59
- '.json': 'json',
60
- '.yaml': 'yaml',
61
- '.yml': 'yaml'
77
+ ".js": "javascript",
78
+ ".mjs": "javascript",
79
+ ".cjs": "javascript",
80
+ ".jsx": "javascript",
81
+ ".ts": "typescript",
82
+ ".mts": "typescript",
83
+ ".cts": "typescript",
84
+ ".tsx": "tsx",
85
+ ".py": "python",
86
+ ".rb": "ruby",
87
+ ".go": "go",
88
+ ".rs": "rust",
89
+ ".java": "java",
90
+ ".kt": "kotlin",
91
+ ".kts": "kotlin",
92
+ ".swift": "swift",
93
+ ".c": "c",
94
+ ".h": "c",
95
+ ".cpp": "cpp",
96
+ ".cc": "cpp",
97
+ ".cxx": "cpp",
98
+ ".hpp": "cpp",
99
+ ".cs": "csharp",
100
+ ".html": "html",
101
+ ".htm": "html",
102
+ ".css": "css",
103
+ ".json": "json",
104
+ ".yaml": "yaml",
105
+ ".yml": "yaml",
62
106
  };
63
107
  /**
64
108
  * Get files matching the language in a directory
@@ -79,7 +123,15 @@ function getFilesForLanguage(dirPath, language, maxFiles = 1000) {
79
123
  const fullPath = join(dir, entry.name);
80
124
  // Skip common non-source directories
81
125
  if (entry.isDirectory()) {
82
- if (!['node_modules', '.git', 'dist', 'build', '__pycache__', '.venv', 'venv'].includes(entry.name)) {
126
+ if (![
127
+ "node_modules",
128
+ ".git",
129
+ "dist",
130
+ "build",
131
+ "__pycache__",
132
+ ".venv",
133
+ "venv",
134
+ ].includes(entry.name)) {
83
135
  walk(fullPath);
84
136
  }
85
137
  }
@@ -107,23 +159,23 @@ function getFilesForLanguage(dirPath, language, maxFiles = 1000) {
107
159
  * Format a match result for display
108
160
  */
109
161
  function formatMatch(filePath, matchText, startLine, endLine, context, fileContent) {
110
- const lines = fileContent.split('\n');
162
+ const lines = fileContent.split("\n");
111
163
  const contextStart = Math.max(0, startLine - context - 1);
112
164
  const contextEnd = Math.min(lines.length, endLine + context);
113
165
  const contextLines = lines.slice(contextStart, contextEnd);
114
166
  const numberedLines = contextLines.map((line, i) => {
115
167
  const lineNum = contextStart + i + 1;
116
168
  const isMatch = lineNum >= startLine && lineNum <= endLine;
117
- const prefix = isMatch ? '>' : ' ';
169
+ const prefix = isMatch ? ">" : " ";
118
170
  return `${prefix} ${lineNum.toString().padStart(4)}: ${line}`;
119
171
  });
120
- return `${filePath}:${startLine}\n${numberedLines.join('\n')}`;
172
+ return `${filePath}:${startLine}\n${numberedLines.join("\n")}`;
121
173
  }
122
174
  /**
123
175
  * AST Grep Search Tool - Find code patterns using AST matching
124
176
  */
125
177
  export const astGrepSearchTool = {
126
- name: 'ast_grep_search',
178
+ name: "ast_grep_search",
127
179
  description: `Search for code patterns using AST matching. More precise than text search.
128
180
 
129
181
  Use meta-variables in patterns:
@@ -139,23 +191,42 @@ Examples:
139
191
 
140
192
  Note: Patterns must be valid AST nodes for the language.`,
141
193
  schema: {
142
- pattern: z.string().describe('AST pattern with meta-variables ($VAR, $$$VARS)'),
143
- language: z.enum(SUPPORTED_LANGUAGES).describe('Programming language'),
144
- path: z.string().optional().describe('Directory or file to search (default: current directory)'),
145
- context: z.number().int().min(0).max(10).optional().describe('Lines of context around matches (default: 2)'),
146
- maxResults: z.number().int().min(1).max(100).optional().describe('Maximum results to return (default: 20)')
194
+ pattern: z
195
+ .string()
196
+ .describe("AST pattern with meta-variables ($VAR, $$$VARS)"),
197
+ language: z.enum(SUPPORTED_LANGUAGES).describe("Programming language"),
198
+ path: z
199
+ .string()
200
+ .optional()
201
+ .describe("Directory or file to search (default: current directory)"),
202
+ context: z
203
+ .number()
204
+ .int()
205
+ .min(0)
206
+ .max(10)
207
+ .optional()
208
+ .describe("Lines of context around matches (default: 2)"),
209
+ maxResults: z
210
+ .number()
211
+ .int()
212
+ .min(1)
213
+ .max(100)
214
+ .optional()
215
+ .describe("Maximum results to return (default: 20)"),
147
216
  },
148
217
  handler: async (args) => {
149
- const { pattern, language, path = '.', context = 2, maxResults = 20 } = args;
218
+ const { pattern, language, path = ".", context = 2, maxResults = 20, } = args;
150
219
  try {
151
220
  const sg = await getSgModule();
152
221
  const files = getFilesForLanguage(path, language);
153
222
  if (files.length === 0) {
154
223
  return {
155
- content: [{
156
- type: 'text',
157
- text: `No ${language} files found in ${path}`
158
- }]
224
+ content: [
225
+ {
226
+ type: "text",
227
+ text: `No ${language} files found in ${path}`,
228
+ },
229
+ ],
159
230
  };
160
231
  }
161
232
  const results = [];
@@ -164,8 +235,8 @@ Note: Patterns must be valid AST nodes for the language.`,
164
235
  if (totalMatches >= maxResults)
165
236
  break;
166
237
  try {
167
- const content = readFileSync(filePath, 'utf-8');
168
- const root = sg.parse(language, content).root();
238
+ const content = readFileSync(filePath, "utf-8");
239
+ const root = sg.parse(toLangEnum(sg, language), content).root();
169
240
  const matches = root.findAll(pattern);
170
241
  for (const match of matches) {
171
242
  if (totalMatches >= maxResults)
@@ -183,35 +254,41 @@ Note: Patterns must be valid AST nodes for the language.`,
183
254
  }
184
255
  if (results.length === 0) {
185
256
  return {
186
- content: [{
187
- type: 'text',
188
- text: `No matches found for pattern: ${pattern}\n\nSearched ${files.length} ${language} file(s) in ${path}\n\nTip: Ensure the pattern is a valid AST node. For example:\n- Use "function $NAME" not just "$NAME"\n- Use "console.log($X)" not "console.log"`
189
- }]
257
+ content: [
258
+ {
259
+ type: "text",
260
+ text: `No matches found for pattern: ${pattern}\n\nSearched ${files.length} ${language} file(s) in ${path}\n\nTip: Ensure the pattern is a valid AST node. For example:\n- Use "function $NAME" not just "$NAME"\n- Use "console.log($X)" not "console.log"`,
261
+ },
262
+ ],
190
263
  };
191
264
  }
192
265
  const header = `Found ${totalMatches} match(es) in ${files.length} file(s)\nPattern: ${pattern}\n\n`;
193
266
  return {
194
- content: [{
195
- type: 'text',
196
- text: header + results.join('\n\n---\n\n')
197
- }]
267
+ content: [
268
+ {
269
+ type: "text",
270
+ text: header + results.join("\n\n---\n\n"),
271
+ },
272
+ ],
198
273
  };
199
274
  }
200
275
  catch (error) {
201
276
  return {
202
- content: [{
203
- type: 'text',
204
- text: `Error in AST search: ${error instanceof Error ? error.message : String(error)}\n\nCommon issues:\n- Pattern must be a complete AST node\n- Language must match file type\n- Check that @ast-grep/napi is installed`
205
- }]
277
+ content: [
278
+ {
279
+ type: "text",
280
+ text: `Error in AST search: ${error instanceof Error ? error.message : String(error)}\n\nCommon issues:\n- Pattern must be a complete AST node\n- Language must match file type\n- Check that @ast-grep/napi is installed`,
281
+ },
282
+ ],
206
283
  };
207
284
  }
208
- }
285
+ },
209
286
  };
210
287
  /**
211
288
  * AST Grep Replace Tool - Replace code patterns using AST matching
212
289
  */
213
290
  export const astGrepReplaceTool = {
214
- name: 'ast_grep_replace',
291
+ name: "ast_grep_replace",
215
292
  description: `Replace code patterns using AST matching. Preserves matched content via meta-variables.
216
293
 
217
294
  Use meta-variables in both pattern and replacement:
@@ -225,31 +302,41 @@ Examples:
225
302
 
226
303
  IMPORTANT: dryRun=true (default) only previews changes. Set dryRun=false to apply.`,
227
304
  schema: {
228
- pattern: z.string().describe('Pattern to match'),
229
- replacement: z.string().describe('Replacement pattern (use same meta-variables)'),
230
- language: z.enum(SUPPORTED_LANGUAGES).describe('Programming language'),
231
- path: z.string().optional().describe('Directory or file to search (default: current directory)'),
232
- dryRun: z.boolean().optional().describe('Preview only, don\'t apply changes (default: true)')
305
+ pattern: z.string().describe("Pattern to match"),
306
+ replacement: z
307
+ .string()
308
+ .describe("Replacement pattern (use same meta-variables)"),
309
+ language: z.enum(SUPPORTED_LANGUAGES).describe("Programming language"),
310
+ path: z
311
+ .string()
312
+ .optional()
313
+ .describe("Directory or file to search (default: current directory)"),
314
+ dryRun: z
315
+ .boolean()
316
+ .optional()
317
+ .describe("Preview only, don't apply changes (default: true)"),
233
318
  },
234
319
  handler: async (args) => {
235
- const { pattern, replacement, language, path = '.', dryRun = true } = args;
320
+ const { pattern, replacement, language, path = ".", dryRun = true } = args;
236
321
  try {
237
322
  const sg = await getSgModule();
238
323
  const files = getFilesForLanguage(path, language);
239
324
  if (files.length === 0) {
240
325
  return {
241
- content: [{
242
- type: 'text',
243
- text: `No ${language} files found in ${path}`
244
- }]
326
+ content: [
327
+ {
328
+ type: "text",
329
+ text: `No ${language} files found in ${path}`,
330
+ },
331
+ ],
245
332
  };
246
333
  }
247
334
  const changes = [];
248
335
  let totalReplacements = 0;
249
336
  for (const filePath of files) {
250
337
  try {
251
- const content = readFileSync(filePath, 'utf-8');
252
- const root = sg.parse(language, content).root();
338
+ const content = readFileSync(filePath, "utf-8");
339
+ const root = sg.parse(toLangEnum(sg, language), content).root();
253
340
  const matches = root.findAll(pattern);
254
341
  if (matches.length === 0)
255
342
  continue;
@@ -270,7 +357,7 @@ IMPORTANT: dryRun=true (default) only previews changes. Set dryRun=false to appl
270
357
  // Replace meta-variables in the replacement string
271
358
  const metaVars = replacement.match(/\$\$?\$?[A-Z_][A-Z0-9_]*/g) || [];
272
359
  for (const metaVar of metaVars) {
273
- const varName = metaVar.replace(/^\$+/, '');
360
+ const varName = metaVar.replace(/^\$+/, "");
274
361
  const captured = match.getMatch(varName);
275
362
  if (captured) {
276
363
  finalReplacement = finalReplacement.replace(metaVar, captured.text());
@@ -285,7 +372,7 @@ IMPORTANT: dryRun=true (default) only previews changes. Set dryRun=false to appl
285
372
  end: endOffset,
286
373
  replacement: finalReplacement,
287
374
  line: range.start.line + 1,
288
- before: matchedText
375
+ before: matchedText,
289
376
  });
290
377
  }
291
378
  // Sort edits in reverse order to apply from end to start
@@ -293,17 +380,20 @@ IMPORTANT: dryRun=true (default) only previews changes. Set dryRun=false to appl
293
380
  let newContent = content;
294
381
  for (const edit of edits) {
295
382
  const before = newContent.slice(edit.start, edit.end);
296
- newContent = newContent.slice(0, edit.start) + edit.replacement + newContent.slice(edit.end);
383
+ newContent =
384
+ newContent.slice(0, edit.start) +
385
+ edit.replacement +
386
+ newContent.slice(edit.end);
297
387
  changes.push({
298
388
  file: filePath,
299
389
  before,
300
390
  after: edit.replacement,
301
- line: edit.line
391
+ line: edit.line,
302
392
  });
303
393
  totalReplacements++;
304
394
  }
305
395
  if (!dryRun && edits.length > 0) {
306
- writeFileSync(filePath, newContent, 'utf-8');
396
+ writeFileSync(filePath, newContent, "utf-8");
307
397
  }
308
398
  }
309
399
  catch {
@@ -312,38 +402,49 @@ IMPORTANT: dryRun=true (default) only previews changes. Set dryRun=false to appl
312
402
  }
313
403
  if (changes.length === 0) {
314
404
  return {
315
- content: [{
316
- type: 'text',
317
- text: `No matches found for pattern: ${pattern}\n\nSearched ${files.length} ${language} file(s) in ${path}`
318
- }]
405
+ content: [
406
+ {
407
+ type: "text",
408
+ text: `No matches found for pattern: ${pattern}\n\nSearched ${files.length} ${language} file(s) in ${path}`,
409
+ },
410
+ ],
319
411
  };
320
412
  }
321
- const mode = dryRun ? 'DRY RUN (no changes applied)' : 'CHANGES APPLIED';
413
+ const mode = dryRun ? "DRY RUN (no changes applied)" : "CHANGES APPLIED";
322
414
  const header = `${mode}\n\nFound ${totalReplacements} replacement(s) in ${files.length} file(s)\nPattern: ${pattern}\nReplacement: ${replacement}\n\n`;
323
- const changeList = changes.slice(0, 50).map(c => `${c.file}:${c.line}\n - ${c.before}\n + ${c.after}`).join('\n\n');
324
- const footer = changes.length > 50 ? `\n\n... and ${changes.length - 50} more changes` : '';
415
+ const changeList = changes
416
+ .slice(0, 50)
417
+ .map((c) => `${c.file}:${c.line}\n - ${c.before}\n + ${c.after}`)
418
+ .join("\n\n");
419
+ const footer = changes.length > 50
420
+ ? `\n\n... and ${changes.length - 50} more changes`
421
+ : "";
325
422
  return {
326
- content: [{
327
- type: 'text',
328
- text: header + changeList + footer + (dryRun ? '\n\nTo apply changes, run with dryRun: false' : '')
329
- }]
423
+ content: [
424
+ {
425
+ type: "text",
426
+ text: header +
427
+ changeList +
428
+ footer +
429
+ (dryRun ? "\n\nTo apply changes, run with dryRun: false" : ""),
430
+ },
431
+ ],
330
432
  };
331
433
  }
332
434
  catch (error) {
333
435
  return {
334
- content: [{
335
- type: 'text',
336
- text: `Error in AST replace: ${error instanceof Error ? error.message : String(error)}`
337
- }]
436
+ content: [
437
+ {
438
+ type: "text",
439
+ text: `Error in AST replace: ${error instanceof Error ? error.message : String(error)}`,
440
+ },
441
+ ],
338
442
  };
339
443
  }
340
- }
444
+ },
341
445
  };
342
446
  /**
343
447
  * Get all AST tool definitions
344
448
  */
345
- export const astTools = [
346
- astGrepSearchTool,
347
- astGrepReplaceTool
348
- ];
449
+ export const astTools = [astGrepSearchTool, astGrepReplaceTool];
349
450
  //# sourceMappingURL=ast-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast-tools.js","sourceRoot":"","sources":["../../src/tools/ast-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast-tools.js","sourceRoot":"","sources":["../../src/tools/ast-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE9C,iDAAiD;AACjD,IAAI,QAAQ,GAA2C,IAAI,CAAC;AAE5D,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CACjB,EAAmC,EACnC,QAAgB;IAEhB,MAAM,OAAO,GAAkD;QAC7D,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU;QAC9B,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU;QAC9B,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG;QAChB,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM;QACtB,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI;QAClB,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;QACd,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI;QAClB,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI;QAClB,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM;QACtB,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK;QACpB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACZ,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG;QAChB,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM;QACtB,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI;QAClB,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG;QAChB,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI;QAClB,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI;KACnB,CAAC;IAEF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAWD;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA0B;IACxD,YAAY;IACZ,YAAY;IACZ,KAAK;IACL,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,MAAM;IACN,MAAM;IACN,QAAQ;IACR,OAAO;IACP,GAAG;IACH,KAAK;IACL,QAAQ;IACR,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;CACP,CAAC;AAIF;;GAEG;AACH,MAAM,WAAW,GAA2B;IAC1C,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;CACf,CAAC;AAEF;;GAEG;AACH,SAAS,mBAAmB,CAC1B,OAAe,EACf,QAAgB,EAChB,QAAQ,GAAG,IAAI;IAEf,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,SAAS,IAAI,CAAC,GAAW;QACvB,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ;YAAE,OAAO;QAErC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ;oBAAE,OAAO;gBAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEvC,qCAAqC;gBACrC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,IACE,CAAC;wBACC,cAAc;wBACd,MAAM;wBACN,MAAM;wBACN,OAAO;wBACP,aAAa;wBACb,OAAO;wBACP,MAAM;qBACP,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EACtB,CAAC;wBACD,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACjB,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC7B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEpC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,OAAO,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAClB,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,OAAe,EACf,OAAe,EACf,WAAmB;IAEnB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACjD,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,OAAO,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC;QAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACnC,OAAO,GAAG,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,QAAQ,IAAI,SAAS,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAMzB;IACH,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE;;;;;;;;;;;;;yDAa0C;IACvD,MAAM,EAAE;QACN,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,CAAC,iDAAiD,CAAC;QAC9D,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACtE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;QACvE,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,QAAQ,CAAC,8CAA8C,CAAC;QAC3D,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,yCAAyC,CAAC;KACvD;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,EACJ,OAAO,EACP,QAAQ,EACR,IAAI,GAAG,GAAG,EACV,OAAO,GAAG,CAAC,EACX,UAAU,GAAG,EAAE,GAChB,GAAG,IAAI,CAAC;QAET,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAElD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,MAAM,QAAQ,mBAAmB,IAAI,EAAE;yBAC9C;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC7B,IAAI,YAAY,IAAI,UAAU;oBAAE,MAAM;gBAEtC,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAChD,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAEtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,IAAI,YAAY,IAAI,UAAU;4BAAE,MAAM;wBAEtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;wBAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;wBACvC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;wBAEnC,OAAO,CAAC,IAAI,CACV,WAAW,CACT,QAAQ,EACR,KAAK,CAAC,IAAI,EAAE,EACZ,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,CACR,CACF,CAAC;wBACF,YAAY,EAAE,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,gCAAgC;gBAClC,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,iCAAiC,OAAO,gBAAgB,KAAK,CAAC,MAAM,IAAI,QAAQ,eAAe,IAAI,mJAAmJ;yBAC7P;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,SAAS,YAAY,iBAAiB,KAAK,CAAC,MAAM,sBAAsB,OAAO,MAAM,CAAC;YACrG,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;qBAC3C;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,sIAAsI;qBAC3N;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAM1B;IACH,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE;;;;;;;;;;;mFAWoE;IACjF,MAAM,EAAE;QACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAChD,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,CAAC,+CAA+C,CAAC;QAC5D,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACtE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;QACvE,MAAM,EAAE,CAAC;aACN,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,mDAAmD,CAAC;KACjE;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAE3E,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAElD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,MAAM,QAAQ,mBAAmB,IAAI,EAAE;yBAC9C;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAKP,EAAE,CAAC;YACT,IAAI,iBAAiB,GAAG,CAAC,CAAC;YAE1B,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAChD,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAEtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;wBAAE,SAAS;oBAEnC,kCAAkC;oBAClC,MAAM,KAAK,GAML,EAAE,CAAC;oBAET,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;wBAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;wBACtC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;wBAElC,mDAAmD;wBACnD,IAAI,gBAAgB,GAAG,WAAW,CAAC;wBAEnC,kCAAkC;wBAClC,0EAA0E;wBAC1E,kDAAkD;wBAClD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;wBAEjC,4BAA4B;wBAC5B,IAAI,CAAC;4BACH,mDAAmD;4BACnD,MAAM,QAAQ,GACZ,WAAW,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;4BACvD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gCAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gCAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gCACzC,IAAI,QAAQ,EAAE,CAAC;oCACb,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CACzC,OAAO,EACP,QAAQ,CAAC,IAAI,EAAE,CAChB,CAAC;gCACJ,CAAC;4BACH,CAAC;wBACH,CAAC;wBAAC,MAAM,CAAC;4BACP,uDAAuD;wBACzD,CAAC;wBAED,KAAK,CAAC,IAAI,CAAC;4BACT,KAAK,EAAE,WAAW;4BAClB,GAAG,EAAE,SAAS;4BACd,WAAW,EAAE,gBAAgB;4BAC7B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;4BAC1B,MAAM,EAAE,WAAW;yBACpB,CAAC,CAAC;oBACL,CAAC;oBAED,yDAAyD;oBACzD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;oBAExC,IAAI,UAAU,GAAG,OAAO,CAAC;oBACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtD,UAAU;4BACR,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;gCAC/B,IAAI,CAAC,WAAW;gCAChB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAE7B,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,QAAQ;4BACd,MAAM;4BACN,KAAK,EAAE,IAAI,CAAC,WAAW;4BACvB,IAAI,EAAE,IAAI,CAAC,IAAI;yBAChB,CAAC,CAAC;wBACH,iBAAiB,EAAE,CAAC;oBACtB,CAAC;oBAED,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAChC,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,gCAAgC;gBAClC,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,iCAAiC,OAAO,gBAAgB,KAAK,CAAC,MAAM,IAAI,QAAQ,eAAe,IAAI,EAAE;yBAC5G;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACzE,MAAM,MAAM,GAAG,GAAG,IAAI,aAAa,iBAAiB,sBAAsB,KAAK,CAAC,MAAM,sBAAsB,OAAO,kBAAkB,WAAW,MAAM,CAAC;YAEvJ,MAAM,UAAU,GAAG,OAAO;iBACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;iBACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;iBAClE,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhB,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,EAAE;gBACjB,CAAC,CAAC,eAAe,OAAO,CAAC,MAAM,GAAG,EAAE,eAAe;gBACnD,CAAC,CAAC,EAAE,CAAC;YAET,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EACF,MAAM;4BACN,UAAU;4BACV,MAAM;4BACN,CAAC,MAAM,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,EAAE,CAAC;qBACjE;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACxF;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-claude-sisyphus",
3
- "version": "1.9.0",
3
+ "version": "1.10.2",
4
4
  "description": "Multi-agent orchestration system for Claude Agent SDK - Port of oh-my-opencode",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1036,6 +1036,40 @@ echo -e "${GREEN}✓ Installed 3 skills${NC}"
1036
1036
  echo -e "${BLUE}[6/8]${NC} Installing hook scripts..."
1037
1037
  mkdir -p "$CLAUDE_CONFIG_DIR/hooks"
1038
1038
 
1039
+ # Ask user about silent auto-update preference (opt-in for security)
1040
+ CONFIG_FILE="$CLAUDE_CONFIG_DIR/.sisyphus-config.json"
1041
+ ENABLE_SILENT_UPDATE="false"
1042
+
1043
+ echo ""
1044
+ echo -e "${YELLOW}Silent Auto-Update Configuration${NC}"
1045
+ echo " Sisyphus can automatically check for and install updates in the background."
1046
+ echo " This runs without user interaction when you start Claude Code."
1047
+ echo ""
1048
+ echo -e "${YELLOW}Security Note:${NC} Silent updates download and execute code from GitHub."
1049
+ echo " You can always manually update using /update command instead."
1050
+ echo ""
1051
+ read -p "Enable silent auto-updates? (y/N) " -n 1 -r
1052
+ echo
1053
+
1054
+ if [[ $REPLY =~ ^[Yy]$ ]]; then
1055
+ ENABLE_SILENT_UPDATE="true"
1056
+ echo -e "${GREEN}✓ Silent auto-updates enabled${NC}"
1057
+ else
1058
+ ENABLE_SILENT_UPDATE="false"
1059
+ echo -e "${GREEN}✓ Silent auto-updates disabled (use /update to update manually)${NC}"
1060
+ fi
1061
+
1062
+ # Save configuration
1063
+ cat > "$CONFIG_FILE" << CONFIG_EOF
1064
+ {
1065
+ "silentAutoUpdate": $ENABLE_SILENT_UPDATE,
1066
+ "configuredAt": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
1067
+ "configVersion": 1
1068
+ }
1069
+ CONFIG_EOF
1070
+ echo -e "${GREEN}✓ Saved configuration to $CONFIG_FILE${NC}"
1071
+ echo ""
1072
+
1039
1073
  # Keyword detector hook - detects ultrawork/ultrathink/search/analyze keywords
1040
1074
  cat > "$CLAUDE_CONFIG_DIR/hooks/keyword-detector.sh" << 'HOOK_EOF'
1041
1075
  #!/bin/bash
@@ -1150,12 +1184,14 @@ exit 0
1150
1184
  HOOK_EOF
1151
1185
  chmod +x "$CLAUDE_CONFIG_DIR/hooks/stop-continuation.sh"
1152
1186
 
1153
- # Silent auto-update hook - checks and applies updates without user awareness
1187
+ # Silent auto-update hook - checks and applies updates only if enabled
1154
1188
  cat > "$CLAUDE_CONFIG_DIR/hooks/silent-auto-update.sh" << 'HOOK_EOF'
1155
1189
  #!/bin/bash
1156
1190
  # Sisyphus Silent Auto-Update Hook
1157
- # Runs completely in the background to check for and apply updates
1158
- # without any user notification or interruption.
1191
+ # Runs completely in the background to check for and apply updates.
1192
+ #
1193
+ # SECURITY: This hook only runs if the user has explicitly enabled
1194
+ # silent auto-updates in ~/.claude/.sisyphus-config.json
1159
1195
  #
1160
1196
  # This hook is designed to be called on UserPromptSubmit events
1161
1197
  # but runs asynchronously so it doesn't block the user experience.
@@ -1167,6 +1203,7 @@ INPUT=$(cat)
1167
1203
  # The actual update check happens in the background
1168
1204
  (
1169
1205
  # Configuration
1206
+ CONFIG_FILE="$HOME/.claude/.sisyphus-config.json"
1170
1207
  VERSION_FILE="$HOME/.claude/.sisyphus-version.json"
1171
1208
  STATE_FILE="$HOME/.claude/.sisyphus-silent-update.json"
1172
1209
  LOG_FILE="$HOME/.claude/.sisyphus-update.log"
@@ -1178,6 +1215,36 @@ INPUT=$(cat)
1178
1215
  echo "[$(date -Iseconds)] $1" >> "$LOG_FILE" 2>/dev/null
1179
1216
  }
1180
1217
 
1218
+ # Check if silent auto-update is enabled in configuration
1219
+ is_enabled() {
1220
+ if [ ! -f "$CONFIG_FILE" ]; then
1221
+ # No config file = not explicitly enabled = disabled for security
1222
+ return 1
1223
+ fi
1224
+
1225
+ # Check silentAutoUpdate setting
1226
+ local enabled=""
1227
+ if command -v jq &> /dev/null; then
1228
+ enabled=$(jq -r '.silentAutoUpdate // false' "$CONFIG_FILE" 2>/dev/null)
1229
+ else
1230
+ # Fallback: simple grep
1231
+ enabled=$(grep -o '"silentAutoUpdate"[[:space:]]*:[[:space:]]*true' "$CONFIG_FILE" 2>/dev/null)
1232
+ if [ -n "$enabled" ]; then
1233
+ enabled="true"
1234
+ else
1235
+ enabled="false"
1236
+ fi
1237
+ fi
1238
+
1239
+ [ "$enabled" = "true" ]
1240
+ }
1241
+
1242
+ # Exit early if silent auto-update is disabled
1243
+ if ! is_enabled; then
1244
+ log "Silent auto-update is disabled (run installer to enable, or use /update)"
1245
+ exit 0
1246
+ fi
1247
+
1181
1248
  # Check if we should check for updates (rate limiting)
1182
1249
  should_check() {
1183
1250
  if [ ! -f "$VERSION_FILE" ]; then