task-o-matic 0.0.8 → 0.0.9
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 +200 -0
- package/dist/commands/benchmark.d.ts.map +1 -1
- package/dist/commands/benchmark.js +342 -0
- package/dist/commands/tasks/execute-loop.d.ts +3 -0
- package/dist/commands/tasks/execute-loop.d.ts.map +1 -0
- package/dist/commands/tasks/execute-loop.js +118 -0
- package/dist/commands/tasks/index.d.ts +1 -0
- package/dist/commands/tasks/index.d.ts.map +1 -1
- package/dist/commands/tasks/index.js +1 -0
- package/dist/commands/tasks.d.ts.map +1 -1
- package/dist/commands/tasks.js +1 -0
- package/dist/commands/workflow.js +39 -0
- package/dist/lib/benchmark/registry.d.ts.map +1 -1
- package/dist/lib/benchmark/registry.js +11 -0
- package/dist/lib/benchmark/types.d.ts +50 -0
- package/dist/lib/benchmark/types.d.ts.map +1 -1
- package/dist/lib/task-loop-execution.d.ts +25 -0
- package/dist/lib/task-loop-execution.d.ts.map +1 -0
- package/dist/lib/task-loop-execution.js +473 -0
- package/dist/services/prd.d.ts.map +1 -1
- package/dist/services/prd.js +36 -1
- package/dist/services/tasks.d.ts.map +1 -1
- package/dist/services/tasks.js +90 -3
- package/dist/services/workflow-benchmark.d.ts +34 -0
- package/dist/services/workflow-benchmark.d.ts.map +1 -0
- package/dist/services/workflow-benchmark.js +317 -0
- package/dist/services/workflow.d.ts.map +1 -1
- package/dist/services/workflow.js +120 -7
- package/dist/test/task-loop-git.test.d.ts +2 -0
- package/dist/test/task-loop-git.test.d.ts.map +1 -0
- package/dist/test/task-loop-git.test.js +62 -0
- package/dist/types/index.d.ts +50 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/results.d.ts +29 -1
- package/dist/types/results.d.ts.map +1 -1
- package/dist/types/workflow-results.d.ts +27 -0
- package/dist/types/workflow-results.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.executeLoopCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const task_loop_execution_1 = require("../../lib/task-loop-execution");
|
|
10
|
+
/**
|
|
11
|
+
* Parse --try-models option into ModelAttemptConfig array
|
|
12
|
+
* Supports formats:
|
|
13
|
+
* - "model1,model2,model3" - just models (uses default executor)
|
|
14
|
+
* - "opencode:gpt-4o,claude:sonnet-4" - executor:model format
|
|
15
|
+
* - Mixed: "gpt-4o,claude:sonnet-4,gemini:gemini-2.0"
|
|
16
|
+
*/
|
|
17
|
+
function parseTryModels(value) {
|
|
18
|
+
return value.split(",").map((item) => {
|
|
19
|
+
const trimmed = item.trim();
|
|
20
|
+
// Check if it includes executor specification (executor:model format)
|
|
21
|
+
if (trimmed.includes(":")) {
|
|
22
|
+
const [executor, model] = trimmed.split(":");
|
|
23
|
+
const validExecutors = [
|
|
24
|
+
"opencode",
|
|
25
|
+
"claude",
|
|
26
|
+
"gemini",
|
|
27
|
+
"codex",
|
|
28
|
+
];
|
|
29
|
+
if (!validExecutors.includes(executor)) {
|
|
30
|
+
throw new Error(`Invalid executor "${executor}" in --try-models. Must be one of: ${validExecutors.join(", ")}`);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
executor: executor,
|
|
34
|
+
model: model.trim(),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// Just a model name - use default executor
|
|
38
|
+
return {
|
|
39
|
+
model: trimmed,
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
exports.executeLoopCommand = new commander_1.Command("execute-loop")
|
|
44
|
+
.description("Execute multiple tasks in a loop with retry logic and verification")
|
|
45
|
+
.option("--status <status>", "Filter tasks by status (todo/in-progress/completed)")
|
|
46
|
+
.option("--tag <tag>", "Filter tasks by tag")
|
|
47
|
+
.option("--ids <ids>", "Comma-separated list of task IDs to execute", (value) => value.split(",").map((id) => id.trim()))
|
|
48
|
+
.option("--tool <tool>", "External tool to use (opencode/claude/gemini/codex)", "opencode")
|
|
49
|
+
.option("--max-retries <number>", "Maximum number of retries per task", (value) => parseInt(value, 10), 3)
|
|
50
|
+
.option("--try-models <models>", "Progressive model/executor configs for each retry (e.g., 'gpt-4o-mini,gpt-4o,claude:sonnet-4')")
|
|
51
|
+
.option("--verify <command>", "Verification command to run after each task (can be used multiple times)", (value, previous = []) => {
|
|
52
|
+
return [...previous, value];
|
|
53
|
+
})
|
|
54
|
+
.option("--auto-commit", "Automatically commit changes after each task", false)
|
|
55
|
+
.option("--dry", "Show what would be executed without running it", false)
|
|
56
|
+
.action(async (options) => {
|
|
57
|
+
try {
|
|
58
|
+
// Validate tool
|
|
59
|
+
const validTools = [
|
|
60
|
+
"opencode",
|
|
61
|
+
"claude",
|
|
62
|
+
"gemini",
|
|
63
|
+
"codex",
|
|
64
|
+
];
|
|
65
|
+
if (!validTools.includes(options.tool)) {
|
|
66
|
+
console.error(chalk_1.default.red(`Invalid tool: ${options.tool}. Must be one of: ${validTools.join(", ")}`));
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
// Parse tryModels if provided
|
|
70
|
+
let tryModels;
|
|
71
|
+
if (options.tryModels) {
|
|
72
|
+
try {
|
|
73
|
+
tryModels = parseTryModels(options.tryModels);
|
|
74
|
+
console.log(chalk_1.default.cyan(`📊 Progressive model escalation configured with ${tryModels.length} model(s):`));
|
|
75
|
+
tryModels.forEach((config, index) => {
|
|
76
|
+
const executorInfo = config.executor
|
|
77
|
+
? `${config.executor}:`
|
|
78
|
+
: "default:";
|
|
79
|
+
const modelInfo = config.model || "default model";
|
|
80
|
+
console.log(chalk_1.default.cyan(` ${index + 1}. ${executorInfo}${modelInfo}`));
|
|
81
|
+
});
|
|
82
|
+
console.log();
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
console.error(chalk_1.default.red(`Failed to parse --try-models: ${error instanceof Error ? error.message : "Unknown error"}`));
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Build options
|
|
90
|
+
const executeOptions = {
|
|
91
|
+
filters: {
|
|
92
|
+
status: options.status,
|
|
93
|
+
tag: options.tag,
|
|
94
|
+
taskIds: options.ids,
|
|
95
|
+
},
|
|
96
|
+
tool: options.tool,
|
|
97
|
+
config: {
|
|
98
|
+
maxRetries: options.maxRetries,
|
|
99
|
+
verificationCommands: options.verify || [],
|
|
100
|
+
autoCommit: options.autoCommit,
|
|
101
|
+
tryModels,
|
|
102
|
+
},
|
|
103
|
+
dry: options.dry,
|
|
104
|
+
};
|
|
105
|
+
// Execute task loop
|
|
106
|
+
const result = await (0, task_loop_execution_1.executeTaskLoop)(executeOptions);
|
|
107
|
+
// Exit with error code if any tasks failed
|
|
108
|
+
if (result.failedTasks > 0) {
|
|
109
|
+
console.error(chalk_1.default.red(`\n❌ ${result.failedTasks} task(s) failed. See logs above for details.`));
|
|
110
|
+
process.exit(1);
|
|
111
|
+
}
|
|
112
|
+
console.log(chalk_1.default.green(`\n✅ All ${result.completedTasks} task(s) completed successfully!`));
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.error(chalk_1.default.red("Execute loop failed:"), error instanceof Error ? error.message : "Unknown error");
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
|
|
@@ -26,6 +26,7 @@ __exportStar(require("./enhance"), exports);
|
|
|
26
26
|
__exportStar(require("./split"), exports);
|
|
27
27
|
__exportStar(require("./document"), exports);
|
|
28
28
|
__exportStar(require("./execute"), exports);
|
|
29
|
+
__exportStar(require("./execute-loop"), exports);
|
|
29
30
|
__exportStar(require("./subtasks"), exports);
|
|
30
31
|
__exportStar(require("./tree"), exports);
|
|
31
32
|
__exportStar(require("./next"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,eAAO,MAAM,YAAY,SAAuB,CAAC"}
|
package/dist/commands/tasks.js
CHANGED
|
@@ -23,6 +23,7 @@ exports.tasksCommand.addCommand(index_1.documentCommand);
|
|
|
23
23
|
exports.tasksCommand.addCommand(index_1.getDocumentationCommand);
|
|
24
24
|
exports.tasksCommand.addCommand(index_1.addDocumentationCommand);
|
|
25
25
|
exports.tasksCommand.addCommand(index_1.executeCommand);
|
|
26
|
+
exports.tasksCommand.addCommand(index_1.executeLoopCommand);
|
|
26
27
|
exports.tasksCommand.addCommand(index_1.subtasksCommand);
|
|
27
28
|
exports.tasksCommand.addCommand(index_1.treeCommand);
|
|
28
29
|
exports.tasksCommand.addCommand(index_1.nextCommand);
|
|
@@ -328,6 +328,19 @@ async function stepDefinePRD(state, options, streamingOptions) {
|
|
|
328
328
|
if (prdMethod === "ai") {
|
|
329
329
|
console.log(chalk_1.default.green("\n✓ PRD generated"));
|
|
330
330
|
console.log(chalk_1.default.gray("\n" + result.prdContent.substring(0, 500) + "...\n"));
|
|
331
|
+
// Display metrics if available
|
|
332
|
+
if (result.stats) {
|
|
333
|
+
console.log(chalk_1.default.cyan(` Duration: ${result.stats.duration}ms`));
|
|
334
|
+
if (result.stats.tokenUsage) {
|
|
335
|
+
console.log(chalk_1.default.cyan(` Tokens: ${result.stats.tokenUsage.total} (Prompt: ${result.stats.tokenUsage.prompt}, Completion: ${result.stats.tokenUsage.completion})`));
|
|
336
|
+
}
|
|
337
|
+
if (result.stats.timeToFirstToken) {
|
|
338
|
+
console.log(chalk_1.default.cyan(` Time to First Token: ${result.stats.timeToFirstToken}ms`));
|
|
339
|
+
}
|
|
340
|
+
if (result.stats.cost) {
|
|
341
|
+
console.log(chalk_1.default.cyan(` Estimated Cost: $${result.stats.cost.toFixed(6)}`));
|
|
342
|
+
}
|
|
343
|
+
}
|
|
331
344
|
const acceptPRD = await getOrPrompt(options.autoAccept ? true : undefined, () => (0, workflow_prompts_1.confirmPrompt)("Accept this PRD?", true));
|
|
332
345
|
if (!acceptPRD) {
|
|
333
346
|
console.log(chalk_1.default.yellow("⚠ Regenerating..."));
|
|
@@ -516,6 +529,19 @@ async function stepRefinePRD(state, options, streamingOptions) {
|
|
|
516
529
|
if (refineMethod === "ai") {
|
|
517
530
|
console.log(chalk_1.default.green("\n✓ PRD refined"));
|
|
518
531
|
console.log(chalk_1.default.gray("\n" + result.prdContent.substring(0, 500) + "...\n"));
|
|
532
|
+
// Display metrics if available
|
|
533
|
+
if (result.stats) {
|
|
534
|
+
console.log(chalk_1.default.cyan(` Duration: ${result.stats.duration}ms`));
|
|
535
|
+
if (result.stats.tokenUsage) {
|
|
536
|
+
console.log(chalk_1.default.cyan(` Tokens: ${result.stats.tokenUsage.total} (Prompt: ${result.stats.tokenUsage.prompt}, Completion: ${result.stats.tokenUsage.completion})`));
|
|
537
|
+
}
|
|
538
|
+
if (result.stats.timeToFirstToken) {
|
|
539
|
+
console.log(chalk_1.default.cyan(` Time to First Token: ${result.stats.timeToFirstToken}ms`));
|
|
540
|
+
}
|
|
541
|
+
if (result.stats.cost) {
|
|
542
|
+
console.log(chalk_1.default.cyan(` Estimated Cost: $${result.stats.cost.toFixed(6)}`));
|
|
543
|
+
}
|
|
544
|
+
}
|
|
519
545
|
const acceptRefinement = await getOrPrompt(options.autoAccept ? true : undefined, () => (0, workflow_prompts_1.confirmPrompt)("Accept refinements?", true));
|
|
520
546
|
if (!acceptRefinement) {
|
|
521
547
|
console.log(chalk_1.default.yellow("⚠ Keeping original PRD"));
|
|
@@ -572,6 +598,19 @@ async function stepGenerateTasks(state, options, streamingOptions) {
|
|
|
572
598
|
},
|
|
573
599
|
});
|
|
574
600
|
console.log(chalk_1.default.green(`\n✓ Generated ${result.tasks.length} tasks`));
|
|
601
|
+
// Display metrics if available
|
|
602
|
+
if (result.stats) {
|
|
603
|
+
console.log(chalk_1.default.cyan(` Duration: ${result.stats.duration}ms`));
|
|
604
|
+
if (result.stats.tokenUsage) {
|
|
605
|
+
console.log(chalk_1.default.cyan(` Tokens: ${result.stats.tokenUsage.total} (Prompt: ${result.stats.tokenUsage.prompt}, Completion: ${result.stats.tokenUsage.completion})`));
|
|
606
|
+
}
|
|
607
|
+
if (result.stats.timeToFirstToken) {
|
|
608
|
+
console.log(chalk_1.default.cyan(` Time to First Token: ${result.stats.timeToFirstToken}ms`));
|
|
609
|
+
}
|
|
610
|
+
if (result.stats.cost) {
|
|
611
|
+
console.log(chalk_1.default.cyan(` Estimated Cost: $${result.stats.cost.toFixed(6)}`));
|
|
612
|
+
}
|
|
613
|
+
}
|
|
575
614
|
// Display tasks
|
|
576
615
|
console.log(chalk_1.default.blue("\n Created Tasks:\n"));
|
|
577
616
|
result.tasks.forEach((task, index) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/benchmark/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/benchmark/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAA0B,MAAM,SAAS,CAAC;AAOzE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAkD;;IAMpE,QAAQ,CAAC,EAAE,EAAE,sBAAsB;IAInC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAInD,IAAI,IAAI,sBAAsB,EAAE;IAIhC,OAAO,CAAC,gBAAgB;CAkGzB;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.benchmarkRegistry = exports.BenchmarkRegistry = void 0;
|
|
4
4
|
const prd_1 = require("../../services/prd");
|
|
5
5
|
const tasks_1 = require("../../services/tasks"); // We'll need to instantiate this or use a singleton if available
|
|
6
|
+
const workflow_benchmark_1 = require("../../services/workflow-benchmark");
|
|
6
7
|
class BenchmarkRegistry {
|
|
7
8
|
operations = new Map();
|
|
8
9
|
constructor() {
|
|
@@ -72,6 +73,16 @@ class BenchmarkRegistry {
|
|
|
72
73
|
input.tools);
|
|
73
74
|
},
|
|
74
75
|
});
|
|
76
|
+
// Workflow Full Execution
|
|
77
|
+
this.register({
|
|
78
|
+
id: "workflow-full",
|
|
79
|
+
name: "Complete Workflow",
|
|
80
|
+
description: "Execute the complete workflow: initialization, PRD creation, task generation, and splitting",
|
|
81
|
+
validateInput: (input) => workflow_benchmark_1.workflowBenchmarkService.validateInput(input),
|
|
82
|
+
execute: async (input, aiOptions, streamingOptions) => {
|
|
83
|
+
return await workflow_benchmark_1.workflowBenchmarkService.executeWorkflow(input, aiOptions, streamingOptions);
|
|
84
|
+
},
|
|
85
|
+
});
|
|
75
86
|
}
|
|
76
87
|
}
|
|
77
88
|
exports.BenchmarkRegistry = BenchmarkRegistry;
|
|
@@ -19,6 +19,8 @@ export interface BenchmarkProgressEvent {
|
|
|
19
19
|
chunk?: string;
|
|
20
20
|
}
|
|
21
21
|
import { StreamingOptions } from "../../types";
|
|
22
|
+
import { WorkflowAutomationOptions } from "../../types/workflow-options";
|
|
23
|
+
import { Task } from "../../types";
|
|
22
24
|
export interface BenchmarkResult {
|
|
23
25
|
modelId: string;
|
|
24
26
|
output: any;
|
|
@@ -36,6 +38,27 @@ export interface BenchmarkResult {
|
|
|
36
38
|
timeToFirstToken?: number;
|
|
37
39
|
cost?: number;
|
|
38
40
|
}
|
|
41
|
+
export interface WorkflowBenchmarkResult extends BenchmarkResult {
|
|
42
|
+
output: {
|
|
43
|
+
projectDir?: string;
|
|
44
|
+
prdFile?: string;
|
|
45
|
+
prdContent?: string;
|
|
46
|
+
tasks: Task[];
|
|
47
|
+
stats: {
|
|
48
|
+
initDuration?: number;
|
|
49
|
+
prdGenerationDuration?: number;
|
|
50
|
+
prdRefinementDuration?: number;
|
|
51
|
+
taskGenerationDuration?: number;
|
|
52
|
+
taskSplittingDuration?: number;
|
|
53
|
+
totalTasks: number;
|
|
54
|
+
tasksWithSubtasks: number;
|
|
55
|
+
avgTaskComplexity?: number;
|
|
56
|
+
prdSize?: number;
|
|
57
|
+
totalSteps: number;
|
|
58
|
+
successfulSteps: number;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
}
|
|
39
62
|
export interface BenchmarkRun {
|
|
40
63
|
id: string;
|
|
41
64
|
timestamp: number;
|
|
@@ -44,6 +67,33 @@ export interface BenchmarkRun {
|
|
|
44
67
|
config: BenchmarkConfig;
|
|
45
68
|
results: BenchmarkResult[];
|
|
46
69
|
}
|
|
70
|
+
export interface WorkflowBenchmarkInput {
|
|
71
|
+
collectedResponses: {
|
|
72
|
+
projectName: string;
|
|
73
|
+
initMethod: "quick" | "custom" | "ai";
|
|
74
|
+
projectDescription?: string;
|
|
75
|
+
stackConfig?: {
|
|
76
|
+
frontend?: string;
|
|
77
|
+
backend?: string;
|
|
78
|
+
database?: string;
|
|
79
|
+
auth?: boolean;
|
|
80
|
+
};
|
|
81
|
+
prdMethod: "upload" | "manual" | "ai" | "skip";
|
|
82
|
+
prdContent?: string;
|
|
83
|
+
prdDescription?: string;
|
|
84
|
+
prdFile?: string;
|
|
85
|
+
refinePrd?: boolean;
|
|
86
|
+
refineFeedback?: string;
|
|
87
|
+
generateTasks?: boolean;
|
|
88
|
+
customInstructions?: string;
|
|
89
|
+
splitTasks?: boolean;
|
|
90
|
+
tasksToSplit?: string[];
|
|
91
|
+
splitInstructions?: string;
|
|
92
|
+
};
|
|
93
|
+
workflowOptions: WorkflowAutomationOptions;
|
|
94
|
+
projectDir?: string;
|
|
95
|
+
tempDirBase?: string;
|
|
96
|
+
}
|
|
47
97
|
export interface BenchmarkableOperation {
|
|
48
98
|
id: string;
|
|
49
99
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/benchmark/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/benchmark/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ExecuteLoopOptions, ExecuteLoopResult } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Extract commit message and file list from AI conversation/output
|
|
4
|
+
* This function analyzes the executor's work and generates appropriate commit info
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Extract commit message and file list from git state
|
|
8
|
+
* This function analyzes the actual git state to generate appropriate commit info
|
|
9
|
+
*/
|
|
10
|
+
export declare function extractCommitInfo(taskId: string, taskTitle: string, executionMessage: string, gitState: {
|
|
11
|
+
beforeHead: string;
|
|
12
|
+
afterHead: string;
|
|
13
|
+
hasUncommittedChanges: boolean;
|
|
14
|
+
}, execFn?: (command: string) => Promise<{
|
|
15
|
+
stdout: string;
|
|
16
|
+
stderr: string;
|
|
17
|
+
}>, aiOps?: any): Promise<{
|
|
18
|
+
message: string;
|
|
19
|
+
files: string[];
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* Execute multiple tasks in a loop with retry and verification
|
|
23
|
+
*/
|
|
24
|
+
export declare function executeTaskLoop(options: ExecuteLoopOptions): Promise<ExecuteLoopResult>;
|
|
25
|
+
//# sourceMappingURL=task-loop-execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-loop-execution.d.ts","sourceRoot":"","sources":["../../src/lib/task-loop-execution.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAIlB,MAAM,UAAU,CAAC;AAYlB;;;GAGG;AACH;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE;IACR,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,OAAO,CAAC;CAChC,EACD,MAAM,GAAE,CACN,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAa,EAC5D,KAAK,GAAE,GAAuB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA+G/C;AAsXD;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CA0K5B"}
|