What happens
The warm-start-and-cli-step-visibility change is built and tested, but its tasks.md has all four boxes unchecked. One of its promises is also not kept: nothing calls the warm-up, so the first question to a CLI-mode agent still pays the cold start.
What the code has
All four tasks exist on development:
| Task |
Code |
Test |
1. warmAnthropicCli() |
ProviderFactory.php:1711 |
tests/Unit/Service/Llm/ProviderFactoryTest.php |
2. chat#warm |
ChatController.php:179, routes.php:517 |
|
3. RunStepBus |
RunStepBus.php, used by ChatStreamController |
tests/Unit/Service/Engine/RunStepBusTest.php |
| 4. Both warm-up outcomes |
|
ChatControllerTest::testWarmWithoutIdentifiersIsNotAnError (:590), testWarmSwallowsAFailedLookup (:612) |
So the tool steps a CLI turn runs do show live in the chat (matrix row ch-tool-steps, "yes").
What is missing
Task 2's acceptance criteria say the warm-up is "called when the chat opens or an agent is picked, not on the first question". Nothing calls POST /api/chat/warm: a grep for warm under src/ finds no caller, and nextcloud-vue 2.55.1's companion has no call to it either. The endpoint answers 200 and is never reached.
Fix direction
- Call
POST /api/chat/warm from Chat.vue when the page opens and when the agent changes. Consider asking nextcloud-vue to do the same in CnAiChatPanel for the companion.
- Tick tasks 1, 3 and 4 in
openspec/changes/warm-start-and-cli-step-visibility/tasks.md. Tick task 2 once the caller lands, then archive the change.
Live check
- With an agent on
anthropic and executionMode: cli, open /apps/hermiq/chat and pick the agent.
- In the browser's network tab, no
POST .../api/chat/warm is sent.
- Send a first question and note the delay before the first token, against a second question in the same session.
Matrix row: ch-tool-steps (its note records the unchecked tasks).
What happens
The
warm-start-and-cli-step-visibilitychange is built and tested, but itstasks.mdhas all four boxes unchecked. One of its promises is also not kept: nothing calls the warm-up, so the first question to a CLI-mode agent still pays the cold start.What the code has
All four tasks exist on development:
warmAnthropicCli()tests/Unit/Service/Llm/ProviderFactoryTest.phpchat#warmRunStepBusChatStreamControllertests/Unit/Service/Engine/RunStepBusTest.phpChatControllerTest::testWarmWithoutIdentifiersIsNotAnError(:590),testWarmSwallowsAFailedLookup(:612)So the tool steps a CLI turn runs do show live in the chat (matrix row
ch-tool-steps, "yes").What is missing
Task 2's acceptance criteria say the warm-up is "called when the chat opens or an agent is picked, not on the first question". Nothing calls
POST /api/chat/warm: a grep forwarmundersrc/finds no caller, and nextcloud-vue 2.55.1's companion has no call to it either. The endpoint answers 200 and is never reached.Fix direction
POST /api/chat/warmfrom Chat.vue when the page opens and when the agent changes. Consider asking nextcloud-vue to do the same inCnAiChatPanelfor the companion.openspec/changes/warm-start-and-cli-step-visibility/tasks.md. Tick task 2 once the caller lands, then archive the change.Live check
anthropicandexecutionMode: cli, open /apps/hermiq/chat and pick the agent.POST .../api/chat/warmis sent.Matrix row:
ch-tool-steps(its note records the unchecked tasks).