Trying to hit the [execute API](https://www.elastic.co/guide/en/elasticsearch/painless/8.5/painless-execute-api.html) with an index that in available via cross cluster search will fail with an `IllegalArgumentException`: `Cross-cluster calls are not supported in this context but remote indices were requested`

That is because `PainlessExecuteAction`'s [`TransportAction`](https://github.com/elastic/elasticsearch/blob/8.5/modules/lang-painless/src/main/java/org/elasticsearch/painless/action/PainlessExecuteAction.java#L462) is a [`TransportSingleShardAction`](https://github.com/elastic/elasticsearch/blob/8.5/server/src/main/java/org/elasticsearch/action/support/single/shard/TransportSingleShardAction.java#L153) which uses [`IndexNameExpressionResolver.concreteIndices`](https://github.com/elastic/elasticsearch/blob/8.5/server/src/main/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolver.java#L331), which does not support remote clusters.

What would it take it enable PainlessExecuteAction to support CCS?

Kibana uses the execute api to validate runtime fields on edit, see https://github.com/elastic/kibana/issues/145861
modules/lang-painless/src/main/java/org/elasticsearch/painless/action/PainlessExecuteAction.java
0,
                            searcher,
                            () -> absoluteStartMillis,
                            null,
                            emptyMap()
                        );
                        return handler.apply(context, indexReader.leaves().get(0));
                    }
                }
            }
        }
    }
    @ServerlessScope(Scope.PUBLIC)
    public static class RestAction extends BaseRestHandler {
        @Override
        public List<Route> routes() {
            return List.of(new Route(GET, "/_scripts/painless/_execute"), new Route(POST, "/_scripts/painless/_execute"));
        }
        @Override
        public String getName() {
            return "_scripts_painless_execute";
        }
        @Override
        protected RestChannelConsumer prepareRequest(RestRequest restRequest, NodeClient client) throws IOException {
            final Request request = Request.parse(restRequest.contentOrSourceParamParser());
            return channel -> client.executeLocally(INSTANCE, request, new RestToXContentListener<>(channel));
        }
    }
}