feat(freestyle): two-phase planning->execution driver (Slice 4)
- freestyle_planning.toml: analyst -> (approval) -> architect, producing execution_plan; analyst_freestyle.md surfaces open questions. - TomlWorkflowLoader: requires_approval stage flag -> metadata. - SessionOrchestrator: inline-prompt branch (metadata[promptInline]) + requestStageApproval helper reusing the existing pause/approve path. - DefaultSessionOrchestrator: enterStage gates on requiresApproval (idempotent via resolved-approval lookup), preview derived from the gated stage's needs artifact; validatedArtifactContent accessor. - FreestyleDriver: compiles validated plan, emits ExecutionPlanLockedEvent, runs phase 2 in-session via a runPhase2 seam; wired through ServerModule + Main (execution_plan kind registered).
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
id = "freestyle_planning"
|
||||
start = "analyst"
|
||||
|
||||
[[stages]]
|
||||
id = "analyst"
|
||||
prompt = "prompts/analyst_freestyle.md"
|
||||
produces = [{ name = "analysis", kind = "analysis" }]
|
||||
allowed_tools = ["file_read", "ShellTool"]
|
||||
token_budget = 16384
|
||||
max_retries = 2
|
||||
|
||||
[[stages]]
|
||||
id = "architect"
|
||||
requires_approval = true
|
||||
prompt = "prompts/architect_freestyle.md"
|
||||
needs = ["analysis"]
|
||||
produces = [{ name = "execution_plan", kind = "execution_plan" }]
|
||||
token_budget = 16384
|
||||
max_retries = 2
|
||||
|
||||
[[transitions]]
|
||||
id = "analyst-to-architect"
|
||||
from = "analyst"
|
||||
to = "architect"
|
||||
condition_type = "artifact_validated"
|
||||
condition_artifact_id = "analysis"
|
||||
|
||||
[[transitions]]
|
||||
id = "architect-to-done"
|
||||
from = "architect"
|
||||
to = "done"
|
||||
condition_type = "artifact_validated"
|
||||
condition_artifact_id = "execution_plan"
|
||||
@@ -0,0 +1,10 @@
|
||||
You are the **Analyst** in freestyle mode. Understand the user's goal (in the decision history
|
||||
above) and the code it touches. Read-only: `file_read`, `ls`, `grep`, `cat`, `find`.
|
||||
|
||||
Emit the `analysis` artifact (JSON, schema provided):
|
||||
- `summary`: the goal in your own words, AND any open questions the user must answer before a
|
||||
plan can be built — prefix each question with "Q:". If none, say "No open questions."
|
||||
- `requirements`: concrete, checkable requirements, one per line.
|
||||
- `affected_areas`: files/modules likely involved, one per line.
|
||||
|
||||
Do not design or plan yet.
|
||||
Reference in New Issue
Block a user