@defai.digital/ax-cli 1.2.0 → 1.2.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 (37) hide show
  1. package/automatosx.config.json +333 -0
  2. package/config/messages.yaml +2 -0
  3. package/dist/agent/grok-agent.js +6 -1
  4. package/dist/agent/grok-agent.js.map +1 -1
  5. package/dist/commands/mcp.js +8 -2
  6. package/dist/commands/mcp.js.map +1 -1
  7. package/dist/commands/update.js +29 -25
  8. package/dist/commands/update.js.map +1 -1
  9. package/dist/index.js +31 -3
  10. package/dist/index.js.map +1 -1
  11. package/dist/ui/components/api-key-input.js +7 -5
  12. package/dist/ui/components/api-key-input.js.map +1 -1
  13. package/dist/utils/config-loader.js +3 -3
  14. package/dist/utils/config-loader.js.map +1 -1
  15. package/dist/utils/project-analyzer.d.ts +11 -0
  16. package/dist/utils/project-analyzer.js +180 -196
  17. package/dist/utils/project-analyzer.js.map +1 -1
  18. package/dist/utils/settings-manager.js +34 -26
  19. package/dist/utils/settings-manager.js.map +1 -1
  20. package/package.json +4 -3
  21. package/packages/schemas/dist/index.d.ts +14 -0
  22. package/packages/schemas/dist/index.d.ts.map +1 -0
  23. package/packages/schemas/dist/index.js +19 -0
  24. package/packages/schemas/dist/index.js.map +1 -0
  25. package/packages/schemas/dist/public/core/brand-types.d.ts +308 -0
  26. package/packages/schemas/dist/public/core/brand-types.d.ts.map +1 -0
  27. package/packages/schemas/dist/public/core/brand-types.js +243 -0
  28. package/packages/schemas/dist/public/core/brand-types.js.map +1 -0
  29. package/packages/schemas/dist/public/core/enums.d.ts +227 -0
  30. package/packages/schemas/dist/public/core/enums.d.ts.map +1 -0
  31. package/packages/schemas/dist/public/core/enums.js +222 -0
  32. package/packages/schemas/dist/public/core/enums.js.map +1 -0
  33. package/packages/schemas/dist/public/core/id-types.d.ts +286 -0
  34. package/packages/schemas/dist/public/core/id-types.d.ts.map +1 -0
  35. package/packages/schemas/dist/public/core/id-types.js +136 -0
  36. package/packages/schemas/dist/public/core/id-types.js.map +1 -0
  37. package/README.old.md +0 -1608
@@ -3,12 +3,51 @@
3
3
  */
4
4
  import * as fs from 'fs';
5
5
  import * as path from 'path';
6
+ import { parseJsonFile } from './json-utils.js';
6
7
  export class ProjectAnalyzer {
7
8
  projectRoot;
8
9
  warnings = [];
10
+ packageJsonCache = undefined;
11
+ tsConfigCache = undefined;
9
12
  constructor(projectRoot = process.cwd()) {
10
13
  this.projectRoot = projectRoot;
11
14
  }
15
+ /**
16
+ * Helper: Read and cache package.json
17
+ * Reduces file I/O from 8 reads to 1 read
18
+ */
19
+ getPackageJson() {
20
+ if (this.packageJsonCache !== undefined) {
21
+ return this.packageJsonCache;
22
+ }
23
+ const packageJsonPath = path.join(this.projectRoot, 'package.json');
24
+ const result = parseJsonFile(packageJsonPath);
25
+ if (!result.success) {
26
+ if (fs.existsSync(packageJsonPath)) {
27
+ this.warnings.push(`Failed to parse package.json: ${result.error}`);
28
+ }
29
+ this.packageJsonCache = null;
30
+ return null;
31
+ }
32
+ this.packageJsonCache = result.data;
33
+ return result.data;
34
+ }
35
+ /**
36
+ * Helper: Read and cache tsconfig.json
37
+ */
38
+ getTsConfig() {
39
+ if (this.tsConfigCache !== undefined) {
40
+ return this.tsConfigCache;
41
+ }
42
+ const tsconfigPath = path.join(this.projectRoot, 'tsconfig.json');
43
+ const result = parseJsonFile(tsconfigPath);
44
+ if (!result.success) {
45
+ this.tsConfigCache = null;
46
+ return null;
47
+ }
48
+ this.tsConfigCache = result.data;
49
+ return result.data;
50
+ }
12
51
  /**
13
52
  * Analyze the project and extract comprehensive information
14
53
  */
@@ -44,34 +83,16 @@ export class ProjectAnalyzer {
44
83
  }
45
84
  }
46
85
  async detectProjectName() {
47
- // Try package.json first
48
- const packageJsonPath = path.join(this.projectRoot, 'package.json');
49
- if (fs.existsSync(packageJsonPath)) {
50
- try {
51
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
52
- if (packageJson.name) {
53
- return packageJson.name;
54
- }
55
- }
56
- catch {
57
- this.warnings.push('Failed to parse package.json');
58
- }
86
+ const packageJson = this.getPackageJson();
87
+ if (packageJson?.name) {
88
+ return packageJson.name;
59
89
  }
60
90
  // Fallback to directory name
61
91
  return path.basename(this.projectRoot);
62
92
  }
63
93
  async detectVersion() {
64
- const packageJsonPath = path.join(this.projectRoot, 'package.json');
65
- if (fs.existsSync(packageJsonPath)) {
66
- try {
67
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
68
- return packageJson.version;
69
- }
70
- catch {
71
- // Ignore
72
- }
73
- }
74
- return undefined;
94
+ const packageJson = this.getPackageJson();
95
+ return packageJson?.version;
75
96
  }
76
97
  async detectPrimaryLanguage() {
77
98
  // Check for config files to determine language
@@ -96,84 +117,78 @@ export class ProjectAnalyzer {
96
117
  }
97
118
  async detectTechStack() {
98
119
  const stack = [];
99
- const packageJsonPath = path.join(this.projectRoot, 'package.json');
100
- if (fs.existsSync(packageJsonPath)) {
101
- try {
102
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
103
- const allDeps = {
104
- ...packageJson.dependencies,
105
- ...packageJson.devDependencies,
106
- };
107
- // Framework detection
108
- if (allDeps['react'])
109
- stack.push('React');
110
- if (allDeps['vue'])
111
- stack.push('Vue');
112
- if (allDeps['@angular/core'])
113
- stack.push('Angular');
114
- if (allDeps['svelte'])
115
- stack.push('Svelte');
116
- if (allDeps['next'])
117
- stack.push('Next.js');
118
- if (allDeps['nuxt'])
119
- stack.push('Nuxt');
120
- // Backend frameworks
121
- if (allDeps['express'])
122
- stack.push('Express');
123
- if (allDeps['fastify'])
124
- stack.push('Fastify');
125
- if (allDeps['koa'])
126
- stack.push('Koa');
127
- if (allDeps['@nestjs/core'])
128
- stack.push('NestJS');
129
- // Testing
130
- if (allDeps['vitest'])
131
- stack.push('Vitest');
132
- if (allDeps['jest'])
133
- stack.push('Jest');
134
- if (allDeps['mocha'])
135
- stack.push('Mocha');
136
- if (allDeps['playwright'])
137
- stack.push('Playwright');
138
- if (allDeps['cypress'])
139
- stack.push('Cypress');
140
- // Build tools
141
- if (allDeps['vite'])
142
- stack.push('Vite');
143
- if (allDeps['webpack'])
144
- stack.push('Webpack');
145
- if (allDeps['esbuild'])
146
- stack.push('ESBuild');
147
- if (allDeps['rollup'])
148
- stack.push('Rollup');
149
- // Validation
150
- if (allDeps['zod'])
151
- stack.push('Zod');
152
- if (allDeps['yup'])
153
- stack.push('Yup');
154
- if (allDeps['joi'])
155
- stack.push('Joi');
156
- // CLI
157
- if (allDeps['commander'])
158
- stack.push('Commander');
159
- if (allDeps['yargs'])
160
- stack.push('Yargs');
161
- if (allDeps['ink'])
162
- stack.push('Ink');
163
- // Database
164
- if (allDeps['prisma'])
165
- stack.push('Prisma');
166
- if (allDeps['typeorm'])
167
- stack.push('TypeORM');
168
- if (allDeps['mongoose'])
169
- stack.push('Mongoose');
170
- // Runtime
171
- if (packageJson.type === 'module')
172
- stack.push('ESM');
173
- }
174
- catch {
175
- this.warnings.push('Failed to parse package.json for tech stack');
176
- }
120
+ const packageJson = this.getPackageJson();
121
+ if (packageJson) {
122
+ const allDeps = {
123
+ ...packageJson.dependencies,
124
+ ...packageJson.devDependencies,
125
+ };
126
+ // Framework detection
127
+ if (allDeps['react'])
128
+ stack.push('React');
129
+ if (allDeps['vue'])
130
+ stack.push('Vue');
131
+ if (allDeps['@angular/core'])
132
+ stack.push('Angular');
133
+ if (allDeps['svelte'])
134
+ stack.push('Svelte');
135
+ if (allDeps['next'])
136
+ stack.push('Next.js');
137
+ if (allDeps['nuxt'])
138
+ stack.push('Nuxt');
139
+ // Backend frameworks
140
+ if (allDeps['express'])
141
+ stack.push('Express');
142
+ if (allDeps['fastify'])
143
+ stack.push('Fastify');
144
+ if (allDeps['koa'])
145
+ stack.push('Koa');
146
+ if (allDeps['@nestjs/core'])
147
+ stack.push('NestJS');
148
+ // Testing
149
+ if (allDeps['vitest'])
150
+ stack.push('Vitest');
151
+ if (allDeps['jest'])
152
+ stack.push('Jest');
153
+ if (allDeps['mocha'])
154
+ stack.push('Mocha');
155
+ if (allDeps['playwright'])
156
+ stack.push('Playwright');
157
+ if (allDeps['cypress'])
158
+ stack.push('Cypress');
159
+ // Build tools
160
+ if (allDeps['vite'])
161
+ stack.push('Vite');
162
+ if (allDeps['webpack'])
163
+ stack.push('Webpack');
164
+ if (allDeps['esbuild'])
165
+ stack.push('ESBuild');
166
+ if (allDeps['rollup'])
167
+ stack.push('Rollup');
168
+ // Validation
169
+ if (allDeps['zod'])
170
+ stack.push('Zod');
171
+ if (allDeps['yup'])
172
+ stack.push('Yup');
173
+ if (allDeps['joi'])
174
+ stack.push('Joi');
175
+ // CLI
176
+ if (allDeps['commander'])
177
+ stack.push('Commander');
178
+ if (allDeps['yargs'])
179
+ stack.push('Yargs');
180
+ if (allDeps['ink'])
181
+ stack.push('Ink');
182
+ // Database
183
+ if (allDeps['prisma'])
184
+ stack.push('Prisma');
185
+ if (allDeps['typeorm'])
186
+ stack.push('TypeORM');
187
+ if (allDeps['mongoose'])
188
+ stack.push('Mongoose');
189
+ // Runtime
190
+ if (packageJson.type === 'module')
191
+ stack.push('ESM');
177
192
  }
178
193
  // TypeScript detection
179
194
  if (fs.existsSync(path.join(this.projectRoot, 'tsconfig.json'))) {
@@ -182,66 +197,54 @@ export class ProjectAnalyzer {
182
197
  return stack;
183
198
  }
184
199
  async detectProjectType() {
185
- const packageJsonPath = path.join(this.projectRoot, 'package.json');
186
- if (fs.existsSync(packageJsonPath)) {
187
- try {
188
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
189
- // Check for bin field (CLI tool)
190
- if (packageJson.bin)
191
- return 'cli';
192
- // Check dependencies for framework hints
193
- const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
194
- if (deps['react'] || deps['vue'] || deps['@angular/core'] || deps['svelte']) {
195
- if (deps['next'] || deps['nuxt'])
196
- return 'web-app-ssr';
197
- return 'web-app';
198
- }
199
- if (deps['express'] || deps['fastify'] || deps['koa'] || deps['@nestjs/core']) {
200
- return 'api';
201
- }
202
- // Check for library indicators
203
- if (packageJson.main || packageJson.exports) {
204
- return 'library';
205
- }
200
+ const packageJson = this.getPackageJson();
201
+ if (packageJson) {
202
+ // Check for bin field (CLI tool)
203
+ if (packageJson.bin)
204
+ return 'cli';
205
+ // Check dependencies for framework hints
206
+ const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
207
+ if (deps['react'] || deps['vue'] || deps['@angular/core'] || deps['svelte']) {
208
+ if (deps['next'] || deps['nuxt'])
209
+ return 'web-app-ssr';
210
+ return 'web-app';
206
211
  }
207
- catch {
208
- // Ignore
212
+ if (deps['express'] || deps['fastify'] || deps['koa'] || deps['@nestjs/core']) {
213
+ return 'api';
214
+ }
215
+ // Check for library indicators
216
+ if (packageJson.main || packageJson.exports) {
217
+ return 'library';
209
218
  }
210
219
  }
211
220
  return 'application';
212
221
  }
213
222
  async detectEntryPoint() {
214
- const packageJsonPath = path.join(this.projectRoot, 'package.json');
215
- if (fs.existsSync(packageJsonPath)) {
216
- try {
217
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
218
- // CLI tools
219
- if (packageJson.bin) {
220
- if (typeof packageJson.bin === 'string') {
221
- return packageJson.bin;
222
- }
223
- // Get first bin entry
224
- return Object.values(packageJson.bin)[0];
225
- }
226
- // Libraries
227
- if (packageJson.main)
228
- return packageJson.main;
229
- if (packageJson.exports) {
230
- if (typeof packageJson.exports === 'string')
231
- return packageJson.exports;
232
- if (packageJson.exports['.']) {
233
- const mainExport = packageJson.exports['.'];
234
- if (typeof mainExport === 'string')
235
- return mainExport;
236
- if (mainExport.import)
237
- return mainExport.import;
238
- if (mainExport.require)
239
- return mainExport.require;
240
- }
223
+ const packageJson = this.getPackageJson();
224
+ if (packageJson) {
225
+ // CLI tools
226
+ if (packageJson.bin) {
227
+ if (typeof packageJson.bin === 'string') {
228
+ return packageJson.bin;
241
229
  }
230
+ // Get first bin entry
231
+ return Object.values(packageJson.bin)[0];
242
232
  }
243
- catch {
244
- // Ignore
233
+ // Libraries
234
+ if (packageJson.main)
235
+ return packageJson.main;
236
+ if (packageJson.exports) {
237
+ if (typeof packageJson.exports === 'string')
238
+ return packageJson.exports;
239
+ if (packageJson.exports['.']) {
240
+ const mainExport = packageJson.exports['.'];
241
+ if (typeof mainExport === 'string')
242
+ return mainExport;
243
+ if (mainExport.import)
244
+ return mainExport.import;
245
+ if (mainExport.require)
246
+ return mainExport.require;
247
+ }
245
248
  }
246
249
  }
247
250
  // Common entry points
@@ -327,21 +330,15 @@ export class ProjectAnalyzer {
327
330
  }
328
331
  }
329
332
  // TypeScript config
330
- const tsconfigPath = path.join(this.projectRoot, 'tsconfig.json');
331
- if (fs.existsSync(tsconfigPath)) {
332
- try {
333
- const tsconfig = JSON.parse(fs.readFileSync(tsconfigPath, 'utf-8'));
334
- conventions.typeChecker = 'TypeScript';
335
- // Check for ESM extensions requirement
336
- if (tsconfig.compilerOptions?.module === 'NodeNext' ||
337
- tsconfig.compilerOptions?.module === 'Node16' ||
338
- tsconfig.compilerOptions?.moduleResolution === 'NodeNext' ||
339
- tsconfig.compilerOptions?.moduleResolution === 'Bundler') {
340
- conventions.importExtension = '.js';
341
- }
342
- }
343
- catch {
344
- this.warnings.push('Failed to parse tsconfig.json');
333
+ const tsconfig = this.getTsConfig();
334
+ if (tsconfig) {
335
+ conventions.typeChecker = 'TypeScript';
336
+ // Check for ESM extensions requirement
337
+ if (tsconfig.compilerOptions?.module === 'NodeNext' ||
338
+ tsconfig.compilerOptions?.module === 'Node16' ||
339
+ tsconfig.compilerOptions?.moduleResolution === 'NodeNext' ||
340
+ tsconfig.compilerOptions?.moduleResolution === 'Bundler') {
341
+ conventions.importExtension = '.js';
345
342
  }
346
343
  }
347
344
  // Testing framework
@@ -360,39 +357,26 @@ export class ProjectAnalyzer {
360
357
  conventions.linter = 'eslint';
361
358
  }
362
359
  // Validation library from package.json
363
- if (fs.existsSync(packageJsonPath)) {
364
- try {
365
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
366
- const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
367
- if (deps['zod'])
368
- conventions.validation = 'zod';
369
- else if (deps['yup'])
370
- conventions.validation = 'yup';
371
- else if (deps['joi'])
372
- conventions.validation = 'joi';
373
- }
374
- catch {
375
- // Ignore
376
- }
360
+ const packageJson = this.getPackageJson();
361
+ if (packageJson) {
362
+ const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
363
+ if (deps['zod'])
364
+ conventions.validation = 'zod';
365
+ else if (deps['yup'])
366
+ conventions.validation = 'yup';
367
+ else if (deps['joi'])
368
+ conventions.validation = 'joi';
377
369
  }
378
370
  return conventions;
379
371
  }
380
372
  async detectScripts() {
381
373
  const scripts = {};
382
- const packageJsonPath = path.join(this.projectRoot, 'package.json');
383
- if (fs.existsSync(packageJsonPath)) {
384
- try {
385
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
386
- if (packageJson.scripts) {
387
- scripts.build = packageJson.scripts.build;
388
- scripts.test = packageJson.scripts.test;
389
- scripts.lint = packageJson.scripts.lint;
390
- scripts.dev = packageJson.scripts.dev || packageJson.scripts.start;
391
- }
392
- }
393
- catch {
394
- this.warnings.push('Failed to parse scripts from package.json');
395
- }
374
+ const packageJson = this.getPackageJson();
375
+ if (packageJson?.scripts) {
376
+ scripts.build = packageJson.scripts.build;
377
+ scripts.test = packageJson.scripts.test;
378
+ scripts.lint = packageJson.scripts.lint;
379
+ scripts.dev = packageJson.scripts.dev || packageJson.scripts.start;
396
380
  }
397
381
  return scripts;
398
382
  }
@@ -1 +1 @@
1
- {"version":3,"file":"project-analyzer.js","sourceRoot":"","sources":["../../src/utils/project-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-analyzer.js","sourceRoot":"","sources":["../../src/utils/project-analyzer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA0BhD,MAAM,OAAO,eAAe;IAClB,WAAW,CAAS;IACpB,QAAQ,GAAa,EAAE,CAAC;IACxB,gBAAgB,GAAmC,SAAS,CAAC;IAC7D,aAAa,GAAgC,SAAS,CAAC;IAE/D,YAAY,cAAsB,OAAO,CAAC,GAAG,EAAE;QAC7C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;OAGG;IACK,cAAc;QACpB,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC/B,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,aAAa,CAAc,eAAe,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC;QACpC,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,aAAa,CAAW,YAAY,CAAC,CAAC;QAErD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;QACjC,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YAEnB,MAAM,WAAW,GAAgB;gBAC/B,IAAI,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBACpC,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;gBACnC,eAAe,EAAE,MAAM,IAAI,CAAC,qBAAqB,EAAE;gBACnD,SAAS,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE;gBACvC,WAAW,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBAC3C,UAAU,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE;gBACzC,WAAW,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;gBACrC,WAAW,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBAC3C,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;gBACnC,cAAc,EAAE,MAAM,IAAI,CAAC,oBAAoB,EAAE;gBACjD,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACvC,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,WAAW;gBACX,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;aAC/D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;gBACxE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;aAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,WAAW,EAAE,IAAI,EAAE,CAAC;YACtB,OAAO,WAAW,CAAC,IAAI,CAAC;QAC1B,CAAC;QAED,6BAA6B;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,OAAO,WAAW,EAAE,OAAO,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,+CAA+C;QAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;YAChE,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YAC9D,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACtD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;YACjE,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YAC7D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG;gBACd,GAAG,WAAW,CAAC,YAAY;gBAC3B,GAAG,WAAW,CAAC,eAAe;aAC/B,CAAC;YAEF,sBAAsB;YACtB,IAAI,OAAO,CAAC,OAAO,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,OAAO,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,eAAe,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,OAAO,CAAC,QAAQ,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,OAAO,CAAC,MAAM,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,OAAO,CAAC,MAAM,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAExC,qBAAqB;YACrB,IAAI,OAAO,CAAC,SAAS,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,OAAO,CAAC,SAAS,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,OAAO,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,cAAc,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElD,UAAU;YACV,IAAI,OAAO,CAAC,QAAQ,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,OAAO,CAAC,MAAM,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,OAAO,CAAC,OAAO,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,OAAO,CAAC,YAAY,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,IAAI,OAAO,CAAC,SAAS,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE9C,cAAc;YACd,IAAI,OAAO,CAAC,MAAM,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,OAAO,CAAC,SAAS,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,OAAO,CAAC,SAAS,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,OAAO,CAAC,QAAQ,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE5C,aAAa;YACb,IAAI,OAAO,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEtC,MAAM;YACN,IAAI,OAAO,CAAC,WAAW,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,OAAO,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,OAAO,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEtC,WAAW;YACX,IAAI,OAAO,CAAC,QAAQ,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,OAAO,CAAC,SAAS,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,OAAO,CAAC,UAAU,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEhD,UAAU;YACV,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,uBAAuB;QACvB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,IAAI,WAAW,EAAE,CAAC;YAChB,iCAAiC;YACjC,IAAI,WAAW,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAC;YAElC,yCAAyC;YACzC,MAAM,IAAI,GAAG,EAAE,GAAG,WAAW,CAAC,YAAY,EAAE,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;YAE7E,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5E,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;oBAAE,OAAO,aAAa,CAAC;gBACvD,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC9E,OAAO,KAAK,CAAC;YACf,CAAC;YAED,+BAA+B;YAC/B,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC5C,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,IAAI,WAAW,EAAE,CAAC;YAChB,YAAY;YACZ,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;gBACpB,IAAI,OAAO,WAAW,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACxC,OAAO,WAAW,CAAC,GAAG,CAAC;gBACzB,CAAC;gBACD,sBAAsB;gBACtB,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAW,CAAC;YACrD,CAAC;YAED,YAAY;YACZ,IAAI,WAAW,CAAC,IAAI;gBAAE,OAAO,WAAW,CAAC,IAAI,CAAC;YAC9C,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ;oBAAE,OAAO,WAAW,CAAC,OAAO,CAAC;gBACxE,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC5C,IAAI,OAAO,UAAU,KAAK,QAAQ;wBAAE,OAAO,UAAU,CAAC;oBACtD,IAAI,UAAU,CAAC,MAAM;wBAAE,OAAO,UAAU,CAAC,MAAM,CAAC;oBAChD,IAAI,UAAU,CAAC,OAAO;wBAAE,OAAO,UAAU,CAAC,OAAO,CAAC;gBACpD,CAAC;YACH,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QAC7G,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,IAAI,GAA+B,EAAE,CAAC;QAE5C,mBAAmB;QACnB,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACjE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACxD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACjE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;gBACjB,MAAM;YACR,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACjE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpE,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAE5C,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,+BAA+B;YAC/C,eAAe,EAAE,0BAA0B;YAC3C,kBAAkB,EAAE,2BAA2B;YAC/C,gBAAgB,EAAE,yBAAyB;YAC3C,cAAc,EAAE,sBAAsB;YACtC,aAAa,EAAE,wBAAwB;YACvC,WAAW,EAAE,uBAAuB;YACpC,WAAW,EAAE,8BAA8B;YAC3C,mBAAmB,EAAE,4BAA4B;YACjD,gBAAgB,EAAE,0BAA0B;YAC5C,mBAAmB,EAAE,6BAA6B;SACnD,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBACrD,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,WAAW,GAAoB,EAAE,CAAC;QAExC,kCAAkC;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACpE,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1E,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;YAChF,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,QAAQ,EAAE,CAAC;YACb,WAAW,CAAC,WAAW,GAAG,YAAY,CAAC;YAEvC,uCAAuC;YACvC,IAAI,QAAQ,CAAC,eAAe,EAAE,MAAM,KAAK,UAAU;gBAC/C,QAAQ,CAAC,eAAe,EAAE,MAAM,KAAK,QAAQ;gBAC7C,QAAQ,CAAC,eAAe,EAAE,gBAAgB,KAAK,UAAU;gBACzD,QAAQ,CAAC,eAAe,EAAE,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBAC7D,WAAW,CAAC,eAAe,GAAG,KAAK,CAAC;YACtC,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YAC9D,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC;YACnE,WAAW,CAAC,aAAa,GAAG,QAAQ,CAAC;QACvC,CAAC;aAAM,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAC5D,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;YACxE,WAAW,CAAC,aAAa,GAAG,MAAM,CAAC;QACrC,CAAC;QAED,SAAS;QACT,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YAC1D,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAC5D,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC;YACnE,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC;QAChC,CAAC;QAED,uCAAuC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,EAAE,GAAG,WAAW,CAAC,YAAY,EAAE,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;YAE7E,IAAI,IAAI,CAAC,KAAK,CAAC;gBAAE,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC;iBAC3C,IAAI,IAAI,CAAC,KAAK,CAAC;gBAAE,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC;iBAChD,IAAI,IAAI,CAAC,KAAK,CAAC;gBAAE,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC;QACvD,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;YAC1C,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;YACxC,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;YACxC,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;QACrE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1E,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QAChF,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QAC3E,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAClF,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -4,6 +4,7 @@ import * as os from "os";
4
4
  import { UserSettingsSchema, ProjectSettingsSchema } from "../schemas/settings-schemas.js";
5
5
  import { ModelIdSchema } from '@ax-cli/schemas';
6
6
  import { loadMessagesConfig, formatMessage } from "./config-loader.js";
7
+ import { parseJsonFile, writeJsonFile } from "./json-utils.js";
7
8
  // Load migration messages from YAML
8
9
  const messages = loadMessagesConfig();
9
10
  const migrationMessages = messages.migration || {};
@@ -153,16 +154,14 @@ export class SettingsManager {
153
154
  this.saveUserSettings(DEFAULT_USER_SETTINGS);
154
155
  return { ...DEFAULT_USER_SETTINGS };
155
156
  }
156
- const content = fs.readFileSync(this.userSettingsPath, "utf-8");
157
- const rawSettings = JSON.parse(content);
158
- // Validate with Zod schema
159
- const validationResult = UserSettingsSchema.safeParse(rawSettings);
160
- if (!validationResult.success) {
161
- console.warn("User settings validation failed, using defaults:", validationResult.error.message);
157
+ // Use json-utils for consistent JSON handling
158
+ const parseResult = parseJsonFile(this.userSettingsPath, UserSettingsSchema);
159
+ if (!parseResult.success) {
160
+ console.warn("Failed to load user settings:", parseResult.error);
162
161
  return { ...DEFAULT_USER_SETTINGS };
163
162
  }
164
163
  // Merge with defaults to ensure all required fields exist
165
- const settings = { ...DEFAULT_USER_SETTINGS, ...validationResult.data };
164
+ const settings = { ...DEFAULT_USER_SETTINGS, ...parseResult.data };
166
165
  this.userSettingsCache = settings;
167
166
  this.cacheTimestamp.user = Date.now();
168
167
  return settings;
@@ -184,19 +183,25 @@ export class SettingsManager {
184
183
  // Read existing settings directly to avoid recursion
185
184
  let existingSettings = { ...DEFAULT_USER_SETTINGS };
186
185
  if (fs.existsSync(this.userSettingsPath)) {
187
- try {
188
- const content = fs.readFileSync(this.userSettingsPath, "utf-8");
189
- const parsed = JSON.parse(content);
190
- existingSettings = { ...DEFAULT_USER_SETTINGS, ...parsed };
186
+ const parseResult = parseJsonFile(this.userSettingsPath);
187
+ if (parseResult.success) {
188
+ existingSettings = { ...DEFAULT_USER_SETTINGS, ...parseResult.data };
191
189
  }
192
- catch {
190
+ else {
193
191
  // If file is corrupted, use defaults
194
192
  console.warn("Corrupted user settings file, using defaults");
195
193
  }
196
194
  }
197
195
  const mergedSettings = { ...existingSettings, ...settings };
198
- fs.writeFileSync(this.userSettingsPath, JSON.stringify(mergedSettings, null, 2), { mode: 0o600 } // Secure permissions for API key
196
+ // Use json-utils for consistent writing
197
+ const writeResult = writeJsonFile(this.userSettingsPath, mergedSettings, undefined, // no schema
198
+ true // pretty
199
199
  );
200
+ if (!writeResult.success) {
201
+ throw new Error(`Failed to write settings: ${writeResult.error}`);
202
+ }
203
+ // Set secure permissions for API key
204
+ fs.chmodSync(this.userSettingsPath, 0o600);
200
205
  // Invalidate cache after save
201
206
  this.userSettingsCache = null;
202
207
  this.cacheTimestamp.user = 0;
@@ -235,16 +240,14 @@ export class SettingsManager {
235
240
  this.saveProjectSettings(DEFAULT_PROJECT_SETTINGS);
236
241
  return { ...DEFAULT_PROJECT_SETTINGS };
237
242
  }
238
- const content = fs.readFileSync(this.projectSettingsPath, "utf-8");
239
- const rawSettings = JSON.parse(content);
240
- // Validate with Zod schema
241
- const validationResult = ProjectSettingsSchema.safeParse(rawSettings);
242
- if (!validationResult.success) {
243
- console.warn("Project settings validation failed, using defaults:", validationResult.error.message);
243
+ // Use json-utils for consistent JSON handling
244
+ const parseResult = parseJsonFile(this.projectSettingsPath, ProjectSettingsSchema);
245
+ if (!parseResult.success) {
246
+ console.warn("Failed to load project settings:", parseResult.error);
244
247
  return { ...DEFAULT_PROJECT_SETTINGS };
245
248
  }
246
249
  // Merge with defaults
247
- const settings = { ...DEFAULT_PROJECT_SETTINGS, ...validationResult.data };
250
+ const settings = { ...DEFAULT_PROJECT_SETTINGS, ...parseResult.data };
248
251
  this.projectSettingsCache = settings;
249
252
  this.cacheTimestamp.project = Date.now();
250
253
  return settings;
@@ -266,18 +269,23 @@ export class SettingsManager {
266
269
  // Read existing settings directly to avoid recursion
267
270
  let existingSettings = { ...DEFAULT_PROJECT_SETTINGS };
268
271
  if (fs.existsSync(this.projectSettingsPath)) {
269
- try {
270
- const content = fs.readFileSync(this.projectSettingsPath, "utf-8");
271
- const parsed = JSON.parse(content);
272
- existingSettings = { ...DEFAULT_PROJECT_SETTINGS, ...parsed };
272
+ const parseResult = parseJsonFile(this.projectSettingsPath);
273
+ if (parseResult.success) {
274
+ existingSettings = { ...DEFAULT_PROJECT_SETTINGS, ...parseResult.data };
273
275
  }
274
- catch {
276
+ else {
275
277
  // If file is corrupted, use defaults
276
278
  console.warn("Corrupted project settings file, using defaults");
277
279
  }
278
280
  }
279
281
  const mergedSettings = { ...existingSettings, ...settings };
280
- fs.writeFileSync(this.projectSettingsPath, JSON.stringify(mergedSettings, null, 2));
282
+ // Use json-utils for consistent writing
283
+ const writeResult = writeJsonFile(this.projectSettingsPath, mergedSettings, undefined, // no schema
284
+ true // pretty
285
+ );
286
+ if (!writeResult.success) {
287
+ throw new Error(`Failed to write settings: ${writeResult.error}`);
288
+ }
281
289
  // Invalidate cache after save
282
290
  this.projectSettingsCache = null;
283
291
  this.cacheTimestamp.project = 0;