From d670dcb72984cfa483063d161bb468704038895c Mon Sep 17 00:00:00 2001 From: soryu Date: Sat, 21 Feb 2026 19:33:44 +0000 Subject: feat: add directive ask command, log backfill & specialized DAG steps (#75) * feat: soryu-co/soryu - makima: Add makima directive ask CLI command * feat: soryu-co/soryu - makima: Update directive skill docs and planning prompt to support asking questions * feat: soryu-co/soryu - makima: Add log stream backfill for directive tasks * feat: soryu-co/soryu - makima: Update planning prompts to inform tasks they can ask questions * WIP: heartbeat checkpoint * feat: soryu-co/soryu - makima: Add ask command to directive SKILL.md documentation * feat: soryu-co/soryu - makima: Add log stream backfill for directive task output history * feat: soryu-co/soryu - makima: Update planning prompt to tell planning tasks they can ask questions * WIP: heartbeat checkpoint * feat: soryu-co/soryu - makima: Show Planning, PR, and Cleanup tasks as specialized steps in DAG --- .../components/directives/OrchestratorStepNode.tsx | 161 +++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 makima/frontend/src/components/directives/OrchestratorStepNode.tsx (limited to 'makima/frontend/src/components/directives/OrchestratorStepNode.tsx') diff --git a/makima/frontend/src/components/directives/OrchestratorStepNode.tsx b/makima/frontend/src/components/directives/OrchestratorStepNode.tsx new file mode 100644 index 0000000..9c8e95e --- /dev/null +++ b/makima/frontend/src/components/directives/OrchestratorStepNode.tsx @@ -0,0 +1,161 @@ +export type OrchestratorStepType = + | "planning" + | "replanning" + | "plan-orders" + | "pr" + | "pr-update" + | "cleanup" + | "verification"; + +export type OrchestratorStepStatus = "running" | "completed" | "failed" | "pending"; + +export interface OrchestratorStepNodeProps { + type: OrchestratorStepType; + taskId: string; + status: OrchestratorStepStatus; + label: string; + hasQuestions?: boolean; +} + +const TYPE_COLORS: Record< + OrchestratorStepType, + { accent: string; bg: string; border: string; text: string; dot: string } +> = { + planning: { + accent: "#75aafc", + bg: "bg-[#0d1a30]", + border: "border-[#75aafc]", + text: "text-[#75aafc]", + dot: "bg-[#75aafc]", + }, + replanning: { + accent: "#75aafc", + bg: "bg-[#0d1a30]", + border: "border-[#75aafc]", + text: "text-[#75aafc]", + dot: "bg-[#75aafc]", + }, + "plan-orders": { + accent: "#c084fc", + bg: "bg-[#1a0d30]", + border: "border-[#c084fc]", + text: "text-[#c084fc]", + dot: "bg-[#c084fc]", + }, + pr: { + accent: "#34d399", + bg: "bg-[#0a1a14]", + border: "border-[#34d399]", + text: "text-[#34d399]", + dot: "bg-[#34d399]", + }, + "pr-update": { + accent: "#34d399", + bg: "bg-[#0a1a14]", + border: "border-[#34d399]", + text: "text-[#34d399]", + dot: "bg-[#34d399]", + }, + cleanup: { + accent: "#7788aa", + bg: "bg-[#141a24]", + border: "border-[#7788aa]", + text: "text-[#7788aa]", + dot: "bg-[#7788aa]", + }, + verification: { + accent: "#7788aa", + bg: "bg-[#141a24]", + border: "border-[#7788aa]", + text: "text-[#7788aa]", + dot: "bg-[#7788aa]", + }, +}; + +const TYPE_LABELS: Record = { + planning: "PLANNING", + replanning: "REPLANNING", + "plan-orders": "PLAN ORDERS", + pr: "PR", + "pr-update": "PR UPDATE", + cleanup: "CLEANUP", + verification: "VERIFICATION", +}; + +const STATUS_LABELS: Record = { + pending: "PENDING", + running: "RUNNING", + completed: "DONE", + failed: "FAILED", +}; + +export function OrchestratorStepNode({ + type, + taskId, + status, + label, + hasQuestions, +}: OrchestratorStepNodeProps) { + const colors = TYPE_COLORS[type]; + const typeLabel = TYPE_LABELS[type]; + const statusLabel = STATUS_LABELS[status]; + + return ( +
+ {/* Type badge */} +
+
+ {/* Status dot */} + {status === "running" && ( + + )} + {status === "completed" && ( + + )} + {status === "failed" && ( + + )} + {status === "pending" && ( + + )} + + {typeLabel} + +
+
+ {hasQuestions && ( + + )} + + {statusLabel} + +
+
+ + {/* Label */} + + {label} + + + {/* Task link */} + + {status === "running" ? "View running task" : "View task"} + +
+ ); +} -- cgit v1.2.3