feat(KB-218): add workflow steps for post-implementation review
- Add core data model for workflow step definitions with AI-assisted prompt refinement - Create API routes for CRUD operations and prompt refinement via /api/workflow-steps - Add WorkflowStepManager dashboard UI for defining and managing workflow steps - Integrate workflow step selection into NewTaskModal for per-task enablement - Execute workflow steps sequentially in executor after task_done() with readonly tools - Run workflow step agents before moving tasks to in-review, failing on step errors - Add comprehensive tests for store, API routes, components, and executor integration
This commit is contained in:
@@ -14,6 +14,8 @@ import type {
|
||||
BatchStatusEntry,
|
||||
ActivityLogEntry,
|
||||
ActivityEventType,
|
||||
WorkflowStep,
|
||||
WorkflowStepInput,
|
||||
} from "@kb/core";
|
||||
import type { PlanningQuestion, PlanningSummary, PlanningResponse } from "@kb/core";
|
||||
import type { ScheduledTask, ScheduledTaskCreateInput, ScheduledTaskUpdateInput, AutomationRunResult } from "@kb/core";
|
||||
@@ -101,6 +103,7 @@ export function createTask(input: TaskCreateInput): Promise<Task> {
|
||||
column,
|
||||
dependencies,
|
||||
breakIntoSubtasks,
|
||||
enabledWorkflowSteps,
|
||||
modelPresetId,
|
||||
modelProvider,
|
||||
modelId,
|
||||
@@ -116,6 +119,7 @@ export function createTask(input: TaskCreateInput): Promise<Task> {
|
||||
column,
|
||||
dependencies,
|
||||
breakIntoSubtasks,
|
||||
enabledWorkflowSteps,
|
||||
modelPresetId,
|
||||
modelProvider,
|
||||
modelId,
|
||||
@@ -1141,3 +1145,38 @@ export function fetchActivityLog(options?: { limit?: number; since?: string; typ
|
||||
export function clearActivityLog(): Promise<{ success: boolean }> {
|
||||
return api<{ success: boolean }>("/activity", { method: "DELETE" });
|
||||
}
|
||||
|
||||
// ── Workflow Steps ─────────────────────────────────────────────────────
|
||||
|
||||
/** Fetch all workflow step definitions */
|
||||
export function fetchWorkflowSteps(): Promise<WorkflowStep[]> {
|
||||
return api<WorkflowStep[]>("/workflow-steps");
|
||||
}
|
||||
|
||||
/** Create a new workflow step */
|
||||
export function createWorkflowStep(input: WorkflowStepInput): Promise<WorkflowStep> {
|
||||
return api<WorkflowStep>("/workflow-steps", {
|
||||
method: "POST",
|
||||
body: JSON.stringify(input),
|
||||
});
|
||||
}
|
||||
|
||||
/** Update a workflow step */
|
||||
export function updateWorkflowStep(id: string, updates: Partial<WorkflowStepInput>): Promise<WorkflowStep> {
|
||||
return api<WorkflowStep>(`/workflow-steps/${id}`, {
|
||||
method: "PATCH",
|
||||
body: JSON.stringify(updates),
|
||||
});
|
||||
}
|
||||
|
||||
/** Delete a workflow step */
|
||||
export function deleteWorkflowStep(id: string): Promise<void> {
|
||||
return api<void>(`/workflow-steps/${id}`, { method: "DELETE" });
|
||||
}
|
||||
|
||||
/** Refine a workflow step's prompt using AI */
|
||||
export function refineWorkflowStepPrompt(id: string): Promise<{ prompt: string; workflowStep: WorkflowStep }> {
|
||||
return api<{ prompt: string; workflowStep: WorkflowStep }>(`/workflow-steps/${id}/refine`, {
|
||||
method: "POST",
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user