Skip to content

[Query] Config

github-actions[bot] edited this page Jul 21, 2026 · 1 revision

This document was generated from 'src/documentation/wiki-query.ts' on 2026-07-20, 21:06:39 UTC presenting an overview of flowR's query API (v2.13.0). Please do not edit this file/wiki page directly.

Config Query [overview]

Returns the current configuration of flowR.
This query is requested with the type config.
Run in the REPL: :query @config [<path> | <glob>] | @config +<path>=<value> | @config +reset

This query provides access to the current configuration of the flowR instance. See the Interface wiki page for more information on what the configuration represents. Additionally, you can use this query to update the configuration of flowR on-the-fly (please do not rely on this mechanism it is mostly of interest for demonstrations).

[ { "type": "config",   "update": { "ignoreSourceCalls": true } } ]
Show Results

Results (prettified and summarized):

Query: config (0 ms)
   ╰ Updated configuration:
       - ignoreSourceCalls=true
   ╰ Specialized for project kind unknown (overrides linter.disabledRules)
All queries together required ≈9 ms (1ms accuracy, total 10 ms)

Show Detailed Results as Json

The analysis required 10.3 ms (including parsing and normalization and the query) within the generation environment.

In general, the JSON contains the Ids of the nodes in question as they are present in the normalized AST or the dataflow graph of flowR. Please consult the Interface wiki page for more information on how to get those.

{
  "config": {
    ".meta": {
      "timing": 0
    },
    "config": {
      "ignoreSourceCalls": true,
      "ignoreLoadCalls": false,
      "semantics": {
        "environment": {
          "overwriteBuiltIns": {
            "loadDefaults": true,
            "definitions": []
          }
        }
      },
      "defaultPlugins": [
        "file:description",
        "versions:description",
        "versions:sigdb",
        "versions:namespace",
        "versions:renv",
        "versions:rv",
        "versions:packrat",
        "versions:session-info",
        "loading-order:description",
        "loading-order:implicit-sources",
        "loading-order:rprofile",
        "meta:description",
        "meta:rproject",
        "file-roles:vignette",
        "file-roles:test",
        "file-roles:inst",
        "file:rmd",
        "file:qmd",
        "file:rnw",
        "file:ipynb",
        "file:namespace",
        "file:news",
        "file:rda",
        "file:license",
        "file:virtualenv",
        "file:rproject",
        "file:rprofile"
      ],
      "repl": {
        "quickStats": false,
        "dfProcessorHeat": false,
        "hints": true,
        "plugins": [
          "flowr:default"
        ],
        "autoUseFileProtocol": true,
        "queryStats": true,
        "showPlugins": false
      },
      "project": {
        "resolveUnknownPathsOnDisk": true
      },
      "linter": {
        "disabledRules": [
          "software-has-license",
          "software-has-tests"
        ]
      },
      "specializeConfig": {
        "package": {
          "solver": {
            "resolveSource": {
              "assumeFilesExist": true
            }
          }
        },
        "project": {
          "solver": {
            "resolveSource": {
              "assumeFilesExist": true
            }
          }
        },
        "shiny-app": {
          "project": {
            "implicitSources": [
              "global.R",
              "ui.R",
              "server.R",
              "app.R"
            ]
          },
          "solver": {
            "resolveSource": {
              "assumeFilesExist": true
            }
          }
        },
        "script": {
          "inherit": "unknown"
        },
        "notebook": {
          "inherit": "unknown"
        },
        "unknown": {
          "linter": {
            "disabledRules": [
              "software-has-license",
              "software-has-tests"
            ]
          }
        }
      },
      "engines": [],
      "defaultEngine": "tree-sitter",
      "solver": {
        "variables": "alias",
        "evalStrings": true,
        "trackEnvironments": true,
        "sigdb": {
          "enabled": true,
          "loadProjectDependencies": true,
          "eagerlyLoad": false,
          "eagerlyLoadExports": false,
          "assumedRVersion": "auto",
          "linkBaseR": false,
          "linkDescriptionDependencies": false,
          "linkBaseRCalls": false,
          "linkPackageCalls": false,
          "warmInBackground": false,
          "additionalPaths": [],
          "autoSync": false,
          "versionSelection": "newest",
          "versionOverrides": {}
        },
        "versionManagement": {
          "linkedVersionGroups": []
        },
        "resolveSource": {
          "dropPaths": "no",
          "ignoreCapitalization": true,
          "inferWorkingDirectory": "active-script",
          "searchPath": [],
          "repeatedSourceLimit": 2,
          "assumeFilesExist": false
        },
        "instrument": {},
        "slicer": {
          "threshold": 50,
          "autoExtend": false
        }
      },
      "abstractInterpretation": {
        "wideningThreshold": 4,
        "dataFrame": {
          "maxColNames": 50,
          "readLoadedData": {
            "readExternalFiles": true,
            "maxReadLines": 1000000
          }
        }
      },
      "gas": {
        "thresholds": {
          "memory": {
            "problematic": 0.7,
            "critical": 0.9
          },
          "timeMs": {
            "problematic": 100000,
            "critical": 120000
          }
        },
        "features": {}
      }
    },
    "specialization": {
      "kind": "unknown",
      "overwrite": {
        "linter": {
          "disabledRules": [
            "software-has-license",
            "software-has-tests"
          ]
        }
      }
    }
  },
  ".meta": {
    "timing": 9
  }
}

Please note that, in the REPL, a special syntax starting with + (which should be autocompleted) can be used to update the configuration on the fly:

$ docker run -it --rm eagleoutice/flowr # or npm run flowr 
flowR repl v2.13.0, R v4.6.1 (r-shell engine)
R> :query @config +solver.slicer.threshold=10000
Output
Query: config (0 ms)
   ╰ Updated configuration:
       - solver.slicer.threshold=10000
   ╰ Specialized for project kind unknown (overrides linter.disabledRules)
All queries together required ≈0 ms (1ms accuracy, total 1 ms)

Set the slicing threshold to 10,000.

In the REPL you can also read a single option by its .-separated path, or several at once with a glob—* covers one path segment, ** any number. This only reads: setting a value still names exactly one key.

$ docker run -it --rm eagleoutice/flowr # or npm run flowr 
flowR repl v2.13.0, R v4.6.1 (r-shell engine)
R> :query @config **.enabled
Output
Query: config (0 ms)
   ╰ Config:
       - solver.sigdb.enabled (boolean): true
           Resolve library()/use() exports from a signature database (default true); when false no database is consulted.
   ╰ Specialized for project kind unknown (overrides linter.disabledRules)
All queries together required ≈0 ms (1ms accuracy, total 2 ms)

Read every enabled option, wherever it sits in the configuration.

R> :query @config solver.*
Output
Query: config (0 ms)
   ╰ Config:
       - solver.evalStrings (boolean): true
           Should we include eval(parse(text="...")) calls in the dataflow graph?
       - solver.instrument (object)
           - dataflowExtractors: undefined (any)
       - solver.resolveSource (object)
           If lax source calls are active, flowR searches for sourced files much more freely, based on the configurations you give it. This option is only in effect if `ignoreSourceCalls` is set to false.
           - dropPaths:             "no" (string)
           - ignoreCapitalization:  true (boolean)
           - inferWorkingDirectory: "active-script" (string)
           - searchPath:            [] (array)
           - repeatedSourceLimit:   2 (number)
           - assumeFilesExist:      false (boolean)
       - solver.sigdb (object)
           Resolving library exports from a signature database.
           - enabled:                     true (boolean)
           - loadProjectDependencies:     true (boolean)
           - eagerlyLoad:                 false (boolean)
           - eagerlyLoadExports:          false (boolean)
           - assumedRVersion:             "auto" (string)
           - linkBaseR:                   false (boolean)
           - linkDescriptionDependencies: false (boolean)
           - linkBaseRCalls:              false (boolean)
           - linkPackageCalls:            false (boolean)
           - warmInBackground:            false (boolean)
           - additionalPaths:             [] (array)
           - autoSync:                    false (boolean)
           - versionSelection:            "newest" (string)
           - versionOverrides:            {} (object)
       - solver.slicer (object)
           The configuration for the slicer.
           - threshold:  50 (number)
           - autoExtend: false (boolean)
       - solver.trackEnvironments (boolean): true
           Track user-created environments (new.env, assign/get/local with envir=, dollar-assign, attach). When false, all envir-style calls fall through conservatively.
       - solver.variables (string): "alias"
           How to resolve variables and their values.
       - solver.versionManagement (object)
           Policies for reasoning about dependency versions.
           - linkedVersionGroups: [] (array)
   ╰ Specialized for project kind unknown (overrides linter.disabledRules)
All queries together required ≈0 ms (1ms accuracy, total 1 ms)

Read the direct children of solver (use solver.** for the whole subtree).

One of the most useful options to change on-the-fly are probably those under repl. For example, setting repl.quickStats enables quick statistics after each REPL command. Likewise, repl.dfProcessorHeat enables the dataflow processor heatmap after each REPL command.

Implementation Details

Responsible for the execution of the Config Query query is executeConfigQuery in ./src/queries/catalog/config-query/config-query-format.ts.

Clone this wiki locally