@Override
    public Output run(RunContext runContext) throws Exception {
        String renderedNamespace = runContext.render(this.namespace);

        FlowService flowService = ((DefaultRunContext) runContext).getApplicationContext().getBean(FlowService.class);
        flowService.checkAllowedNamespace(runContext.tenantId(), renderedNamespace, runContext.tenantId(), runContext.flowInfo().namespace());

        String renderedPrefix = runContext.render(this.prefix);

        List<String> keys = runContext.namespaceKv(renderedNamespace).list().stream()
            .map(KVEntry::key)
            .filter(key -> key.startsWith(renderedPrefix))
            .toList();

        return Output.builder()
            .keys(keys)
            .build();
    }
@Test
    void shouldGetNoKeysGivenEmptyKeyStore() throws Exception {
        // Given
        String namespace = IdUtils.create();
        RunContext runContext = this.runContextFactory.of(Map.of(
            "flow", Map.of("namespace", namespace),
            "inputs", Map.of(
                "prefix", TEST_KEY_PREFIX_TEST
            )
        ));

        GetKeys getKeys = GetKeys.builder()
            .id(GetKeys.class.getSimpleName())
            .type(GetKeys.class.getName())
            .prefix("{{ inputs.prefix }}")
            .build();

        // When
        GetKeys.Output run = getKeys.run(runContext);

        // Then
        assertThat(run.getKeys(), empty());
    }