Add directory output information to target completion events in BEP.

RELNOTES: None
PiperOrigin-RevId: 294228317
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
index a7547f1..b99b6e6 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
@@ -390,11 +390,16 @@
       builder.setTestTimeoutSeconds(testTimeoutSeconds);
     }
 
+    Iterable<Artifact> filteredImportantArtifacts = getLegacyFilteredImportantArtifacts();
+    for (Artifact artifact : filteredImportantArtifacts) {
+      if (artifact.isDirectory()) {
+        builder.addDirectoryOutput(newFileFromArtifact(artifact).build());
+      }
+    }
     // TODO(aehlig): remove direct reporting of artifacts as soon as clients no longer
     // need it.
     if (converters.getOptions().legacyImportantOutputs) {
-      addImportantOutputs(
-          completionContext, builder, converters, getLegacyFilteredImportantArtifacts());
+      addImportantOutputs(completionContext, builder, converters, filteredImportantArtifacts);
       if (baselineCoverageArtifacts != null) {
         addImportantOutputs(
             completionContext,
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
index 5d675e9..8e901fb 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
@@ -512,6 +512,11 @@
   // new clients should not use it.
   repeated File important_output = 4 [deprecated = true];
 
+  // Report output artifacts (referenced transitively via output_group) which
+  // emit directories instead of singleton files. These directory_output entries
+  // will never include a uri.
+  repeated File directory_output = 8;
+
   // List of tags associated with this configured target.
   repeated string tag = 3;