feat(ui): add Run interactively action to task context menu
Spawns Windows Terminal in the list working directory running `claude --permission-mode auto` with the task title and description prefilled as the initial prompt. Reuses the planning launcher infrastructure but skips worktree, system prompt, and MCP setup. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
615c1da665
commit
6c54759aa0
@@ -138,6 +138,40 @@ public sealed class PlanningSessionManager
|
||||
Files: files);
|
||||
}
|
||||
|
||||
public async Task<InteractiveLaunchContext> OpenInteractiveAsync(string taskId, CancellationToken ct)
|
||||
{
|
||||
var (tasks, lists, _, ctx) = CreateRepos();
|
||||
await using var __ = ctx;
|
||||
|
||||
var task = await tasks.GetByIdAsync(taskId, ct)
|
||||
?? throw new InvalidOperationException($"Task {taskId} not found.");
|
||||
|
||||
var list = await lists.GetByIdAsync(task.ListId, ct)
|
||||
?? throw new InvalidOperationException($"List {task.ListId} not found.");
|
||||
|
||||
var workingDir = list.WorkingDir;
|
||||
if (string.IsNullOrWhiteSpace(workingDir) || !Directory.Exists(workingDir))
|
||||
throw new InvalidOperationException(
|
||||
$"List '{list.Name}' has no valid working directory configured.");
|
||||
|
||||
return new InteractiveLaunchContext(
|
||||
TaskId: taskId,
|
||||
WorkingDir: workingDir,
|
||||
InitialPrompt: BuildInteractivePrompt(task));
|
||||
}
|
||||
|
||||
private static string BuildInteractivePrompt(TaskEntity task)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine($"# Task: {task.Title}");
|
||||
if (!string.IsNullOrWhiteSpace(task.Description))
|
||||
{
|
||||
sb.AppendLine();
|
||||
sb.AppendLine(task.Description);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
public async Task<int> FinalizeAsync(string taskId, bool queueAgentTasks, CancellationToken ct)
|
||||
{
|
||||
var (tasks, lists, settings, ctx) = CreateRepos();
|
||||
@@ -287,25 +321,31 @@ public sealed class PlanningSessionManager
|
||||
}
|
||||
""";
|
||||
|
||||
private static string BuildSystemPrompt() =>
|
||||
"""
|
||||
You are a planning assistant for ClaudeDo.
|
||||
Your role is to help break down a task into smaller, actionable subtasks.
|
||||
Your final goal WILL ALWAYS be the creation of Subtasks
|
||||
private static string BuildSystemPrompt()
|
||||
{
|
||||
var fromFile = PromptFiles.ReadOrNull(PromptKind.Planning);
|
||||
if (fromFile is not null) return fromFile;
|
||||
|
||||
ALWAYS invoke the `superpowers:brainstorming` skill via the Skill tool at the
|
||||
start of every planning session, and follow its process end-to-end. It guides
|
||||
you through clarifying questions, approach exploration, and design approval
|
||||
BEFORE any subtasks are created. Do not create child tasks until the user has
|
||||
approved a design.
|
||||
|
||||
NEVER Change files yourself.
|
||||
|
||||
ALWAYS Use the available MCP tools (mcp__claudedo__*) to create child tasks once the
|
||||
design is approved. When you are done planning, finalize the session.
|
||||
return
|
||||
"""
|
||||
You are a planning assistant for ClaudeDo.
|
||||
Your role is to help break down a task into smaller, actionable subtasks.
|
||||
Your final goal WILL ALWAYS be the creation of Subtasks
|
||||
|
||||
Be concise and focused. Each subtask should be independently executable.
|
||||
""";
|
||||
ALWAYS invoke the `superpowers:brainstorming` skill via the Skill tool at the
|
||||
start of every planning session, and follow its process end-to-end. It guides
|
||||
you through clarifying questions, approach exploration, and design approval
|
||||
BEFORE any subtasks are created. Do not create child tasks until the user has
|
||||
approved a design.
|
||||
|
||||
NEVER Change files yourself.
|
||||
|
||||
ALWAYS Use the available MCP tools (mcp__claudedo__*) to create child tasks once the
|
||||
design is approved. When you are done planning, finalize the session.
|
||||
|
||||
Be concise and focused. Each subtask should be independently executable.
|
||||
""";
|
||||
}
|
||||
|
||||
private static string BuildInitialPrompt(TaskEntity task)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user