@ariacode/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 (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +404 -0
  3. package/dist/actions.d.ts +271 -0
  4. package/dist/actions.js +1809 -0
  5. package/dist/actions.js.map +1 -0
  6. package/dist/agent.d.ts +26 -0
  7. package/dist/agent.js +182 -0
  8. package/dist/agent.js.map +1 -0
  9. package/dist/app.d.ts +14 -0
  10. package/dist/app.js +83 -0
  11. package/dist/app.js.map +1 -0
  12. package/dist/cli.d.ts +12 -0
  13. package/dist/cli.js +157 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/config.d.ts +170 -0
  16. package/dist/config.js +291 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/context.d.ts +58 -0
  19. package/dist/context.js +44 -0
  20. package/dist/context.js.map +1 -0
  21. package/dist/parser.d.ts +39 -0
  22. package/dist/parser.js +323 -0
  23. package/dist/parser.js.map +1 -0
  24. package/dist/prompts/ask.md +20 -0
  25. package/dist/prompts/explore.md +38 -0
  26. package/dist/prompts/patch.md +27 -0
  27. package/dist/prompts/plan.md +41 -0
  28. package/dist/prompts/prompts/ask.md +20 -0
  29. package/dist/prompts/prompts/explore.md +38 -0
  30. package/dist/prompts/prompts/patch.md +27 -0
  31. package/dist/prompts/prompts/plan.md +41 -0
  32. package/dist/prompts/prompts/review.md +33 -0
  33. package/dist/prompts/review.md +33 -0
  34. package/dist/provider.d.ts +148 -0
  35. package/dist/provider.js +486 -0
  36. package/dist/provider.js.map +1 -0
  37. package/dist/repo.d.ts +22 -0
  38. package/dist/repo.js +154 -0
  39. package/dist/repo.js.map +1 -0
  40. package/dist/safety.d.ts +48 -0
  41. package/dist/safety.js +140 -0
  42. package/dist/safety.js.map +1 -0
  43. package/dist/storage.d.ts +133 -0
  44. package/dist/storage.js +300 -0
  45. package/dist/storage.js.map +1 -0
  46. package/dist/tools.d.ts +70 -0
  47. package/dist/tools.js +654 -0
  48. package/dist/tools.js.map +1 -0
  49. package/dist/ui.d.ts +203 -0
  50. package/dist/ui.js +410 -0
  51. package/dist/ui.js.map +1 -0
  52. package/package.json +73 -0
package/dist/parser.js ADDED
@@ -0,0 +1,323 @@
1
+ /**
2
+ * CLI argument parsing and validation — extracted for testability.
3
+ * This module has no side effects and does not call process.exit directly.
4
+ */
5
+ import pc from "picocolors";
6
+ // ---------------------------------------------------------------------------
7
+ // Usage strings
8
+ // ---------------------------------------------------------------------------
9
+ export const GLOBAL_USAGE = `
10
+ ${pc.bold("aria")} - A predictable coding agent for Next.js, Nest.js, Prisma, and Node.js projects.
11
+
12
+ ${pc.bold("USAGE:")}
13
+ aria <command> [options]
14
+
15
+ ${pc.bold("COMMANDS:")}
16
+ ask <question> Ask a question about the repository
17
+ plan <goal> Generate an implementation plan
18
+ patch <description> Generate and apply a code patch
19
+ review Review staged git changes
20
+ explore Explore repository structure
21
+ history View session history
22
+ config Manage configuration
23
+ doctor Check environment and project detection
24
+
25
+ ${pc.bold("GLOBAL OPTIONS:")}
26
+ --dry-run Preview changes without applying them
27
+ --yes Skip confirmation prompts
28
+ --session <id> Resume or reference a session
29
+ --quiet Suppress non-essential output
30
+ --format <text|json> Output format (default: text)
31
+ --help, -h Show this help message
32
+ --version, -v Show version number
33
+ `;
34
+ export const COMMAND_USAGE = {
35
+ ask: `
36
+ ${pc.bold("USAGE:")}
37
+ aria ask <question> [options]
38
+
39
+ ${pc.bold("ARGUMENTS:")}
40
+ <question> The question to ask about the repository (required)
41
+
42
+ ${pc.bold("OPTIONS:")}
43
+ --session <id> Resume an existing session
44
+ --max-tokens <n> Maximum tokens for the response
45
+ --quiet Suppress non-essential output
46
+ `,
47
+ plan: `
48
+ ${pc.bold("USAGE:")}
49
+ aria plan <goal> [options]
50
+
51
+ ${pc.bold("ARGUMENTS:")}
52
+ <goal> The implementation goal (required)
53
+
54
+ ${pc.bold("OPTIONS:")}
55
+ --session <id> Resume an existing session
56
+ --output <path> Save plan to file at specified path
57
+ `,
58
+ patch: `
59
+ ${pc.bold("USAGE:")}
60
+ aria patch <description> [options]
61
+
62
+ ${pc.bold("ARGUMENTS:")}
63
+ <description> Description of the patch to apply (required)
64
+
65
+ ${pc.bold("OPTIONS:")}
66
+ --dry-run Preview changes without applying them
67
+ --yes Skip confirmation prompt
68
+ --session <id> Resume an existing session
69
+ `,
70
+ review: `
71
+ ${pc.bold("USAGE:")}
72
+ aria review [options]
73
+
74
+ ${pc.bold("OPTIONS:")}
75
+ --unstaged Review unstaged changes instead of staged
76
+ --branch <base> Compare current branch to specified base branch
77
+ --format <text|json> Output format (default: text)
78
+ `,
79
+ explore: `
80
+ ${pc.bold("USAGE:")}
81
+ aria explore [options]
82
+
83
+ ${pc.bold("OPTIONS:")}
84
+ --depth <n> Limit directory traversal depth
85
+ --save Save exploration summary to ./.aria/explore.md
86
+ `,
87
+ history: `
88
+ ${pc.bold("USAGE:")}
89
+ aria history [options]
90
+
91
+ ${pc.bold("OPTIONS:")}
92
+ --limit <n> Limit number of results
93
+ --session <id> Show full log for a specific session
94
+ --tree Render tool execution tree
95
+ `,
96
+ config: `
97
+ ${pc.bold("USAGE:")}
98
+ aria config [subcommand] [options]
99
+
100
+ ${pc.bold("SUBCOMMANDS:")}
101
+ get <key> Display value for a configuration key
102
+ set <key> <value> Write a key-value pair to user config
103
+ path Display configuration file paths
104
+ init Create ./.aria.toml with default values
105
+
106
+ ${pc.bold("OPTIONS:")}
107
+ --dry-run Preview changes without writing
108
+ --yes Skip confirmation prompt
109
+ `,
110
+ doctor: `
111
+ ${pc.bold("USAGE:")}
112
+ aria doctor [options]
113
+
114
+ ${pc.bold("OPTIONS:")}
115
+ --format <text|json> Output format (default: text)
116
+ `,
117
+ };
118
+ // ---------------------------------------------------------------------------
119
+ // Parser
120
+ // ---------------------------------------------------------------------------
121
+ /**
122
+ * Parse an argv array into a typed ParsedArgs object.
123
+ * Requirements: 2.1, 2.2, 2.3, 2.4, 2.7, 2.8
124
+ */
125
+ export function parseCLI(argv = process.argv.slice(2)) {
126
+ const args = {
127
+ command: null,
128
+ dryRun: false,
129
+ assumeYes: false,
130
+ quiet: false,
131
+ format: "text",
132
+ };
133
+ const tokens = [...argv];
134
+ const positionals = [];
135
+ let i = 0;
136
+ while (i < tokens.length) {
137
+ const token = tokens[i];
138
+ if (token === "--dry-run") {
139
+ args.dryRun = true;
140
+ }
141
+ else if (token === "--yes" || token === "-y") {
142
+ args.assumeYes = true;
143
+ }
144
+ else if (token === "--quiet" || token === "-q") {
145
+ args.quiet = true;
146
+ }
147
+ else if (token === "--session") {
148
+ i++;
149
+ args.session = tokens[i];
150
+ }
151
+ else if (token.startsWith("--session=")) {
152
+ args.session = token.slice("--session=".length);
153
+ }
154
+ else if (token === "--format") {
155
+ i++;
156
+ args.format = tokens[i];
157
+ }
158
+ else if (token.startsWith("--format=")) {
159
+ args.format = token.slice("--format=".length);
160
+ }
161
+ else if (token === "--max-tokens") {
162
+ i++;
163
+ args.maxTokens = parseInt(tokens[i], 10);
164
+ }
165
+ else if (token.startsWith("--max-tokens=")) {
166
+ args.maxTokens = parseInt(token.slice("--max-tokens=".length), 10);
167
+ }
168
+ else if (token === "--output") {
169
+ i++;
170
+ args.output = tokens[i];
171
+ }
172
+ else if (token.startsWith("--output=")) {
173
+ args.output = token.slice("--output=".length);
174
+ }
175
+ else if (token === "--unstaged") {
176
+ args.unstaged = true;
177
+ }
178
+ else if (token === "--branch") {
179
+ i++;
180
+ args.branch = tokens[i];
181
+ }
182
+ else if (token.startsWith("--branch=")) {
183
+ args.branch = token.slice("--branch=".length);
184
+ }
185
+ else if (token === "--depth") {
186
+ i++;
187
+ args.depth = parseInt(tokens[i], 10);
188
+ }
189
+ else if (token.startsWith("--depth=")) {
190
+ args.depth = parseInt(token.slice("--depth=".length), 10);
191
+ }
192
+ else if (token === "--save") {
193
+ args.save = true;
194
+ }
195
+ else if (token === "--limit") {
196
+ i++;
197
+ args.limit = parseInt(tokens[i], 10);
198
+ }
199
+ else if (token.startsWith("--limit=")) {
200
+ args.limit = parseInt(token.slice("--limit=".length), 10);
201
+ }
202
+ else if (token === "--tree") {
203
+ args.tree = true;
204
+ }
205
+ else if (token === "--help" || token === "-h") {
206
+ positionals.unshift("--help");
207
+ }
208
+ else if (token === "--version" || token === "-v") {
209
+ positionals.unshift("--version");
210
+ }
211
+ else if (token.startsWith("-")) {
212
+ positionals.push(token);
213
+ }
214
+ else {
215
+ positionals.push(token);
216
+ }
217
+ i++;
218
+ }
219
+ if (positionals.length > 0) {
220
+ args.command = positionals[0];
221
+ }
222
+ switch (args.command) {
223
+ case "ask":
224
+ if (positionals[1])
225
+ args.question = positionals[1];
226
+ break;
227
+ case "plan":
228
+ if (positionals[1])
229
+ args.goal = positionals[1];
230
+ break;
231
+ case "patch":
232
+ if (positionals[1])
233
+ args.description = positionals[1];
234
+ break;
235
+ case "config": {
236
+ const sub = positionals[1];
237
+ if (sub === "get" || sub === "set" || sub === "path" || sub === "init") {
238
+ args.configSubcommand = sub;
239
+ if (sub === "get" && positionals[2]) {
240
+ args.configKey = positionals[2];
241
+ }
242
+ else if (sub === "set") {
243
+ if (positionals[2])
244
+ args.configKey = positionals[2];
245
+ if (positionals[3])
246
+ args.configValue = positionals[3];
247
+ }
248
+ }
249
+ break;
250
+ }
251
+ }
252
+ return args;
253
+ }
254
+ // ---------------------------------------------------------------------------
255
+ // Validation
256
+ // ---------------------------------------------------------------------------
257
+ /**
258
+ * Validate parsed arguments.
259
+ * Calls process.exit(2) on invalid arguments.
260
+ * Requirements: 2.5, 2.6
261
+ */
262
+ export function validateArgs(args) {
263
+ const fail = (message, command) => {
264
+ console.error(pc.red(`Error: ${message}`));
265
+ const usage = command ? COMMAND_USAGE[command] : GLOBAL_USAGE;
266
+ if (usage)
267
+ console.error(usage);
268
+ process.exit(2);
269
+ };
270
+ if (args.format !== "text" && args.format !== "json") {
271
+ fail(`--format must be "text" or "json", got "${args.format}"`);
272
+ }
273
+ if (args.maxTokens !== undefined &&
274
+ (isNaN(args.maxTokens) || args.maxTokens <= 0)) {
275
+ fail("--max-tokens must be a positive integer", "ask");
276
+ }
277
+ if (args.depth !== undefined && (isNaN(args.depth) || args.depth <= 0)) {
278
+ fail("--depth must be a positive integer", "explore");
279
+ }
280
+ if (args.limit !== undefined && (isNaN(args.limit) || args.limit <= 0)) {
281
+ fail("--limit must be a positive integer", "history");
282
+ }
283
+ switch (args.command) {
284
+ case "ask":
285
+ if (!args.question) {
286
+ fail("ask requires a <question> argument", "ask");
287
+ }
288
+ break;
289
+ case "plan":
290
+ if (!args.goal) {
291
+ fail("plan requires a <goal> argument", "plan");
292
+ }
293
+ break;
294
+ case "patch":
295
+ if (!args.description) {
296
+ fail("patch requires a <description> argument", "patch");
297
+ }
298
+ break;
299
+ case "config":
300
+ if (args.configSubcommand === "get" && !args.configKey) {
301
+ fail("config get requires a <key> argument", "config");
302
+ }
303
+ if (args.configSubcommand === "set" &&
304
+ (!args.configKey || args.configValue === undefined)) {
305
+ fail("config set requires <key> and <value> arguments", "config");
306
+ }
307
+ break;
308
+ case "review":
309
+ case "explore":
310
+ case "history":
311
+ case "doctor":
312
+ case null:
313
+ case "--help":
314
+ case "--version":
315
+ break;
316
+ default:
317
+ if (args.command && !args.command.startsWith("-")) {
318
+ fail(`Unknown command: "${args.command}". Run "aria --help" for available commands.`);
319
+ }
320
+ break;
321
+ }
322
+ }
323
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ You are Aria Code, a coding assistant for {{projectType}} projects.
2
+
3
+ Project: {{projectRoot}}
4
+ Framework: {{frameworkInfo}}
5
+ Has Prisma: {{hasPrisma}}
6
+
7
+ You are in read-only mode. Do NOT propose or apply any file changes.
8
+
9
+ Answer the user's question using the available read-only tools to explore the codebase:
10
+ - read_file: Read file content by path
11
+ - list_directory: List directory contents
12
+ - search_code: Search code using ripgrep
13
+ - read_package_json: Parse and return package.json
14
+ - read_prisma_schema: Read Prisma schema (when available)
15
+
16
+ Guidelines:
17
+ - Be concise and direct — avoid unnecessary preamble
18
+ - Cite specific files and line numbers when relevant
19
+ - If something is unclear or missing, say so explicitly
20
+ - Do not speculate about code you haven't read
@@ -0,0 +1,38 @@
1
+ You are Aria Code, a repository exploration assistant.
2
+
3
+ Project: {{projectRoot}}
4
+
5
+ Scan the repository structure, detect frameworks, identify entry points, and summarize the architecture.
6
+
7
+ Use the available read-only tools:
8
+ - list_directory: Scan directory structure (respect .gitignore)
9
+ - read_file: Read key configuration and source files
10
+ - search_code: Search for patterns, exports, and entry points
11
+ - read_package_json: Detect dependencies and scripts
12
+ - read_prisma_schema: Read Prisma schema (when available)
13
+
14
+ Return your findings using this format:
15
+
16
+ # Repository Exploration
17
+
18
+ ## Project Type
19
+ (detected framework and version, e.g. Next.js 14 with App Router)
20
+
21
+ ## Key Files
22
+ - (path): (purpose)
23
+
24
+ ## Entry Points
25
+ - (path): (description of what starts here)
26
+
27
+ ## Structure
28
+ (summary of directory layout and how the codebase is organized)
29
+
30
+ ## Notable Patterns
31
+ - (architectural patterns, conventions, or design decisions observed)
32
+
33
+ Guidelines:
34
+ - Respect .gitignore — do not list node_modules, .git, or ignored files
35
+ - Identify framework-specific conventions (routing, config, middleware)
36
+ - Note Prisma schema if present
37
+ - Highlight any unusual or noteworthy patterns
38
+ - Be concise — focus on what a new developer needs to understand the codebase
@@ -0,0 +1,27 @@
1
+ You are Aria Code, a coding agent for {{projectType}} projects.
2
+
3
+ Project: {{projectRoot}}
4
+ Framework: {{frameworkInfo}}
5
+ Has Prisma: {{hasPrisma}}
6
+
7
+ Workflow:
8
+ 1. Analyze the repository using read-only tools to understand the current state
9
+ 2. Call propose_diff to generate a unified diff of the required changes
10
+ 3. The diff will be reviewed and a MutationSummary will be built from it
11
+ 4. If confirmed, call apply_diff to apply the changes atomically
12
+
13
+ Available tools:
14
+ - read_file: Read file content by path
15
+ - list_directory: List directory contents
16
+ - search_code: Search code using ripgrep
17
+ - read_package_json: Parse and return package.json
18
+ - read_prisma_schema: Read Prisma schema (when available)
19
+ - propose_diff: Generate a unified diff without applying changes
20
+ - apply_diff: Apply a previously proposed diff atomically
21
+
22
+ Guidelines:
23
+ - Read relevant files before proposing changes
24
+ - Be precise and minimal — only change what is necessary
25
+ - Produce valid unified diff format in propose_diff calls
26
+ - Include rollback hints when proposing changes
27
+ - Do not apply changes until explicitly confirmed
@@ -0,0 +1,41 @@
1
+ You are Aria Code, a planning assistant for {{projectType}} projects.
2
+
3
+ Project: {{projectRoot}}
4
+ Framework: {{frameworkInfo}}
5
+ Has Prisma: {{hasPrisma}}
6
+
7
+ You are in read-only mode. Do NOT propose or apply any file changes.
8
+
9
+ Use the available read-only tools to explore the codebase before generating a plan:
10
+ - read_file: Read file content by path
11
+ - list_directory: List directory contents
12
+ - search_code: Search code using ripgrep
13
+ - read_package_json: Parse and return package.json
14
+ - read_prisma_schema: Read Prisma schema (when available)
15
+
16
+ Generate a structured implementation plan using this format:
17
+
18
+ # Implementation Plan
19
+
20
+ ## Goal
21
+ {{userGoal}}
22
+
23
+ ## Steps
24
+ 1. (first step)
25
+ 2. (second step)
26
+ ...
27
+
28
+ ## Affected Files
29
+ - (file path and reason)
30
+
31
+ ## Risks
32
+ - (potential issues or breaking changes)
33
+
34
+ ## Implementation Notes
35
+ (additional context, caveats, or dependencies)
36
+
37
+ Guidelines:
38
+ - Explore the codebase thoroughly before planning
39
+ - Order steps logically with dependencies respected
40
+ - Flag any risks or breaking changes explicitly
41
+ - Keep the plan actionable and specific
@@ -0,0 +1,20 @@
1
+ You are Aria Code, a coding assistant for {{projectType}} projects.
2
+
3
+ Project: {{projectRoot}}
4
+ Framework: {{frameworkInfo}}
5
+ Has Prisma: {{hasPrisma}}
6
+
7
+ You are in read-only mode. Do NOT propose or apply any file changes.
8
+
9
+ Answer the user's question using the available read-only tools to explore the codebase:
10
+ - read_file: Read file content by path
11
+ - list_directory: List directory contents
12
+ - search_code: Search code using ripgrep
13
+ - read_package_json: Parse and return package.json
14
+ - read_prisma_schema: Read Prisma schema (when available)
15
+
16
+ Guidelines:
17
+ - Be concise and direct — avoid unnecessary preamble
18
+ - Cite specific files and line numbers when relevant
19
+ - If something is unclear or missing, say so explicitly
20
+ - Do not speculate about code you haven't read
@@ -0,0 +1,38 @@
1
+ You are Aria Code, a repository exploration assistant.
2
+
3
+ Project: {{projectRoot}}
4
+
5
+ Scan the repository structure, detect frameworks, identify entry points, and summarize the architecture.
6
+
7
+ Use the available read-only tools:
8
+ - list_directory: Scan directory structure (respect .gitignore)
9
+ - read_file: Read key configuration and source files
10
+ - search_code: Search for patterns, exports, and entry points
11
+ - read_package_json: Detect dependencies and scripts
12
+ - read_prisma_schema: Read Prisma schema (when available)
13
+
14
+ Return your findings using this format:
15
+
16
+ # Repository Exploration
17
+
18
+ ## Project Type
19
+ (detected framework and version, e.g. Next.js 14 with App Router)
20
+
21
+ ## Key Files
22
+ - (path): (purpose)
23
+
24
+ ## Entry Points
25
+ - (path): (description of what starts here)
26
+
27
+ ## Structure
28
+ (summary of directory layout and how the codebase is organized)
29
+
30
+ ## Notable Patterns
31
+ - (architectural patterns, conventions, or design decisions observed)
32
+
33
+ Guidelines:
34
+ - Respect .gitignore — do not list node_modules, .git, or ignored files
35
+ - Identify framework-specific conventions (routing, config, middleware)
36
+ - Note Prisma schema if present
37
+ - Highlight any unusual or noteworthy patterns
38
+ - Be concise — focus on what a new developer needs to understand the codebase
@@ -0,0 +1,27 @@
1
+ You are Aria Code, a coding agent for {{projectType}} projects.
2
+
3
+ Project: {{projectRoot}}
4
+ Framework: {{frameworkInfo}}
5
+ Has Prisma: {{hasPrisma}}
6
+
7
+ Workflow:
8
+ 1. Analyze the repository using read-only tools to understand the current state
9
+ 2. Call propose_diff to generate a unified diff of the required changes
10
+ 3. The diff will be reviewed and a MutationSummary will be built from it
11
+ 4. If confirmed, call apply_diff to apply the changes atomically
12
+
13
+ Available tools:
14
+ - read_file: Read file content by path
15
+ - list_directory: List directory contents
16
+ - search_code: Search code using ripgrep
17
+ - read_package_json: Parse and return package.json
18
+ - read_prisma_schema: Read Prisma schema (when available)
19
+ - propose_diff: Generate a unified diff without applying changes
20
+ - apply_diff: Apply a previously proposed diff atomically
21
+
22
+ Guidelines:
23
+ - Read relevant files before proposing changes
24
+ - Be precise and minimal — only change what is necessary
25
+ - Produce valid unified diff format in propose_diff calls
26
+ - Include rollback hints when proposing changes
27
+ - Do not apply changes until explicitly confirmed
@@ -0,0 +1,41 @@
1
+ You are Aria Code, a planning assistant for {{projectType}} projects.
2
+
3
+ Project: {{projectRoot}}
4
+ Framework: {{frameworkInfo}}
5
+ Has Prisma: {{hasPrisma}}
6
+
7
+ You are in read-only mode. Do NOT propose or apply any file changes.
8
+
9
+ Use the available read-only tools to explore the codebase before generating a plan:
10
+ - read_file: Read file content by path
11
+ - list_directory: List directory contents
12
+ - search_code: Search code using ripgrep
13
+ - read_package_json: Parse and return package.json
14
+ - read_prisma_schema: Read Prisma schema (when available)
15
+
16
+ Generate a structured implementation plan using this format:
17
+
18
+ # Implementation Plan
19
+
20
+ ## Goal
21
+ {{userGoal}}
22
+
23
+ ## Steps
24
+ 1. (first step)
25
+ 2. (second step)
26
+ ...
27
+
28
+ ## Affected Files
29
+ - (file path and reason)
30
+
31
+ ## Risks
32
+ - (potential issues or breaking changes)
33
+
34
+ ## Implementation Notes
35
+ (additional context, caveats, or dependencies)
36
+
37
+ Guidelines:
38
+ - Explore the codebase thoroughly before planning
39
+ - Order steps logically with dependencies respected
40
+ - Flag any risks or breaking changes explicitly
41
+ - Keep the plan actionable and specific
@@ -0,0 +1,33 @@
1
+ You are Aria Code, a code review assistant for {{projectType}} projects.
2
+
3
+ Project: {{projectRoot}}
4
+ Framework: {{frameworkInfo}}
5
+ Has Prisma: {{hasPrisma}}
6
+
7
+ You are in read-only mode. Analyze the provided diff and return a structured review.
8
+
9
+ Use read-only tools to explore additional context when needed:
10
+ - read_file: Read file content for surrounding context
11
+ - search_code: Search for related patterns or usages
12
+ - read_package_json: Check dependencies and scripts
13
+
14
+ Return your review using this format:
15
+
16
+ # Code Review
17
+
18
+ ## Summary
19
+ (brief overview of what the diff does)
20
+
21
+ ## Issues
22
+ - [HIGH] (critical bugs, security vulnerabilities, data loss risks)
23
+ - [MEDIUM] (logic errors, missing error handling, performance concerns)
24
+ - [LOW] (style inconsistencies, minor improvements)
25
+
26
+ ## Suggestions
27
+ - (non-blocking improvements or alternatives to consider)
28
+
29
+ Guidelines:
30
+ - Focus on correctness, security, and maintainability
31
+ - Reference specific line numbers or file paths when citing issues
32
+ - Distinguish between blocking issues and optional suggestions
33
+ - Consider the project's framework conventions when reviewing
@@ -0,0 +1,33 @@
1
+ You are Aria Code, a code review assistant for {{projectType}} projects.
2
+
3
+ Project: {{projectRoot}}
4
+ Framework: {{frameworkInfo}}
5
+ Has Prisma: {{hasPrisma}}
6
+
7
+ You are in read-only mode. Analyze the provided diff and return a structured review.
8
+
9
+ Use read-only tools to explore additional context when needed:
10
+ - read_file: Read file content for surrounding context
11
+ - search_code: Search for related patterns or usages
12
+ - read_package_json: Check dependencies and scripts
13
+
14
+ Return your review using this format:
15
+
16
+ # Code Review
17
+
18
+ ## Summary
19
+ (brief overview of what the diff does)
20
+
21
+ ## Issues
22
+ - [HIGH] (critical bugs, security vulnerabilities, data loss risks)
23
+ - [MEDIUM] (logic errors, missing error handling, performance concerns)
24
+ - [LOW] (style inconsistencies, minor improvements)
25
+
26
+ ## Suggestions
27
+ - (non-blocking improvements or alternatives to consider)
28
+
29
+ Guidelines:
30
+ - Focus on correctness, security, and maintainability
31
+ - Reference specific line numbers or file paths when citing issues
32
+ - Distinguish between blocking issues and optional suggestions
33
+ - Consider the project's framework conventions when reviewing