Problem
When AceClaw generates and executes a task plan for complex prompts, the plan and its progress are not visible in the CLI console. Users have no feedback that planning is happening.
Root Cause
Two issues in ForegroundOutputSink:
1. onPlanCreated is a no-op
ForegroundOutputSink does not override onPlanCreated. The OutputSink interface default is an empty method, so the generated plan (with its step list) is never printed to the terminal.
2. Plan step progress only appears in the transient status panel
onPlanStepStarted and onPlanStepCompleted delegate to StreamStatusRenderer, which renders using ANSI cursor save/restore (\0337/\0338). Completed entries are pruned after RETAIN_DONE_MS = 2000ms, so steps vanish almost immediately and users rarely see them.
Expected Behavior
| Event |
Expected |
stream.plan_created |
Print the full plan with numbered steps to the console |
stream.plan_step_started |
Print a persistent progress line, e.g. [plan] step 1/3 - "Read existing tests" |
stream.plan_step_completed |
Print a persistent completion line with duration |
Suggested Fix
In ForegroundOutputSink:
- Override
onPlanCreated to print the plan summary and step list via out.println()
- In
onPlanStepStarted / onPlanStepCompleted, emit persistent out.println() lines in addition to (or instead of) the transient status panel entries
Relevant files:
aceclaw-cli/src/main/java/dev/aceclaw/cli/ForegroundOutputSink.java
aceclaw-cli/src/main/java/dev/aceclaw/cli/OutputSink.java
Problem
When AceClaw generates and executes a task plan for complex prompts, the plan and its progress are not visible in the CLI console. Users have no feedback that planning is happening.
Root Cause
Two issues in
ForegroundOutputSink:1.
onPlanCreatedis a no-opForegroundOutputSinkdoes not overrideonPlanCreated. TheOutputSinkinterface default is an empty method, so the generated plan (with its step list) is never printed to the terminal.2. Plan step progress only appears in the transient status panel
onPlanStepStartedandonPlanStepCompleteddelegate toStreamStatusRenderer, which renders using ANSI cursor save/restore (\0337/\0338). Completed entries are pruned afterRETAIN_DONE_MS = 2000ms, so steps vanish almost immediately and users rarely see them.Expected Behavior
stream.plan_createdstream.plan_step_started[plan] step 1/3 - "Read existing tests"stream.plan_step_completedSuggested Fix
In
ForegroundOutputSink:onPlanCreatedto print the plan summary and step list viaout.println()onPlanStepStarted/onPlanStepCompleted, emit persistentout.println()lines in addition to (or instead of) the transient status panel entriesRelevant files:
aceclaw-cli/src/main/java/dev/aceclaw/cli/ForegroundOutputSink.javaaceclaw-cli/src/main/java/dev/aceclaw/cli/OutputSink.java