@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-executor.js","sourceRoot":"","sources":["../../src/services/claude-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,MAAM,OAAO,cAAc;IACjB,aAAa,CAAgB;IAErC;QACE,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QAE5C,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,MAAM,CAAC,eAAe,KAAK,EAAE,EAAE,CAAC;YAC9D,yBAAyB;YACzB,MAAM,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;YACnE,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,MAAM,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,eAAuB,EAAE,UAAkB,EAAE,SAAkB;QAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,eAAe,EAAE,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,6CAA6C;YAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAEvD,iEAAiE;YACjE,IAAI,gBAAgB,GAAG,UAAU,CAAC;YAElC,wEAAwE;YACxE,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,OAAO,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1E,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClC,kDAAkD;oBAClD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBACzD,wDAAwD;oBACxD,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;wBACvC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;YAC/D,CAAC;YAED,qEAAqE;YACrE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;YAEpF,yBAAyB;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;YAElD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;YAC3C,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAEjE,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,eAAe,GAAG,EAAE,CAAC;YACzB,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,gBAAgB,GAAG,SAAS,CAAC,CAAC,kCAAkC;YACpE,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;YAEzD,gBAAgB;YAChB,MAAM,eAAe,GAAG,GAAG,EAAE;gBAC3B,eAAe,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC;YACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YAEtC,IAAI,CAAC;gBACH,8BAA8B;gBAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1B,iCAAiC;gBACjC,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,KAAK,CAAC;oBAChC,MAAM,EAAE,eAAe;oBACvB,OAAO,EAAE;wBACP,eAAe,EAAE,eAAe;wBAChC,wDAAwD;wBACxD,GAAG,EAAE,UAAU;wBAEf,yEAAyE;wBACzE,qBAAqB,EAAE,CAAC,UAAU,CAAC;wBAEnC,wCAAwC;wBACxC,kFAAkF;wBAClF,cAAc,EAAE,mBAAmB;wBACnC,YAAY,EAAE,YAAY;wBAC1B,KAAK,EAAE,KAAK;wBACZ,2CAA2C;wBAC3C,MAAM,EAAE,SAAS;qBAClB;iBACF,CAAC,EAAE,CAAC;oBACH,wDAAwD;oBACxD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBACjC,gDAAgD;wBAChD,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;4BAC5B,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gCAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oCAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oCAC1B,eAAe,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;oCACvC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,8CAA8C;gCAC5E,CAAC;qCAAM,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oCACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oCACvD,2BAA2B;oCAC3B,MAAM,QAAQ,GAAG,eAAe,OAAO,CAAC,IAAI,GAAG,CAAC;oCAChD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wCAClB,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;4CAChD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;4CACxC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wCAC1B,eAAe,IAAI,GAAG,QAAQ,KAAK,QAAQ,MAAM,CAAC;oCACpD,CAAC;yCAAM,CAAC;wCACN,eAAe,IAAI,GAAG,QAAQ,MAAM,CAAC;oCACvC,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBAC3C,yCAAyC;wBACzC,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;4BAChE,MAAM,UAAU,GAAG,kBAAkB,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ;gCAC3E,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gCAC/C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;4BACrC,eAAe,IAAI,UAAU,CAAC;4BAC9B,4DAA4D;4BAC5D,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;gCAC3B,MAAM,IAAI,eAAe,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;gCAC3D,eAAe,GAAG,EAAE,CAAC;4BACvB,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACrC,uBAAuB;wBACvB,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;4BACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;4BACtD,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;4BACzC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,2BAA2B;wBAC3D,CAAC;oBACH,CAAC;yBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACrC,qCAAqC;wBACrC,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;4BAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;4BACpE,MAAM,IAAI,oCAAoC,OAAO,CAAC,KAAK,OAAO,CAAC;4BACnE,0DAA0D;4BAC1D,IAAI,YAAY,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gCACtE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;4BACxC,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,IAAI,YAAY,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;wBAC7E,kDAAkD;wBAClD,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;oBACxC,CAAC;gBACH,CAAC;gBAED,6BAA6B;gBAC7B,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC3B,MAAM,IAAI,eAAe,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;gBAC7D,CAAC;gBAED,6BAA6B;gBAC7B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC7B,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YACpD,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,IAAI,EAAE,EAAE,CAAC;QAEzE,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,KAAqC,CAAC;YAElD,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,cAAsB,EAAE,UAAkB;QACpE,IAAI,CAAC;YACH,6CAA6C;YAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAEvD,MAAM,MAAM,GAAG,6FAA6F,cAAc,mTAAmT,CAAC;YAE9a,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAC,CAAC;YAE5D,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;YAEzD,gBAAgB;YAChB,MAAM,eAAe,GAAG,GAAG,EAAE;gBAC3B,eAAe,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4DAA4D,CAAC,CAAC,CAAC;YAC1F,CAAC,CAAC;YACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YAEtC,IAAI,CAAC;gBACH,8BAA8B;gBAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAE1B,yCAAyC;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;gBAElD,qDAAqD;gBACrD,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,KAAK,CAAC;oBAChC,MAAM;oBACN,OAAO,EAAE;wBACP,eAAe;wBACf,YAAY,EAAE,0FAA0F;wBACxG,GAAG,EAAE,UAAU;wBACf,KAAK,EAAE,KAAK;wBACZ,mCAAmC;wBACnC,cAAc,EAAE,MAAM;wBACtB,iDAAiD;qBAClD;iBACF,CAAC,EAAE,CAAC;oBACH,iCAAiC;oBACjC,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBACjC,gDAAgD;wBAChD,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;4BAC5B,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gCAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oCAC5B,8CAA8C;oCAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oCAC1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;gCAC3B,CAAC;qCAAM,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oCACvC,gCAAgC;oCAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gCACzD,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACrC,qCAAqC;wBACrC,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;4BAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC;wBACnF,CAAC;oBACH,CAAC;yBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACrC,uBAAuB;wBACvB,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;4BACxB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;wBAC7B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,6BAA6B;gBAC7B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC7B,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YACpD,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ;iBACnB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAClC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;iBACzC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,8BAA8B;iBACnF,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,iCAAiC;YAEtF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC;YAC9D,OAAO,KAAK,CAAC;QAEf,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,KAAc,CAAC;YAE3B,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,8BAA8B;QAClC,0CAA0C;QAC1C,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface TaskPlan {
|
|
2
|
+
title: string;
|
|
3
|
+
description: string;
|
|
4
|
+
order: number;
|
|
5
|
+
}
|
|
6
|
+
export interface TaskPlanResponse {
|
|
7
|
+
tasks: TaskPlan[];
|
|
8
|
+
}
|
|
9
|
+
export declare class ClaudePlannerService {
|
|
10
|
+
private repository;
|
|
11
|
+
private anthropicApiKey;
|
|
12
|
+
constructor(repository: string, anthropicApiKey: string);
|
|
13
|
+
planTasks(userRequest: string): Promise<TaskPlanResponse>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=claude-planner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-planner.d.ts","sourceRoot":"","sources":["../../src/services/claude-planner.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAS;gBAEpB,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;IAKjD,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+GhE"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { exec, spawn } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import * as os from 'os';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
const execAsync = promisify(exec);
|
|
7
|
+
export class ClaudePlannerService {
|
|
8
|
+
repository;
|
|
9
|
+
anthropicApiKey;
|
|
10
|
+
constructor(repository, anthropicApiKey) {
|
|
11
|
+
this.repository = repository;
|
|
12
|
+
this.anthropicApiKey = anthropicApiKey;
|
|
13
|
+
}
|
|
14
|
+
async planTasks(userRequest) {
|
|
15
|
+
console.log(chalk.gray('š¤ Planning tasks with Claude Code...'));
|
|
16
|
+
try {
|
|
17
|
+
const homeDir = os.homedir();
|
|
18
|
+
const scriptPath = path.join(process.cwd(), 'dist', 'scripts', 'task-planner.js');
|
|
19
|
+
console.log(chalk.gray('Starting planning container...'));
|
|
20
|
+
// Start container in background
|
|
21
|
+
const containerName = `ivan-planner-${Date.now()}`;
|
|
22
|
+
const startCommand = `docker run -d --name ${containerName} \
|
|
23
|
+
-e USER_REQUEST="${userRequest.replace(/"/g, '\\"')}" \
|
|
24
|
+
-e REPOSITORY="${this.repository}" \
|
|
25
|
+
-e HOST_HOME="${homeDir}" \
|
|
26
|
+
-e ANTHROPIC_API_KEY="${this.anthropicApiKey}" \
|
|
27
|
+
-w /workspace \
|
|
28
|
+
node:24-alpine \
|
|
29
|
+
sleep 300`;
|
|
30
|
+
await execAsync(startCommand);
|
|
31
|
+
let stdout = '';
|
|
32
|
+
let stderr = '';
|
|
33
|
+
try {
|
|
34
|
+
// Create app directory and copy scripts to container
|
|
35
|
+
await execAsync(`docker exec ${containerName} mkdir -p /app`);
|
|
36
|
+
await execAsync(`docker cp "${scriptPath}" ${containerName}:/app/task-planner.js`);
|
|
37
|
+
const setupScript = path.join(process.cwd(), 'src', 'scripts', 'setup-container.sh');
|
|
38
|
+
await execAsync(`docker cp "${setupScript}" ${containerName}:/app/setup-container.sh`);
|
|
39
|
+
// Copy SSH and git configs
|
|
40
|
+
await execAsync(`docker exec ${containerName} mkdir -p /root/.ssh /root/.claude/plugins`);
|
|
41
|
+
await execAsync(`docker cp "${homeDir}/.ssh/." ${containerName}:/root/.ssh/`).catch(() => { });
|
|
42
|
+
await execAsync(`docker cp "${homeDir}/.claude/." ${containerName}:/root/.claude/`).catch(() => { });
|
|
43
|
+
await execAsync(`docker cp "${homeDir}/.gitconfig" ${containerName}:/root/.gitconfig`).catch(() => { });
|
|
44
|
+
console.log('running docker');
|
|
45
|
+
// Execute setup and task planning with streaming output
|
|
46
|
+
const dockerProcess = spawn('docker', [
|
|
47
|
+
'exec', containerName, 'sh', '-c',
|
|
48
|
+
'chmod +x /app/setup-container.sh && /app/setup-container.sh && echo "Starting task planner..." && CLAUDE_CONFIG_DIR=/root/.claude node /app/task-planner.js'
|
|
49
|
+
]);
|
|
50
|
+
dockerProcess.stdout.on('data', (data) => {
|
|
51
|
+
const chunk = data.toString();
|
|
52
|
+
stdout += chunk;
|
|
53
|
+
process.stdout.write(chunk);
|
|
54
|
+
});
|
|
55
|
+
dockerProcess.stderr.on('data', (data) => {
|
|
56
|
+
const chunk = data.toString();
|
|
57
|
+
stderr += chunk;
|
|
58
|
+
process.stderr.write(chunk);
|
|
59
|
+
});
|
|
60
|
+
await new Promise((resolve, reject) => {
|
|
61
|
+
dockerProcess.on('close', (code) => {
|
|
62
|
+
if (code !== 0) {
|
|
63
|
+
reject(new Error(`Docker exec exited with code ${code}`));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
resolve();
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
dockerProcess.on('error', (error) => {
|
|
70
|
+
reject(new Error(`Failed to execute docker command: ${error}`));
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
console.log(chalk.gray('=== CONTAINER OUTPUT START ==='));
|
|
74
|
+
console.log(stdout);
|
|
75
|
+
console.log(chalk.gray('=== CONTAINER OUTPUT END ==='));
|
|
76
|
+
if (stderr) {
|
|
77
|
+
console.log(chalk.yellow('=== CONTAINER STDERR START ==='));
|
|
78
|
+
console.log(stderr);
|
|
79
|
+
console.log(chalk.yellow('=== CONTAINER STDERR END ==='));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
// Clean up container
|
|
84
|
+
await execAsync(`docker rm -f ${containerName}`).catch(() => { });
|
|
85
|
+
}
|
|
86
|
+
// Extract the JSON response from between the markers
|
|
87
|
+
const startMarker = 'TASK_PLAN_START';
|
|
88
|
+
const endMarker = 'TASK_PLAN_END';
|
|
89
|
+
const startIndex = stdout.indexOf(startMarker);
|
|
90
|
+
const endIndex = stdout.indexOf(endMarker);
|
|
91
|
+
if (startIndex === -1 || endIndex === -1) {
|
|
92
|
+
console.log(chalk.red('Failed to find task plan in output:'));
|
|
93
|
+
console.log(stdout);
|
|
94
|
+
throw new Error('Task plan markers not found in output');
|
|
95
|
+
}
|
|
96
|
+
const jsonString = stdout.substring(startIndex + startMarker.length, endIndex).trim();
|
|
97
|
+
const response = JSON.parse(jsonString);
|
|
98
|
+
console.log(chalk.green(`ā Planned ${response.tasks.length} tasks`));
|
|
99
|
+
return response;
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.error(chalk.red('Failed to plan tasks:'), error);
|
|
103
|
+
throw new Error('Task planning failed');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=claude-planner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-planner.js","sourceRoot":"","sources":["../../src/services/claude-planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TaskTable } from '../database/types.js';
|
|
2
|
+
import { JobManager } from './job-manager.js';
|
|
3
|
+
export declare class DockerOrchestrator {
|
|
4
|
+
private jobManager;
|
|
5
|
+
private repository;
|
|
6
|
+
private openAiApiKey;
|
|
7
|
+
constructor(jobManager: JobManager, repository: string, openAiApiKey: string);
|
|
8
|
+
runTask(task: TaskTable): Promise<void>;
|
|
9
|
+
runAllTasks(jobId: number): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=docker-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-orchestrator.d.ts","sourceRoot":"","sources":["../../src/services/docker-orchestrator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;gBAEjB,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAMtE,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DvC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAchD"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import * as os from 'os';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
const execAsync = promisify(exec);
|
|
7
|
+
export class DockerOrchestrator {
|
|
8
|
+
jobManager;
|
|
9
|
+
repository;
|
|
10
|
+
openAiApiKey;
|
|
11
|
+
constructor(jobManager, repository, openAiApiKey) {
|
|
12
|
+
this.jobManager = jobManager;
|
|
13
|
+
this.repository = repository;
|
|
14
|
+
this.openAiApiKey = openAiApiKey;
|
|
15
|
+
}
|
|
16
|
+
async runTask(task) {
|
|
17
|
+
console.log(chalk.blue(`\nš³ Running task: ${task.title}`));
|
|
18
|
+
if (!task.id) {
|
|
19
|
+
throw new Error('Task ID is required');
|
|
20
|
+
}
|
|
21
|
+
await this.jobManager.updateTaskStatus(task.id, 'in_progress');
|
|
22
|
+
try {
|
|
23
|
+
const containerName = `ivan-task-${task.id}`;
|
|
24
|
+
const branchName = `ivan/${task.title}`;
|
|
25
|
+
const homeDir = os.homedir();
|
|
26
|
+
const scriptPath = path.join(process.cwd(), 'dist', 'scripts', 'task-executor.js');
|
|
27
|
+
// Build Docker command
|
|
28
|
+
const dockerCommand = `docker run --rm \
|
|
29
|
+
--name ${containerName} \
|
|
30
|
+
-v ${scriptPath}:/app/task-executor.js:ro \
|
|
31
|
+
-v ${homeDir}/.ivan/db.sqlite:${homeDir}/.ivan/db.sqlite \
|
|
32
|
+
-e TASK_ID="${task.id}" \
|
|
33
|
+
-e TASK_TITLE="${task.title}" \
|
|
34
|
+
-e TASK_DESCRIPTION="${task.description}" \
|
|
35
|
+
-e BRANCH_NAME="${branchName}" \
|
|
36
|
+
-e REPOSITORY="${this.repository}" \
|
|
37
|
+
-e OPENAI_API_KEY="${this.openAiApiKey}" \
|
|
38
|
+
-e IVAN_DB_PATH="${homeDir}/.ivan/db.sqlite" \
|
|
39
|
+
-e CLAUDE_DIR="${homeDir}/.claude" \
|
|
40
|
+
-e SSH_DIR="${homeDir}/.ssh" \
|
|
41
|
+
-e GIT_CONFIG="${homeDir}/.gitconfig" \
|
|
42
|
+
-w /workspace \
|
|
43
|
+
node:24-alpine \
|
|
44
|
+
sh -c "apk add --no-cache git openssh && \
|
|
45
|
+
mkdir -p /root/.ssh /root/.claude/plugins && \
|
|
46
|
+
cp -r \${CLAUDE_DIR}/* /root/.claude/ 2>/dev/null || true && \
|
|
47
|
+
cp -r \${SSH_DIR}/* /root/.ssh/ 2>/dev/null || true && \
|
|
48
|
+
cp \${GIT_CONFIG} /root/.gitconfig 2>/dev/null || true && \
|
|
49
|
+
chmod 600 /root/.ssh/* 2>/dev/null || true && \
|
|
50
|
+
ssh-keyscan -H github.com >> /root/.ssh/known_hosts 2>/dev/null || true && \
|
|
51
|
+
git config --global user.name 'Ivan Agent' 2>/dev/null || true && \
|
|
52
|
+
git config --global user.email 'ivan@agent.local' 2>/dev/null || true && \
|
|
53
|
+
npm i -g @anthropic-ai/claude-code && \
|
|
54
|
+
echo 'Starting task executor...' && \
|
|
55
|
+
CLAUDE_CONFIG_DIR=/root/.claude node /app/task-executor.js"`;
|
|
56
|
+
console.log(chalk.gray('Starting Docker container...'));
|
|
57
|
+
const { stdout, stderr } = await execAsync(dockerCommand);
|
|
58
|
+
if (stdout)
|
|
59
|
+
console.log(chalk.gray(stdout));
|
|
60
|
+
if (stderr)
|
|
61
|
+
console.error(chalk.yellow(stderr));
|
|
62
|
+
await this.jobManager.updateTaskStatus(task.id, 'completed');
|
|
63
|
+
console.log(chalk.green(`ā Task ${task.title} completed`));
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error(chalk.red(`ā Task ${task.title} failed:`), error);
|
|
67
|
+
await this.jobManager.updateTaskStatus(task.id, 'failed');
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async runAllTasks(jobId) {
|
|
72
|
+
const tasks = await this.jobManager.getJobTasks(jobId);
|
|
73
|
+
console.log(chalk.cyan(`\nš Running ${tasks.length} tasks for job #${jobId}\n`));
|
|
74
|
+
for (const task of tasks) {
|
|
75
|
+
try {
|
|
76
|
+
await this.runTask(task);
|
|
77
|
+
console.log(chalk.gray('ā'.repeat(50)));
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
console.error(chalk.red(`Failed to run task ${task.title}, continuing with next task...`));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=docker-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-orchestrator.js","sourceRoot":"","sources":["../../src/services/docker-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface IClaudeExecutor {
|
|
2
|
+
executeTask(taskDescription: string, workingDir: string, sessionId?: string): Promise<{
|
|
3
|
+
log: string;
|
|
4
|
+
lastMessage: string;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
}>;
|
|
7
|
+
generateTaskBreakdown(jobDescription: string, workingDir: string): Promise<string[]>;
|
|
8
|
+
validateClaudeCodeInstallation(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare class ExecutorFactory {
|
|
11
|
+
private static configManager;
|
|
12
|
+
static getExecutor(): IClaudeExecutor;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=executor-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor-factory.d.ts","sourceRoot":"","sources":["../../src/services/executor-factory.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/I,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrF,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,aAAa,CAAuB;IAEnD,MAAM,CAAC,WAAW,IAAI,eAAe;CAStC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ClaudeExecutor } from './claude-executor.js';
|
|
2
|
+
import { ClaudeCliExecutor } from './claude-cli-executor.js';
|
|
3
|
+
import { ConfigManager } from '../config.js';
|
|
4
|
+
export class ExecutorFactory {
|
|
5
|
+
static configManager = new ConfigManager();
|
|
6
|
+
static getExecutor() {
|
|
7
|
+
const executorType = this.configManager.getExecutorType();
|
|
8
|
+
if (executorType === 'cli') {
|
|
9
|
+
return new ClaudeCliExecutor();
|
|
10
|
+
}
|
|
11
|
+
return new ClaudeExecutor();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=executor-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor-factory.js","sourceRoot":"","sources":["../../src/services/executor-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQ7C,MAAM,OAAO,eAAe;IAClB,MAAM,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAEnD,MAAM,CAAC,WAAW;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAE1D,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACjC,CAAC;QAED,OAAO,IAAI,cAAc,EAAE,CAAC;IAC9B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare class GitManager {
|
|
2
|
+
private workingDir;
|
|
3
|
+
private openaiService;
|
|
4
|
+
private originalWorkingDir;
|
|
5
|
+
constructor(workingDir: string);
|
|
6
|
+
private getOpenAIService;
|
|
7
|
+
private ensureGitRepo;
|
|
8
|
+
private isGitHubCliInstalled;
|
|
9
|
+
validateGitHubCliInstallation(): void;
|
|
10
|
+
validateGitHubCliAuthentication(): void;
|
|
11
|
+
createBranch(branchName: string): Promise<void>;
|
|
12
|
+
commitChanges(message: string): Promise<void>;
|
|
13
|
+
createEmptyCommit(message: string): Promise<void>;
|
|
14
|
+
pushBranch(branchName: string): Promise<void>;
|
|
15
|
+
createPullRequest(title: string, body: string): Promise<string>;
|
|
16
|
+
getChangedFiles(from?: string, to?: string): string[];
|
|
17
|
+
getDiff(from?: string, to?: string): string;
|
|
18
|
+
getCurrentBranch(): string;
|
|
19
|
+
getMainBranch(): string;
|
|
20
|
+
cleanupAndSyncMain(): Promise<void>;
|
|
21
|
+
generateBranchName(taskDescription: string): string;
|
|
22
|
+
getPRInfo(prNumber: number): Promise<{
|
|
23
|
+
headRefName: string;
|
|
24
|
+
number: number;
|
|
25
|
+
title: string;
|
|
26
|
+
url: string;
|
|
27
|
+
}>;
|
|
28
|
+
private addReviewComment;
|
|
29
|
+
private generateReviewInstructions;
|
|
30
|
+
createWorktree(branchName: string): Promise<string>;
|
|
31
|
+
removeWorktree(branchName: string): Promise<void>;
|
|
32
|
+
switchToWorktree(worktreePath: string): void;
|
|
33
|
+
switchToOriginalDir(): void;
|
|
34
|
+
getWorktreePath(branchName: string): string;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=git-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-manager.d.ts","sourceRoot":"","sources":["../../src/services/git-manager.ts"],"names":[],"mappings":"AAOA,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,UAAU,EAAE,MAAM;IAK9B,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,oBAAoB;IAS5B,6BAA6B,IAAI,IAAI;IASrC,+BAA+B,IAAI,IAAI;IAQjC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC7C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBjD,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4ErE,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IA0CrD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IA6C3C,gBAAgB,IAAI,MAAM;IAa1B,aAAa,IAAI,MAAM;IAuCjB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqDzC,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;IAW7C,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QACzC,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;YAYY,gBAAgB;YA4ChB,0BAA0B;IA0DlC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8LnD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCvD,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI5C,mBAAmB,IAAI,IAAI;IAI3B,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;CAI5C"}
|