Add support to completion function to create a path resolver from its looked-up artifact values.

RELNOTES: None
PiperOrigin-RevId: 207295716
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java b/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java
index 9afa82f..03503bf 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java
@@ -18,6 +18,7 @@
 import com.google.devtools.build.lib.actions.Action;
 import com.google.devtools.build.lib.actions.ActionInputMap;
 import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.ArtifactPathResolver;
 import com.google.devtools.build.lib.actions.BuildFailedException;
 import com.google.devtools.build.lib.actions.EnvironmentalExecException;
 import com.google.devtools.build.lib.actions.ExecException;
@@ -116,7 +117,7 @@
    *     com.google.devtools.build.lib.pkgcache.PathPackageLocator})
    * @param inputArtifactData information about required inputs to the action
    * @param outputArtifacts required outputs of the action
-   * @return an action-scoped filesystem if {@link supportsActionFileSystem} is true
+   * @return an action-scoped filesystem if {@link #supportsActionFileSystem} is true
    */
   @Nullable
   default FileSystem createActionFileSystem(
@@ -130,12 +131,24 @@
   }
 
   /**
-   * Updates the context used by the filesystem returned by {@link createActionFileSystem}.
+   * Updates the context used by the filesystem returned by {@link #createActionFileSystem}.
    *
    * <p>Should be called as context changes throughout action execution.
    *
-   * @param actionFileSystem must be a filesystem returned by {@link createActionFileSystem}.
+   * @param actionFileSystem must be a filesystem returned by {@link #createActionFileSystem}.
    */
   default void updateActionFileSystemContext(
       FileSystem actionFileSystem, SkyFunction.Environment env, MetadataConsumer consumer) {}
+
+  default boolean supportsPathResolverForArtifactValues() {
+    return false;
+  }
+
+  default ArtifactPathResolver createPathResolverForArtifactValues(
+      PathFragment execRoot,
+      FileSystem fileSystem,
+      ImmutableList<Root> pathEntries,
+      ActionInputMap actionInputMap) {
+    throw new IllegalStateException("Path resolver not supported by this class");
+  }
 }