Get desktop application:
View/edit binary Protocol Buffers messages
Used in:
This field contains references to other providers with the same resource/field. Note: Please do not use this field, it is only temporary and will be removed in the future once binding resources are mandatory for all executions.
Where this field moved to, when it is deprecated in favor of another one (ADR 040). Holds the full schema path of the replacement, e.g. `os.base.hostname`. See ResourceInfo.replaced_by.
Used in:
Used in:
Used in:
Canonical resource id. When a ResourceInfo is reached via an alias entry in Schema.resources, `id` is the original (aliased-to) resource name, not the alias key. Consumers that need the lookup key should use the map key from Schema.resources, not this field.
This field contains references to other providers with the same resource/field. Note: Please do not use this field, it is only temporary and will be removed in the future once binding resources are mandatory for all executions.
Whether this resource is reachable without an asset root (ADR 031). Everything else is expected to hang off the root of the asset it describes; a handful of resources genuinely do not - `time`, `regex`, `asset` - and say so with `@global` in their schema. Unmarked and non-rooted is what the compiler notes on a bundle as reaching outside the asset's tree.
Whether this resource is an asset root (ADR 031): a type a connection can expose as the thing a query is bounded by. Roots form a family - a universal base, the platform variants that embed it, and the union a disconnected compile targets - and knowing which resources are roots is what lets the compiler narrow a query to the ones that can run it.
Where this resource moved to, when it is deprecated in favor of another one (ADR 040). Holds the full schema path of the replacement, e.g. `os.base`; what a user is shown is rendered from that against the root their query is compiled with. A pointer only: it changes nothing about how this resource resolves, and every migration that has to transform rather than redirect is a lens in Go, not this field.
Map of resource name -> resource info. Invariant: when the map key differs from the value's `id` field, the entry is an alias from the key to the resource identified by `id`. The same ResourceInfo may be referenced under multiple keys (one canonical, plus one per alias) and consumers must not assume key == value.id. The canonical name is always `value.id`. Example: `alias os.unix.sshd = sshd` produces two entries that point at the same ResourceInfo, one under "sshd" and one under "os.unix.sshd", both with `id = "sshd"`.
Resources can depend on resources from another provider, this is the list of of providers the schema depends on.
Version of each provider that contributed to this schema, keyed by provider id (the same string `ResourceInfo.provider` carries) and valued with that provider's semver. Read it through Schema.ProviderVersion, which also matches a legacy id against a current one. For a schema loaded from a single provider this holds one entry; the aggregate schema accumulates one entry per loaded provider. It is the *writer schema identity* of ADR 040: `min_provider_version` on a resource or field says which release introduced it, and this says which release the reader actually has, so the two together decide whether a name that failed to resolve is a typo or a version gap.
The root resource each provider declares for the assets it connects (ADR 031), keyed the same way provider_versions is. A compile with a live connection learns the *concrete* root from the connection; this is what a compile with no connection has - a policy bundle, a lint, an editor - and it is what tells such a compile whether a name is reachable from the asset's tree at all.
Used in: