@ariso-ai/ivan 1.0.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 (150) hide show
  1. package/README.md +412 -0
  2. package/dist/agent.d.ts +11 -0
  3. package/dist/agent.d.ts.map +1 -0
  4. package/dist/agent.js +48 -0
  5. package/dist/agent.js.map +1 -0
  6. package/dist/config/config.d.ts +20 -0
  7. package/dist/config/config.d.ts.map +1 -0
  8. package/dist/config/config.js +187 -0
  9. package/dist/config/config.js.map +1 -0
  10. package/dist/config.d.ts +46 -0
  11. package/dist/config.d.ts.map +1 -0
  12. package/dist/config.js +414 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/database/database.d.ts +12 -0
  15. package/dist/database/database.d.ts.map +1 -0
  16. package/dist/database/database.js +45 -0
  17. package/dist/database/database.js.map +1 -0
  18. package/dist/database/migration.d.ts +11 -0
  19. package/dist/database/migration.d.ts.map +1 -0
  20. package/dist/database/migration.js +64 -0
  21. package/dist/database/migration.js.map +1 -0
  22. package/dist/database/migrations/001_create_jobs_table.d.ts +3 -0
  23. package/dist/database/migrations/001_create_jobs_table.d.ts.map +1 -0
  24. package/dist/database/migrations/001_create_jobs_table.js +14 -0
  25. package/dist/database/migrations/001_create_jobs_table.js.map +1 -0
  26. package/dist/database/migrations/001_initial_schema.d.ts +3 -0
  27. package/dist/database/migrations/001_initial_schema.d.ts.map +1 -0
  28. package/dist/database/migrations/001_initial_schema.js +66 -0
  29. package/dist/database/migrations/001_initial_schema.js.map +1 -0
  30. package/dist/database/migrations/002_create_tasks_table.d.ts +3 -0
  31. package/dist/database/migrations/002_create_tasks_table.d.ts.map +1 -0
  32. package/dist/database/migrations/002_create_tasks_table.js +16 -0
  33. package/dist/database/migrations/002_create_tasks_table.js.map +1 -0
  34. package/dist/database/migrations/003_add_log_to_tasks.d.ts +3 -0
  35. package/dist/database/migrations/003_add_log_to_tasks.d.ts.map +1 -0
  36. package/dist/database/migrations/003_add_log_to_tasks.js +11 -0
  37. package/dist/database/migrations/003_add_log_to_tasks.js.map +1 -0
  38. package/dist/database/migrations/004_add_branch_to_tasks.d.ts +3 -0
  39. package/dist/database/migrations/004_add_branch_to_tasks.d.ts.map +1 -0
  40. package/dist/database/migrations/004_add_branch_to_tasks.js +11 -0
  41. package/dist/database/migrations/004_add_branch_to_tasks.js.map +1 -0
  42. package/dist/database/migrations/005_add_type_to_tasks.d.ts +3 -0
  43. package/dist/database/migrations/005_add_type_to_tasks.d.ts.map +1 -0
  44. package/dist/database/migrations/005_add_type_to_tasks.js +11 -0
  45. package/dist/database/migrations/005_add_type_to_tasks.js.map +1 -0
  46. package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.d.ts +3 -0
  47. package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.d.ts.map +1 -0
  48. package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.js +15 -0
  49. package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.js.map +1 -0
  50. package/dist/database/migrations/006_add_comment_url_to_tasks.d.ts +3 -0
  51. package/dist/database/migrations/006_add_comment_url_to_tasks.d.ts.map +1 -0
  52. package/dist/database/migrations/006_add_comment_url_to_tasks.js +14 -0
  53. package/dist/database/migrations/006_add_comment_url_to_tasks.js.map +1 -0
  54. package/dist/database/migrations/007_add_commit_to_tasks.d.ts +3 -0
  55. package/dist/database/migrations/007_add_commit_to_tasks.d.ts.map +1 -0
  56. package/dist/database/migrations/007_add_commit_to_tasks.js +13 -0
  57. package/dist/database/migrations/007_add_commit_to_tasks.js.map +1 -0
  58. package/dist/database/migrations/008_add_lint_and_test_task_type.d.ts +3 -0
  59. package/dist/database/migrations/008_add_lint_and_test_task_type.d.ts.map +1 -0
  60. package/dist/database/migrations/008_add_lint_and_test_task_type.js +42 -0
  61. package/dist/database/migrations/008_add_lint_and_test_task_type.js.map +1 -0
  62. package/dist/database/migrations/index.d.ts +3 -0
  63. package/dist/database/migrations/index.d.ts.map +1 -0
  64. package/dist/database/migrations/index.js +19 -0
  65. package/dist/database/migrations/index.js.map +1 -0
  66. package/dist/database/types.d.ts +34 -0
  67. package/dist/database/types.d.ts.map +1 -0
  68. package/dist/database/types.js +2 -0
  69. package/dist/database/types.js.map +1 -0
  70. package/dist/database.d.ts +13 -0
  71. package/dist/database.d.ts.map +1 -0
  72. package/dist/database.js +32 -0
  73. package/dist/database.js.map +1 -0
  74. package/dist/index.d.ts +3 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +285 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/scripts/task-executor.d.ts +3 -0
  79. package/dist/scripts/task-executor.d.ts.map +1 -0
  80. package/dist/scripts/task-executor.js +139 -0
  81. package/dist/scripts/task-executor.js.map +1 -0
  82. package/dist/scripts/task-planner.d.ts +3 -0
  83. package/dist/scripts/task-planner.d.ts.map +1 -0
  84. package/dist/scripts/task-planner.js +81 -0
  85. package/dist/scripts/task-planner.js.map +1 -0
  86. package/dist/services/address-executor.d.ts +13 -0
  87. package/dist/services/address-executor.d.ts.map +1 -0
  88. package/dist/services/address-executor.js +202 -0
  89. package/dist/services/address-executor.js.map +1 -0
  90. package/dist/services/address-task-executor.d.ts +19 -0
  91. package/dist/services/address-task-executor.d.ts.map +1 -0
  92. package/dist/services/address-task-executor.js +736 -0
  93. package/dist/services/address-task-executor.js.map +1 -0
  94. package/dist/services/claude-cli-executor.d.ts +14 -0
  95. package/dist/services/claude-cli-executor.d.ts.map +1 -0
  96. package/dist/services/claude-cli-executor.js +241 -0
  97. package/dist/services/claude-cli-executor.js.map +1 -0
  98. package/dist/services/claude-executor.d.ts +14 -0
  99. package/dist/services/claude-executor.d.ts.map +1 -0
  100. package/dist/services/claude-executor.js +274 -0
  101. package/dist/services/claude-executor.js.map +1 -0
  102. package/dist/services/claude-planner.d.ts +15 -0
  103. package/dist/services/claude-planner.d.ts.map +1 -0
  104. package/dist/services/claude-planner.js +107 -0
  105. package/dist/services/claude-planner.js.map +1 -0
  106. package/dist/services/docker-orchestrator.d.ts +11 -0
  107. package/dist/services/docker-orchestrator.d.ts.map +1 -0
  108. package/dist/services/docker-orchestrator.js +85 -0
  109. package/dist/services/docker-orchestrator.js.map +1 -0
  110. package/dist/services/executor-factory.d.ts +14 -0
  111. package/dist/services/executor-factory.d.ts.map +1 -0
  112. package/dist/services/executor-factory.js +14 -0
  113. package/dist/services/executor-factory.js.map +1 -0
  114. package/dist/services/git-manager.d.ts +36 -0
  115. package/dist/services/git-manager.d.ts.map +1 -0
  116. package/dist/services/git-manager.js +728 -0
  117. package/dist/services/git-manager.js.map +1 -0
  118. package/dist/services/index.d.ts +9 -0
  119. package/dist/services/index.d.ts.map +1 -0
  120. package/dist/services/index.js +9 -0
  121. package/dist/services/index.js.map +1 -0
  122. package/dist/services/job-manager.d.ts +30 -0
  123. package/dist/services/job-manager.d.ts.map +1 -0
  124. package/dist/services/job-manager.js +337 -0
  125. package/dist/services/job-manager.js.map +1 -0
  126. package/dist/services/openai-service.d.ts +14 -0
  127. package/dist/services/openai-service.d.ts.map +1 -0
  128. package/dist/services/openai-service.js +186 -0
  129. package/dist/services/openai-service.js.map +1 -0
  130. package/dist/services/pr-service.d.ts +31 -0
  131. package/dist/services/pr-service.d.ts.map +1 -0
  132. package/dist/services/pr-service.js +291 -0
  133. package/dist/services/pr-service.js.map +1 -0
  134. package/dist/services/repository-manager.d.ts +12 -0
  135. package/dist/services/repository-manager.d.ts.map +1 -0
  136. package/dist/services/repository-manager.js +101 -0
  137. package/dist/services/repository-manager.js.map +1 -0
  138. package/dist/services/task-executor.d.ts +20 -0
  139. package/dist/services/task-executor.d.ts.map +1 -0
  140. package/dist/services/task-executor.js +717 -0
  141. package/dist/services/task-executor.js.map +1 -0
  142. package/dist/types/non-interactive-config.d.ts +28 -0
  143. package/dist/types/non-interactive-config.d.ts.map +1 -0
  144. package/dist/types/non-interactive-config.js +2 -0
  145. package/dist/types/non-interactive-config.js.map +1 -0
  146. package/dist/web-server.d.ts +16 -0
  147. package/dist/web-server.d.ts.map +1 -0
  148. package/dist/web-server.js +488 -0
  149. package/dist/web-server.js.map +1 -0
  150. package/package.json +71 -0
package/dist/index.js ADDED
@@ -0,0 +1,285 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import chalk from 'chalk';
4
+ import { ConfigManager } from './config.js';
5
+ import { TaskExecutor } from './services/task-executor.js';
6
+ import { AddressExecutor } from './services/address-executor.js';
7
+ import { DatabaseManager } from './database.js';
8
+ import { WebServer } from './web-server.js';
9
+ import { readFileSync } from 'fs';
10
+ const program = new Command();
11
+ const configManager = new ConfigManager();
12
+ program
13
+ .name('ivan')
14
+ .description('Ivan - A coding orchestration agent CLI')
15
+ .version('1.0.0');
16
+ program
17
+ .command('reconfigure')
18
+ .description('Reconfigure Ivan settings')
19
+ .action(async () => {
20
+ await configManager.reconfigure();
21
+ });
22
+ program
23
+ .command('config-tools')
24
+ .description('Configure allowed tools for the current repository')
25
+ .action(async () => {
26
+ const repoPath = process.cwd();
27
+ await configManager.promptForRepoAllowedTools(repoPath);
28
+ });
29
+ program
30
+ .command('edit-repo-instructions')
31
+ .description('Set or update repository-specific instructions')
32
+ .action(async () => {
33
+ const repoPath = process.cwd();
34
+ await configManager.promptForRepoInstructions(repoPath);
35
+ });
36
+ program
37
+ .command('choose-model')
38
+ .description('Configure which Claude model to use for code tasks')
39
+ .action(async () => {
40
+ await configManager.promptForModel();
41
+ });
42
+ program
43
+ .command('configure-executor')
44
+ .description('Configure how to run Claude Code (SDK or CLI)')
45
+ .action(async () => {
46
+ await configManager.promptForExecutorType();
47
+ });
48
+ program
49
+ .command('show-config')
50
+ .description('Show configuration for the current repository')
51
+ .action(async () => {
52
+ const repoPath = process.cwd();
53
+ const config = configManager.getConfig();
54
+ if (!config) {
55
+ console.log(chalk.red('❌ No configuration found'));
56
+ console.log(chalk.yellow('Run "ivan reconfigure" to set up Ivan'));
57
+ return;
58
+ }
59
+ console.log(chalk.blue.bold('📋 Repository Configuration'));
60
+ console.log(chalk.gray(`Repository: ${repoPath}`));
61
+ console.log('');
62
+ const allowedTools = await configManager.getRepoAllowedTools(repoPath);
63
+ const instructions = await configManager.getRepoInstructions(repoPath);
64
+ console.log(chalk.cyan('Allowed Tools:'));
65
+ if (allowedTools) {
66
+ console.log(' ' + allowedTools.join(', '));
67
+ }
68
+ else {
69
+ console.log(chalk.gray(' [*] (all tools allowed - default)'));
70
+ }
71
+ console.log('');
72
+ console.log(chalk.cyan('Repository Instructions:'));
73
+ if (instructions) {
74
+ console.log(' ' + instructions.split('\n').join('\n '));
75
+ }
76
+ else {
77
+ console.log(chalk.gray(' (none configured)'));
78
+ }
79
+ console.log('');
80
+ console.log(chalk.cyan('Claude Model:'));
81
+ const model = config.claudeModel || 'claude-3-5-sonnet-latest';
82
+ console.log(' ' + model);
83
+ console.log('');
84
+ console.log(chalk.cyan('Executor Type:'));
85
+ const executorType = config.executorType || 'sdk';
86
+ console.log(' ' + executorType.toUpperCase());
87
+ });
88
+ program
89
+ .command('web')
90
+ .description('Start web server to view jobs and tasks in browser')
91
+ .option('-p, --port <port>', 'Port number for web server', '3000')
92
+ .action(async (options) => {
93
+ await runMigrations();
94
+ const port = parseInt(options.port);
95
+ const webServer = new WebServer(port);
96
+ // Store PID for stop command
97
+ const fs = await import('fs');
98
+ const path = await import('path');
99
+ const os = await import('os');
100
+ const pidFile = path.join(os.tmpdir(), `ivan-web-server-${port}.pid`);
101
+ fs.writeFileSync(pidFile, process.pid.toString());
102
+ console.log(chalk.blue('🚀 Starting Ivan web server...'));
103
+ console.log('');
104
+ await webServer.start();
105
+ console.log(chalk.green('✅ Web server started successfully!'));
106
+ console.log(chalk.cyan(`📱 Open http://localhost:${port} in your browser`));
107
+ console.log(chalk.gray(`📝 Server PID: ${process.pid}`));
108
+ console.log('');
109
+ console.log(chalk.gray('Press Ctrl+C or run "ivan web-stop" to stop the server'));
110
+ // Handle graceful shutdown
111
+ const cleanup = async () => {
112
+ console.log('');
113
+ console.log(chalk.yellow('🛑 Shutting down web server...'));
114
+ try {
115
+ fs.unlinkSync(pidFile);
116
+ }
117
+ catch (e) {
118
+ // Ignore error if file doesn't exist
119
+ }
120
+ await webServer.close();
121
+ process.exit(0);
122
+ };
123
+ process.on('SIGINT', cleanup);
124
+ process.on('SIGTERM', cleanup);
125
+ });
126
+ program
127
+ .command('address')
128
+ .description('Address open PRs with unaddressed comments or failing checks')
129
+ .argument('[pr-number]', 'Optional PR number to address')
130
+ .option('--from-user <username>', 'Filter PRs by author GitHub username')
131
+ .action(async (prNumber, options) => {
132
+ const wasConfigured = await checkConfiguration();
133
+ if (wasConfigured) {
134
+ console.log('');
135
+ console.log(chalk.cyan('Run "ivan address" again to address PR issues.'));
136
+ return;
137
+ }
138
+ await runMigrations();
139
+ const addressExecutor = new AddressExecutor();
140
+ await addressExecutor.executeWorkflow(prNumber ? parseInt(prNumber) : undefined, options?.fromUser);
141
+ });
142
+ program
143
+ .command('web-stop')
144
+ .description('Stop the running web server')
145
+ .option('-p, --port <port>', 'Port number of web server to stop', '3000')
146
+ .action(async (options) => {
147
+ const fs = await import('fs');
148
+ const path = await import('path');
149
+ const os = await import('os');
150
+ const port = parseInt(options.port);
151
+ const pidFile = path.join(os.tmpdir(), `ivan-web-server-${port}.pid`);
152
+ try {
153
+ if (!fs.existsSync(pidFile)) {
154
+ console.log(chalk.yellow(`⚠️ No web server found running on port ${port}`));
155
+ return;
156
+ }
157
+ const pidStr = fs.readFileSync(pidFile, 'utf8').trim();
158
+ const pid = parseInt(pidStr);
159
+ console.log(chalk.blue(`🛑 Stopping web server on port ${port} (PID: ${pid})...`));
160
+ // Try to kill the process
161
+ try {
162
+ process.kill(pid, 'SIGTERM');
163
+ // Wait a moment for graceful shutdown
164
+ await new Promise(resolve => setTimeout(resolve, 1000));
165
+ // Check if process still exists
166
+ try {
167
+ process.kill(pid, 0); // Signal 0 just checks if process exists
168
+ console.log(chalk.yellow('Process still running, sending SIGKILL...'));
169
+ process.kill(pid, 'SIGKILL');
170
+ }
171
+ catch (e) {
172
+ // Process already terminated
173
+ }
174
+ // Clean up PID file
175
+ fs.unlinkSync(pidFile);
176
+ console.log(chalk.green('✅ Web server stopped successfully!'));
177
+ }
178
+ catch (error) {
179
+ if (error.code === 'ESRCH') {
180
+ console.log(chalk.yellow('⚠️ Process no longer exists, cleaning up...'));
181
+ fs.unlinkSync(pidFile);
182
+ }
183
+ else {
184
+ throw error;
185
+ }
186
+ }
187
+ }
188
+ catch (error) {
189
+ console.error(chalk.red('❌ Failed to stop web server:'), error);
190
+ process.exit(1);
191
+ }
192
+ });
193
+ async function checkConfiguration() {
194
+ if (!configManager.isConfigured()) {
195
+ console.log(chalk.yellow('⚠️ Ivan is not configured yet.'));
196
+ console.log('');
197
+ await configManager.setup();
198
+ return true;
199
+ }
200
+ const config = configManager.getConfig();
201
+ if (!config) {
202
+ console.log(chalk.red('❌ Configuration file is corrupted.'));
203
+ console.log(chalk.yellow('Running setup again...'));
204
+ console.log('');
205
+ await configManager.setup();
206
+ return true;
207
+ }
208
+ return false;
209
+ }
210
+ async function runMigrations() {
211
+ const dbManager = new DatabaseManager();
212
+ try {
213
+ await dbManager.runMigrations();
214
+ }
215
+ finally {
216
+ dbManager.close();
217
+ }
218
+ }
219
+ async function runNonInteractive(configPath) {
220
+ try {
221
+ // Read and parse config file
222
+ const configContent = readFileSync(configPath, 'utf-8');
223
+ const config = JSON.parse(configContent);
224
+ // Validate config
225
+ if (!config.tasks || !Array.isArray(config.tasks) || config.tasks.length === 0) {
226
+ throw new Error('Config must have a "tasks" array with at least one task');
227
+ }
228
+ console.log(chalk.blue.bold('🤖 Running in non-interactive mode'));
229
+ console.log(chalk.gray(`Config: ${configPath}`));
230
+ console.log('');
231
+ // Check configuration
232
+ const wasConfigured = await checkConfiguration();
233
+ if (wasConfigured) {
234
+ throw new Error('Ivan needs to be configured. Please run "ivan reconfigure" first.');
235
+ }
236
+ await runMigrations();
237
+ // Change working directory if specified
238
+ if (config.workingDir) {
239
+ process.chdir(config.workingDir);
240
+ console.log(chalk.blue(`📂 Changed to directory: ${config.workingDir}`));
241
+ }
242
+ const taskExecutor = new TaskExecutor();
243
+ await taskExecutor.executeNonInteractiveWorkflow(config);
244
+ console.log('');
245
+ console.log(chalk.green.bold('✅ Non-interactive execution completed successfully!'));
246
+ }
247
+ catch (error) {
248
+ console.error(chalk.red.bold('❌ Non-interactive execution failed:'), error);
249
+ throw error;
250
+ }
251
+ }
252
+ async function main() {
253
+ try {
254
+ const args = process.argv.slice(2);
255
+ // Check for -c/--config flag
256
+ const configFlagIndex = args.findIndex(arg => arg === '-c' || arg === '--config');
257
+ if (configFlagIndex !== -1 && args[configFlagIndex + 1]) {
258
+ const configPath = args[configFlagIndex + 1];
259
+ await runNonInteractive(configPath);
260
+ return;
261
+ }
262
+ if (args.length === 0 || (args.length === 1 && !['reconfigure', 'config-tools', 'edit-repo-instructions', 'show-config', 'choose-model', 'configure-executor', 'web', 'web-stop', 'address', '--help', '-h', '--version', '-V'].includes(args[0]))) {
263
+ const wasConfigured = await checkConfiguration();
264
+ if (wasConfigured) {
265
+ console.log('');
266
+ console.log(chalk.cyan('Run "ivan" again to start working on tasks.'));
267
+ return;
268
+ }
269
+ await runMigrations();
270
+ const taskExecutor = new TaskExecutor();
271
+ await taskExecutor.executeWorkflow();
272
+ return;
273
+ }
274
+ await program.parseAsync();
275
+ }
276
+ catch (error) {
277
+ console.error(chalk.red('Error:'), error);
278
+ process.exit(1);
279
+ }
280
+ }
281
+ main().catch((error) => {
282
+ console.error(chalk.red('Unexpected error:'), error);
283
+ process.exit(1);
284
+ });
285
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=task-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/scripts/task-executor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env node
2
+ import { exec } from 'child_process';
3
+ import { promisify } from 'util';
4
+ import * as fs from 'fs';
5
+ import { Kysely, SqliteDialect } from 'kysely';
6
+ import Database from 'better-sqlite3';
7
+ import OpenAI from 'openai';
8
+ const execAsync = promisify(exec);
9
+ async function executeCommand(command) {
10
+ try {
11
+ const { stdout, stderr } = await execAsync(command);
12
+ return { stdout, stderr };
13
+ }
14
+ catch (error) {
15
+ console.error(`Command failed: ${command}`);
16
+ console.error(error);
17
+ throw error;
18
+ }
19
+ }
20
+ async function generateCommitMessage(changes) {
21
+ const apiKey = process.env.OPENAI_API_KEY;
22
+ if (!apiKey) {
23
+ console.warn('OpenAI API key not provided, using default commit message');
24
+ return `feat: complete task ${process.env.TASK_TITLE}`;
25
+ }
26
+ const openai = new OpenAI({
27
+ apiKey: apiKey
28
+ });
29
+ const prompt = `Based on the following git diff, generate a concise and meaningful commit message.
30
+ The message should follow conventional commit format (feat:, fix:, docs:, etc.) and be under 72 characters.
31
+ Respond with ONLY the commit message, no other text.
32
+
33
+ Changes:
34
+ ${changes.substring(0, 2000)}`;
35
+ try {
36
+ const completion = await openai.chat.completions.create({
37
+ model: 'gpt-4',
38
+ messages: [
39
+ {
40
+ role: 'system',
41
+ content: 'You are a helpful assistant that generates clear, concise git commit messages.'
42
+ },
43
+ {
44
+ role: 'user',
45
+ content: prompt
46
+ }
47
+ ],
48
+ temperature: 0.3,
49
+ max_tokens: 100
50
+ });
51
+ const message = completion.choices[0]?.message?.content?.trim();
52
+ return message || `feat: complete task ${process.env.TASK_TITLE}`;
53
+ }
54
+ catch (error) {
55
+ console.error('Failed to generate commit message:', error);
56
+ return `feat: complete task ${process.env.TASK_TITLE}`;
57
+ }
58
+ }
59
+ async function main() {
60
+ const env = process.env;
61
+ console.log('\n📦 Task Executor Starting');
62
+ console.log(`Task: ${env.TASK_TITLE}`);
63
+ console.log(`Description: ${env.TASK_DESCRIPTION}\n`);
64
+ try {
65
+ // Clone repository
66
+ console.log('📥 Cloning repository...');
67
+ await executeCommand(`git clone ${env.REPOSITORY} /workspace/repo`);
68
+ process.chdir('/workspace/repo');
69
+ // Create and checkout branch
70
+ console.log(`🌿 Creating branch: ${env.BRANCH_NAME}`);
71
+ await executeCommand(`git checkout -b ${env.BRANCH_NAME}`);
72
+ // Execute Claude Code with the task
73
+ console.log('🤖 Running Claude Code...');
74
+ const claudeCommand = `echo '${env.TASK_DESCRIPTION.replace(/'/g, "'\\''")}' | claude --dangerously-skip-permissions`;
75
+ await executeCommand(claudeCommand);
76
+ // Check for changes
77
+ const { stdout: statusOutput } = await executeCommand('git status --porcelain');
78
+ if (statusOutput.trim()) {
79
+ console.log('📝 Changes detected, preparing commit...');
80
+ // Add all changes
81
+ await executeCommand('git add -A');
82
+ // Get diff for commit message
83
+ const { stdout: diffOutput } = await executeCommand('git diff --cached');
84
+ // Generate commit message
85
+ console.log('✍️ Generating commit message...');
86
+ const commitMessage = await generateCommitMessage(diffOutput);
87
+ // Commit changes
88
+ console.log(`💾 Committing: ${commitMessage}`);
89
+ await executeCommand(`git commit -m "${commitMessage}"`);
90
+ console.log('✅ Task completed successfully!');
91
+ }
92
+ else {
93
+ console.log('ℹ️ No changes were made by Claude Code');
94
+ }
95
+ // Update task status in database
96
+ if (env.IVAN_DB_PATH && fs.existsSync(env.IVAN_DB_PATH)) {
97
+ const sqlite = new Database(env.IVAN_DB_PATH);
98
+ const db = new Kysely({
99
+ dialect: new SqliteDialect({
100
+ database: sqlite
101
+ })
102
+ });
103
+ await db
104
+ .updateTable('tasks')
105
+ .set({
106
+ status: 'completed',
107
+ completed_at: new Date().toISOString(),
108
+ updated_at: new Date().toISOString()
109
+ })
110
+ .where('id', '=', parseInt(env.TASK_ID))
111
+ .execute();
112
+ await db.destroy();
113
+ }
114
+ }
115
+ catch (error) {
116
+ console.error('❌ Task execution failed:', error);
117
+ // Update task status to failed
118
+ if (env.IVAN_DB_PATH && fs.existsSync(env.IVAN_DB_PATH)) {
119
+ const sqlite = new Database(env.IVAN_DB_PATH);
120
+ const db = new Kysely({
121
+ dialect: new SqliteDialect({
122
+ database: sqlite
123
+ })
124
+ });
125
+ await db
126
+ .updateTable('tasks')
127
+ .set({
128
+ status: 'failed',
129
+ updated_at: new Date().toISOString()
130
+ })
131
+ .where('id', '=', parseInt(env.TASK_ID))
132
+ .execute();
133
+ await db.destroy();
134
+ }
135
+ process.exit(1);
136
+ }
137
+ }
138
+ main().catch(console.error);
139
+ //# sourceMappingURL=task-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-executor.js","sourceRoot":"","sources":["../../src/scripts/task-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=task-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-planner.d.ts","sourceRoot":"","sources":["../../src/scripts/task-planner.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env node
2
+ import { spawn } from 'child_process';
3
+ import { exec } from 'child_process';
4
+ import { promisify } from 'util';
5
+ const execAsync = promisify(exec);
6
+ async function executeCommand(command) {
7
+ try {
8
+ const { stdout, stderr } = await execAsync(command);
9
+ return { stdout, stderr };
10
+ }
11
+ catch (error) {
12
+ console.error(`Command failed: ${command}`);
13
+ console.error(error);
14
+ throw error;
15
+ }
16
+ }
17
+ async function main() {
18
+ const env = process.env;
19
+ console.log('📋 Task Planner Starting');
20
+ console.log(`Request: ${env.USER_REQUEST}\n`);
21
+ try {
22
+ // Clone repository
23
+ console.log('📥 Cloning repository...');
24
+ await executeCommand(`git clone ${env.REPOSITORY} /workspace/repo`);
25
+ process.chdir('/workspace/repo');
26
+ const prompt = 'Say the word "maximum"';
27
+ console.log('🤔 Planning tasks with Claude...');
28
+ // Use spawn to call Claude with real-time output
29
+ const claudeProcess = spawn('claude', [
30
+ '-p',
31
+ `"${prompt}"`,
32
+ '--output-format',
33
+ 'json',
34
+ '--permission-mode',
35
+ 'plan'
36
+ ]);
37
+ let stdout = '';
38
+ let stderr = '';
39
+ claudeProcess.stdout.on('data', (data) => {
40
+ const chunk = data.toString();
41
+ stdout += chunk;
42
+ process.stdout.write(chunk);
43
+ });
44
+ claudeProcess.stderr.on('data', (data) => {
45
+ const chunk = data.toString();
46
+ stderr += chunk;
47
+ process.stderr.write(chunk);
48
+ });
49
+ await new Promise((resolve, reject) => {
50
+ claudeProcess.on('close', (code) => {
51
+ if (code !== 0) {
52
+ reject(new Error(`Claude CLI exited with code ${code}: ${stderr}`));
53
+ }
54
+ else {
55
+ resolve();
56
+ }
57
+ });
58
+ claudeProcess.on('error', (error) => {
59
+ reject(new Error(`Failed to start Claude CLI: ${error}`));
60
+ });
61
+ });
62
+ // Parse the Claude CLI response
63
+ const claudeResponse = JSON.parse(stdout);
64
+ // Extract the JSON from the result field (may be wrapped in ```json blocks)
65
+ let resultContent = claudeResponse.result;
66
+ // Remove markdown code blocks if present
67
+ resultContent = resultContent.replace(/^```json\s*/, '').replace(/\s*```$/, '');
68
+ const response = JSON.parse(resultContent);
69
+ console.log(`✓ Planned ${response.tasks.length} tasks`);
70
+ // Output the result as JSON for the parent process to read
71
+ console.log('TASK_PLAN_START');
72
+ console.log(JSON.stringify(response));
73
+ console.log('TASK_PLAN_END');
74
+ }
75
+ catch (error) {
76
+ console.error('❌ Task planning failed:', error);
77
+ process.exit(1);
78
+ }
79
+ }
80
+ main().catch(console.error);
81
+ //# sourceMappingURL=task-planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-planner.js","sourceRoot":"","sources":["../../src/scripts/task-planner.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAiBlC,KAAK,UAAU,cAAc,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAA4B,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,mBAAmB;QACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,cAAc,CAAC,aAAa,GAAG,CAAC,UAAU,kBAAkB,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,wBAAwB,CAAC;QAExC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAEhD,iDAAiD;QACjD,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE;YACpC,IAAI;YACJ,IAAI,MAAM,GAAG;YACb,iBAAiB;YACjB,MAAM;YACN,mBAAmB;YACnB,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;gBACtE,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,gCAAgC;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE1C,4EAA4E;QAC5E,IAAI,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC;QAE1C,yCAAyC;QACzC,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAEhF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAqB,CAAC;QAE/D,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;QAExD,2DAA2D;QAC3D,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare class AddressExecutor {
2
+ private jobManager;
3
+ private prService;
4
+ private repositoryManager;
5
+ private gitManager;
6
+ private claudeExecutor;
7
+ private configManager;
8
+ private workingDir;
9
+ constructor();
10
+ private getClaudeExecutor;
11
+ executeWorkflow(specificPrNumber?: number, fromUser?: string): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=address-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address-executor.d.ts","sourceRoot":"","sources":["../../src/services/address-executor.ts"],"names":[],"mappings":"AAYA,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAAS;;IAU3B,OAAO,CAAC,iBAAiB;IAOnB,eAAe,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgMnF"}