e32bd121e5
Move ProcessResult artifact content storage into dispatchToolCalls so it fires for all outcomes (success, ERROR, FATAL) — the spec mandates the artifact MUST always be produced. - dispatchToolCalls now stores ProcessResult JSON in CAS + cache for every tool call result, using the current toolCall's function.arguments as the command field (not firstOrNull) - Replace storeFailedProcessResult with emitProcessResultEvents — event emission only, content already stored by dispatchToolCalls - FATAL and ERROR branches both now emit artifact lifecycle events, fixing the gap where retryable ToolResult.Failure produced no artifact