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,28 @@
|
|
|
1
|
+
import { ExecutorTool, Task } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Planning phase configuration
|
|
4
|
+
*/
|
|
5
|
+
export interface PlanningConfig {
|
|
6
|
+
planModel?: string;
|
|
7
|
+
reviewPlan?: boolean;
|
|
8
|
+
autoCommit?: boolean;
|
|
9
|
+
dry?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Planning phase result
|
|
13
|
+
*/
|
|
14
|
+
export interface PlanningResult {
|
|
15
|
+
planContent?: string;
|
|
16
|
+
planFileName?: string;
|
|
17
|
+
success: boolean;
|
|
18
|
+
error?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Execute planning phase for a task
|
|
22
|
+
* Creates an AI-generated implementation plan with optional human review
|
|
23
|
+
*/
|
|
24
|
+
export declare function executePlanningPhase(task: Task, defaultTool: ExecutorTool, config: PlanningConfig, execFn?: (command: string) => Promise<{
|
|
25
|
+
stdout: string;
|
|
26
|
+
stderr: string;
|
|
27
|
+
}>): Promise<PlanningResult>;
|
|
28
|
+
//# sourceMappingURL=task-planning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-planning.d.ts","sourceRoot":"","sources":["../../src/lib/task-planning.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,YAAY,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAS9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,cAAc,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,cAAc,CAAC,CAgIzB"}
|
|
@@ -0,0 +1,109 @@
|
|
|
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.executePlanningPhase = executePlanningPhase;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const executor_factory_1 = require("./executors/executor-factory");
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
|
+
const child_process_1 = require("child_process");
|
|
12
|
+
const util_1 = require("util");
|
|
13
|
+
const git_utils_1 = require("./git-utils");
|
|
14
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
15
|
+
/**
|
|
16
|
+
* Execute planning phase for a task
|
|
17
|
+
* Creates an AI-generated implementation plan with optional human review
|
|
18
|
+
*/
|
|
19
|
+
async function executePlanningPhase(task, defaultTool, config, execFn = execAsync) {
|
|
20
|
+
const { planModel, reviewPlan, autoCommit, dry } = config;
|
|
21
|
+
console.log(chalk_1.default.blue.bold(`\n🧠 Starting Planning Phase for Task: ${task.title}`));
|
|
22
|
+
const planFileName = `task-${task.id}-plan.md`;
|
|
23
|
+
// Parse executor and model from planModel string
|
|
24
|
+
const planExecutor = planModel
|
|
25
|
+
? planModel.split(":")[0]
|
|
26
|
+
: defaultTool;
|
|
27
|
+
const planModelName = planModel ? planModel.split(":")[1] : undefined;
|
|
28
|
+
let planningPrompt = `You are a senior software architect. Analyze the following task and create a detailed implementation plan.
|
|
29
|
+
|
|
30
|
+
Task: ${task.title}
|
|
31
|
+
Description: ${task.description || "No description provided."}
|
|
32
|
+
|
|
33
|
+
Requirements:
|
|
34
|
+
1. Analyze the task requirements.
|
|
35
|
+
2. Create a detailed step-by-step implementation plan.
|
|
36
|
+
3. Identify necessary file changes.
|
|
37
|
+
4. Write this plan to a file named "${planFileName}" in the current directory.
|
|
38
|
+
5. Do NOT implement the code yet, just create the plan file.
|
|
39
|
+
|
|
40
|
+
Please create the "${planFileName}" file now.`;
|
|
41
|
+
console.log(chalk_1.default.cyan(` Using executor for planning: ${planExecutor}${planModelName ? ` (${planModelName})` : ""}`));
|
|
42
|
+
// Create executor for planning
|
|
43
|
+
const planningConfig = {
|
|
44
|
+
model: planModelName,
|
|
45
|
+
continueLastSession: false,
|
|
46
|
+
};
|
|
47
|
+
const executor = executor_factory_1.ExecutorFactory.create(planExecutor, planningConfig);
|
|
48
|
+
try {
|
|
49
|
+
let planningComplete = false;
|
|
50
|
+
let planContent;
|
|
51
|
+
while (!planningComplete) {
|
|
52
|
+
await executor.execute(planningPrompt, dry, planningConfig);
|
|
53
|
+
if (!dry) {
|
|
54
|
+
// Verify plan file exists and read it
|
|
55
|
+
if ((0, fs_1.existsSync)(planFileName)) {
|
|
56
|
+
planContent = (0, fs_1.readFileSync)(planFileName, "utf-8");
|
|
57
|
+
console.log(chalk_1.default.green(`✅ Plan created successfully: ${planFileName}`));
|
|
58
|
+
// Human Review Loop
|
|
59
|
+
if (reviewPlan) {
|
|
60
|
+
console.log(chalk_1.default.yellow(`\n👀 Pausing for Human Review of the Plan: ${planFileName}`));
|
|
61
|
+
console.log(chalk_1.default.cyan("You can edit the file now."));
|
|
62
|
+
const { feedback } = await inquirer_1.default.prompt([
|
|
63
|
+
{
|
|
64
|
+
type: "input",
|
|
65
|
+
name: "feedback",
|
|
66
|
+
message: "Enter feedback to refine the plan (or press Enter to approve and continue):",
|
|
67
|
+
},
|
|
68
|
+
]);
|
|
69
|
+
if (feedback && feedback.trim() !== "") {
|
|
70
|
+
console.log(chalk_1.default.blue("🔄 Refining plan based on feedback..."));
|
|
71
|
+
planningPrompt = `The user provided the following feedback on the plan you just created:
|
|
72
|
+
|
|
73
|
+
"${feedback}"
|
|
74
|
+
|
|
75
|
+
Please update the plan file "${planFileName}" to incorporate this feedback.`;
|
|
76
|
+
// Continue loop to regenerate plan
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Auto-commit plan if enabled (only after approval)
|
|
81
|
+
if (autoCommit) {
|
|
82
|
+
await (0, git_utils_1.commitFile)(planFileName, `docs: create implementation plan for task ${task.id}`, execFn);
|
|
83
|
+
}
|
|
84
|
+
planningComplete = true;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.warn(chalk_1.default.yellow(`⚠️ Plan file ${planFileName} was not created by the executor.`));
|
|
88
|
+
planningComplete = true; // Exit loop to avoid infinite retry if file not created
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
planningComplete = true; // Dry run
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
planContent,
|
|
97
|
+
planFileName,
|
|
98
|
+
success: true,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
103
|
+
console.error(chalk_1.default.red(`❌ Planning phase failed: ${errorMessage}`));
|
|
104
|
+
return {
|
|
105
|
+
success: false,
|
|
106
|
+
error: errorMessage,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Task } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Review phase configuration
|
|
4
|
+
*/
|
|
5
|
+
export interface ReviewConfig {
|
|
6
|
+
reviewModel?: string;
|
|
7
|
+
planContent?: string;
|
|
8
|
+
dry?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Review phase result
|
|
12
|
+
*/
|
|
13
|
+
export interface ReviewResult {
|
|
14
|
+
approved: boolean;
|
|
15
|
+
feedback: string;
|
|
16
|
+
success: boolean;
|
|
17
|
+
error?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Execute AI review phase for task execution
|
|
21
|
+
* Reviews code changes and provides feedback
|
|
22
|
+
*/
|
|
23
|
+
export declare function executeReviewPhase(task: Task, config: ReviewConfig, execFn?: (command: string) => Promise<{
|
|
24
|
+
stdout: string;
|
|
25
|
+
stderr: string;
|
|
26
|
+
}>): Promise<ReviewResult>;
|
|
27
|
+
//# sourceMappingURL=task-review.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-review.d.ts","sourceRoot":"","sources":["../../src/lib/task-review.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,IAAI,EAAE,MAAM,UAAU,CAAC;AAO9C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,YAAY,EACpB,MAAM,GAAE,CACN,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAa,GAC3D,OAAO,CAAC,YAAY,CAAC,CA+GvB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
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.executeReviewPhase = executeReviewPhase;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const ai_service_factory_1 = require("../utils/ai-service-factory");
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
const util_1 = require("util");
|
|
11
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
12
|
+
/**
|
|
13
|
+
* Execute AI review phase for task execution
|
|
14
|
+
* Reviews code changes and provides feedback
|
|
15
|
+
*/
|
|
16
|
+
async function executeReviewPhase(task, config, execFn = execAsync) {
|
|
17
|
+
const { reviewModel, planContent, dry } = config;
|
|
18
|
+
console.log(chalk_1.default.blue.bold("\n🕵️ Starting AI Review Phase..."));
|
|
19
|
+
if (dry) {
|
|
20
|
+
console.log(chalk_1.default.yellow("🔍 DRY RUN - Review phase skipped"));
|
|
21
|
+
return {
|
|
22
|
+
approved: true,
|
|
23
|
+
feedback: "Dry run - review skipped",
|
|
24
|
+
success: true,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
// Get git diff
|
|
29
|
+
const { stdout: diff } = await execFn("git diff HEAD");
|
|
30
|
+
if (!diff.trim()) {
|
|
31
|
+
console.log(chalk_1.default.yellow("⚠️ No changes detected to review."));
|
|
32
|
+
return {
|
|
33
|
+
approved: true,
|
|
34
|
+
feedback: "No changes to review",
|
|
35
|
+
success: true,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// Parse executor and model from reviewModel string
|
|
39
|
+
const reviewExecutor = reviewModel
|
|
40
|
+
? reviewModel.split(":")[0]
|
|
41
|
+
: undefined;
|
|
42
|
+
const reviewModelName = reviewModel ? reviewModel.split(":")[1] : undefined;
|
|
43
|
+
if (reviewExecutor && reviewModelName) {
|
|
44
|
+
console.log(chalk_1.default.cyan(` Using executor for review: ${reviewExecutor} (${reviewModelName})`));
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.log(chalk_1.default.cyan(" Using default AI provider for review"));
|
|
48
|
+
}
|
|
49
|
+
const reviewPrompt = `You are a strict code reviewer. Review the following changes for the task.
|
|
50
|
+
|
|
51
|
+
Task: ${task.title}
|
|
52
|
+
${planContent ? `Plan: ${planContent}` : "Plan: No plan provided."}
|
|
53
|
+
|
|
54
|
+
Git Diff:
|
|
55
|
+
${diff.substring(0, 10000)}
|
|
56
|
+
|
|
57
|
+
Analyze the changes for:
|
|
58
|
+
1. Correctness (does it solve the task?)
|
|
59
|
+
2. Code Quality (clean code, best practices)
|
|
60
|
+
3. Potential Bugs
|
|
61
|
+
|
|
62
|
+
Return a JSON object:
|
|
63
|
+
{
|
|
64
|
+
"approved": boolean,
|
|
65
|
+
"feedback": "Detailed feedback explaining why it was rejected or approved"
|
|
66
|
+
}
|
|
67
|
+
`;
|
|
68
|
+
// Use AI operations to get review response
|
|
69
|
+
const aiOps = (0, ai_service_factory_1.getAIOperations)();
|
|
70
|
+
const aiResponse = await aiOps.streamText(reviewPrompt);
|
|
71
|
+
const jsonMatch = aiResponse.match(/\{[\s\S]*\}/);
|
|
72
|
+
if (jsonMatch) {
|
|
73
|
+
const reviewResult = JSON.parse(jsonMatch[0]);
|
|
74
|
+
if (!reviewResult.approved) {
|
|
75
|
+
console.log(chalk_1.default.red(`❌ AI Review Rejected Changes: ${reviewResult.feedback}`));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.log(chalk_1.default.green(`✅ AI Review Approved: ${reviewResult.feedback}`));
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
approved: reviewResult.approved,
|
|
82
|
+
feedback: reviewResult.feedback,
|
|
83
|
+
success: true,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.warn(chalk_1.default.yellow("⚠️ Could not parse AI review response. Assuming approval."));
|
|
88
|
+
return {
|
|
89
|
+
approved: true,
|
|
90
|
+
feedback: "Could not parse review response, assuming approval",
|
|
91
|
+
success: true,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
97
|
+
console.error(chalk_1.default.red(`❌ AI Review failed: ${errorMessage}`));
|
|
98
|
+
// If review crashes, warn but don't fail the task
|
|
99
|
+
return {
|
|
100
|
+
approved: true,
|
|
101
|
+
feedback: `Review failed: ${errorMessage}`,
|
|
102
|
+
success: false,
|
|
103
|
+
error: errorMessage,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
package/dist/lib/validation.d.ts
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
|
-
import { AIConfig } from
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { AIConfig } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Validation/Verification result for a single command
|
|
4
|
+
*/
|
|
5
|
+
export interface ValidationResult {
|
|
6
|
+
command: string;
|
|
7
|
+
success: boolean;
|
|
8
|
+
output?: string;
|
|
9
|
+
error?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function isValidAIProvider(provider: string): provider is NonNullable<AIConfig["provider"]>;
|
|
12
|
+
/**
|
|
13
|
+
* Run validation/verification commands and return results
|
|
14
|
+
* Supports both --validate and --verify as aliases
|
|
15
|
+
* Returns detailed results for each command
|
|
16
|
+
*/
|
|
17
|
+
export declare function runValidations(validations: string[], dry: boolean, execFn?: (command: string) => Promise<{
|
|
18
|
+
stdout: string;
|
|
19
|
+
stderr: string;
|
|
20
|
+
}>): Promise<ValidationResult[]>;
|
|
4
21
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIpC,wBAAgB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIpC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GACf,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAE/C;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EAAE,EACrB,GAAG,EAAE,OAAO,EACZ,MAAM,GAAE,CACN,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAa,GAC3D,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA6F7B"}
|
package/dist/lib/validation.js
CHANGED
|
@@ -10,31 +10,50 @@ const util_1 = require("util");
|
|
|
10
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
11
|
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
12
12
|
function isValidAIProvider(provider) {
|
|
13
|
-
return [
|
|
13
|
+
return ["openrouter", "openai", "anthropic", "custom"].includes(provider);
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Run validation/verification commands and return results
|
|
17
|
+
* Supports both --validate and --verify as aliases
|
|
18
|
+
* Returns detailed results for each command
|
|
19
|
+
*/
|
|
20
|
+
async function runValidations(validations, dry, execFn = execAsync) {
|
|
21
|
+
const results = [];
|
|
16
22
|
if (validations.length === 0) {
|
|
17
|
-
return;
|
|
23
|
+
return results;
|
|
18
24
|
}
|
|
19
25
|
if (dry) {
|
|
20
|
-
console.log(chalk_1.default.yellow(
|
|
21
|
-
validations.forEach(cmd =>
|
|
22
|
-
|
|
26
|
+
console.log(chalk_1.default.yellow("🔍 DRY RUN - Validation/verification commands that would run:"));
|
|
27
|
+
validations.forEach((cmd) => {
|
|
28
|
+
console.log(chalk_1.default.cyan(` ${cmd}`));
|
|
29
|
+
results.push({
|
|
30
|
+
command: cmd,
|
|
31
|
+
success: true,
|
|
32
|
+
output: "DRY RUN - not executed",
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
return results;
|
|
23
36
|
}
|
|
24
|
-
console.log(chalk_1.default.blue(`🧪 Running ${validations.length} validation${validations.length > 1 ?
|
|
37
|
+
console.log(chalk_1.default.blue(`🧪 Running ${validations.length} validation/verification command${validations.length > 1 ? "s" : ""}...`));
|
|
25
38
|
for (let i = 0; i < validations.length; i++) {
|
|
26
39
|
const validation = validations[i];
|
|
27
40
|
console.log(chalk_1.default.blue(`🧪 Running validation [${i + 1}/${validations.length}]: ${validation}`));
|
|
28
41
|
try {
|
|
29
|
-
const { stdout, stderr } = await
|
|
42
|
+
const { stdout, stderr } = await execFn(validation);
|
|
30
43
|
console.log(chalk_1.default.green(`✅ Validation passed: ${validation}`));
|
|
31
44
|
// Show stdout if there's any output
|
|
32
45
|
if (stdout && stdout.trim()) {
|
|
33
46
|
console.log(chalk_1.default.gray(` Output: ${stdout.trim()}`));
|
|
34
47
|
}
|
|
48
|
+
results.push({
|
|
49
|
+
command: validation,
|
|
50
|
+
success: true,
|
|
51
|
+
output: stdout.trim(),
|
|
52
|
+
});
|
|
35
53
|
}
|
|
36
54
|
catch (error) {
|
|
37
55
|
console.error(chalk_1.default.red(`❌ Validation failed: ${validation}`));
|
|
56
|
+
const errorOutput = error.stderr || error.stdout || error.message;
|
|
38
57
|
// Show error details
|
|
39
58
|
if (error.stdout && error.stdout.trim()) {
|
|
40
59
|
console.error(chalk_1.default.yellow(` stdout: ${error.stdout.trim()}`));
|
|
@@ -45,8 +64,18 @@ async function runValidations(validations, dry) {
|
|
|
45
64
|
if (error.message) {
|
|
46
65
|
console.error(chalk_1.default.red(` Error: ${error.message}`));
|
|
47
66
|
}
|
|
48
|
-
|
|
67
|
+
results.push({
|
|
68
|
+
command: validation,
|
|
69
|
+
success: false,
|
|
70
|
+
error: errorOutput,
|
|
71
|
+
});
|
|
72
|
+
// Return early on first failure
|
|
73
|
+
break;
|
|
49
74
|
}
|
|
50
75
|
}
|
|
51
|
-
|
|
76
|
+
const allPassed = results.every((r) => r.success);
|
|
77
|
+
if (allPassed) {
|
|
78
|
+
console.log(chalk_1.default.green(`🎉 All ${validations.length} validation${validations.length > 1 ? "s" : ""} passed!`));
|
|
79
|
+
}
|
|
80
|
+
return results;
|
|
52
81
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const DOCUMENTATION_RECAP_PROMPT = "Create a concise recap of the documentation fetched for these libraries:\n\nLibraries:\n{LIBRARIES_LIST}\n\nDocumentation Contents:\n{DOCUMENTATION_CONTENTS}\n\nPlease provide a 2-3 sentence summary of what documentation is available and how it relates to the task.";
|
|
2
|
+
export declare const DOCUMENTATION_RECAP_SYSTEM_PROMPT = "You are a technical writer who creates concise summaries of documentation collections.";
|
|
3
|
+
//# sourceMappingURL=documentation-recap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentation-recap.d.ts","sourceRoot":"","sources":["../../src/prompts/documentation-recap.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,8QAQkE,CAAC;AAE1G,eAAO,MAAM,iCAAiC,2FAA2F,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DOCUMENTATION_RECAP_SYSTEM_PROMPT = exports.DOCUMENTATION_RECAP_PROMPT = void 0;
|
|
4
|
+
exports.DOCUMENTATION_RECAP_PROMPT = `Create a concise recap of the documentation fetched for these libraries:
|
|
5
|
+
|
|
6
|
+
Libraries:
|
|
7
|
+
{LIBRARIES_LIST}
|
|
8
|
+
|
|
9
|
+
Documentation Contents:
|
|
10
|
+
{DOCUMENTATION_CONTENTS}
|
|
11
|
+
|
|
12
|
+
Please provide a 2-3 sentence summary of what documentation is available and how it relates to the task.`;
|
|
13
|
+
exports.DOCUMENTATION_RECAP_SYSTEM_PROMPT = `You are a technical writer who creates concise summaries of documentation collections.`;
|
package/dist/prompts/index.d.ts
CHANGED
|
@@ -4,7 +4,11 @@ export * from "./task-enhancement";
|
|
|
4
4
|
export * from "./prd-rework";
|
|
5
5
|
export * from "./documentation-detection";
|
|
6
6
|
export * from "./task-planning";
|
|
7
|
+
export * from "./task-execution";
|
|
7
8
|
export * from "./prd-question";
|
|
8
9
|
export * from "./prd-generation";
|
|
9
10
|
export * from "./prd-combination";
|
|
11
|
+
export * from "./documentation-recap";
|
|
12
|
+
export * from "./prd-question-answer";
|
|
13
|
+
export * from "./workflow-prompts";
|
|
10
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -20,6 +20,10 @@ __exportStar(require("./task-enhancement"), exports);
|
|
|
20
20
|
__exportStar(require("./prd-rework"), exports);
|
|
21
21
|
__exportStar(require("./documentation-detection"), exports);
|
|
22
22
|
__exportStar(require("./task-planning"), exports);
|
|
23
|
+
__exportStar(require("./task-execution"), exports);
|
|
23
24
|
__exportStar(require("./prd-question"), exports);
|
|
24
25
|
__exportStar(require("./prd-generation"), exports);
|
|
25
26
|
__exportStar(require("./prd-combination"), exports);
|
|
27
|
+
__exportStar(require("./documentation-recap"), exports);
|
|
28
|
+
__exportStar(require("./prd-question-answer"), exports);
|
|
29
|
+
__exportStar(require("./workflow-prompts"), exports);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const PRD_QUESTION_ANSWER_PROMPT = "You are a product expert helping to clarify a PRD.\n\nPRD Content:\n{PRD_CONTENT}{CONTEXT_TEXT}\n\nPlease answer the following questions based on the PRD and context:\n\n{QUESTIONS_TEXT}\n\nProvide thoughtful, specific answers that will help refine the PRD.\nFormat your response as JSON with the following structure:\n{\n \"answers\": {\n \"1\": \"answer to question 1\",\n \"2\": \"answer to question 2\",\n ...\n }\n}";
|
|
2
|
+
export declare const PRD_QUESTION_ANSWER_SYSTEM_PROMPT = "You are a product expert analyzing PRDs and answering clarifying questions.\nYour answers should be:\n- Specific and actionable\n- Based on the PRD content and project context\n- Helpful for refining the PRD\n- Formatted as JSON";
|
|
3
|
+
//# sourceMappingURL=prd-question-answer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-question-answer.d.ts","sourceRoot":"","sources":["../../src/prompts/prd-question-answer.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,obAiBrC,CAAC;AAEH,eAAO,MAAM,iCAAiC,yOAK1B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PRD_QUESTION_ANSWER_SYSTEM_PROMPT = exports.PRD_QUESTION_ANSWER_PROMPT = void 0;
|
|
4
|
+
exports.PRD_QUESTION_ANSWER_PROMPT = `You are a product expert helping to clarify a PRD.
|
|
5
|
+
|
|
6
|
+
PRD Content:
|
|
7
|
+
{PRD_CONTENT}{CONTEXT_TEXT}
|
|
8
|
+
|
|
9
|
+
Please answer the following questions based on the PRD and context:
|
|
10
|
+
|
|
11
|
+
{QUESTIONS_TEXT}
|
|
12
|
+
|
|
13
|
+
Provide thoughtful, specific answers that will help refine the PRD.
|
|
14
|
+
Format your response as JSON with the following structure:
|
|
15
|
+
{
|
|
16
|
+
"answers": {
|
|
17
|
+
"1": "answer to question 1",
|
|
18
|
+
"2": "answer to question 2",
|
|
19
|
+
...
|
|
20
|
+
}
|
|
21
|
+
}`;
|
|
22
|
+
exports.PRD_QUESTION_ANSWER_SYSTEM_PROMPT = `You are a product expert analyzing PRDs and answering clarifying questions.
|
|
23
|
+
Your answers should be:
|
|
24
|
+
- Specific and actionable
|
|
25
|
+
- Based on the PRD content and project context
|
|
26
|
+
- Helpful for refining the PRD
|
|
27
|
+
- Formatted as JSON`;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const TASK_EXECUTION_PROMPT = "{RETRY_CONTEXT}{TASK_PLAN}\n# Technology Stack\n{STACK_INFO}\n{DOCUMENTATION_CONTEXT}";
|
|
2
|
+
export declare const TASK_EXECUTION_SYSTEM_PROMPT = "\nYou are an expert software developer. Execute the task according to the implementation plan and project context provided.\n\n## Guidelines:\n1. Follow the implementation plan step-by-step\n2. Use the technology stack and libraries specified\n3. Refer to the documentation context for API usage\n4. Write clean, maintainable code following best practices\n5. Handle errors appropriately\n6. Test your changes\n\n## On Retries:\nIf this is a retry attempt, carefully analyze the previous error and fix it before proceeding.\n";
|
|
3
|
+
//# sourceMappingURL=task-execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-execution.d.ts","sourceRoot":"","sources":["../../src/prompts/task-execution.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,0FAGV,CAAC;AAEzB,eAAO,MAAM,4BAA4B,khBAaxC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TASK_EXECUTION_SYSTEM_PROMPT = exports.TASK_EXECUTION_PROMPT = void 0;
|
|
4
|
+
exports.TASK_EXECUTION_PROMPT = `{RETRY_CONTEXT}{TASK_PLAN}
|
|
5
|
+
# Technology Stack
|
|
6
|
+
{STACK_INFO}
|
|
7
|
+
{DOCUMENTATION_CONTEXT}`;
|
|
8
|
+
exports.TASK_EXECUTION_SYSTEM_PROMPT = `
|
|
9
|
+
You are an expert software developer. Execute the task according to the implementation plan and project context provided.
|
|
10
|
+
|
|
11
|
+
## Guidelines:
|
|
12
|
+
1. Follow the implementation plan step-by-step
|
|
13
|
+
2. Use the technology stack and libraries specified
|
|
14
|
+
3. Refer to the documentation context for API usage
|
|
15
|
+
4. Write clean, maintainable code following best practices
|
|
16
|
+
5. Handle errors appropriately
|
|
17
|
+
6. Test your changes
|
|
18
|
+
|
|
19
|
+
## On Retries:
|
|
20
|
+
If this is a retry attempt, carefully analyze the previous error and fix it before proceeding.
|
|
21
|
+
`;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const PROJECT_INIT_SUGGESTION_PROMPT = "You are helping a developer configure their project initialization and tech stack.\n\nAvailable Options:\n- AI Providers: openrouter, anthropic, openai, custom\n- Frontend Frameworks: next, tanstack-router, react-router, vite-react, remix\n- Backend Frameworks: hono, express, elysia, fastify\n- Databases: sqlite, postgres, mysql, mongodb, turso, neon\n- Authentication: better-auth (recommended), clerk, auth0, custom\n\nUser's Description:\n\"{USER_DESCRIPTION}\"\n\nBased on the user's description, recommend a complete configuration. Consider:\n1. Project complexity and scale\n2. Developer experience level (infer from description)\n3. Modern best practices for 2025\n4. Compatibility between chosen technologies\n\nRespond in JSON format:\n{\n \"projectName\": \"suggested-project-name\",\n \"aiProvider\": \"recommended-provider\",\n \"aiModel\": \"recommended-model\",\n \"frontend\": \"recommended-frontend\",\n \"backend\": \"recommended-backend\",\n \"database\": \"recommended-database\",\n \"auth\": true/false,\n \"reasoning\": \"Brief explanation of your choices\"\n}";
|
|
2
|
+
export declare const PROJECT_INIT_SUGGESTION_SYSTEM_PROMPT = "You are an expert full-stack developer helping to configure modern web projects.";
|
|
3
|
+
export declare const PRD_IMPROVEMENT_PROMPT = "You are a product manager reviewing and improving a PRD.\n\nCurrent PRD:\n{CURRENT_PRD}\n\nUser's Feedback:\n\"{USER_FEEDBACK}\"\n\nImprove the PRD based on the feedback. Consider:\n1. Clarity and specificity\n2. Completeness of requirements\n3. Feasibility and scope\n4. Technical details\n5. Success criteria\n\nReturn the improved PRD in the same format, incorporating the user's feedback.";
|
|
4
|
+
export declare const PRD_IMPROVEMENT_SYSTEM_PROMPT = "You are an experienced product manager specializing in writing clear, actionable PRDs.";
|
|
5
|
+
export declare const TASK_PRIORITIZATION_PROMPT = "You are a project manager helping to prioritize tasks.\n\nTasks:\n{TASKS_DESCRIPTION}\n\nUser's Guidance:\n\"{USER_GUIDANCE}\"\n\nPrioritize these tasks (1 = highest priority) based on:\n1. Dependencies (what needs to be done first)\n2. User's guidance\n3. MVP vs. nice-to-have\n4. Risk and complexity\n\nRespond in JSON format:\n{\n \"prioritizedTasks\": [\n {\"id\": \"task-id\", \"priority\": 1, \"reasoning\": \"why this priority\"},\n ...\n ],\n \"recommendations\": \"Overall recommendations for task execution\"\n}";
|
|
6
|
+
export declare const TASK_PRIORITIZATION_SYSTEM_PROMPT = "You are an experienced project manager with expertise in agile methodologies and task prioritization.";
|
|
7
|
+
export declare const TASK_SPLITTING_ASSISTANCE_PROMPT = "You are a technical lead helping to break down a complex task.\n\nTask: {TASK_TITLE}\n{TASK_CONTENT}\n\nUser's Guidance:\n\"{USER_GUIDANCE}\"\n\nGenerate specific instructions for how to split this task into subtasks. Consider:\n1. Logical breakdown points\n2. Size constraints (e.g., 2-4 hour chunks)\n3. Dependencies between subtasks\n4. Testing and validation steps\n\nProvide clear, actionable instructions for the AI that will perform the split.";
|
|
8
|
+
export declare const TASK_SPLITTING_ASSISTANCE_SYSTEM_PROMPT = "You are a technical lead with deep expertise in breaking down complex software development tasks into manageable pieces.";
|
|
9
|
+
//# sourceMappingURL=workflow-prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-prompts.d.ts","sourceRoot":"","sources":["../../src/prompts/workflow-prompts.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,8BAA8B,wkCA4BzC,CAAC;AAEH,eAAO,MAAM,qCAAqC,qFAAqF,CAAC;AAGxI,eAAO,MAAM,sBAAsB,6YAe4C,CAAC;AAEhF,eAAO,MAAM,6BAA6B,2FAA2F,CAAC;AAGtI,eAAO,MAAM,0BAA0B,uhBAqBrC,CAAC;AAEH,eAAO,MAAM,iCAAiC,0GAA0G,CAAC;AAGzJ,eAAO,MAAM,gCAAgC,ucAckC,CAAC;AAEhF,eAAO,MAAM,uCAAuC,6HAA6H,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TASK_SPLITTING_ASSISTANCE_SYSTEM_PROMPT = exports.TASK_SPLITTING_ASSISTANCE_PROMPT = exports.TASK_PRIORITIZATION_SYSTEM_PROMPT = exports.TASK_PRIORITIZATION_PROMPT = exports.PRD_IMPROVEMENT_SYSTEM_PROMPT = exports.PRD_IMPROVEMENT_PROMPT = exports.PROJECT_INIT_SUGGESTION_SYSTEM_PROMPT = exports.PROJECT_INIT_SUGGESTION_PROMPT = void 0;
|
|
4
|
+
// Project Initialization Suggestion
|
|
5
|
+
exports.PROJECT_INIT_SUGGESTION_PROMPT = `You are helping a developer configure their project initialization and tech stack.
|
|
6
|
+
|
|
7
|
+
Available Options:
|
|
8
|
+
- AI Providers: openrouter, anthropic, openai, custom
|
|
9
|
+
- Frontend Frameworks: next, tanstack-router, react-router, vite-react, remix
|
|
10
|
+
- Backend Frameworks: hono, express, elysia, fastify
|
|
11
|
+
- Databases: sqlite, postgres, mysql, mongodb, turso, neon
|
|
12
|
+
- Authentication: better-auth (recommended), clerk, auth0, custom
|
|
13
|
+
|
|
14
|
+
User's Description:
|
|
15
|
+
"{USER_DESCRIPTION}"
|
|
16
|
+
|
|
17
|
+
Based on the user's description, recommend a complete configuration. Consider:
|
|
18
|
+
1. Project complexity and scale
|
|
19
|
+
2. Developer experience level (infer from description)
|
|
20
|
+
3. Modern best practices for 2025
|
|
21
|
+
4. Compatibility between chosen technologies
|
|
22
|
+
|
|
23
|
+
Respond in JSON format:
|
|
24
|
+
{
|
|
25
|
+
"projectName": "suggested-project-name",
|
|
26
|
+
"aiProvider": "recommended-provider",
|
|
27
|
+
"aiModel": "recommended-model",
|
|
28
|
+
"frontend": "recommended-frontend",
|
|
29
|
+
"backend": "recommended-backend",
|
|
30
|
+
"database": "recommended-database",
|
|
31
|
+
"auth": true/false,
|
|
32
|
+
"reasoning": "Brief explanation of your choices"
|
|
33
|
+
}`;
|
|
34
|
+
exports.PROJECT_INIT_SUGGESTION_SYSTEM_PROMPT = `You are an expert full-stack developer helping to configure modern web projects.`;
|
|
35
|
+
// PRD Improvement
|
|
36
|
+
exports.PRD_IMPROVEMENT_PROMPT = `You are a product manager reviewing and improving a PRD.
|
|
37
|
+
|
|
38
|
+
Current PRD:
|
|
39
|
+
{CURRENT_PRD}
|
|
40
|
+
|
|
41
|
+
User's Feedback:
|
|
42
|
+
"{USER_FEEDBACK}"
|
|
43
|
+
|
|
44
|
+
Improve the PRD based on the feedback. Consider:
|
|
45
|
+
1. Clarity and specificity
|
|
46
|
+
2. Completeness of requirements
|
|
47
|
+
3. Feasibility and scope
|
|
48
|
+
4. Technical details
|
|
49
|
+
5. Success criteria
|
|
50
|
+
|
|
51
|
+
Return the improved PRD in the same format, incorporating the user's feedback.`;
|
|
52
|
+
exports.PRD_IMPROVEMENT_SYSTEM_PROMPT = `You are an experienced product manager specializing in writing clear, actionable PRDs.`;
|
|
53
|
+
// Task Prioritization
|
|
54
|
+
exports.TASK_PRIORITIZATION_PROMPT = `You are a project manager helping to prioritize tasks.
|
|
55
|
+
|
|
56
|
+
Tasks:
|
|
57
|
+
{TASKS_DESCRIPTION}
|
|
58
|
+
|
|
59
|
+
User's Guidance:
|
|
60
|
+
"{USER_GUIDANCE}"
|
|
61
|
+
|
|
62
|
+
Prioritize these tasks (1 = highest priority) based on:
|
|
63
|
+
1. Dependencies (what needs to be done first)
|
|
64
|
+
2. User's guidance
|
|
65
|
+
3. MVP vs. nice-to-have
|
|
66
|
+
4. Risk and complexity
|
|
67
|
+
|
|
68
|
+
Respond in JSON format:
|
|
69
|
+
{
|
|
70
|
+
"prioritizedTasks": [
|
|
71
|
+
{"id": "task-id", "priority": 1, "reasoning": "why this priority"},
|
|
72
|
+
...
|
|
73
|
+
],
|
|
74
|
+
"recommendations": "Overall recommendations for task execution"
|
|
75
|
+
}`;
|
|
76
|
+
exports.TASK_PRIORITIZATION_SYSTEM_PROMPT = `You are an experienced project manager with expertise in agile methodologies and task prioritization.`;
|
|
77
|
+
// Task Splitting Assistance
|
|
78
|
+
exports.TASK_SPLITTING_ASSISTANCE_PROMPT = `You are a technical lead helping to break down a complex task.
|
|
79
|
+
|
|
80
|
+
Task: {TASK_TITLE}
|
|
81
|
+
{TASK_CONTENT}
|
|
82
|
+
|
|
83
|
+
User's Guidance:
|
|
84
|
+
"{USER_GUIDANCE}"
|
|
85
|
+
|
|
86
|
+
Generate specific instructions for how to split this task into subtasks. Consider:
|
|
87
|
+
1. Logical breakdown points
|
|
88
|
+
2. Size constraints (e.g., 2-4 hour chunks)
|
|
89
|
+
3. Dependencies between subtasks
|
|
90
|
+
4. Testing and validation steps
|
|
91
|
+
|
|
92
|
+
Provide clear, actionable instructions for the AI that will perform the split.`;
|
|
93
|
+
exports.TASK_SPLITTING_ASSISTANCE_SYSTEM_PROMPT = `You are a technical lead with deep expertise in breaking down complex software development tasks into manageable pieces.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-ai-assistant.d.ts","sourceRoot":"","sources":["../../src/services/workflow-ai-assistant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAiB,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-ai-assistant.d.ts","sourceRoot":"","sources":["../../src/services/workflow-ai-assistant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAiB,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAItE;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;KACrC,GAAG,OAAO,CAAC;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAqDF;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE;QAC7B,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;KACrC,GAAG,OAAO,CAAC,MAAM,CAAC;IAYnB;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;KACrC,GAAG,OAAO,CAAC,MAAM,CAAC;IAmCnB;;OAEG;IACG,wBAAwB,CAAC,KAAK,EAAE;QACpC,KAAK,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAClE,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;KACrC,GAAG,OAAO,CAAC;QACV,gBAAgB,EAAE,KAAK,CAAC;YACtB,EAAE,EAAE,MAAM,CAAC;YACX,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;QACH,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IA6DF;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE;QAC/B,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;KACrC,GAAG,OAAO,CAAC,MAAM,CAAC;CAuCpB;AAGD,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
|