@thynameisjayvee/alpha-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +143 -0
  3. package/bin/alpha.js +15 -0
  4. package/dist/cli.d.ts +12 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +125 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/core/alpha.d.ts +64 -0
  9. package/dist/core/alpha.d.ts.map +1 -0
  10. package/dist/core/alpha.js +94 -0
  11. package/dist/core/alpha.js.map +1 -0
  12. package/dist/core/generator/index.d.ts +16 -0
  13. package/dist/core/generator/index.d.ts.map +1 -0
  14. package/dist/core/generator/index.js +231 -0
  15. package/dist/core/generator/index.js.map +1 -0
  16. package/dist/core/implementation/index.d.ts +22 -0
  17. package/dist/core/implementation/index.d.ts.map +1 -0
  18. package/dist/core/implementation/index.js +398 -0
  19. package/dist/core/implementation/index.js.map +1 -0
  20. package/dist/core/init/catalog.d.ts +23 -0
  21. package/dist/core/init/catalog.d.ts.map +1 -0
  22. package/dist/core/init/catalog.js +87 -0
  23. package/dist/core/init/catalog.js.map +1 -0
  24. package/dist/core/init/index.d.ts +10 -0
  25. package/dist/core/init/index.d.ts.map +1 -0
  26. package/dist/core/init/index.js +214 -0
  27. package/dist/core/init/index.js.map +1 -0
  28. package/dist/core/requirements/index.d.ts +10 -0
  29. package/dist/core/requirements/index.d.ts.map +1 -0
  30. package/dist/core/requirements/index.js +232 -0
  31. package/dist/core/requirements/index.js.map +1 -0
  32. package/dist/core/reviewer/index.d.ts +29 -0
  33. package/dist/core/reviewer/index.d.ts.map +1 -0
  34. package/dist/core/reviewer/index.js +419 -0
  35. package/dist/core/reviewer/index.js.map +1 -0
  36. package/dist/core/stack/index.d.ts +10 -0
  37. package/dist/core/stack/index.d.ts.map +1 -0
  38. package/dist/core/stack/index.js +243 -0
  39. package/dist/core/stack/index.js.map +1 -0
  40. package/dist/index.d.ts +29 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +32 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/types/index.d.ts +128 -0
  45. package/dist/types/index.d.ts.map +1 -0
  46. package/dist/types/index.js +5 -0
  47. package/dist/types/index.js.map +1 -0
  48. package/dist/utils/config.d.ts +105 -0
  49. package/dist/utils/config.d.ts.map +1 -0
  50. package/dist/utils/config.js +99 -0
  51. package/dist/utils/config.js.map +1 -0
  52. package/dist/utils/file-system.d.ts +17 -0
  53. package/dist/utils/file-system.d.ts.map +1 -0
  54. package/dist/utils/file-system.js +48 -0
  55. package/dist/utils/file-system.js.map +1 -0
  56. package/dist/utils/input.d.ts +18 -0
  57. package/dist/utils/input.d.ts.map +1 -0
  58. package/dist/utils/input.js +50 -0
  59. package/dist/utils/input.js.map +1 -0
  60. package/dist/utils/logger.d.ts +37 -0
  61. package/dist/utils/logger.d.ts.map +1 -0
  62. package/dist/utils/logger.js +109 -0
  63. package/dist/utils/logger.js.map +1 -0
  64. package/dist/utils/paths.d.ts +26 -0
  65. package/dist/utils/paths.d.ts.map +1 -0
  66. package/dist/utils/paths.js +51 -0
  67. package/dist/utils/paths.js.map +1 -0
  68. package/package.json +79 -0
  69. package/scripts/postinstall.js +110 -0
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Code Review Module
3
+ *
4
+ * Performs static code analysis using TypeScript AST to identify:
5
+ * - Unused variables and imports
6
+ * - Missing type annotations
7
+ * - Console debug statements left in code
8
+ * - Common code quality issues
9
+ */
10
+ import { ReviewReport, ReviewFinding } from '../../types/index.js';
11
+ export interface ReviewOptions {
12
+ /** Glob root to analyze (defaults to the current working directory). */
13
+ target?: string;
14
+ }
15
+ /**
16
+ * Run deterministic static code review on the project. No LLM or agent is
17
+ * involved: this is a TypeScript-AST pass that the calling LLM consumes.
18
+ * The report is persisted to `.alpha/reports/` for `alpha implement`.
19
+ */
20
+ export declare function runReview(options?: ReviewOptions): Promise<ReviewReport>;
21
+ /**
22
+ * Generate review report from findings
23
+ */
24
+ export declare function generateReport(target: string, findings: ReviewFinding[]): ReviewReport;
25
+ /**
26
+ * Render the report to markdown in the exact shape `alpha implement` parses.
27
+ */
28
+ export declare function renderReportMarkdown(report: ReviewReport): string;
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/reviewer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASnE,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAqDvB;AA2TD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EAAE,GACxB,YAAY,CAmBd;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAmDjE"}
@@ -0,0 +1,419 @@
1
+ /**
2
+ * Code Review Module
3
+ *
4
+ * Performs static code analysis using TypeScript AST to identify:
5
+ * - Unused variables and imports
6
+ * - Missing type annotations
7
+ * - Console debug statements left in code
8
+ * - Common code quality issues
9
+ */
10
+ import { logger, emit } from '../../utils/logger.js';
11
+ import { ensureDir, writeFile } from '../../utils/file-system.js';
12
+ import { getReportsDir } from '../../utils/paths.js';
13
+ import * as ts from 'typescript';
14
+ import { glob } from 'glob';
15
+ import * as path from 'path';
16
+ import * as fs from 'fs/promises';
17
+ import { v4 as uuidv4 } from 'uuid';
18
+ /**
19
+ * Run deterministic static code review on the project. No LLM or agent is
20
+ * involved: this is a TypeScript-AST pass that the calling LLM consumes.
21
+ * The report is persisted to `.alpha/reports/` for `alpha implement`.
22
+ */
23
+ export async function runReview(options = {}) {
24
+ logger.section('Code Review');
25
+ logger.info('Analyzing codebase...');
26
+ const target = options.target
27
+ ? path.resolve(process.cwd(), options.target)
28
+ : process.cwd();
29
+ const findings = [];
30
+ try {
31
+ const files = await glob('**/*.{ts,tsx,js,jsx}', {
32
+ cwd: target,
33
+ ignore: [
34
+ 'node_modules/**',
35
+ 'dist/**',
36
+ 'build/**',
37
+ '.git/**',
38
+ '.alpha/**',
39
+ '*.d.ts',
40
+ '*.min.js',
41
+ ],
42
+ });
43
+ logger.info(`Found ${files.length} files to analyze`);
44
+ for (const file of files) {
45
+ const filePath = path.join(target, file);
46
+ const fileFindings = await analyzeFile(filePath, file);
47
+ findings.push(...fileFindings);
48
+ }
49
+ const report = generateReport(options.target || 'codebase', findings);
50
+ const reportPath = await saveReport(report);
51
+ logger.success(`Review complete: ${findings.length} finding(s) identified`);
52
+ emit('review', { ...report, path: reportPath }, renderReportMarkdown(report));
53
+ return report;
54
+ }
55
+ catch (error) {
56
+ logger.error(`Review failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
57
+ throw error;
58
+ }
59
+ }
60
+ /**
61
+ * Analyze a single file using TypeScript AST
62
+ */
63
+ async function analyzeFile(filePath, relativePath) {
64
+ const findings = [];
65
+ try {
66
+ const sourceCode = await fs.readFile(filePath, 'utf-8');
67
+ const sourceFile = ts.createSourceFile(filePath, sourceCode, ts.ScriptTarget.Latest, true);
68
+ // Find unused variables
69
+ const unusedVars = findUnusedVariables(sourceFile, relativePath);
70
+ findings.push(...unusedVars);
71
+ // Find missing type annotations
72
+ const missingTypes = findMissingTypes(sourceFile, relativePath);
73
+ findings.push(...missingTypes);
74
+ // Find console.debug statements
75
+ const consoleDebugs = findConsoleDebugStatements(sourceFile, relativePath);
76
+ findings.push(...consoleDebugs);
77
+ // Find unused imports
78
+ const unusedImports = findUnusedImports(sourceFile, relativePath, sourceCode);
79
+ findings.push(...unusedImports);
80
+ }
81
+ catch (error) {
82
+ // Skip files that can't be parsed
83
+ logger.warn(`Skipping ${relativePath}: ${error instanceof Error ? error.message : 'Unknown error'}`);
84
+ }
85
+ return findings;
86
+ }
87
+ /**
88
+ * Find unused variables in the AST
89
+ */
90
+ function findUnusedVariables(sourceFile, filePath) {
91
+ const findings = [];
92
+ const symbolTable = new Map();
93
+ // First pass: collect all variable declarations
94
+ function collectDeclarations(node) {
95
+ if (ts.isVariableDeclaration(node) || ts.isParameter(node)) {
96
+ const nameNode = ts.isVariableDeclaration(node) ? node.name : node.name;
97
+ if (ts.isIdentifier(nameNode)) {
98
+ const name = nameNode.text;
99
+ // Skip underscore-prefixed variables (intentionally unused)
100
+ if (!name.startsWith('_')) {
101
+ symbolTable.set(name, { node: nameNode, references: 0 });
102
+ }
103
+ }
104
+ }
105
+ ts.forEachChild(node, collectDeclarations);
106
+ }
107
+ // Second pass: count references
108
+ function countReferences(node) {
109
+ if (ts.isIdentifier(node)) {
110
+ const name = node.text;
111
+ const entry = symbolTable.get(name);
112
+ if (entry && node !== entry.node) {
113
+ entry.references++;
114
+ }
115
+ }
116
+ ts.forEachChild(node, countReferences);
117
+ }
118
+ collectDeclarations(sourceFile);
119
+ countReferences(sourceFile);
120
+ // Report unused variables
121
+ for (const [name, entry] of symbolTable.entries()) {
122
+ if (entry.references === 0) {
123
+ const position = sourceFile.getLineAndCharacterOfPosition(entry.node.getStart());
124
+ findings.push({
125
+ id: `unused-var-${filePath}-${name}`,
126
+ title: `Unused variable: ${name}`,
127
+ description: `Variable '${name}' is declared but never used. Remove it to avoid confusion and reduce bundle size.`,
128
+ severity: 'medium',
129
+ location: {
130
+ file: filePath,
131
+ line: position.line + 1,
132
+ },
133
+ dependencies: [],
134
+ recommendationOptions: [
135
+ {
136
+ id: 'opt-remove',
137
+ title: 'Remove unused variable',
138
+ description: `Delete the declaration of '${name}'`,
139
+ implementationSteps: [`Remove the line declaring variable ${name}`],
140
+ estimatedEffort: 'low',
141
+ risks: [],
142
+ recommended: true,
143
+ },
144
+ ],
145
+ });
146
+ }
147
+ }
148
+ return findings;
149
+ }
150
+ /**
151
+ * Find missing type annotations on function parameters and variables
152
+ */
153
+ function findMissingTypes(sourceFile, filePath) {
154
+ const findings = [];
155
+ function checkNode(node) {
156
+ // Check function parameters
157
+ if (ts.isParameter(node) && !node.type) {
158
+ const nameNode = node.name;
159
+ if (ts.isIdentifier(nameNode) && !nameNode.text.startsWith('_')) {
160
+ const position = sourceFile.getLineAndCharacterOfPosition(node.getStart());
161
+ findings.push({
162
+ id: `missing-type-${filePath}-${position.line}-${nameNode.text}`,
163
+ title: `Missing type annotation for parameter: ${nameNode.text}`,
164
+ description: `Parameter '${nameNode.text}' lacks explicit type annotation. Add a type for better type safety and documentation.`,
165
+ severity: 'low',
166
+ location: {
167
+ file: filePath,
168
+ line: position.line + 1,
169
+ },
170
+ dependencies: [],
171
+ recommendationOptions: [
172
+ {
173
+ id: 'opt-add-type',
174
+ title: 'Add type annotation',
175
+ description: `Add explicit type annotation to parameter '${nameNode.text}'`,
176
+ implementationSteps: [`Add type annotation: ${nameNode.text}: Type`],
177
+ estimatedEffort: 'low',
178
+ risks: [],
179
+ recommended: true,
180
+ },
181
+ ],
182
+ });
183
+ }
184
+ }
185
+ // Check variable declarations without type inference
186
+ if (ts.isVariableDeclaration(node) && !node.type) {
187
+ const nameNode = node.name;
188
+ if (ts.isIdentifier(nameNode) && !nameNode.text.startsWith('_')) {
189
+ // Only report if initializer is missing or is 'any'
190
+ if (!node.initializer) {
191
+ const position = sourceFile.getLineAndCharacterOfPosition(node.getStart());
192
+ findings.push({
193
+ id: `missing-type-var-${filePath}-${position.line}-${nameNode.text}`,
194
+ title: `Missing type annotation for variable: ${nameNode.text}`,
195
+ description: `Variable '${nameNode.text}' lacks explicit type annotation and initializer. TypeScript cannot infer the type.`,
196
+ severity: 'low',
197
+ location: {
198
+ file: filePath,
199
+ line: position.line + 1,
200
+ },
201
+ dependencies: [],
202
+ recommendationOptions: [
203
+ {
204
+ id: 'opt-add-type-var',
205
+ title: 'Add type annotation',
206
+ description: `Add explicit type annotation to variable '${nameNode.text}'`,
207
+ implementationSteps: [`Add type annotation: const ${nameNode.text}: Type = ...`],
208
+ estimatedEffort: 'low',
209
+ risks: [],
210
+ recommended: true,
211
+ },
212
+ ],
213
+ });
214
+ }
215
+ }
216
+ }
217
+ ts.forEachChild(node, checkNode);
218
+ }
219
+ checkNode(sourceFile);
220
+ return findings;
221
+ }
222
+ /**
223
+ * Find console.log/debug statements left in code
224
+ */
225
+ function findConsoleDebugStatements(sourceFile, filePath) {
226
+ const findings = [];
227
+ function checkNode(node) {
228
+ if (ts.isCallExpression(node)) {
229
+ const expr = node.expression;
230
+ if (ts.isPropertyAccessExpression(expr)) {
231
+ if (ts.isIdentifier(expr.expression) && expr.expression.text === 'console') {
232
+ const methodName = expr.name.text;
233
+ if (['log', 'debug', 'info', 'warn', 'error'].includes(methodName)) {
234
+ const position = sourceFile.getLineAndCharacterOfPosition(node.getStart());
235
+ findings.push({
236
+ id: `console-${methodName}-${filePath}-${position.line}`,
237
+ title: `Console.${methodName} statement found`,
238
+ description: `Console.${methodName}() call detected. Remove debug statements before production deployment.`,
239
+ severity: methodName === 'error' || methodName === 'warn' ? 'medium' : 'low',
240
+ location: {
241
+ file: filePath,
242
+ line: position.line + 1,
243
+ },
244
+ dependencies: [],
245
+ recommendationOptions: [
246
+ {
247
+ id: 'opt-remove-console',
248
+ title: 'Remove console statement',
249
+ description: `Remove the console.${methodName}() call`,
250
+ implementationSteps: [`Delete or comment out the console.${methodName}() line`],
251
+ estimatedEffort: 'low',
252
+ risks: [],
253
+ recommended: true,
254
+ },
255
+ {
256
+ id: 'opt-use-logger',
257
+ title: 'Replace with proper logging',
258
+ description: 'Replace console call with a structured logging solution',
259
+ implementationSteps: ['Import logger utility', 'Replace console call with logger method'],
260
+ estimatedEffort: 'medium',
261
+ risks: ['Requires logger setup'],
262
+ recommended: false,
263
+ },
264
+ ],
265
+ });
266
+ }
267
+ }
268
+ }
269
+ }
270
+ ts.forEachChild(node, checkNode);
271
+ }
272
+ checkNode(sourceFile);
273
+ return findings;
274
+ }
275
+ /**
276
+ * Find unused imports
277
+ */
278
+ function findUnusedImports(sourceFile, filePath, sourceCode) {
279
+ const findings = [];
280
+ const imports = new Map();
281
+ // Collect all imports
282
+ function collectImports(node) {
283
+ if (ts.isImportDeclaration(node) && node.importClause) {
284
+ const clause = node.importClause;
285
+ // Default import
286
+ if (clause.name) {
287
+ imports.set(clause.name.text, { node: clause.name, text: clause.name.text });
288
+ }
289
+ // Named imports
290
+ if (clause.namedBindings) {
291
+ if (ts.isNamedImports(clause.namedBindings)) {
292
+ for (const specifier of clause.namedBindings.elements) {
293
+ const name = specifier.propertyName ? specifier.propertyName.text : specifier.name.text;
294
+ imports.set(name, { node: specifier, text: name });
295
+ }
296
+ }
297
+ }
298
+ }
299
+ ts.forEachChild(node, collectImports);
300
+ }
301
+ collectImports(sourceFile);
302
+ // Check if imports are used (simple string-based check)
303
+ for (const [name, entry] of imports.entries()) {
304
+ if (!name.startsWith('_')) {
305
+ // Count occurrences (excluding the import line itself)
306
+ const importPattern = new RegExp(`\\b${name}\\b`, 'g');
307
+ const matches = sourceCode.match(importPattern);
308
+ const count = matches ? matches.length : 0;
309
+ // If only appears once (in import), it's unused
310
+ if (count <= 1) {
311
+ const position = sourceFile.getLineAndCharacterOfPosition(entry.node.getStart());
312
+ findings.push({
313
+ id: `unused-import-${filePath}-${name}`,
314
+ title: `Unused import: ${name}`,
315
+ description: `Import '${name}' is not used anywhere in the file. Remove it to reduce bundle size.`,
316
+ severity: 'low',
317
+ location: {
318
+ file: filePath,
319
+ line: position.line + 1,
320
+ },
321
+ dependencies: [],
322
+ recommendationOptions: [
323
+ {
324
+ id: 'opt-remove-import',
325
+ title: 'Remove unused import',
326
+ description: `Remove '${name}' from the import statement`,
327
+ implementationSteps: [`Delete ${name} from the import declaration`],
328
+ estimatedEffort: 'low',
329
+ risks: [],
330
+ recommended: true,
331
+ },
332
+ ],
333
+ });
334
+ }
335
+ }
336
+ }
337
+ return findings;
338
+ }
339
+ /**
340
+ * Generate review report from findings
341
+ */
342
+ export function generateReport(target, findings) {
343
+ const summary = {
344
+ totalFindings: findings.length,
345
+ critical: findings.filter((f) => f.severity === 'critical').length,
346
+ high: findings.filter((f) => f.severity === 'high').length,
347
+ medium: findings.filter((f) => f.severity === 'medium').length,
348
+ low: findings.filter((f) => f.severity === 'low').length,
349
+ info: findings.filter((f) => f.severity === 'info').length,
350
+ };
351
+ return {
352
+ id: uuidv4(),
353
+ title: 'Code Review',
354
+ reviewTarget: target,
355
+ findings,
356
+ summary,
357
+ createdAt: new Date().toISOString(),
358
+ status: 'ready-for-implementation',
359
+ };
360
+ }
361
+ /**
362
+ * Render the report to markdown in the exact shape `alpha implement` parses.
363
+ */
364
+ export function renderReportMarkdown(report) {
365
+ const lines = [
366
+ `# ${report.title}`,
367
+ ``,
368
+ `Report ID: ${report.id}`,
369
+ `Target: ${report.reviewTarget}`,
370
+ `Created: ${report.createdAt}`,
371
+ ``,
372
+ `## Summary`,
373
+ ``,
374
+ `- Total: ${report.summary.totalFindings}`,
375
+ `- Critical: ${report.summary.critical}`,
376
+ `- High: ${report.summary.high}`,
377
+ `- Medium: ${report.summary.medium}`,
378
+ `- Low: ${report.summary.low}`,
379
+ `- Info: ${report.summary.info}`,
380
+ ``,
381
+ `## Findings`,
382
+ ``,
383
+ ];
384
+ report.findings.forEach((finding, idx) => {
385
+ const num = String(idx + 1).padStart(3, '0');
386
+ lines.push(`### Finding F-${num}: ${finding.title}`, ``);
387
+ lines.push(`**Severity:** ${finding.severity}`, ``);
388
+ if (finding.location?.file) {
389
+ const loc = finding.location.line
390
+ ? `${finding.location.file}:${finding.location.line}`
391
+ : finding.location.file;
392
+ lines.push(`**Location:** \`${loc}\``, ``);
393
+ }
394
+ if (finding.description) {
395
+ lines.push(finding.description.trim(), ``);
396
+ }
397
+ if (finding.recommendationOptions.length > 0) {
398
+ lines.push(`#### Options`, ``);
399
+ finding.recommendationOptions.forEach((opt, optIdx) => {
400
+ const star = opt.recommended ? ' ⭐ (recommended)' : '';
401
+ lines.push(`${optIdx + 1}. **${opt.title}**${star} - **Estimated Effort:** ${opt.estimatedEffort}`);
402
+ for (const step of opt.implementationSteps) {
403
+ lines.push(` - ${step}`);
404
+ }
405
+ });
406
+ lines.push(``);
407
+ }
408
+ });
409
+ return lines.join('\n');
410
+ }
411
+ async function saveReport(report) {
412
+ const reportsDir = getReportsDir();
413
+ await ensureDir(reportsDir);
414
+ const reportPath = path.join(reportsDir, `${report.id}.md`);
415
+ await writeFile(reportPath, renderReportMarkdown(report));
416
+ logger.info(`Report saved to ${reportPath}`);
417
+ return reportPath;
418
+ }
419
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/reviewer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ import { StackRecommendation } from '../../types/index.js';
3
+ export interface StackOptions {
4
+ /** Run the human-facing interactive selection (inquirer). */
5
+ interactive?: boolean;
6
+ /** Path to a JSON stack/decision file (otherwise stdin is used). */
7
+ input?: string;
8
+ }
9
+ export declare function adviseStack(options?: StackOptions): Promise<StackRecommendation | null>;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/stack/index.ts"],"names":[],"mappings":";AAMA,OAAO,EAGL,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAoH9B,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4JD,wBAAsB,WAAW,CAC/B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAiCrC"}