runStream method
Stream<MissionEvent>
runStream(
- Mission mission, {
- String? systemPrompt,
- LlmClient? llmClient,
- ToolInvoker? invokeTool,
override
Streams typed events for mission. The kernel orchestrates the
tool registry + hooks around this call and supplies:
systemPrompt— composed bySystemPromptComposerfrom the playbook and the registry tool manifests (FR-006). Implementations MUST use it as the system message of the loop.llmClient— the client wired byAgentRuntimePlugin(FR-007). The loop owns the completion calls; the kernel makes none itself.invokeTool— hook-gated tool invocation (FR-010). Implementations MUST route tool calls through it rather than callingMcpTool.invokedirectly.
Implementation
@override
Stream<MissionEvent> runStream(
Mission mission, {
String? systemPrompt,
LlmClient? llmClient,
ToolInvoker? invokeTool,
}) async* {
callCount++;
receivedSystemPrompt = systemPrompt;
receivedLlmClient = llmClient;
yield MissionEventStarted(mission.missionId, DateTime.now());
for (final canonical in toolCalls) {
yield MissionEventToolCallStart(
mission.missionId,
canonical,
const <String, Object?>{},
);
final result = invokeTool == null
? null
: await invokeTool(canonical, const <String, Object?>{});
yield MissionEventToolCallResult(mission.missionId, canonical, result);
}
yield MissionEventCompleted(mission.missionId, outcome);
}