task-o-matic 0.0.11 → 0.0.13
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/dist/commands/tasks/create.d.ts.map +1 -1
- package/dist/commands/tasks/create.js +6 -13
- package/dist/commands/tasks/document/add.d.ts +3 -0
- package/dist/commands/tasks/document/add.d.ts.map +1 -0
- package/dist/commands/tasks/document/add.js +35 -0
- package/dist/commands/tasks/document/analyze.d.ts +3 -0
- package/dist/commands/tasks/document/analyze.d.ts.map +1 -0
- package/dist/commands/tasks/document/analyze.js +49 -0
- package/dist/commands/tasks/document/get.d.ts +3 -0
- package/dist/commands/tasks/document/get.d.ts.map +1 -0
- package/dist/commands/tasks/document/get.js +29 -0
- package/dist/commands/tasks/document/index.d.ts +8 -0
- package/dist/commands/tasks/document/index.d.ts.map +1 -0
- package/dist/commands/tasks/document/index.js +13 -0
- package/dist/commands/tasks/enhance.d.ts.map +1 -1
- package/dist/commands/tasks/enhance.js +64 -61
- package/dist/commands/tasks/execute-loop.d.ts.map +1 -1
- package/dist/commands/tasks/execute-loop.js +66 -97
- package/dist/commands/tasks/execute.d.ts.map +1 -1
- package/dist/commands/tasks/execute.js +52 -16
- package/dist/commands/tasks/plan/create.d.ts +3 -0
- package/dist/commands/tasks/plan/create.d.ts.map +1 -0
- package/dist/commands/tasks/plan/create.js +37 -0
- package/dist/commands/tasks/plan/delete.d.ts +3 -0
- package/dist/commands/tasks/plan/delete.d.ts.map +1 -0
- package/dist/commands/tasks/plan/delete.js +14 -0
- package/dist/commands/tasks/plan/get.d.ts +3 -0
- package/dist/commands/tasks/plan/get.d.ts.map +1 -0
- package/dist/commands/tasks/plan/get.js +24 -0
- package/dist/commands/tasks/plan/index.d.ts +10 -0
- package/dist/commands/tasks/plan/index.d.ts.map +1 -0
- package/dist/commands/tasks/plan/index.js +17 -0
- package/dist/commands/tasks/plan/list.d.ts +3 -0
- package/dist/commands/tasks/plan/list.d.ts.map +1 -0
- package/dist/commands/tasks/plan/list.js +21 -0
- package/dist/commands/tasks/plan/set.d.ts +3 -0
- package/dist/commands/tasks/plan/set.d.ts.map +1 -0
- package/dist/commands/tasks/plan/set.js +33 -0
- package/dist/commands/tasks/split.d.ts.map +1 -1
- package/dist/commands/tasks/split.js +65 -60
- package/dist/lib/ai-service/documentation-operations.d.ts.map +1 -1
- package/dist/lib/ai-service/documentation-operations.js +22 -12
- package/dist/lib/ai-service/prd-operations.d.ts.map +1 -1
- package/dist/lib/ai-service/prd-operations.js +18 -25
- package/dist/lib/executors/opencode-executor.d.ts.map +1 -1
- package/dist/lib/executors/opencode-executor.js +3 -1
- package/dist/lib/git-utils.d.ts +45 -0
- package/dist/lib/git-utils.d.ts.map +1 -0
- package/dist/lib/git-utils.js +160 -0
- package/dist/lib/prompt-builder.d.ts +11 -0
- package/dist/lib/prompt-builder.d.ts.map +1 -1
- package/dist/lib/prompt-builder.js +59 -0
- package/dist/lib/prompt-registry.d.ts.map +1 -1
- package/dist/lib/prompt-registry.js +158 -0
- package/dist/lib/task-execution-core.d.ts +7 -0
- package/dist/lib/task-execution-core.d.ts.map +1 -0
- package/dist/lib/task-execution-core.js +360 -0
- package/dist/lib/task-execution.d.ts +4 -0
- package/dist/lib/task-execution.d.ts.map +1 -1
- package/dist/lib/task-execution.js +31 -178
- package/dist/lib/task-loop-execution.d.ts +1 -19
- package/dist/lib/task-loop-execution.d.ts.map +1 -1
- package/dist/lib/task-loop-execution.js +50 -592
- package/dist/lib/task-planning.d.ts +28 -0
- package/dist/lib/task-planning.d.ts.map +1 -0
- package/dist/lib/task-planning.js +109 -0
- package/dist/lib/task-review.d.ts +27 -0
- package/dist/lib/task-review.d.ts.map +1 -0
- package/dist/lib/task-review.js +106 -0
- package/dist/lib/validation.d.ts +20 -3
- package/dist/lib/validation.d.ts.map +1 -1
- package/dist/lib/validation.js +39 -10
- package/dist/prompts/documentation-recap.d.ts +3 -0
- package/dist/prompts/documentation-recap.d.ts.map +1 -0
- package/dist/prompts/documentation-recap.js +13 -0
- package/dist/prompts/index.d.ts +4 -0
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +4 -0
- package/dist/prompts/prd-question-answer.d.ts +3 -0
- package/dist/prompts/prd-question-answer.d.ts.map +1 -0
- package/dist/prompts/prd-question-answer.js +27 -0
- package/dist/prompts/task-execution.d.ts +3 -0
- package/dist/prompts/task-execution.d.ts.map +1 -0
- package/dist/prompts/task-execution.js +21 -0
- package/dist/prompts/workflow-prompts.d.ts +9 -0
- package/dist/prompts/workflow-prompts.d.ts.map +1 -0
- package/dist/prompts/workflow-prompts.js +93 -0
- package/dist/services/workflow-ai-assistant.d.ts.map +1 -1
- package/dist/services/workflow-ai-assistant.js +72 -94
- package/dist/test/task-loop-git.test.js +6 -6
- package/dist/types/cli-options.d.ts +138 -0
- package/dist/types/cli-options.d.ts.map +1 -0
- package/dist/types/cli-options.js +6 -0
- package/dist/types/index.d.ts +38 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/bulk-operations.d.ts +51 -0
- package/dist/utils/bulk-operations.d.ts.map +1 -0
- package/dist/utils/bulk-operations.js +68 -0
- package/dist/utils/cli-validators.d.ts +54 -0
- package/dist/utils/cli-validators.d.ts.map +1 -0
- package/dist/utils/cli-validators.js +75 -0
- package/dist/utils/command-error-handler.d.ts +32 -0
- package/dist/utils/command-error-handler.d.ts.map +1 -0
- package/dist/utils/command-error-handler.js +52 -0
- package/dist/utils/confirmation.d.ts +19 -0
- package/dist/utils/confirmation.d.ts.map +1 -0
- package/dist/utils/confirmation.js +39 -0
- package/dist/utils/display-helpers.d.ts +81 -0
- package/dist/utils/display-helpers.d.ts.map +1 -0
- package/dist/utils/display-helpers.js +109 -0
- package/dist/utils/model-executor-parser.d.ts +38 -0
- package/dist/utils/model-executor-parser.d.ts.map +1 -0
- package/dist/utils/model-executor-parser.js +67 -0
- package/dist/utils/progress-tracking.d.ts +28 -0
- package/dist/utils/progress-tracking.d.ts.map +1 -0
- package/dist/utils/progress-tracking.js +43 -0
- package/package.json +1 -1
- package/dist/commands/tasks/document.d.ts +0 -5
- package/dist/commands/tasks/document.d.ts.map +0 -1
- package/dist/commands/tasks/document.js +0 -118
- package/dist/commands/tasks/plan.d.ts +0 -7
- package/dist/commands/tasks/plan.d.ts.map +0 -1
- package/dist/commands/tasks/plan.js +0 -131
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git state captured before and after execution
|
|
3
|
+
*/
|
|
4
|
+
export interface GitState {
|
|
5
|
+
beforeHead: string;
|
|
6
|
+
afterHead: string;
|
|
7
|
+
hasUncommittedChanges: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Commit information extracted from git state
|
|
11
|
+
*/
|
|
12
|
+
export interface CommitInfo {
|
|
13
|
+
message: string;
|
|
14
|
+
files: string[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Capture git state (HEAD commit and uncommitted changes)
|
|
18
|
+
*/
|
|
19
|
+
export declare function captureGitState(execFn?: (command: string) => Promise<{
|
|
20
|
+
stdout: string;
|
|
21
|
+
stderr: string;
|
|
22
|
+
}>): Promise<Partial<GitState>>;
|
|
23
|
+
/**
|
|
24
|
+
* Extract commit message and file list from git state
|
|
25
|
+
* This function analyzes the actual git state to generate appropriate commit info
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractCommitInfo(taskId: string, taskTitle: string, executionMessage: string, gitState: GitState, execFn?: (command: string) => Promise<{
|
|
28
|
+
stdout: string;
|
|
29
|
+
stderr: string;
|
|
30
|
+
}>, aiOps?: any): Promise<CommitInfo>;
|
|
31
|
+
/**
|
|
32
|
+
* Auto-commit changes using the provided commit info
|
|
33
|
+
*/
|
|
34
|
+
export declare function autoCommit(commitInfo: CommitInfo, execFn?: (command: string) => Promise<{
|
|
35
|
+
stdout: string;
|
|
36
|
+
stderr: string;
|
|
37
|
+
}>): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Commit a specific file with a custom message
|
|
40
|
+
*/
|
|
41
|
+
export declare function commitFile(filePath: string, message: string, execFn?: (command: string) => Promise<{
|
|
42
|
+
stdout: string;
|
|
43
|
+
stderr: string;
|
|
44
|
+
}>): Promise<void>;
|
|
45
|
+
//# sourceMappingURL=git-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../../src/lib/git-utils.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,GAAE,CACN,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAa,GAC3D,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAc5B;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,QAAQ,EAClB,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,UAAU,CAAC,CA6GrB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,UAAU,EACtB,MAAM,GAAE,CACN,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAa,GAC3D,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,CACN,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAa,GAC3D,OAAO,CAAC,IAAI,CAAC,CAef"}
|
|
@@ -0,0 +1,160 @@
|
|
|
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.captureGitState = captureGitState;
|
|
7
|
+
exports.extractCommitInfo = extractCommitInfo;
|
|
8
|
+
exports.autoCommit = autoCommit;
|
|
9
|
+
exports.commitFile = commitFile;
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
const util_1 = require("util");
|
|
12
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
13
|
+
const ai_service_factory_1 = require("../utils/ai-service-factory");
|
|
14
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
15
|
+
/**
|
|
16
|
+
* Capture git state (HEAD commit and uncommitted changes)
|
|
17
|
+
*/
|
|
18
|
+
async function captureGitState(execFn = execAsync) {
|
|
19
|
+
try {
|
|
20
|
+
const { stdout: headStdout } = await execFn("git rev-parse HEAD");
|
|
21
|
+
const { stdout: statusStdout } = await execFn("git status --porcelain");
|
|
22
|
+
return {
|
|
23
|
+
beforeHead: headStdout.trim(),
|
|
24
|
+
afterHead: headStdout.trim(),
|
|
25
|
+
hasUncommittedChanges: statusStdout.trim().length > 0,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
// Git might not be initialized or no commits yet
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Extract commit message and file list from git state
|
|
35
|
+
* This function analyzes the actual git state to generate appropriate commit info
|
|
36
|
+
*/
|
|
37
|
+
async function extractCommitInfo(taskId, taskTitle, executionMessage, gitState, execFn = execAsync, aiOps = (0, ai_service_factory_1.getAIOperations)()) {
|
|
38
|
+
try {
|
|
39
|
+
// Case 1: Executor created a commit
|
|
40
|
+
if (gitState.beforeHead !== gitState.afterHead) {
|
|
41
|
+
console.log(chalk_1.default.blue("📝 Executor created a commit, extracting info..."));
|
|
42
|
+
const { stdout } = await execFn(`git show --stat --format="%s%n%b" ${gitState.afterHead}`);
|
|
43
|
+
const lines = stdout.trim().split("\n");
|
|
44
|
+
const message = lines[0].trim();
|
|
45
|
+
// Parse files from stat output (e.g. " src/file.ts | 10 +")
|
|
46
|
+
const files = lines
|
|
47
|
+
.slice(1)
|
|
48
|
+
.filter((line) => line.includes("|"))
|
|
49
|
+
.map((line) => line.split("|")[0].trim());
|
|
50
|
+
return {
|
|
51
|
+
message,
|
|
52
|
+
files,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// Case 2: Executor left uncommitted changes
|
|
56
|
+
if (gitState.hasUncommittedChanges) {
|
|
57
|
+
console.log(chalk_1.default.blue("📝 Uncommitted changes detected, generating commit message..."));
|
|
58
|
+
// Get the diff to send to AI
|
|
59
|
+
const { stdout: diff } = await execFn("git diff HEAD");
|
|
60
|
+
// Get list of changed files
|
|
61
|
+
const { stdout: status } = await execFn("git status --porcelain");
|
|
62
|
+
const files = status
|
|
63
|
+
.split("\n")
|
|
64
|
+
.filter((line) => line.length > 0)
|
|
65
|
+
.map((line) => line.substring(3).trim())
|
|
66
|
+
.filter((file) => file.length > 0);
|
|
67
|
+
// Use AI to generate commit message based on the diff
|
|
68
|
+
const prompt = `Based on the following git diff, generate a concise git commit message.
|
|
69
|
+
|
|
70
|
+
Task: ${taskTitle}
|
|
71
|
+
|
|
72
|
+
Git Diff:
|
|
73
|
+
${diff.substring(0, 10000)} // Limit diff size
|
|
74
|
+
|
|
75
|
+
Please respond in JSON format:
|
|
76
|
+
{
|
|
77
|
+
"message": "concise commit message following conventional commits format"
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
The commit message should:
|
|
81
|
+
- Follow conventional commits format (feat:, fix:, refactor:, etc.)
|
|
82
|
+
- Be concise and descriptive
|
|
83
|
+
- Focus on what changed
|
|
84
|
+
`;
|
|
85
|
+
const response = await aiOps.streamText(prompt, undefined, "You are a helpful assistant that generates git commit messages.");
|
|
86
|
+
// Try to parse JSON from response
|
|
87
|
+
const jsonMatch = response.match(/\{[\s\S]*\}/);
|
|
88
|
+
let message = `feat: complete task ${taskTitle}`;
|
|
89
|
+
if (jsonMatch) {
|
|
90
|
+
try {
|
|
91
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
92
|
+
if (parsed.message) {
|
|
93
|
+
message = parsed.message;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
// Ignore parse error
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
message,
|
|
102
|
+
files,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
// Case 3: No changes detected
|
|
106
|
+
return {
|
|
107
|
+
message: `feat: complete task ${taskTitle}`,
|
|
108
|
+
files: [],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
console.warn(chalk_1.default.yellow(`⚠️ Failed to extract commit info: ${error instanceof Error ? error.message : "Unknown error"}`));
|
|
113
|
+
// Fallback commit info
|
|
114
|
+
return {
|
|
115
|
+
message: `feat: complete task ${taskTitle}`,
|
|
116
|
+
files: [],
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Auto-commit changes using the provided commit info
|
|
122
|
+
*/
|
|
123
|
+
async function autoCommit(commitInfo, execFn = execAsync) {
|
|
124
|
+
try {
|
|
125
|
+
const { message, files } = commitInfo;
|
|
126
|
+
if (files.length > 0) {
|
|
127
|
+
// Stage specific files
|
|
128
|
+
const gitAdd = `git add ${files.join(" ")}`;
|
|
129
|
+
console.log(chalk_1.default.blue(`📦 Staging files: ${gitAdd}`));
|
|
130
|
+
await execFn(gitAdd);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
// Stage all changes
|
|
134
|
+
console.log(chalk_1.default.blue("📦 Staging all changes"));
|
|
135
|
+
await execFn("git add .");
|
|
136
|
+
}
|
|
137
|
+
// Commit
|
|
138
|
+
const gitCommit = `git commit -m "${message}"`;
|
|
139
|
+
console.log(chalk_1.default.blue(`💾 Committing: ${message}`));
|
|
140
|
+
await execFn(gitCommit);
|
|
141
|
+
console.log(chalk_1.default.green("✅ Changes committed successfully\n"));
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
console.warn(chalk_1.default.yellow(`⚠️ Auto-commit failed: ${error instanceof Error ? error.message : "Unknown error"}\n`));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Commit a specific file with a custom message
|
|
149
|
+
*/
|
|
150
|
+
async function commitFile(filePath, message, execFn = execAsync) {
|
|
151
|
+
try {
|
|
152
|
+
console.log(chalk_1.default.blue(`📦 Staging file: ${filePath}`));
|
|
153
|
+
await execFn(`git add ${filePath}`);
|
|
154
|
+
await execFn(`git commit -m "${message}"`);
|
|
155
|
+
console.log(chalk_1.default.green("✅ File committed successfully"));
|
|
156
|
+
}
|
|
157
|
+
catch (e) {
|
|
158
|
+
console.warn(chalk_1.default.yellow(`⚠️ Failed to commit file: ${e instanceof Error ? e.message : "Unknown error"}`));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -54,5 +54,16 @@ export declare class PromptBuilder {
|
|
|
54
54
|
* Format prompt for specific executor
|
|
55
55
|
*/
|
|
56
56
|
static formatForExecutor(prompt: string, executor: "opencode" | "claude" | "gemini" | "codex"): string;
|
|
57
|
+
/**
|
|
58
|
+
* Build execution prompt with task context
|
|
59
|
+
*/
|
|
60
|
+
static buildExecutionPrompt(options: {
|
|
61
|
+
taskTitle: string;
|
|
62
|
+
taskDescription?: string;
|
|
63
|
+
taskPlan?: string;
|
|
64
|
+
stack?: any;
|
|
65
|
+
documentation?: any;
|
|
66
|
+
retryContext?: string;
|
|
67
|
+
}): PromptBuilderResult;
|
|
57
68
|
}
|
|
58
69
|
//# sourceMappingURL=prompt-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/lib/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOnE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB;IAiFtE;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,MAAM;IAI5B;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GACvB,cAAc,GAAG,IAAI;IAKxB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAO/C;;OAEG;WACU,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAiBhE;;OAEG;WACU,gBAAgB,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;IAmClB;;OAEG;WACU,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCnE;;OAEG;WACU,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4G1E;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GACnD,MAAM;
|
|
1
|
+
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/lib/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOnE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB;IAiFtE;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,MAAM;IAI5B;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GACvB,cAAc,GAAG,IAAI;IAKxB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAO/C;;OAEG;WACU,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAiBhE;;OAEG;WACU,gBAAgB,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;IAmClB;;OAEG;WACU,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCnE;;OAEG;WACU,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4G1E;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GACnD,MAAM;IAoBT;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE;QACnC,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,aAAa,CAAC,EAAE,GAAG,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,mBAAmB;CAmExB"}
|
|
@@ -274,5 +274,64 @@ class PromptBuilder {
|
|
|
274
274
|
return prompt;
|
|
275
275
|
}
|
|
276
276
|
}
|
|
277
|
+
/**
|
|
278
|
+
* Build execution prompt with task context
|
|
279
|
+
*/
|
|
280
|
+
static buildExecutionPrompt(options) {
|
|
281
|
+
const { taskTitle, taskDescription, taskPlan, stack, documentation, retryContext, } = options;
|
|
282
|
+
// Build TASK_PLAN variable
|
|
283
|
+
let taskPlanText = "";
|
|
284
|
+
if (taskPlan) {
|
|
285
|
+
taskPlanText = `# Task Plan\n\n${taskPlan}\n`;
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
taskPlanText = `# Task: ${taskTitle}\n\n${taskDescription || "No description"}\n`;
|
|
289
|
+
}
|
|
290
|
+
// Build STACK_INFO variable
|
|
291
|
+
let stackInfo = "";
|
|
292
|
+
if (stack) {
|
|
293
|
+
const stackParts = [];
|
|
294
|
+
stackParts.push(`- **Project**: ${stack.projectName}`);
|
|
295
|
+
stackParts.push(`- **Frontend**: ${stack.frontend}`);
|
|
296
|
+
stackParts.push(`- **Backend**: ${stack.backend}`);
|
|
297
|
+
if (stack.database !== "none") {
|
|
298
|
+
stackParts.push(`- **Database**: ${stack.database}`);
|
|
299
|
+
}
|
|
300
|
+
if (stack.orm !== "none") {
|
|
301
|
+
stackParts.push(`- **ORM**: ${stack.orm}`);
|
|
302
|
+
}
|
|
303
|
+
stackParts.push(`- **Auth**: ${stack.auth}`);
|
|
304
|
+
if (stack.addons && stack.addons.length > 0) {
|
|
305
|
+
stackParts.push(`- **Addons**: ${stack.addons.join(", ")}`);
|
|
306
|
+
}
|
|
307
|
+
stackParts.push(`- **Package Manager**: ${stack.packageManager}`);
|
|
308
|
+
stackInfo = stackParts.join("\n");
|
|
309
|
+
}
|
|
310
|
+
// Build DOCUMENTATION_CONTEXT variable
|
|
311
|
+
let docContext = "";
|
|
312
|
+
if (documentation) {
|
|
313
|
+
const docParts = [];
|
|
314
|
+
docParts.push(`\n# Documentation Context\n`);
|
|
315
|
+
docParts.push(documentation.recap);
|
|
316
|
+
if (documentation.files && documentation.files.length > 0) {
|
|
317
|
+
docParts.push(`\n**Relevant Documentation Files**:`);
|
|
318
|
+
documentation.files.forEach((file) => {
|
|
319
|
+
docParts.push(`- ${file.path}`);
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
docContext = docParts.join("\n");
|
|
323
|
+
}
|
|
324
|
+
// Build RETRY_CONTEXT variable
|
|
325
|
+
const retryCtx = retryContext || "";
|
|
326
|
+
return this.buildPrompt({
|
|
327
|
+
name: "task-execution",
|
|
328
|
+
variables: {
|
|
329
|
+
RETRY_CONTEXT: retryCtx,
|
|
330
|
+
TASK_PLAN: taskPlanText,
|
|
331
|
+
STACK_INFO: stackInfo,
|
|
332
|
+
DOCUMENTATION_CONTEXT: docContext,
|
|
333
|
+
},
|
|
334
|
+
});
|
|
335
|
+
}
|
|
277
336
|
}
|
|
278
337
|
exports.PromptBuilder = PromptBuilder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-registry.d.ts","sourceRoot":"","sources":["../../src/lib/prompt-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt-registry.d.ts","sourceRoot":"","sources":["../../src/lib/prompt-registry.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,OAAO,CAiUnB;IAEH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI1D,MAAM,CAAC,aAAa,IAAI,cAAc,EAAE;IAIxC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,EAAE;IAMlE,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC,MAAM,CAAC,WAAW,IAAI,MAAM;IAiD5B,MAAM,CAAC,cAAc,CACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC;QACD,KAAK,EAAE,OAAO,CAAC;QACf,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B;CAuBF"}
|
|
@@ -131,6 +131,29 @@ class PromptRegistry {
|
|
|
131
131
|
promptText: prompts_1.TASK_PLANNING_SYSTEM_PROMPT,
|
|
132
132
|
},
|
|
133
133
|
],
|
|
134
|
+
// Task Execution Prompts
|
|
135
|
+
[
|
|
136
|
+
"task-execution",
|
|
137
|
+
{
|
|
138
|
+
name: "task-execution",
|
|
139
|
+
description: "Execute task with full project context",
|
|
140
|
+
type: "user",
|
|
141
|
+
requiredVariables: ["TASK_PLAN", "STACK_INFO"],
|
|
142
|
+
optionalVariables: ["RETRY_CONTEXT", "DOCUMENTATION_CONTEXT"],
|
|
143
|
+
promptText: prompts_1.TASK_EXECUTION_PROMPT,
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
[
|
|
147
|
+
"task-execution-system",
|
|
148
|
+
{
|
|
149
|
+
name: "task-execution-system",
|
|
150
|
+
description: "System prompt for task execution",
|
|
151
|
+
type: "system",
|
|
152
|
+
requiredVariables: [],
|
|
153
|
+
optionalVariables: [],
|
|
154
|
+
promptText: prompts_1.TASK_EXECUTION_SYSTEM_PROMPT,
|
|
155
|
+
},
|
|
156
|
+
],
|
|
134
157
|
// PRD Question Prompts
|
|
135
158
|
[
|
|
136
159
|
"prd-question",
|
|
@@ -154,6 +177,141 @@ class PromptRegistry {
|
|
|
154
177
|
promptText: prompts_1.PRD_QUESTION_SYSTEM_PROMPT,
|
|
155
178
|
},
|
|
156
179
|
],
|
|
180
|
+
// Documentation Recap Prompts
|
|
181
|
+
[
|
|
182
|
+
"documentation-recap",
|
|
183
|
+
{
|
|
184
|
+
name: "documentation-recap",
|
|
185
|
+
description: "Create concise recap of fetched documentation",
|
|
186
|
+
type: "user",
|
|
187
|
+
requiredVariables: ["LIBRARIES_LIST", "DOCUMENTATION_CONTENTS"],
|
|
188
|
+
optionalVariables: [],
|
|
189
|
+
promptText: prompts_1.DOCUMENTATION_RECAP_PROMPT,
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
[
|
|
193
|
+
"documentation-recap-system",
|
|
194
|
+
{
|
|
195
|
+
name: "documentation-recap-system",
|
|
196
|
+
description: "System prompt for documentation recap",
|
|
197
|
+
type: "system",
|
|
198
|
+
requiredVariables: [],
|
|
199
|
+
optionalVariables: [],
|
|
200
|
+
promptText: prompts_1.DOCUMENTATION_RECAP_SYSTEM_PROMPT,
|
|
201
|
+
},
|
|
202
|
+
],
|
|
203
|
+
// PRD Question Answer Prompts
|
|
204
|
+
[
|
|
205
|
+
"prd-question-answer",
|
|
206
|
+
{
|
|
207
|
+
name: "prd-question-answer",
|
|
208
|
+
description: "Answer questions about PRD",
|
|
209
|
+
type: "user",
|
|
210
|
+
requiredVariables: ["PRD_CONTENT", "QUESTIONS_TEXT"],
|
|
211
|
+
optionalVariables: ["CONTEXT_TEXT"],
|
|
212
|
+
promptText: prompts_1.PRD_QUESTION_ANSWER_PROMPT,
|
|
213
|
+
},
|
|
214
|
+
],
|
|
215
|
+
[
|
|
216
|
+
"prd-question-answer-system",
|
|
217
|
+
{
|
|
218
|
+
name: "prd-question-answer-system",
|
|
219
|
+
description: "System prompt for PRD question answering",
|
|
220
|
+
type: "system",
|
|
221
|
+
requiredVariables: [],
|
|
222
|
+
optionalVariables: [],
|
|
223
|
+
promptText: prompts_1.PRD_QUESTION_ANSWER_SYSTEM_PROMPT,
|
|
224
|
+
},
|
|
225
|
+
],
|
|
226
|
+
// Workflow Prompts
|
|
227
|
+
[
|
|
228
|
+
"project-init-suggestion",
|
|
229
|
+
{
|
|
230
|
+
name: "project-init-suggestion",
|
|
231
|
+
description: "Suggest project initialization configuration",
|
|
232
|
+
type: "user",
|
|
233
|
+
requiredVariables: ["USER_DESCRIPTION"],
|
|
234
|
+
optionalVariables: [],
|
|
235
|
+
promptText: prompts_1.PROJECT_INIT_SUGGESTION_PROMPT,
|
|
236
|
+
},
|
|
237
|
+
],
|
|
238
|
+
[
|
|
239
|
+
"project-init-suggestion-system",
|
|
240
|
+
{
|
|
241
|
+
name: "project-init-suggestion-system",
|
|
242
|
+
description: "System prompt for project initialization",
|
|
243
|
+
type: "system",
|
|
244
|
+
requiredVariables: [],
|
|
245
|
+
optionalVariables: [],
|
|
246
|
+
promptText: prompts_1.PROJECT_INIT_SUGGESTION_SYSTEM_PROMPT,
|
|
247
|
+
},
|
|
248
|
+
],
|
|
249
|
+
[
|
|
250
|
+
"prd-improvement",
|
|
251
|
+
{
|
|
252
|
+
name: "prd-improvement",
|
|
253
|
+
description: "Improve PRD based on user feedback",
|
|
254
|
+
type: "user",
|
|
255
|
+
requiredVariables: ["CURRENT_PRD", "USER_FEEDBACK"],
|
|
256
|
+
optionalVariables: [],
|
|
257
|
+
promptText: prompts_1.PRD_IMPROVEMENT_PROMPT,
|
|
258
|
+
},
|
|
259
|
+
],
|
|
260
|
+
[
|
|
261
|
+
"prd-improvement-system",
|
|
262
|
+
{
|
|
263
|
+
name: "prd-improvement-system",
|
|
264
|
+
description: "System prompt for PRD improvement",
|
|
265
|
+
type: "system",
|
|
266
|
+
requiredVariables: [],
|
|
267
|
+
optionalVariables: [],
|
|
268
|
+
promptText: prompts_1.PRD_IMPROVEMENT_SYSTEM_PROMPT,
|
|
269
|
+
},
|
|
270
|
+
],
|
|
271
|
+
[
|
|
272
|
+
"task-prioritization",
|
|
273
|
+
{
|
|
274
|
+
name: "task-prioritization",
|
|
275
|
+
description: "Prioritize tasks based on user guidance",
|
|
276
|
+
type: "user",
|
|
277
|
+
requiredVariables: ["TASKS_DESCRIPTION", "USER_GUIDANCE"],
|
|
278
|
+
optionalVariables: [],
|
|
279
|
+
promptText: prompts_1.TASK_PRIORITIZATION_PROMPT,
|
|
280
|
+
},
|
|
281
|
+
],
|
|
282
|
+
[
|
|
283
|
+
"task-prioritization-system",
|
|
284
|
+
{
|
|
285
|
+
name: "task-prioritization-system",
|
|
286
|
+
description: "System prompt for task prioritization",
|
|
287
|
+
type: "system",
|
|
288
|
+
requiredVariables: [],
|
|
289
|
+
optionalVariables: [],
|
|
290
|
+
promptText: prompts_1.TASK_PRIORITIZATION_SYSTEM_PROMPT,
|
|
291
|
+
},
|
|
292
|
+
],
|
|
293
|
+
[
|
|
294
|
+
"task-splitting-assistance",
|
|
295
|
+
{
|
|
296
|
+
name: "task-splitting-assistance",
|
|
297
|
+
description: "Generate task splitting instructions",
|
|
298
|
+
type: "user",
|
|
299
|
+
requiredVariables: ["TASK_TITLE", "USER_GUIDANCE"],
|
|
300
|
+
optionalVariables: ["TASK_CONTENT"],
|
|
301
|
+
promptText: prompts_1.TASK_SPLITTING_ASSISTANCE_PROMPT,
|
|
302
|
+
},
|
|
303
|
+
],
|
|
304
|
+
[
|
|
305
|
+
"task-splitting-assistance-system",
|
|
306
|
+
{
|
|
307
|
+
name: "task-splitting-assistance-system",
|
|
308
|
+
description: "System prompt for task splitting assistance",
|
|
309
|
+
type: "system",
|
|
310
|
+
requiredVariables: [],
|
|
311
|
+
optionalVariables: [],
|
|
312
|
+
promptText: prompts_1.TASK_SPLITTING_ASSISTANCE_SYSTEM_PROMPT,
|
|
313
|
+
},
|
|
314
|
+
],
|
|
157
315
|
]);
|
|
158
316
|
static getPrompt(name) {
|
|
159
317
|
return this.prompts.get(name);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TaskExecutionConfig, TaskExecutionResult } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Execute a single task with all features (retry, planning, review, etc.)
|
|
4
|
+
* This is the core unified execution logic used by both execute and execute-loop commands
|
|
5
|
+
*/
|
|
6
|
+
export declare function executeTaskCore(taskId: string, config: TaskExecutionConfig): Promise<TaskExecutionResult>;
|
|
7
|
+
//# sourceMappingURL=task-execution-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-execution-core.d.ts","sourceRoot":"","sources":["../../src/lib/task-execution-core.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EAKpB,MAAM,UAAU,CAAC;AAWlB;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CA+D9B"}
|