@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.
- package/README.md +412 -0
- package/dist/agent.d.ts +11 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +48 -0
- package/dist/agent.js.map +1 -0
- package/dist/config/config.d.ts +20 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +187 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config.d.ts +46 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +414 -0
- package/dist/config.js.map +1 -0
- package/dist/database/database.d.ts +12 -0
- package/dist/database/database.d.ts.map +1 -0
- package/dist/database/database.js +45 -0
- package/dist/database/database.js.map +1 -0
- package/dist/database/migration.d.ts +11 -0
- package/dist/database/migration.d.ts.map +1 -0
- package/dist/database/migration.js +64 -0
- package/dist/database/migration.js.map +1 -0
- package/dist/database/migrations/001_create_jobs_table.d.ts +3 -0
- package/dist/database/migrations/001_create_jobs_table.d.ts.map +1 -0
- package/dist/database/migrations/001_create_jobs_table.js +14 -0
- package/dist/database/migrations/001_create_jobs_table.js.map +1 -0
- package/dist/database/migrations/001_initial_schema.d.ts +3 -0
- package/dist/database/migrations/001_initial_schema.d.ts.map +1 -0
- package/dist/database/migrations/001_initial_schema.js +66 -0
- package/dist/database/migrations/001_initial_schema.js.map +1 -0
- package/dist/database/migrations/002_create_tasks_table.d.ts +3 -0
- package/dist/database/migrations/002_create_tasks_table.d.ts.map +1 -0
- package/dist/database/migrations/002_create_tasks_table.js +16 -0
- package/dist/database/migrations/002_create_tasks_table.js.map +1 -0
- package/dist/database/migrations/003_add_log_to_tasks.d.ts +3 -0
- package/dist/database/migrations/003_add_log_to_tasks.d.ts.map +1 -0
- package/dist/database/migrations/003_add_log_to_tasks.js +11 -0
- package/dist/database/migrations/003_add_log_to_tasks.js.map +1 -0
- package/dist/database/migrations/004_add_branch_to_tasks.d.ts +3 -0
- package/dist/database/migrations/004_add_branch_to_tasks.d.ts.map +1 -0
- package/dist/database/migrations/004_add_branch_to_tasks.js +11 -0
- package/dist/database/migrations/004_add_branch_to_tasks.js.map +1 -0
- package/dist/database/migrations/005_add_type_to_tasks.d.ts +3 -0
- package/dist/database/migrations/005_add_type_to_tasks.d.ts.map +1 -0
- package/dist/database/migrations/005_add_type_to_tasks.js +11 -0
- package/dist/database/migrations/005_add_type_to_tasks.js.map +1 -0
- package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.d.ts +3 -0
- package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.d.ts.map +1 -0
- package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.js +15 -0
- package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.js.map +1 -0
- package/dist/database/migrations/006_add_comment_url_to_tasks.d.ts +3 -0
- package/dist/database/migrations/006_add_comment_url_to_tasks.d.ts.map +1 -0
- package/dist/database/migrations/006_add_comment_url_to_tasks.js +14 -0
- package/dist/database/migrations/006_add_comment_url_to_tasks.js.map +1 -0
- package/dist/database/migrations/007_add_commit_to_tasks.d.ts +3 -0
- package/dist/database/migrations/007_add_commit_to_tasks.d.ts.map +1 -0
- package/dist/database/migrations/007_add_commit_to_tasks.js +13 -0
- package/dist/database/migrations/007_add_commit_to_tasks.js.map +1 -0
- package/dist/database/migrations/008_add_lint_and_test_task_type.d.ts +3 -0
- package/dist/database/migrations/008_add_lint_and_test_task_type.d.ts.map +1 -0
- package/dist/database/migrations/008_add_lint_and_test_task_type.js +42 -0
- package/dist/database/migrations/008_add_lint_and_test_task_type.js.map +1 -0
- package/dist/database/migrations/index.d.ts +3 -0
- package/dist/database/migrations/index.d.ts.map +1 -0
- package/dist/database/migrations/index.js +19 -0
- package/dist/database/migrations/index.js.map +1 -0
- package/dist/database/types.d.ts +34 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +2 -0
- package/dist/database/types.js.map +1 -0
- package/dist/database.d.ts +13 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +32 -0
- package/dist/database.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +285 -0
- package/dist/index.js.map +1 -0
- package/dist/scripts/task-executor.d.ts +3 -0
- package/dist/scripts/task-executor.d.ts.map +1 -0
- package/dist/scripts/task-executor.js +139 -0
- package/dist/scripts/task-executor.js.map +1 -0
- package/dist/scripts/task-planner.d.ts +3 -0
- package/dist/scripts/task-planner.d.ts.map +1 -0
- package/dist/scripts/task-planner.js +81 -0
- package/dist/scripts/task-planner.js.map +1 -0
- package/dist/services/address-executor.d.ts +13 -0
- package/dist/services/address-executor.d.ts.map +1 -0
- package/dist/services/address-executor.js +202 -0
- package/dist/services/address-executor.js.map +1 -0
- package/dist/services/address-task-executor.d.ts +19 -0
- package/dist/services/address-task-executor.d.ts.map +1 -0
- package/dist/services/address-task-executor.js +736 -0
- package/dist/services/address-task-executor.js.map +1 -0
- package/dist/services/claude-cli-executor.d.ts +14 -0
- package/dist/services/claude-cli-executor.d.ts.map +1 -0
- package/dist/services/claude-cli-executor.js +241 -0
- package/dist/services/claude-cli-executor.js.map +1 -0
- package/dist/services/claude-executor.d.ts +14 -0
- package/dist/services/claude-executor.d.ts.map +1 -0
- package/dist/services/claude-executor.js +274 -0
- package/dist/services/claude-executor.js.map +1 -0
- package/dist/services/claude-planner.d.ts +15 -0
- package/dist/services/claude-planner.d.ts.map +1 -0
- package/dist/services/claude-planner.js +107 -0
- package/dist/services/claude-planner.js.map +1 -0
- package/dist/services/docker-orchestrator.d.ts +11 -0
- package/dist/services/docker-orchestrator.d.ts.map +1 -0
- package/dist/services/docker-orchestrator.js +85 -0
- package/dist/services/docker-orchestrator.js.map +1 -0
- package/dist/services/executor-factory.d.ts +14 -0
- package/dist/services/executor-factory.d.ts.map +1 -0
- package/dist/services/executor-factory.js +14 -0
- package/dist/services/executor-factory.js.map +1 -0
- package/dist/services/git-manager.d.ts +36 -0
- package/dist/services/git-manager.d.ts.map +1 -0
- package/dist/services/git-manager.js +728 -0
- package/dist/services/git-manager.js.map +1 -0
- package/dist/services/index.d.ts +9 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +9 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/job-manager.d.ts +30 -0
- package/dist/services/job-manager.d.ts.map +1 -0
- package/dist/services/job-manager.js +337 -0
- package/dist/services/job-manager.js.map +1 -0
- package/dist/services/openai-service.d.ts +14 -0
- package/dist/services/openai-service.d.ts.map +1 -0
- package/dist/services/openai-service.js +186 -0
- package/dist/services/openai-service.js.map +1 -0
- package/dist/services/pr-service.d.ts +31 -0
- package/dist/services/pr-service.d.ts.map +1 -0
- package/dist/services/pr-service.js +291 -0
- package/dist/services/pr-service.js.map +1 -0
- package/dist/services/repository-manager.d.ts +12 -0
- package/dist/services/repository-manager.d.ts.map +1 -0
- package/dist/services/repository-manager.js +101 -0
- package/dist/services/repository-manager.js.map +1 -0
- package/dist/services/task-executor.d.ts +20 -0
- package/dist/services/task-executor.d.ts.map +1 -0
- package/dist/services/task-executor.js +717 -0
- package/dist/services/task-executor.js.map +1 -0
- package/dist/types/non-interactive-config.d.ts +28 -0
- package/dist/types/non-interactive-config.d.ts.map +1 -0
- package/dist/types/non-interactive-config.js +2 -0
- package/dist/types/non-interactive-config.js.map +1 -0
- package/dist/web-server.d.ts +16 -0
- package/dist/web-server.d.ts.map +1 -0
- package/dist/web-server.js +488 -0
- package/dist/web-server.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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":"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"}
|
|
@@ -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"}
|