@ariso-ai/ivan 1.0.4 ā 1.0.5
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 +7 -21
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +43 -1
- package/dist/config.js.map +1 -1
- package/dist/database/migrations/009_create_memory_tables.d.ts +3 -0
- package/dist/database/migrations/009_create_memory_tables.d.ts.map +1 -0
- package/dist/database/migrations/009_create_memory_tables.js +35 -0
- package/dist/database/migrations/009_create_memory_tables.js.map +1 -0
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/services/address-task-executor.d.ts.map +1 -1
- package/dist/services/address-task-executor.js +5 -3
- package/dist/services/address-task-executor.js.map +1 -1
- package/dist/services/embedding-service.d.ts +12 -0
- package/dist/services/embedding-service.d.ts.map +1 -0
- package/dist/services/embedding-service.js +51 -0
- package/dist/services/embedding-service.js.map +1 -0
- package/dist/services/git-manager.d.ts +1 -0
- package/dist/services/git-manager.d.ts.map +1 -1
- package/dist/services/git-manager.js +10 -4
- package/dist/services/git-manager.js.map +1 -1
- package/dist/services/job-manager.d.ts +0 -1
- package/dist/services/job-manager.d.ts.map +1 -1
- package/dist/services/job-manager.js +0 -9
- package/dist/services/job-manager.js.map +1 -1
- package/dist/services/memory-service.d.ts +26 -0
- package/dist/services/memory-service.d.ts.map +1 -0
- package/dist/services/memory-service.js +128 -0
- package/dist/services/memory-service.js.map +1 -0
- package/dist/services/task-executor.d.ts.map +1 -1
- package/dist/services/task-executor.js +3 -7
- package/dist/services/task-executor.js.map +1 -1
- package/package.json +2 -2
- package/dist/agent.d.ts +0 -11
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -48
- package/dist/agent.js.map +0 -1
- package/dist/config/config.d.ts +0 -20
- package/dist/config/config.d.ts.map +0 -1
- package/dist/config/config.js +0 -187
- package/dist/config/config.js.map +0 -1
- package/dist/database/database.d.ts +0 -12
- package/dist/database/database.d.ts.map +0 -1
- package/dist/database/database.js +0 -45
- package/dist/database/database.js.map +0 -1
- package/dist/database/migrations/001_initial_schema.d.ts +0 -3
- package/dist/database/migrations/001_initial_schema.d.ts.map +0 -1
- package/dist/database/migrations/001_initial_schema.js +0 -66
- package/dist/database/migrations/001_initial_schema.js.map +0 -1
- package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.d.ts +0 -3
- package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.d.ts.map +0 -1
- package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.js +0 -15
- package/dist/database/migrations/006_add_comment_url_and_commit_to_tasks.js.map +0 -1
- package/dist/scripts/task-executor.d.ts +0 -3
- package/dist/scripts/task-executor.d.ts.map +0 -1
- package/dist/scripts/task-executor.js +0 -139
- package/dist/scripts/task-executor.js.map +0 -1
- package/dist/scripts/task-planner.d.ts +0 -3
- package/dist/scripts/task-planner.d.ts.map +0 -1
- package/dist/scripts/task-planner.js +0 -81
- package/dist/scripts/task-planner.js.map +0 -1
- package/dist/services/claude-planner.d.ts +0 -15
- package/dist/services/claude-planner.d.ts.map +0 -1
- package/dist/services/claude-planner.js +0 -107
- package/dist/services/claude-planner.js.map +0 -1
- package/dist/services/docker-orchestrator.d.ts +0 -11
- package/dist/services/docker-orchestrator.d.ts.map +0 -1
- package/dist/services/docker-orchestrator.js +0 -85
- package/dist/services/docker-orchestrator.js.map +0 -1
package/dist/agent.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { IvanConfig } from './config/config.js';
|
|
2
|
-
import { DatabaseManager } from './database/database.js';
|
|
3
|
-
export declare class OrchestrationAgent {
|
|
4
|
-
private config;
|
|
5
|
-
private dbManager;
|
|
6
|
-
private claudePlanner;
|
|
7
|
-
private jobManager;
|
|
8
|
-
constructor(config: IvanConfig, dbManager: DatabaseManager);
|
|
9
|
-
executeTask(task: string): Promise<void>;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,UAAU,CAAa;gBAEnB,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe;IAO7C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA8CtD"}
|
package/dist/agent.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { ClaudePlannerService } from './services/claude-planner.js';
|
|
2
|
-
import { JobManager } from './services/job-manager.js';
|
|
3
|
-
import { DockerOrchestrator } from './services/docker-orchestrator.js';
|
|
4
|
-
import chalk from 'chalk';
|
|
5
|
-
export class OrchestrationAgent {
|
|
6
|
-
config;
|
|
7
|
-
dbManager;
|
|
8
|
-
claudePlanner;
|
|
9
|
-
jobManager;
|
|
10
|
-
constructor(config, dbManager) {
|
|
11
|
-
this.config = config;
|
|
12
|
-
this.dbManager = dbManager;
|
|
13
|
-
this.claudePlanner = new ClaudePlannerService(config.repository, config.anthropicApiKey);
|
|
14
|
-
this.jobManager = new JobManager(dbManager.getDatabase());
|
|
15
|
-
}
|
|
16
|
-
async executeTask(task) {
|
|
17
|
-
console.log(chalk.gray('\nš Task:'), task);
|
|
18
|
-
console.log(chalk.gray('ā'.repeat(50)));
|
|
19
|
-
try {
|
|
20
|
-
// Step 1: Plan tasks with Claude
|
|
21
|
-
const taskPlan = await this.claudePlanner.planTasks(task);
|
|
22
|
-
// Step 2: Create job and tasks in database
|
|
23
|
-
const jobId = await this.jobManager.createJob(task, `User request: ${task}`, this.config.repository);
|
|
24
|
-
await this.jobManager.createTasks(jobId, taskPlan.tasks);
|
|
25
|
-
// Step 3: Update job status to in_progress
|
|
26
|
-
await this.jobManager.updateJobStatus(jobId, 'in_progress');
|
|
27
|
-
// Step 4: Run tasks in Docker containers
|
|
28
|
-
const orchestrator = new DockerOrchestrator(this.jobManager, this.config.repository, this.config.openAiApiKey);
|
|
29
|
-
await orchestrator.runAllTasks(jobId);
|
|
30
|
-
// Step 5: Update job status to completed
|
|
31
|
-
const tasks = await this.jobManager.getJobTasks(jobId);
|
|
32
|
-
const allCompleted = tasks.every(t => t.status === 'completed');
|
|
33
|
-
if (allCompleted) {
|
|
34
|
-
await this.jobManager.updateJobStatus(jobId, 'completed');
|
|
35
|
-
console.log(chalk.green(`\nā
Job #${jobId} completed successfully!`));
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
await this.jobManager.updateJobStatus(jobId, 'failed');
|
|
39
|
-
console.log(chalk.yellow(`\nā ļø Job #${jobId} completed with some failed tasks`));
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
console.error(chalk.red('\nā Task execution failed:'), error);
|
|
44
|
-
throw error;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=agent.js.map
|
package/dist/agent.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAa;IACnB,SAAS,CAAkB;IAC3B,aAAa,CAAuB;IACpC,UAAU,CAAa;IAE/B,YAAY,MAAkB,EAAE,SAA0B;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QACzF,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,IAAY;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAE1D,2CAA2C;YAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAC3C,IAAI,EACJ,iBAAiB,IAAI,EAAE,EACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CACvB,CAAC;YAEF,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEzD,2CAA2C;YAC3C,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAE5D,yCAAyC;YACzC,MAAM,YAAY,GAAG,IAAI,kBAAkB,CACzC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,YAAY,CACzB,CAAC;YAEF,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAEtC,yCAAyC;YACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;YAEhE,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,KAAK,0BAA0B,CAAC,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,KAAK,mCAAmC,CAAC,CAAC,CAAC;YACpF,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
package/dist/config/config.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { DatabaseManager } from '../database/database.js';
|
|
2
|
-
export interface IvanConfig {
|
|
3
|
-
openAiApiKey: string;
|
|
4
|
-
anthropicApiKey: string;
|
|
5
|
-
repository: string;
|
|
6
|
-
}
|
|
7
|
-
export declare class ConfigManager {
|
|
8
|
-
private configDir;
|
|
9
|
-
private configPath;
|
|
10
|
-
private dbManager;
|
|
11
|
-
constructor();
|
|
12
|
-
initialize(): Promise<IvanConfig>;
|
|
13
|
-
private loadConfig;
|
|
14
|
-
private saveConfig;
|
|
15
|
-
getConfig(): IvanConfig | null;
|
|
16
|
-
getDatabase(): DatabaseManager;
|
|
17
|
-
forceReconfigure(): Promise<IvanConfig>;
|
|
18
|
-
private checkClaudeCodeInstallation;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAkB;;IAQtB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IA2E9C,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,UAAU;IAQX,SAAS,IAAI,UAAU,GAAG,IAAI;IAI9B,WAAW,IAAI,eAAe;IAIxB,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;YAiEtC,2BAA2B;CAyB1C"}
|
package/dist/config/config.js
DELETED
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import * as os from 'os';
|
|
4
|
-
import { exec } from 'child_process';
|
|
5
|
-
import { promisify } from 'util';
|
|
6
|
-
import inquirer from 'inquirer';
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
import { DatabaseManager } from '../database/database.js';
|
|
9
|
-
const execAsync = promisify(exec);
|
|
10
|
-
export class ConfigManager {
|
|
11
|
-
configDir;
|
|
12
|
-
configPath;
|
|
13
|
-
dbManager;
|
|
14
|
-
constructor() {
|
|
15
|
-
this.configDir = path.join(os.homedir(), '.ivan');
|
|
16
|
-
this.configPath = path.join(this.configDir, 'config.json');
|
|
17
|
-
this.dbManager = new DatabaseManager();
|
|
18
|
-
}
|
|
19
|
-
async initialize() {
|
|
20
|
-
await this.dbManager.initialize();
|
|
21
|
-
const existingConfig = this.loadConfig();
|
|
22
|
-
if (existingConfig) {
|
|
23
|
-
console.log(chalk.green('ā Configuration found!'));
|
|
24
|
-
return existingConfig;
|
|
25
|
-
}
|
|
26
|
-
console.log(chalk.cyan('\nš¤ Welcome to Ivan - Your Coding Orchestration Agent\n'));
|
|
27
|
-
console.log(chalk.yellow('Let\'s set up your configuration...\n'));
|
|
28
|
-
await this.checkClaudeCodeInstallation();
|
|
29
|
-
await this.dbManager.initialize();
|
|
30
|
-
const answers = await inquirer.prompt([
|
|
31
|
-
{
|
|
32
|
-
type: 'input',
|
|
33
|
-
name: 'repository',
|
|
34
|
-
message: 'Enter the SSH repository URL (e.g., git@github.com:user/repo.git):',
|
|
35
|
-
validate: (input) => {
|
|
36
|
-
if (!input || input.trim() === '') {
|
|
37
|
-
return 'Repository URL is required';
|
|
38
|
-
}
|
|
39
|
-
const trimmed = input.trim();
|
|
40
|
-
const sshUrlPattern = /^git@[\w.-]+:[\w.-]+\/[\w.-]+\.git$/;
|
|
41
|
-
if (!sshUrlPattern.test(trimmed)) {
|
|
42
|
-
return 'Please enter a valid SSH repository URL (e.g., git@github.com:user/repo.git)';
|
|
43
|
-
}
|
|
44
|
-
return true;
|
|
45
|
-
},
|
|
46
|
-
filter: (input) => input.trim()
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
type: 'password',
|
|
50
|
-
name: 'openAiApiKey',
|
|
51
|
-
message: 'Enter your OpenAI API key (for commit messages):',
|
|
52
|
-
mask: '*',
|
|
53
|
-
validate: (input) => {
|
|
54
|
-
if (!input || input.trim() === '') {
|
|
55
|
-
return 'OpenAI API key is required';
|
|
56
|
-
}
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
type: 'password',
|
|
62
|
-
name: 'anthropicApiKey',
|
|
63
|
-
message: 'Enter your Anthropic API key (for task planning):',
|
|
64
|
-
mask: '*',
|
|
65
|
-
validate: (input) => {
|
|
66
|
-
if (!input || input.trim() === '') {
|
|
67
|
-
return 'Anthropic API key is required';
|
|
68
|
-
}
|
|
69
|
-
return true;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
]);
|
|
73
|
-
const config = {
|
|
74
|
-
repository: answers.repository,
|
|
75
|
-
openAiApiKey: answers.openAiApiKey,
|
|
76
|
-
anthropicApiKey: answers.anthropicApiKey
|
|
77
|
-
};
|
|
78
|
-
this.saveConfig(config);
|
|
79
|
-
console.log(chalk.green('\nā Configuration saved successfully!\n'));
|
|
80
|
-
return config;
|
|
81
|
-
}
|
|
82
|
-
loadConfig() {
|
|
83
|
-
try {
|
|
84
|
-
if (fs.existsSync(this.configPath)) {
|
|
85
|
-
const configData = fs.readFileSync(this.configPath, 'utf-8');
|
|
86
|
-
return JSON.parse(configData);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
console.error(chalk.red('Error loading configuration:'), error);
|
|
91
|
-
}
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
94
|
-
saveConfig(config) {
|
|
95
|
-
if (!fs.existsSync(this.configDir)) {
|
|
96
|
-
fs.mkdirSync(this.configDir, { recursive: true });
|
|
97
|
-
}
|
|
98
|
-
fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2));
|
|
99
|
-
}
|
|
100
|
-
getConfig() {
|
|
101
|
-
return this.loadConfig();
|
|
102
|
-
}
|
|
103
|
-
getDatabase() {
|
|
104
|
-
return this.dbManager;
|
|
105
|
-
}
|
|
106
|
-
async forceReconfigure() {
|
|
107
|
-
console.log(chalk.cyan('\nš§ Reconfiguring Ivan...\n'));
|
|
108
|
-
await this.dbManager.initialize();
|
|
109
|
-
await this.checkClaudeCodeInstallation();
|
|
110
|
-
const answers = await inquirer.prompt([
|
|
111
|
-
{
|
|
112
|
-
type: 'input',
|
|
113
|
-
name: 'repository',
|
|
114
|
-
message: 'Enter the SSH repository URL (e.g., git@github.com:user/repo.git):',
|
|
115
|
-
validate: (input) => {
|
|
116
|
-
if (!input || input.trim() === '') {
|
|
117
|
-
return 'Repository URL is required';
|
|
118
|
-
}
|
|
119
|
-
const trimmed = input.trim();
|
|
120
|
-
const sshUrlPattern = /^git@[\w.-]+:[\w.-]+\/[\w.-]+\.git$/;
|
|
121
|
-
if (!sshUrlPattern.test(trimmed)) {
|
|
122
|
-
return 'Please enter a valid SSH repository URL (e.g., git@github.com:user/repo.git)';
|
|
123
|
-
}
|
|
124
|
-
return true;
|
|
125
|
-
},
|
|
126
|
-
filter: (input) => input.trim()
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
type: 'password',
|
|
130
|
-
name: 'openAiApiKey',
|
|
131
|
-
message: 'Enter your OpenAI API key (for commit messages):',
|
|
132
|
-
mask: '*',
|
|
133
|
-
validate: (input) => {
|
|
134
|
-
if (!input || input.trim() === '') {
|
|
135
|
-
return 'OpenAI API key is required';
|
|
136
|
-
}
|
|
137
|
-
return true;
|
|
138
|
-
}
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
type: 'password',
|
|
142
|
-
name: 'anthropicApiKey',
|
|
143
|
-
message: 'Enter your Anthropic API key (for task planning):',
|
|
144
|
-
mask: '*',
|
|
145
|
-
validate: (input) => {
|
|
146
|
-
if (!input || input.trim() === '') {
|
|
147
|
-
return 'Anthropic API key is required';
|
|
148
|
-
}
|
|
149
|
-
return true;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
]);
|
|
153
|
-
const config = {
|
|
154
|
-
repository: answers.repository,
|
|
155
|
-
openAiApiKey: answers.openAiApiKey,
|
|
156
|
-
anthropicApiKey: answers.anthropicApiKey
|
|
157
|
-
};
|
|
158
|
-
this.saveConfig(config);
|
|
159
|
-
console.log(chalk.green('\nā Configuration updated successfully!\n'));
|
|
160
|
-
return config;
|
|
161
|
-
}
|
|
162
|
-
async checkClaudeCodeInstallation() {
|
|
163
|
-
try {
|
|
164
|
-
console.log(chalk.gray('š Checking for Claude Code installation...'));
|
|
165
|
-
const { stdout } = await execAsync('claude --version');
|
|
166
|
-
console.log(chalk.green('ā Claude Code is installed'));
|
|
167
|
-
console.log(chalk.gray(` Version: ${stdout.trim()}\n`));
|
|
168
|
-
}
|
|
169
|
-
catch {
|
|
170
|
-
console.log(chalk.red('ā Claude Code not found'));
|
|
171
|
-
console.log(chalk.yellow(' Please install Claude Code from: https://docs.anthropic.com/en/docs/claude-code\n'));
|
|
172
|
-
const { continueAnyway } = await inquirer.prompt([
|
|
173
|
-
{
|
|
174
|
-
type: 'confirm',
|
|
175
|
-
name: 'continueAnyway',
|
|
176
|
-
message: 'Continue setup without Claude Code?',
|
|
177
|
-
default: false
|
|
178
|
-
}
|
|
179
|
-
]);
|
|
180
|
-
if (!continueAnyway) {
|
|
181
|
-
console.log(chalk.yellow('\nš Setup cancelled. Install Claude Code and try again.\n'));
|
|
182
|
-
process.exit(0);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Kysely } from 'kysely';
|
|
2
|
-
import { Database as DatabaseSchema } from './types.js';
|
|
3
|
-
export declare class DatabaseManager {
|
|
4
|
-
private db;
|
|
5
|
-
private dbPath;
|
|
6
|
-
constructor();
|
|
7
|
-
initialize(): Promise<void>;
|
|
8
|
-
private runMigrations;
|
|
9
|
-
getDatabase(): Kysely<DatabaseSchema>;
|
|
10
|
-
close(): Promise<void>;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=database.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/database/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,QAAQ,CAAC;AAM/C,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,YAAY,CAAC;AAIxD,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,MAAM,CAAS;;IAmBV,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAY1B,aAAa;IAKpB,WAAW,IAAI,MAAM,CAAC,cAAc,CAAC;IAI/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Kysely, SqliteDialect } from 'kysely';
|
|
2
|
-
import Database from 'better-sqlite3';
|
|
3
|
-
import * as path from 'path';
|
|
4
|
-
import * as fs from 'fs';
|
|
5
|
-
import * as os from 'os';
|
|
6
|
-
import chalk from 'chalk';
|
|
7
|
-
import { MigrationRunner } from './migration.js';
|
|
8
|
-
import { migrations } from './migrations/index.js';
|
|
9
|
-
export class DatabaseManager {
|
|
10
|
-
db;
|
|
11
|
-
dbPath;
|
|
12
|
-
constructor() {
|
|
13
|
-
const ivanDir = path.join(os.homedir(), '.ivan');
|
|
14
|
-
this.dbPath = path.join(ivanDir, 'db.sqlite');
|
|
15
|
-
if (!fs.existsSync(ivanDir)) {
|
|
16
|
-
fs.mkdirSync(ivanDir, { recursive: true });
|
|
17
|
-
}
|
|
18
|
-
const sqlite = new Database(this.dbPath);
|
|
19
|
-
this.db = new Kysely({
|
|
20
|
-
dialect: new SqliteDialect({
|
|
21
|
-
database: sqlite
|
|
22
|
-
})
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
async initialize() {
|
|
26
|
-
console.log(chalk.gray('šļø Initializing database...'));
|
|
27
|
-
const dbExists = fs.existsSync(this.dbPath);
|
|
28
|
-
if (!dbExists) {
|
|
29
|
-
console.log(chalk.gray('š Creating database file...'));
|
|
30
|
-
}
|
|
31
|
-
await this.runMigrations();
|
|
32
|
-
console.log(chalk.green('ā Database initialized'));
|
|
33
|
-
}
|
|
34
|
-
async runMigrations() {
|
|
35
|
-
const migrationRunner = new MigrationRunner(this.db);
|
|
36
|
-
await migrationRunner.runMigrations(migrations);
|
|
37
|
-
}
|
|
38
|
-
getDatabase() {
|
|
39
|
-
return this.db;
|
|
40
|
-
}
|
|
41
|
-
async close() {
|
|
42
|
-
await this.db.destroy();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=database.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/database/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,OAAO,eAAe;IAClB,EAAE,CAAyB;IAC3B,MAAM,CAAS;IAEvB;QACE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAE9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,CAAiB;YACnC,OAAO,EAAE,IAAI,aAAa,CAAC;gBACzB,QAAQ,EAAE,MAAM;aACjB,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAEzD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,eAAe,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"001_initial_schema.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/001_initial_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,aAAa,EAAE,SAuE3B,CAAC"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
export const initialSchema = {
|
|
2
|
-
id: '001_initial_schema',
|
|
3
|
-
name: 'Create initial schema with jobs, tasks, agents, and executions',
|
|
4
|
-
async up(db) {
|
|
5
|
-
await db.schema
|
|
6
|
-
.createTable('jobs')
|
|
7
|
-
.addColumn('id', 'integer', (col) => col.primaryKey().autoIncrement())
|
|
8
|
-
.addColumn('title', 'text', (col) => col.notNull())
|
|
9
|
-
.addColumn('description', 'text')
|
|
10
|
-
.addColumn('status', 'text', (col) => col.notNull().defaultTo('pending'))
|
|
11
|
-
.addColumn('repository', 'text', (col) => col.notNull())
|
|
12
|
-
.addColumn('created_at', 'text', (col) => col.notNull().defaultTo('CURRENT_TIMESTAMP'))
|
|
13
|
-
.addColumn('updated_at', 'text', (col) => col.notNull().defaultTo('CURRENT_TIMESTAMP'))
|
|
14
|
-
.addColumn('completed_at', 'text')
|
|
15
|
-
.execute();
|
|
16
|
-
await db.schema
|
|
17
|
-
.createTable('tasks')
|
|
18
|
-
.addColumn('id', 'integer', (col) => col.primaryKey().autoIncrement())
|
|
19
|
-
.addColumn('job_id', 'integer', (col) => col.notNull().references('jobs.id').onDelete('cascade'))
|
|
20
|
-
.addColumn('title', 'text', (col) => col.notNull())
|
|
21
|
-
.addColumn('description', 'text')
|
|
22
|
-
.addColumn('status', 'text', (col) => col.notNull().defaultTo('pending'))
|
|
23
|
-
.addColumn('order_index', 'integer', (col) => col.notNull().defaultTo(0))
|
|
24
|
-
.addColumn('created_at', 'text', (col) => col.notNull().defaultTo('CURRENT_TIMESTAMP'))
|
|
25
|
-
.addColumn('updated_at', 'text', (col) => col.notNull().defaultTo('CURRENT_TIMESTAMP'))
|
|
26
|
-
.addColumn('completed_at', 'text')
|
|
27
|
-
.execute();
|
|
28
|
-
await db.schema
|
|
29
|
-
.createTable('agents')
|
|
30
|
-
.addColumn('id', 'integer', (col) => col.primaryKey().autoIncrement())
|
|
31
|
-
.addColumn('name', 'text', (col) => col.notNull())
|
|
32
|
-
.addColumn('type', 'text', (col) => col.notNull())
|
|
33
|
-
.addColumn('config', 'text')
|
|
34
|
-
.addColumn('created_at', 'text', (col) => col.notNull().defaultTo('CURRENT_TIMESTAMP'))
|
|
35
|
-
.execute();
|
|
36
|
-
await db.schema
|
|
37
|
-
.createTable('executions')
|
|
38
|
-
.addColumn('id', 'integer', (col) => col.primaryKey().autoIncrement())
|
|
39
|
-
.addColumn('task_id', 'integer', (col) => col.notNull().references('tasks.id').onDelete('cascade'))
|
|
40
|
-
.addColumn('agent_id', 'integer', (col) => col.notNull().references('agents.id'))
|
|
41
|
-
.addColumn('input', 'text', (col) => col.notNull())
|
|
42
|
-
.addColumn('output', 'text')
|
|
43
|
-
.addColumn('status', 'text', (col) => col.notNull().defaultTo('running'))
|
|
44
|
-
.addColumn('started_at', 'text', (col) => col.notNull().defaultTo('CURRENT_TIMESTAMP'))
|
|
45
|
-
.addColumn('completed_at', 'text')
|
|
46
|
-
.addColumn('error_message', 'text')
|
|
47
|
-
.execute();
|
|
48
|
-
await db.schema
|
|
49
|
-
.createIndex('idx_tasks_job_id')
|
|
50
|
-
.on('tasks')
|
|
51
|
-
.column('job_id')
|
|
52
|
-
.execute();
|
|
53
|
-
await db.schema
|
|
54
|
-
.createIndex('idx_executions_task_id')
|
|
55
|
-
.on('executions')
|
|
56
|
-
.column('task_id')
|
|
57
|
-
.execute();
|
|
58
|
-
},
|
|
59
|
-
async down(db) {
|
|
60
|
-
await db.schema.dropTable('executions').execute();
|
|
61
|
-
await db.schema.dropTable('tasks').execute();
|
|
62
|
-
await db.schema.dropTable('agents').execute();
|
|
63
|
-
await db.schema.dropTable('jobs').execute();
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
//# sourceMappingURL=001_initial_schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"001_initial_schema.js","sourceRoot":"","sources":["../../../src/database/migrations/001_initial_schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"006_add_comment_url_and_commit_to_tasks.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/006_add_comment_url_and_commit_to_tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,SAAS,EAAE,SAavB,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export const migration = {
|
|
2
|
-
id: 6,
|
|
3
|
-
name: 'add_comment_url_and_commit_to_tasks',
|
|
4
|
-
up: `
|
|
5
|
-
ALTER TABLE tasks
|
|
6
|
-
ADD COLUMN comment_url TEXT,
|
|
7
|
-
ADD COLUMN commit TEXT
|
|
8
|
-
`,
|
|
9
|
-
down: `
|
|
10
|
-
ALTER TABLE tasks
|
|
11
|
-
DROP COLUMN comment_url,
|
|
12
|
-
DROP COLUMN commit
|
|
13
|
-
`
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=006_add_comment_url_and_commit_to_tasks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"006_add_comment_url_and_commit_to_tasks.js","sourceRoot":"","sources":["../../../src/database/migrations/006_add_comment_url_and_commit_to_tasks.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC,EAAE,EAAE,CAAC;IACL,IAAI,EAAE,qCAAqC;IAC3C,EAAE,EAAE;;;;GAIH;IACD,IAAI,EAAE;;;;GAIL;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/scripts/task-executor.ts"],"names":[],"mappings":""}
|
|
@@ -1,139 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-executor.js","sourceRoot":"","sources":["../../src/scripts/task-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-planner.d.ts","sourceRoot":"","sources":["../../src/scripts/task-planner.ts"],"names":[],"mappings":""}
|