Skip to main content
Wildo.ai Coming soon

Storage and queries

Explore what the application is made of

Present application structure as read-only resources derived from the system that knows it, without maintaining a second catalogue.

Partially available today — the limit is described on this page.

A read-only inspection reveals the resources declared by an application.

Explore what the application is made of

A development workbench needs to answer practical questions: which resources exist, which module owns them and how they connect. Storing a second list of those definitions creates another place that needs updating whenever the application changes.

Wildo can present derived information through the resource interface. The source computes the rows from application structure or runtime knowledge, while the resource supplies a familiar read contract and interface.

This turns inspectable structure into something a person or tool can navigate. The development companion supplies the current introspection source, drawing on its knowledge of the target application.

Example — Browse the application’s domain model

The workbench shows the application’s resources as records. Each entry comes from the companion’s domain-model behavior, so adding a resource to the actual model can be reflected in the derived catalogue without a separate manually maintained resource list.

For engineers

Select a behavior and the rows it produces

The workbench’s domain-resource configuration is declared in workbench-resources.custom.shared.resources-config.schemas.ts. This excerpt shows its adapter and binding; source comments are omitted, and later operation entries continue beyond the excerpt:

export const workbenchDomainResources_ResourceConfiguration_InitializationFactory =
  (resourcesRelationships: ResourceRelationship[]) => createResourceConfiguration_Initialization<
    typeof WorkbenchDomainResource_Operations,
    WorkbenchDomainResource_CoreOperations,
    typeof Workbench_DomainResource_Schema
  >({
    mainSchema: Workbench_DomainResource_Schema,
    resourceIdentifier: WorkbenchShared_ResourceType.DOMAIN_RESOURCES,
    resourceFieldIdentifier:
      WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.DOMAIN_RESOURCES],
    resourceRelationships: resourcesRelationships,
    isSystemResource: false,
    persistenceAdapter: PersistenceAdapter.INTROSPECTION,
    introspectionBinding: {
      behavior: 'application-domain-model',
      rowsPath: 'domainResources',
      tenancy: IntrospectionTenancyStance.APPLICATION_STRUCTURE,
      identityFields: ['resourceType'],
    },
    coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
    customOperation: WorkbenchDomainResource_Operations,

INTROSPECTION chooses a repository whose values are derived. behavior identifies the companion behavior, rowsPath selects the relevant array in its output, and identityFields defines a stable identity from each derived row. APPLICATION_STRUCTURE records that the information describes application structure rather than tenant-owned business rows.

Keep derivation with its owner

The engine defines IntrospectionResourceSourceBackendPort, including support discovery and row derivation. The companion supplies that port because it knows the application’s location, loaded modules and available introspection behaviors.

The repository calls the source when serving a read. Some behaviors project in-process state; others inspect built application modules through the companion’s execution machinery. Their returned rows then travel through the resource’s read-facing contract.

Separate reading compiled state from forcing computation

The companion’s requestInfo can reuse compiled derivation state. Its compileNow method deliberately bypasses that state and runs derivation. These are different operations, not two names for a guaranteed fresh read:

PathWhat the caller requests
Resource read through the sourceDerived rows under the source’s current state and cache policy.
requestInfo with a usable cache keyRead through the derivation-state owner, which can reuse compiled output.
compileNowRun the derivation without consulting or writing compiled state.

Changing application code and opening an inspection view are therefore not, by themselves, proof that new modules have been compiled and observed. Keep the distinction visible when diagnosing an old result: resource projection, compiled artifacts and derivation state each have an owner.

Make inspection a read experience

The resource declares READ and LIST, with no stored row for CREATE or UPDATE to change. An inspection screen therefore uses resource navigation and presentation while the underlying definition stays with the application.

A failed derivation is reported as a failure to inspect, rather than an empty catalogue. This preserves the useful difference between an application with no entries and a source that could not currently be read. The source can likewise leave a total unknown when it cannot state one.

Use this pattern for information whose authoritative form already exists elsewhere inside the development system. Ordinary business data belongs in a stored resource; external business data can use a virtual read-through resource.

Building a B2B product or an internal tool?

Wildo is not self-service yet. Tell us what you have in mind and we will say plainly whether it fits, and what happens next.