---
title: "@adonia/core API"
image: "https://adonia.pages.dev/og.png"
version: "next"
---

> Documentation Index
> Fetch the complete documentation index at: https://adonia.pages.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# @adonia/core API

<!-- Generated by docs/site/scripts/generate_api.ts. Do not edit. -->

Canonical inventory of every public subpath and TypeScript export in `@adonia/core`.

## `@adonia/core`

| Export | Kind | Source | Summary |
| --- | --- | --- | --- |
| `abilitiesHash` | function | `packages/core/src/serialization/descriptor_cache.ts:306` | Canonical, collision-free encoding of a resolved §12 ability map. |
| `Ability` | type-only type | `packages/core/src/authorization/types.ts:22` | The full §12 ability vocabulary, including the parameterized abilities carried by actions and lenses. |
| `AbilityCheck` | type-only type | `packages/core/src/authorization/types.ts:33` | An inline ability override declared on a resource (`static can = { delete: (ctx, record) => … }`). Overrides win over the Bouncer policy. |
| `AbilityDeniedException` | class | `packages/core/src/authorization/authorizer.ts:107` | Thrown when an ability is denied at an enforcement point (§12/§17). |
| `Action` | class | `packages/core/src/actions/action.ts:13` | Base class with boring declarative metadata and an injectable handler. |
| `ACTION_JOB_VERSION` | constant | `packages/core/src/actions/types.ts:110` | Queue protocol version. Workers reject unknown versions before resolving identities. |
| `ActionBatchOwner` | type-only interface | `packages/core/src/actions/types.ts:113` | Persisted ownership scope for an action execution. |
| `ActionBatchStatus` | type-only interface | `packages/core/src/actions/types.ts:144` | Monotonic persisted batch status returned by the status endpoint. |
| `ActionBatchStore` | type-only interface | `packages/core/src/actions/batches.ts:5` | Atomic storage operations required by inline and queued executors. |
| `actionChanges` | function | `packages/core/src/actions/events.ts:70` | Minimal deterministic before/after diff, already scrubbed before persistence. |
| `ActionChunkJob` | type-only interface | `packages/core/src/actions/types.ts:120` | JSON-only identifiers dispatched to queue adapters. |
| `ActionContext` | type-only type | `packages/core/src/actions/types.ts:11` | Places an action may be presented. |
| `ActionController` | class | `packages/core/src/http/controllers/action_controller.ts:28` | Handles both action routes behind the panel middleware stack. |
| `ActionControllerMethod` | type-only type | `packages/core/src/http/registrar.ts:91` | `ActionController` methods wired by the registrar (§10.1). |
| `ActionDescriptor` | type-only interface | `packages/core/src/types.ts:102` | Descriptor for one authorized action (TECH_SPEC §9/§10.3). |
| `ActionEventRecord` | type-only interface | `packages/core/src/actions/events.ts:7` | Persisted action event row before database naming conversion. |
| `ActionEventReference` | type-only interface | `packages/core/src/actions/events.ts:22` | Stable reference used to update the same lifecycle row. |
| `ActionEventStore` | type-only interface | `packages/core/src/actions/events.ts:28` | Storage seam implemented by Lucid/Knex hosts and in-memory tests. |
| `ActionExecutedHookPayload` | type-only interface | `packages/core/src/plugin/hooks.ts:90` | Action payload emitted after its handler succeeds. |
| `ActionExecutingHookPayload` | type-only interface | `packages/core/src/plugin/hooks.ts:80` | Action payload emitted immediately before its handler runs. |
| `ActionExecutionContext` | type-only interface | `packages/core/src/actions/types.ts:59` | Runtime context passed to action handlers; never serialized into queue jobs. |
| `ActionExecutor` | class | `packages/core/src/actions/executor.ts:73` | Executes all chunks, committing successful chunks and degrading thrown chunks to failures. |
| `ActionExecutorOptions` | type-only interface | `packages/core/src/actions/executor.ts:47` | Dependencies deliberately injectable for Lucid, queue workers, and focused tests. |
| `ActionFailedHookPayload` | type-only interface | `packages/core/src/plugin/hooks.ts:96` | Action payload emitted when execution of a chunk fails. |
| `ActionFailure` | type-only interface | `packages/core/src/actions/types.ts:27` | A safe per-target failure. |
| `ActionHandlerResult` | type-only type | `packages/core/src/actions/types.ts:70` | Handler outcome. Returning void means a successful target. |
| `ActionInvocationIdentity` | type-only interface | `packages/core/src/actions/queue.ts:28` | Identifiers supplied by the authenticated server, never trusted from the body. |
| `ActionJobHandler` | type-only type | `packages/core/src/actions/queue.ts:78` | Handler registered under one reserved action name by a plugin manifest. |
| `ActionJobHandlerContainer` | type-only interface | `packages/core/src/actions/queue.ts:66` | Minimal application container surface available to plugin job handlers. |
| `ActionJobHandlerContext` | type-only interface | `packages/core/src/actions/queue.ts:72` | Dependencies reconstructed by core before a plugin worker is invoked. |
| `ActionNotEligibleException` | class | `packages/core/src/errors.ts:360` | Thrown when an action's runtime eligibility predicate no longer accepts the current selection. A 409 distinguishes a state-dependent refusal from a malformed request or a permanent authorization denial. |
| `ActionRequest` | type-only interface | `packages/core/src/actions/types.ts:19` | Exact POST action payload. |
| `ActionResult` | type-only interface | `packages/core/src/actions/types.ts:46` | Exact action endpoint result. |
| `ActionRouteRuntime` | type-only interface | `packages/core/src/http/controllers/action_controller.ts:14` | Request-aware bridge that builds the scoped resolver/executor for an action. |
| `ActionRouteService` | class | `packages/core/src/actions/route_service.ts:25` | Concrete controller runtime: strict parser first, common runtime second. |
| `actionRunSpan` | function | `packages/core/src/telemetry/spans.ts:250` | Wraps an action run as `adonia.action.run` with the §20 attributes `action`, `targetCount`, `queued`. |
| `ActionRuntime` | type-only interface | `packages/core/src/actions/queue.ts:55` | Request-bound runtime used only by HTTP action routes. |
| `ActionSqlClient` | type-only interface | `packages/core/src/actions/sql_stores.ts:17` | Structural query client shared by Lucid's Database and transaction clients. |
| `ActionSqlQuery` | type-only interface | `packages/core/src/actions/sql_stores.ts:8` | Structural query builder shared by Lucid's Database and transaction clients. |
| `ActionStatusException` | class | `packages/core/src/errors.ts:380` | Wraps unexpected failures while reading persisted action execution state. Connection-unavailable failures are handled separately by the status runtime's in-memory fallback. |
| `actionSubjectIdentity` | function | `packages/core/src/actions/queue.ts:39` | Converts a resolved actor/tenant model into its stable JSON queue identity. |
| `ActionTargetResolver` | type-only interface | `packages/core/src/actions/executor.ts:31` | Replays ids or a validated all-matching query through the current scoped pipeline. |
| `ActionTargets` | type-only type | `packages/core/src/actions/types.ts:14` | Exact target union accepted by the action endpoint. |
| `ActionTargetUnavailableException` | class | `packages/core/src/errors.ts:370` | Thrown when a selected action target cannot be resolved through the current resource scope. The 404 does not reveal whether the row was deleted, moved out of tenant scope, or was never present. |
| `ActionTransaction` | type-only type | `packages/core/src/actions/executor.ts:44` | Transaction seam; one invocation per bounded chunk. |
| `ActionWorkerContainer` | type-only interface | `packages/core/src/actions/lucid_worker_runtime.ts:181` | Minimal container shape used by separately booted worker processes. |
| `ActionWorkerIdentityResolver` | type-only interface | `packages/core/src/actions/lucid_worker_runtime.ts:30` | Host seam for safely reloading authenticated subjects from their queue identities. |
| `ActionWorkerRuntime` | type-only interface | `packages/core/src/actions/queue.ts:61` | Application worker dispatcher that reconstructs every job from identifiers. |
| `ActivityRecordingHookPayload` | type-only interface | `packages/core/src/plugin/hooks.ts:105` | Generic, already-scrubbed activity entry offered to activity-store plugins. |
| `ADONIA_ACTION_RUNTIME_BINDING` | constant | `packages/core/src/actions/queue.ts:21` | Stable container/runtime binding used by ActionController. |
| `ADONIA_ACTION_WORKER_IDENTITY_BINDING` | constant | `packages/core/src/actions/lucid_worker_runtime.ts:27` | Host binding that resolves actor and tenant identifiers. |
| `ADONIA_ACTION_WORKER_RUNTIME_BINDING` | constant | `packages/core/src/actions/lucid_worker_runtime.ts:25` | Container binding consumed by queue adapters in separately booted workers. |
| `ADONIA_AUTHORIZER_BINDING` | constant | `packages/core/src/authorization/types.ts:44` | Container binding of the request's `Authorizer` (§12). Optional by construction: consumers that can degrade — the §9.1 share hook resolves it to gate navigation — MUST treat an unbound authorizer as "no authorization layer installed" rather than a failure. |
| `ADONIA_CONFIG_DEFAULTS` | constant | `packages/core/src/config.ts:143` | Framework defaults for every config key (TECH_SPEC §4). |
| `ADONIA_CORE_VERSION` | constant | `packages/core/src/version.ts:2` | Package version generated from package.json; do not edit directly. |
| `ADONIA_HOOK_EVENTS` | constant | `packages/core/src/plugin/hooks.ts:16` | The closed, ordered server hook event set supported by protocol version 1. |
| `ADONIA_LOG_BINDINGS` | constant | `packages/core/src/telemetry/spans.ts:279` | The §20 log bindings every Adonia log line carries. |
| `ADONIA_MIDDLEWARE_NAMES` | constant | `packages/core/src/panel/panel.ts:92` | Named middleware Adonia registers and applies itself (§5.2). They are the only strings `Panel.middleware` accepts, because AdonisJS named middleware collections (`router.named()`) are not registered in a global registry — a library cannot resolve an app's `'auth'` string back to its middleware class. Pass the app's own middleware as the value `start/kernel.ts` exports instead: `.middleware([middleware.auth()])`. |
| `ADONIA_QUEUE_BINDING` | constant | `packages/core/src/actions/queue.ts:23` | Optional queue binding. |
| `ADONIA_SAVED_VIEW_REPOSITORY_BINDING` | constant | `packages/core/src/saved_views/repository.ts:9` | Framework container binding for the request-aware saved-view repository resolver. |
| `AdoniaActionEventsConfig` | type-only interface | `packages/core/src/config.ts:91` | Action-event persistence configuration (§15.1). |
| `AdoniaAuthLike` | type-only interface | `packages/core/src/http/facades.ts:78` | The slice of `ctx.auth` Adonia uses to reach a panel's configured guard. |
| `AdoniaAuthorizationConfig` | type-only interface | `packages/core/src/config.ts:59` | Authorization configuration (§4; enforced from A2-3 onward). |
| `AdoniaCacheConfig` | type-only interface | `packages/core/src/config.ts:105` | Compilation cache bounds (§9.4 descriptors / §11.3 validators). |
| `AdoniaConfig` | type-only interface | `packages/core/src/config.ts:113` | Fully-resolved Adonia configuration (output of `defineConfig`). |
| `AdoniaConfigInput` | type-only interface | `packages/core/src/config.ts:130` | Partial input accepted by `defineConfig`; every key is optional. |
| `AdoniaContainerLike` | type-only interface | `packages/core/src/http/facades.ts:58` | The slice of `ctx.containerResolver` Adonia resolves optional services through (`router`, `adonia.authorizer`) — request-scoped, so bindings a middleware added for this request are visible. |
| `AdoniaDefaults` | type-only interface | `packages/core/src/config.ts:37` | Framework-wide behavioral defaults; overridable per panel/resource (§4). |
| `AdoniaEnvelope` | type-only interface | `packages/core/src/types.ts:542` | The shared `adonia` page prop injected by `AdoniaInertiaMiddleware.share()` (protocol §1; TECH_SPEC §9.1). Page-specific props (`descriptor`, `records`, `record`, `state`) sit BESIDE this key, never inside it. |
| `AdoniaErrorCode` | type-only type | `packages/core/src/errors.ts:34` | Union of the stable error codes raised by `@adonia/core` (TECH_SPEC §17). |
| `AdoniaErrorPageProps` | type-only type | `packages/core/src/errors.ts:76` | Props of the panel-chromed error page (§17) — the contract between `AdoniaException.handle` and `ErrorPage` in `@adonia/ui`, and therefore between the framework and any app that overrides the page through `r.page('error', …)`. JSON-safe by construction (the Inertia page contract: `inertia.render` rejects non-JSON props). |
| `AdoniaException` | class | `packages/core/src/errors.ts:164` | Base class for every Adonia framework error. |
| `AdoniaGroupMiddleware` | type-only type | `packages/core/src/http/registrar.ts:162` | Anything the registrar can put on a route group. |
| `AdoniaGuardLike` | type-only interface | `packages/core/src/http/facades.ts:66` | The slice of one auth guard Adonia's login flow and access gate drive. |
| `AdoniaHookEvent` | type-only type | `packages/core/src/plugin/hooks.ts:33` | One event in `ADONIA_HOOK_EVENTS`. |
| `AdoniaHookHandler` | type-only type | `packages/core/src/plugin/hooks.ts:187` | Ordered handler for one server hook event. |
| `AdoniaHookPayloads` | type-only interface | `packages/core/src/plugin/hooks.ts:170` | Payload map of the closed protocol-v1 hook event set. |
| `AdoniaInertiaLike` | type-only interface | `packages/core/src/http/facades.ts:29` | The slice of `ctx.inertia` Adonia renders through. |
| `AdoniaInertiaMiddleware` | class | `packages/core/src/http/middleware/inertia_middleware.ts:116` | Shares the §9.1 `adonia` envelope with every Inertia page of a panel. |
| `AdoniaLazyMiddlewareImport` | type-only type | `packages/core/src/http/registrar.ts:148` | Lazy import of a middleware module, as `router.named()` consumes it. |
| `adoniaLogger` | function | `packages/core/src/telemetry/spans.ts:299` | Binds `module: 'adonia'` onto the app logger (§20), so host operators can filter framework lines out of (or into) their application's log stream. |
| `AdoniaMiddlewareClass` | type-only type | `packages/core/src/http/registrar.ts:145` | A middleware class as accepted by `router.named()` — anything the container can construct that exposes `handle`. |
| `AdoniaMiddlewareFn` | type-only type | `packages/core/src/http/registrar.ts:139` | Panel-resolution middleware signature (subset of AdonisJS `MiddlewareFn`). |
| `AdoniaMiddlewareName` | type-only type | `packages/core/src/panel/panel.ts:95` | One of Adonia's own named middleware (§5.2). |
| `AdoniaNamedMiddleware` | type-only interface | `packages/core/src/http/registrar.ts:154` | A named middleware parsed by `router.named()` — the value form an app's `start/kernel.ts` exports (`middleware.auth()`), applicable to a group. |
| `AdoniaPipeline` | class | `packages/core/src/table/pipeline_runner.ts:116` | The ordered, replaceable stage list that turns a base query builder into the final index query (§8.3). |
| `AdoniaPlugin` | type-only interface | `packages/core/src/plugin/types.ts:23` | Legacy server-side plugin contract. Kept intact so existing `plugins()` registrations continue to run with their original lifecycle cardinality. |
| `AdoniaPluginEntry` | type-only type | `packages/core/src/plugin/types.ts:201` | Any server plugin accepted by `Panel.plugins`. |
| `AdoniaPluginManifest` | type-only interface | `packages/core/src/plugin/types.ts:177` | Additive package manifest ABI. Runtime-only integrations stay optional so a package may ship a server-only, client-only, or tooling-only half. |
| `AdoniaQueueContract` | type-only interface | `packages/core/src/actions/types.ts:139` | Framework queue seam. |
| `AdoniaRequestContext` | class | `packages/core/src/macros/http_context.ts:23` | Per-request Adonia context (TECH_SPEC §5.2: `ctx.adonia: { panel; tenant?; resource? }`). Mutable: the panel middleware assigns `panel` (and `tenant` on tenant-scoped panels) during request handling; controllers may read it afterwards. `panel` is `null` until resolution. |
| `AdoniaResourceHookContext` | type-only interface | `packages/core/src/plugin/hooks.ts:36` | Common resource identity supplied to resource-scoped hooks. |
| `AdoniaRouteGroupLike` | type-only interface | `packages/core/src/http/registrar.ts:165` | Structural route group (subset of the AdonisJS `RouteGroup` API used here). |
| `AdoniaRouteHandler` | type-only type | `packages/core/src/http/registrar.ts:130` | Any built-in or manifest-contributed handler accepted by the router. |
| `AdoniaRouteLike` | type-only interface | `packages/core/src/http/registrar.ts:133` | Structural route object (subset of the AdonisJS `Route` API used here). |
| `AdoniaRouterLike` | type-only interface | `packages/core/src/http/registrar.ts:175` | Structural router (subset of the AdonisJS Router service used here). |
| `AdoniaSanitizeConfig` | type-only interface | `packages/core/src/schema/sanitize/policy.ts:35` | The `sanitize` section of `config/adonia.ts` (TECH_SPEC §4/§19). |
| `AdoniaSavedView` | class | `packages/core/src/saved_views/model.ts:8` | Lucid model for Adonia's personal and shared resource-table views. |
| `AdoniaSearchConfig` | type-only interface | `packages/core/src/config.ts:67` | Search configuration (§4/§8.4). |
| `AdoniaSessionLike` | type-only interface | `packages/core/src/http/facades.ts:48` | The slice of `ctx.session` Adonia reads: the incoming flash bag behind the envelope's `flash` block (protocol §1). |
| `AdoniaTelemetryConfig` | type-only interface | `packages/core/src/config.ts:85` | Observability configuration (§20). |
| `AdoniaUploadsConfig` | type-only interface | `packages/core/src/config.ts:77` | Upload configuration for file/image fields (§4). |
| `AdoniaUrlMakerLike` | type-only interface | `packages/core/src/http/panel_request.ts:248` | The slice of the AdonisJS router Adonia builds URLs with. Both spellings are accepted: `urlBuilder.urlFor` is v7's type-safe builder, `makeUrl` the deprecated shortcut still present on the Router class. |
| `AggregateMetricQuery` | type-only interface | `packages/core/src/widgets/metrics.ts:40` | Shared options for a scalar or trend aggregation. |
| `AggregateSubQuery` | type-only interface | `packages/core/src/table/stages/query_surface.ts:71` | The sub-query builder `withAggregate` hands to its callback. |
| `AliasableAggregate` | type-only interface | `packages/core/src/table/stages/query_surface.ts:65` | An aggregate sub-query builder awaiting its result alias. |
| `allowlistsFor` | function | `packages/core/src/table/derivation.ts:299` | The allowlists the §10.2 parser validates a request against (§8.3). |
| `AnyAction` | type-only interface | `packages/core/src/actions/types.ts:73` | Public action declaration consumed by descriptors and the executor. |
| `AnyWidget` | type-only type | `packages/core/src/widgets/types.ts:87` | Constructor/instance accepted by dashboard and resource widget registries. |
| `applyEagerHints` | function | `packages/core/src/table/stages/eager_load.ts:88` | Applies accumulated hints to `query`. Exported so the §10.4 global-search and detail-page paths can reuse the union without rebuilding a pipeline. |
| `applyFill` | function | `packages/core/src/validation/fill.ts:97` | Writes `payload` values for `fillKeys` onto `record` — the ONLY write path from validated input to the model (§19). Keys absent from the payload leave the attribute untouched (create: model default; edit: prior value), and keys outside `fillKeys` are never read, so forged attributes cannot reach the model even when present in the payload. |
| `applyResourceScope` | function | `packages/core/src/resource/scope.ts:71` | Applies `resourceClass`'s base scope to `query`, mutating it in place. |
| `applyTenantScope` | function | `packages/core/src/tenancy.ts:111` | Applies the resource's automatic tenant predicate to a query. |
| `applyValidationModifiers` | function | `packages/core/src/schema/validation_spec.ts:84` | Applies the cross-cutting modifiers of `ValidationBuildOptions` to a field's Vine base, in the order Vine requires: `nullable` → `optional`. |
| `Aside` | class | `packages/core/src/schema/layout/aside.ts:15` | Sidebar container, e.g. `s.aside().columnSpan(1).components([F.select('status'), …])` inside a `s.grid().columns(3)` root. |
| `assertPanelSession` | function | `packages/core/src/uploads/urls.ts:82` | Asserts that this request carries a live panel session, i.e. that minting a bearer URL on its behalf is legitimate (§19). |
| `assertSafeJson` | function | `packages/core/src/schema/sanitize/json.ts:49` | Walks `value` and throws when any object key is prototype-polluting. |
| `assertSetsResolvable` | function | `packages/core/src/validation/sets.ts:128` | Fails compilation when one field's `sets` entries name a transform that cannot be resolved (the server-derivation contract hardened for B2-3: unresolvable ⇒ boot-time error, never a silent no-op). |
| `assertTenantOwnership` | function | `packages/core/src/tenancy.ts:154` | Re-loads a mutation target through its complete tenant scope on the active transaction. A miss deliberately remains Lucid's ordinary row-not-found error, making a cross-tenant id indistinguishable from a nonexistent id. |
| `assertTransformsResolvable` | function | `packages/core/src/validation/sets.ts:148` | `assertSetsResolvable` over every field of a compiled resource. |
| `assertValidDefaults` | function | `packages/core/src/config.ts:265` | Validates a fully-merged `AdoniaDefaults` block (TECH_SPEC §4). |
| `assertValidRule` | function | `packages/core/src/validation/json_logic.ts:257` | Compile-time rule validation (dev mode). Throws on any violation; used by the descriptor compiler before a rule ever reaches the wire. |
| `assertValidSanitizeConfig` | function | `packages/core/src/schema/sanitize/policy.ts:269` | Validates one `sanitize` section against the non-negotiable rules, with path-qualified messages matching the rest of §4 config validation. |
| `attachRelationOptions` | function | `packages/core/src/serialization/form_relations.ts:115` | Attaches the inline first page of options to every `preload()`ed relation node of `descriptor` (protocol §4). |
| `AttributeColumn` | class | `packages/core/src/table/columns/support.ts:81` | Base class of every column whose value is simply "read this (possibly dotted) key off the record" — `C.text`, `C.badge`, `C.boolean`, `C.date`, `C.number`, `C.image`, `C.relation`. |
| `AttributeFilter` | class | `packages/core/src/table/filters/attribute_filter.ts:28` | A filter bound to one attribute (§8.2). |
| `AuthController` | class | `packages/core/src/http/controllers/auth_controller.ts:41` | Panel login/logout controller. Resolved through the IoC container per request; all state comes from the panel on `ctx.adonia`. |
| `AuthControllerMethod` | type-only type | `packages/core/src/http/registrar.ts:85` | `AuthController` methods wired by the registrar (§10.1). |
| `AuthenticatableModelImport` | type-only type | `packages/core/src/panel/panel.ts:157` | Lazy import of the model backing the panel guard's user provider. |
| `authOf` | function | `packages/core/src/http/facades.ts:97` | The request's auth facade, re-widened to accept a runtime guard name. |
| `AuthorizationFallback` | type-only type | `packages/core/src/config.ts:34` | Authorization fallback behavior when no policy resolves an ability (§4/§12). |
| `authorizationStartupWarnings` | function | `packages/core/src/authorization/authorizer.ts:297` | Boot-time authorization warnings (§20: `adonia:doctor` aggregates "allow-fallback in prod"), emitted by `AdoniaProvider.boot()`. |
| `Authorizer` | type-only interface | `packages/core/src/authorization/types.ts:51` | Resolves abilities for the current request. Bound in the IoC container as `adonia.authorizer`; unit tests may substitute a fake implementing this interface. |
| `BadgeColumn` | class | `packages/core/src/table/columns/badge.ts:17` | Badge cell. |
| `BadgeEntry` | class | `packages/core/src/schema/display/badge_entry.ts:14` | Enumerated badge entry, e.g. `s.badgeEntry('status').colors({ draft: 'gray', published: 'green' })`. |
| `BaseResource` | class | `packages/core/src/resource/base_resource.ts:142` | Abstract resource contract. Subclasses declare the static identity (`model`, plus an optional `slug` override) and implement `BaseResource.schema`. |
| `BaseWidget` | class | `packages/core/src/widgets/types.ts:90` | Shared public surface of every dashboard widget. |
| `BatchRowAbilities` | type-only type | `packages/core/src/resource/base_resource.ts:121` | Complete per-row ability projection returned by `BaseResource.batchAbilities`. |
| `BelongsTo` | class | `packages/core/src/schema/fields/belongs_to.ts:38` | Picker for a to-one relation. |
| `BelongsToMany` | class | `packages/core/src/schema/fields/belongs_to_many.ts:90` | Multi-picker for a many-to-many relation. |
| `BelongsToManyEntry` | type-only type | `packages/core/src/schema/fields/belongs_to_many.ts:48` | One element of a `belongs-to-many`'s state (protocol §7). |
| `BooleanColumn` | class | `packages/core/src/table/columns/boolean.ts:17` | Boolean check/cross cell. |
| `BooleanField` | class | `packages/core/src/schema/fields/boolean_field.ts:21` | Boolean-valued field base (TECH_SPEC §7.3 / §11.1 row 4). |
| `BouncerBridge` | class | `packages/core/src/authorization/bouncer.ts:172` | Resolves resource policies and asks them about abilities (§12 step 2). |
| `BouncerLike` | type-only interface | `packages/core/src/authorization/bouncer.ts:70` | The slice of `ctx.bouncer` the bridge drives. |
| `bouncerOf` | function | `packages/core/src/authorization/bouncer.ts:94` | The request's Bouncer instance, or `undefined` when the package is not installed (or its middleware never ran). Narrowed structurally rather than imported — see the module TSDoc. |
| `buildDashboard` | function | `packages/core/src/widgets/dashboard.ts:29` | Runs a panel's dashboard callback exactly once for the request. |
| `buildFieldObjectSchema` | function | `packages/core/src/validation/validator_compiler.ts:312` | Assembles the §11.1 Vine object for one flat list of field metas: plain props for unconditionally required/optional fields, and `vine.group` conditionals — bucketed by visibility rule (the reactive-validation contract), paired with their complement for conditional requiredness — for everything a single Vine base cannot express. |
| `buildIndexPipeline` | function | `packages/core/src/table/stages/index.ts:106` | Builds a fully-wired §8.3 pipeline for one resource. |
| `buildNavigation` | function | `packages/core/src/panel/navigation.ts:291` | Builds a panel's navigation tree for one request (protocol §1). |
| `BuiltinTransform` | type-only type | `packages/core/src/validation/sets.ts:42` | The transform names built into v1 (the reactivity contract; `fn:*` excluded). |
| `BulkFieldSetField` | type-only interface | `packages/core/src/actions/types.ts:33` | One field offered by the built-in bulk field-set preview. |
| `BulkFieldSetPreview` | type-only interface | `packages/core/src/actions/types.ts:40` | Selection-specific preview returned before a bulk field-set action runs. |
| `BYTES_PER_MB` | constant | `packages/core/src/uploads/verification.ts:43` | Bytes in one megabyte, as `maxSizeMb` means it (binary, not 10^6). |
| `C` | constant | `packages/core/src/table/columns/index.ts:61` | The §8.1 column factory namespace. |
| `cachedValidator` | function | `packages/core/src/validation/validator_compiler.ts:698` | `compileValidator`, memoized per §11.3 — the entry point the request path uses. |
| `CacheStats` | type-only interface | `packages/core/src/serialization/descriptor_cache.ts:39` | Observability counters of one `LruCache` (§20 / `adonia:doctor`). |
| `CanSeeCallback` | type-only type | `packages/core/src/authorization/visibility.ts:37` | Compile-time visibility predicate (TECH_SPEC §7.2). Receives the request context and, in `edit`/`detail` compilation, the record. A node whose `canSee` fails is OMITTED from the descriptor — never hidden (protocol §2 rule 3, protocol v1 decision 2). |
| `CapabilityUrlBuilder` | type-only type | `packages/core/src/serialization/descriptor_compiler.ts:180` | Builds one request-bound field capability URL. The compile context is supplied even on descriptor-cache hits so edit record ids never leak across cached trees. |
| `CapabilityUrlContext` | type-only interface | `packages/core/src/serialization/descriptor_compiler.ts:168` | Per-compile context handed to a field capability URL builder. |
| `Card` | class | `packages/core/src/schema/layout/card.ts:11` | Elevated container, e.g. `s.card('Billing').icon('credit-card').components([…])`. |
| `Checkbox` | class | `packages/core/src/schema/fields/checkbox.ts:19` | Single checkbox bound to a boolean attribute. |
| `CheckboxList` | class | `packages/core/src/schema/fields/checkbox_list.ts:24` | Multi-select checkbox group bound to an ARRAY attribute. |
| `ChoiceField` | class | `packages/core/src/schema/fields/choice.ts:56` | Option-driven field base (TECH_SPEC §7.3 / §11.1 row 3). |
| `ChoiceValue` | type-only type | `packages/core/src/schema/fields/choice.ts:34` | The scalar values a choice field may store; the enum members of §11.1. |
| `CodeEntry` | class | `packages/core/src/schema/display/code_entry.ts:11` | Code entry, e.g. `s.codeEntry('payload').language('json')`. |
| `CodeField` | class | `packages/core/src/schema/fields/code.ts:32` | Source-code editor bound to a string attribute. |
| `CodegenException` | class | `packages/core/src/errors.ts:459` | Thrown by the `indexAdoniaResources()` codegen hook when it cannot produce its artifacts — a resource module that throws at import time, an unwritable `.adonisjs/adonia/` directory, or a worker that cannot be respawned (TECH_SPEC §14; the codegen contract). |
| `collectFieldHints` | function | `packages/core/src/serialization/form_relations.ts:46` | Unions the eager-load hints every field of `resource` contributes for the request (§18). Empty for a schema of scalars, which is the common case and costs one walk the page was doing anyway. |
| `collectFieldMetas` | function | `packages/core/src/validation/field_meta.ts:105` | Collects the `FieldMeta` of every schema field, applying compile-time `canSee` projection when `ctx` is given (R2 — static projection first). |
| `collectFields` | function | `packages/core/src/schema/traverse.ts:38` | Collects every `Field` of the declaration tree used for `context`, in document order. Detail traversal selects `resource.detail(s)` when the resource declares it; every other context uses `resource.schema(s)`. |
| `collectFieldsIn` | function | `packages/core/src/schema/traverse.ts:63` | Collects every `Field` of an arbitrary component list, under the same projection rules as `collectFields`. |
| `ColorField` | class | `packages/core/src/schema/fields/color.ts:40` | Colour picker bound to a string attribute holding a CSS colour. |
| `Column` | class | `packages/core/src/table/column.ts:36` | Base class for index-table columns (§8.1). |
| `ColumnDescriptor` | type-only interface | `packages/core/src/types.ts:198` | One column of an index table (protocol §3). `key` is the row key VERBATIM — it may be dotted (`author.fullName`) and clients must never split on `.`; row objects are flat maps keyed by this exact string (protocol §6). |
| `ColumnLinkTarget` | type-only type | `packages/core/src/table/column.ts:28` | Link targets accepted by `C.text(...).link(...)` (§8.1). |
| `columnNameOf` | function | `packages/core/src/table/model_columns.ts:30` | The SQL column `attribute` maps to on `model`, UNQUALIFIED. |
| `ComparableOperand` | type-only type | `packages/core/src/schema/when.ts:38` | Operand of a relational comparison: a literal, or a nested rule such as `when.ref` for a cross-field comparison (`endDate >= startDate`, catalogue row 20). Two numbers compare numerically, two strings lexicographically (ISO-8601 dates order correctly), a `null` operand makes the comparison `false` — never `0` (the strict-comparison contract). |
| `COMPILATION_CACHE_DEFAULTS` | constant | `packages/core/src/serialization/descriptor_cache.ts:165` | Default caps. |
| `CompilationCacheLimits` | type-only interface | `packages/core/src/serialization/descriptor_cache.ts:148` | Per-cache entry caps (`cache` section of `config/adonia.ts`). |
| `CompilationCacheName` | type-only type | `packages/core/src/serialization/descriptor_cache.ts:145` | Named compilation caches invalidated as one set (§11.3). |
| `compilationCacheStats` | function | `packages/core/src/serialization/descriptor_cache.ts:234` | Per-cache `CacheStats`, for tests, `adonia:doctor` and §20. |
| `CompilationScope` | type-only interface | `packages/core/src/serialization/descriptor_cache.ts:284` | The request dimensions of the §9.4 cache key that the compiler cannot derive from its own arguments. |
| `compileActionDescriptors` | function | `packages/core/src/actions/descriptors.ts:23` | Omits invisible or unauthorized actions rather than leaking disabled entries. |
| `CompileActionDescriptorsOptions` | type-only interface | `packages/core/src/actions/descriptors.ts:9` | Inputs kept explicit so descriptor compilation reuses the host schema compiler. |
| `CompiledSanitizePolicy` | type-only interface | `packages/core/src/schema/sanitize/policy.ts:248` | A policy in the shape the sanitizer's hot loop wants: membership sets instead of arrays, and attribute allowances pre-split into exact names and `data-*`-style prefixes. |
| `CompiledValidator` | type-only interface | `packages/core/src/validation/validator_compiler.ts:129` | A compiled resource validator (§11.1 + §11.2 mirroring pipeline). |
| `compileFillKeys` | function | `packages/core/src/validation/fill.ts:77` | Derives the fill set of `resource` for `mode` and the R1 evaluation `state` (see `evaluationState` in `field_meta.ts` — callers merge defaults under the submission BEFORE deriving). `mode` narrows the set per §7.4 static projection; when `ctx` is given, compile-time `canSee` projection is applied (R2). |
| `compileMetricSql` | function | `packages/core/src/widgets/metrics.ts:85` | Compiles a complete executable Value, Trend, or Partition metric query. |
| `CompileMode` | type-only type | `packages/core/src/types.ts:167` | The modes `DescriptorCompiler` compiles schema trees for (TECH_SPEC §7.4). `index` descriptors carry a `table` instead of a schema tree and are produced by `DescriptorCompiler.compileIndex`. |
| `compileRelationManagers` | function | `packages/core/src/serialization/relation_managers.ts:53` | Resolves parent-scoped child tables and reusable modal schemas for one page. |
| `compileSanitizePolicy` | function | `packages/core/src/schema/sanitize/policy.ts:341` | Compiles a `sanitize` section into the `CompiledSanitizePolicy` the sanitizer runs against, dropping anything `UNSAFE_TAGS` / `UNSAFE_SCHEMES` / `on*` forbids. |
| `compileTableDescriptor` | function | `packages/core/src/table/derivation.ts:361` | Encodes a `ResolvedTable` as the wire §3 table block. |
| `compileValidator` | function | `packages/core/src/validation/validator_compiler.ts:640` | Compiles a resource schema into the server-side prune, validate, derive, and fill-set contract for one create or edit mode. |
| `ComputedBadge` | type-only interface | `packages/core/src/table/columns/computed.ts:33` | The badge payload a computed column may return: a label plus optional presentation, mirroring what `C.badge`'s `colors`/`icons` maps produce for a static value. |
| `ComputedColumn` | class | `packages/core/src/table/columns/computed.ts:100` | A server-computed cell. |
| `ComputedFn` | type-only type | `packages/core/src/table/columns/computed.ts:46` | Per-row callback of a computed column. |
| `ComputedValue` | type-only type | `packages/core/src/table/columns/computed.ts:43` | The closed set of values `C.computed` may return (§8.1; §23 open question 2). `null` renders as the empty cell. |
| `conditions` | function | `packages/core/src/table/stages/query_surface.ts:127` | Views the index query through its predicate surface. |
| `configure` | function | `packages/devtools/dist/configure.d.ts:12` | Configure hook invoked by `node ace add @adonia/core` / `node ace configure @adonia/core`. |
| `configureCompilationCache` | function | `packages/core/src/serialization/descriptor_cache.ts:197` | Applies the configured caps (provider boot, `config.cache`). |
| `configureDiagnostics` | function | `packages/core/src/telemetry/diagnostics.ts:41` | Binds the app logger as the diagnostics sink, with the §20 `module: 'adonia'` bindings applied here so no call site can forget them. `AdoniaProvider.boot()` is the one caller; passing `undefined` restores the console fallback (used by tests). |
| `configureSanitizePolicy` | function | `packages/core/src/schema/sanitize/policy.ts:384` | Installs the app-wide sanitizer policy (called by the provider at boot). |
| `configureTelemetry` | function | `packages/core/src/telemetry/spans.ts:134` | Applies the validated `telemetry` config section (§4). Called by `AdoniaProvider.boot()`; tests call it directly to flip spans off. |
| `ContainerActionWorkerRuntime` | class | `packages/core/src/actions/lucid_worker_runtime.ts:284` | Container-backed entrypoint; dependencies are reconstructed for each consumed job. |
| `containsPredicate` | function | `packages/core/src/table/search/database.ts:76` | The framework's ONE definition of "this column contains that text" (§8.4). |
| `ContainsPredicate` | type-only interface | `packages/core/src/table/search/database.ts:53` | A raw `column contains term` predicate and the pattern it binds. |
| `CountColumn` | class | `packages/core/src/table/columns/aggregate.ts:60` | Related-row count. |
| `createEagerHints` | function | `packages/core/src/table/pipeline_runner.ts:55` | A fresh, empty `EagerHints` accumulator for one request. Columns and fields union their `preload`/`withCount`/`withAggregate`/join requirements into it during descriptor compilation, and the `eagerLoad` stage replays them onto the query so index serialization stays O(rows) with zero per-row queries (§8.3/§18). |
| `createEagerLoadStage` | function | `packages/core/src/table/stages/eager_load.ts:99` | Builds the `eagerLoad` stage (§8.3). |
| `createFiltersStage` | function | `packages/core/src/table/stages/filters.ts:56` | Builds the `filters` stage (§8.3). |
| `createHttpContextTranslator` | function | `packages/core/src/i18n.ts:542` | Adapts the optional `@adonisjs/i18n` HttpContext macro without importing it. Hosts override keys under `adonia.<key>`; absent adapter/locales/keys fall back to the bundled English catalog. |
| `CreateSavedViewRecord` | type-only interface | `packages/core/src/saved_views/repository.ts:33` | Values accepted when creating one view inside an already-resolved scope. |
| `createSearchStage` | function | `packages/core/src/table/stages/search.ts:137` | Builds the `search` stage (§8.3). |
| `createSoftDeleteScopeStage` | function | `packages/core/src/table/stages/soft_delete_scope.ts:131` | Builds the `softDeleteScope` stage (§8.3). |
| `createSortStage` | function | `packages/core/src/table/stages/sort.ts:106` | Builds the `sort` stage (§8.3). |
| `CredentialsVerifiable` | type-only interface | `packages/core/src/panel/panel.ts:151` | A model class carrying `withAuthFinder`'s credential check (`@adonisjs/auth/mixins/lucid`). Structural on purpose: `@adonia/core` never imports the auth package at runtime. |
| `currentSanitizePolicy` | function | `packages/core/src/schema/sanitize/policy.ts:389` | The app-wide policy a `rich-text` field sanitizes against by default. |
| `currentTracer` | function | `packages/core/src/telemetry/spans.ts:151` | The tracer spans should be recorded on, or `undefined` when telemetry is disabled or no OTel API was found. The single branch every wrapper takes. |
| `CURSOR_TOKEN_VERSION` | constant | `packages/core/src/table/pagination/cursor_token.ts:47` | Token format version this build emits and accepts (the cursor token contract). |
| `CURSOR_VALUE_ALIAS` | constant | `packages/core/src/table/pagination/cursor.ts:72` | Select alias under which the sort value is re-projected so it can be read back off a fetched row. |
| `CursorPage` | type-only interface | `packages/core/src/table/pagination/cursor.ts:78` | One page of rows plus its cursor `meta`. |
| `CursorPaginateOptions` | type-only interface | `packages/core/src/table/pagination/cursor.ts:85` | Inputs for `paginateCursor`. |
| `CursorPayload` | type-only interface | `packages/core/src/table/pagination/cursor_token.ts:71` | The decoded, structurally valid contents of a cursor token. |
| `CursorPrimaryKey` | type-only type | `packages/core/src/table/pagination/cursor_token.ts:68` | A primary key as it rides the wire: a number, or a decimal string past 2^53. |
| `CursorRecordsEnvelope` | type-only interface | `packages/core/src/types.ts:366` | Paginated records envelope of a CURSOR index page (the cursor contract). |
| `CursorRecordsMeta` | type-only interface | `packages/core/src/types.ts:326` | Cursor-mode `records.meta` (the cursor ordering contract; the cursor pagination contract). |
| `CursorValue` | type-only type | `packages/core/src/table/pagination/cursor_token.ts:65` | A sort value as it survives the JSON round trip (the cursor token contract: "JSON natives only"). `null` is a first-class member — the seek predicate has an explicit NULL branch, so a cursor may legitimately sit inside the trailing NULL group. |
| `CUSTOM_PAGE_COMPONENT` | constant | `packages/core/src/http/controllers/custom_page_controller.ts:27` | Inertia page component rendered when a page declares none (D2-6 owns the React half). |
| `CustomColumn` | class | `packages/core/src/table/columns/computed.ts:165` | A cell rendered by a registered component (§8.1, protocol §8 `cell` namespace). The props callback owns the payload contract with that component; an unregistered `componentType` degrades to `<UnknownComponent>` client-side and never throws (protocol §8). |
| `CustomFilter` | class | `packages/core/src/table/filters/custom.ts:40` | Author-supplied filter. |
| `CustomFilterApply` | type-only type | `packages/core/src/table/filters/custom.ts:24` | The query mutation a custom filter contributes (§8.2). |
| `CustomPageController` | class | `packages/core/src/http/controllers/custom_page_controller.ts:62` | Renders the panel's registered custom pages. |
| `CustomPropsFn` | type-only type | `packages/core/src/table/columns/computed.ts:49` | Per-row props callback of a custom column. |
| `CustomWidget` | class | `packages/core/src/widgets/widgets.ts:56` | Arbitrary registered client component fed by JSON-only server data. |
| `customWidgetData` | function | `packages/core/src/widgets/widgets.ts:78` | Narrows arbitrary JSON before it is used as custom widget data. |
| `CustomWidgetData` | type-only type | `packages/core/src/widgets/types.ts:81` | JSON payload returned by a custom widget. |
| `DarkModeStrategy` | type-only type | `packages/core/src/panel/panel.ts:232` | Dark-mode strategy (§13.5). |
| `DASHBOARD_PAGE` | constant | `packages/core/src/http/controllers/dashboard_controller.ts:16` | Inertia page component of the panel dashboard (§13.4; D2-6 owns the React half). |
| `DashboardBuilder` | class | `packages/core/src/widgets/dashboard.ts:4` | Ordered dashboard composition DSL passed to `Panel.dashboard`. |
| `DashboardController` | class | `packages/core/src/http/controllers/dashboard_controller.ts:19` | Renders the panel dashboard. |
| `DATABASE_SEARCH_DRIVER` | constant | `packages/core/src/table/search/database.ts:114` | The `database` driver (§8.4). Registered under the name `database` by `table/search/index.ts`, which is the module every consumer imports. |
| `dateBucketSql` | function | `packages/core/src/widgets/date_bucket.ts:45` | Compiles one date-bucket expression without interpolating values. |
| `DateBucketUnit` | type-only type | `packages/core/src/widgets/date_bucket.ts:13` | Time units offered by trend metrics. |
| `DateColumn` | class | `packages/core/src/table/columns/date.ts:28` | Date/time cell. The value ships as an ISO-8601 string by default (`toJsonValue` normalizes `Date` and Luxon `DateTime` alike). |
| `DateField` | class | `packages/core/src/schema/fields/date.ts:33` | Date picker bound to a date attribute. |
| `DateRangeFilter` | class | `packages/core/src/table/filters/date_range.ts:45` | Inclusive date range. |
| `DateTimeField` | class | `packages/core/src/schema/fields/datetime.ts:35` | Date + time picker bound to a timestamp attribute. |
| `DateWireFormat` | type-only type | `packages/core/src/table/json_value.ts:38` | Wire encodings a temporal value may take (protocol §6). |
| `decodeCursor` | function | `packages/core/src/table/pagination/cursor_token.ts:192` | Decodes and structurally validates a `?cursor=` token. |
| `DEFAULT_FILE_TYPES` | constant | `packages/core/src/schema/fields/file.ts:64` | Media types `F.file` accepts when the author declares none. Deliberately narrow: the safe default for "somebody dropped a file in" is images plus PDF, and widening it is a one-line, visible decision. |
| `DEFAULT_IMAGE_TYPES` | constant | `packages/core/src/schema/fields/image.ts:31` | Media types `F.image` accepts when the author declares none. |
| `DEFAULT_LOGIN_PAGE` | constant | `packages/core/src/panel/panel.ts:82` | Inertia page rendered by the packaged login flow (§10.1, D2-6 owns the React half). |
| `DEFAULT_PANEL_ACCENT` | constant | `packages/core/src/panel/panel.ts:79` | Accent colour used when a panel declares no `brand({ accent })` — the seed of the OKLCH ramp `@adonia/ui` derives its colour scale from (§13.5). |
| `DEFAULT_SANITIZE_CONFIG` | constant | `packages/core/src/schema/sanitize/policy.ts:157` | The framework allowlist: the editorial HTML a rich-text editor produces. |
| `DefaultActionRuntime` | class | `packages/core/src/actions/queue.ts:108` | Shared request runner. It deliberately cannot consume arbitrary queue jobs. |
| `DeferredRelationWrite` | type-only interface | `packages/core/src/schema/fields/relation.ts:140` | A field whose value is persisted THROUGH a relation rather than written onto a column — the pivot sync of `belongs-to-many`. |
| `DeferredWrite` | type-only interface | `packages/core/src/validation/fill.ts:246` | A fill-set key whose value is persisted THROUGH a relation instead of onto a column (§7.3 `belongs-to-many`). |
| `defineConfig` | function | `packages/core/src/config.ts:442` | Authoring helper for `config/adonia.ts` (TECH_SPEC §4). Merges the input over the framework defaults and validates the result, so a malformed config fails the app at boot with a path-qualified `E_ADONIA_INVALID_CONFIG`. |
| `definePlugin` | function | `packages/core/src/plugin/types.ts:311` | Authoring helper. It preserves literal inference for manifests while the legacy overload keeps source compatibility with existing server plugins. |
| `defineSearchDriver` | function | `packages/core/src/table/search/driver.ts:87` | Declares a search driver (§8.4). Identity function at runtime — it exists so a driver literal is checked against `SearchDriver` at the declaration site rather than at the call site, the same role `defineConfig`/`definePlugin` play elsewhere in the package. |
| `dehydrateFill` | function | `packages/core/src/validation/fill.ts:143` | Runs the validated payload through each field's form-state → model-attribute mapping (§7.2 `dehydrate`) before it reaches `applyFill`. |
| `DehydrateFn` | type-only type | `packages/core/src/schema/field.ts:99` | Maps a form-state value onto the model attribute (§7.2 `dehydrate`). |
| `DERIVABLE_COLUMN_TYPES` | constant | `packages/core/src/table/columns/index.ts:50` | Cell registry keys the §7.5 derivation may produce, mapped to their factory. A field's `columnType` outside this set falls back to `text` rather than erroring — a plugin field naming an unregistered cell is the client's `<UnknownComponent>` problem (protocol §8), not a boot failure. |
| `deriveAllowlists` | function | `packages/core/src/table/derivation.ts:327` | Resolves `resource`'s table and returns its `QueryAllowlists` (§8.3) — the entry point the pipeline uses when it has no `ResolvedTable` in hand yet. Prefer `allowlistsFor` when you already resolved one; resolving twice re-runs the schema walk. |
| `deriveSets` | function | `packages/core/src/validation/sets.ts:174` | Re-computes every `sets` derivation for one submission (R6). |
| `deriveTableDescriptor` | function | `packages/core/src/table/derivation.ts:382` | Resolves `resource`'s table (declared or derived, §7.5) and compiles it to the protocol §3 block. Callers that already hold a `ResolvedTable` — the index pipeline does — should call `compileTableDescriptor` directly instead of resolving twice. |
| `DescriptorCompiler` | class | `packages/core/src/serialization/descriptor_compiler.ts:203` | Compiles resource schemas into protocol v1 descriptors. |
| `DescriptorCompilerOptions` | type-only interface | `packages/core/src/serialization/descriptor_compiler.ts:187` | Construction-time options of `DescriptorCompiler`. |
| `descriptorCompileSpan` | function | `packages/core/src/telemetry/spans.ts:232` | Wraps a descriptor compilation as `adonia.descriptor.compile` with the §20 attributes `resource`, `mode`, `cacheHit`. |
| `DescriptorCompilingHookPayload` | type-only interface | `packages/core/src/plugin/hooks.ts:49` | Mutable descriptor immediately before it is serialized. |
| `DescriptorNode` | type-only interface | `packages/core/src/types.ts:83` | One node of the descriptor tree (protocol §2). The skeleton keys `{ type, key, props, reactive?, urls?, children? }` are FROZEN — new top-level keys require a protocol bump. |
| `DETAIL_CHROME_PROPS` | constant | `packages/core/src/schema/field.ts:230` | Props keys carried from a form field onto its detail-mode display entry (protocol §8) by the default `Field.detailProps` implementation. Everything else is dropped: validation props (`required`, `nullable`, `maxLength`, `minLength`, `virtual`), input-only props (`placeholder`, `default`, `disabled`, `readonly`), and any custom prop a field pushed through `withProps` — a detail entry renders a value, it never accepts one. |
| `detectSoftDeletes` | function | `packages/core/src/table/stages/soft_delete_scope.ts:77` | Resolves whether `model` soft-deletes (§8.2). |
| `devDiagnostic` | function | `packages/core/src/telemetry/diagnostics.ts:52` | Emits one dev-mode diagnostic. Silent in production, always non-throwing: a broken host logger must not take a page down over an advisory message. |
| `DiagnosticLogger` | type-only interface | `packages/core/src/telemetry/diagnostics.ts:27` | The logger surface diagnostics need: a pino-shaped `warn(bindings, msg)` on top of `LoggerLike`. The AdonisJS app logger satisfies it. |
| `dialectOf` | function | `packages/core/src/table/stages/index.ts:157` | The SQL dialect behind a query builder, in the vocabulary `PipelineContext.dialect` uses. |
| `DimensionRules` | type-only interface | `packages/core/src/uploads/verification.ts:55` | Declared dimension constraints of an `image` field (§7.3). |
| `DimensionSpec` | type-only interface | `packages/core/src/schema/fields/image.ts:43` | Author-facing dimension constraints (§7.3). `ratio` accepts either a plain width ÷ height number or the `'16:9'` spelling people actually think in. |
| `directionForLocale` | function | `packages/core/src/i18n.ts:447` | Returns `rtl` for right-to-left language or explicit script subtags. |
| `DisplayComponent` | class | `packages/core/src/schema/component.ts:255` | Display node base (TECH_SPEC §7.1 "display" category): a read-only projection of one record attribute — `text-entry`, `badge-entry`, `image-entry`, … — declared directly in the schema tree. |
| `Divider` | class | `packages/core/src/schema/layout/divider.ts:15` | Separator, e.g. `s.divider().label('Advanced').columnSpan('full')`. |
| `DRIVE_MANAGER_BINDING` | constant | `packages/core/src/uploads/drive.ts:39` | Container token `@adonisjs/drive`'s provider registers its manager singleton under (`providers/drive_provider.ts`: `container.singleton( 'drive.manager', …)`), stable across drive v3 and v4. |
| `DriveDiskLike` | type-only interface | `packages/core/src/uploads/drive.ts:77` | The slice of flydrive's `Disk` the upload pipeline drives. Structural, so a real `Disk`, a `FakeDisk` and the suite's in-memory double all satisfy it without any of them importing the other. |
| `DriveManagerLike` | type-only interface | `packages/core/src/uploads/drive.ts:97` | The slice of flydrive's `DriveManager` Adonia resolves a disk through. |
| `DriveSignedUrlOptions` | type-only interface | `packages/core/src/uploads/drive.ts:63` | The signed-URL options Adonia passes to `Disk.getSignedUrl`. |
| `DriveWriteOptions` | type-only interface | `packages/core/src/uploads/drive.ts:45` | The write options Adonia passes to `Disk.put`/`Disk.move`. |
| `EagerHints` | type-only interface | `packages/core/src/table/state.ts:79` | Eager-load hints contributed by columns and fields, unioned by the `eagerLoad` stage so index serialization stays O(rows) with zero per-row queries (§8.3/§18). |
| `EagerLoadStageOptions` | type-only interface | `packages/core/src/table/stages/eager_load.ts:34` | Everything the stage needs, resolved once when the pipeline is built. |
| `encodeCursor` | function | `packages/core/src/table/pagination/cursor_token.ts:161` | Encodes a cursor payload as the opaque base64url token that rides `?cursor=` (the cursor token contract). No padding, per RFC 4648 §5. |
| `EnforcementPoint` | type-only type | `packages/core/src/authorization/types.ts:36` | Where an authorization decision is being made, for telemetry and errors. |
| `ENGLISH_TRANSLATIONS` | constant | `packages/core/src/i18n.ts:4` | Bundled framework translations. Resource, field, action, and tenant labels are host-owned and never catalogued. |
| `ensureRelationJoin` | function | `packages/core/src/table/stages/joins.ts:91` | Ensures every hop of `path` is LEFT JOINed onto `query`, reusing any hop already recorded in `hints.joins`. |
| `errorPageProps` | function | `packages/core/src/errors.ts:139` | Builds the `AdoniaErrorPageProps` for one failure — the single place the production/development split is decided, shared by `AdoniaException.handle`, the access gate, and the panel error boundary, so no caller can leak `detail` by forgetting the branch. |
| `EvalResult` | type-only interface | `packages/core/src/validation/json_logic.ts:44` | Result of evaluating one rule: the raw value plus dev-mode warnings. |
| `evaluate` | function | `packages/core/src/validation/json_logic.ts:106` | Evaluates one rule against the root form `state`. `./`-prefixed `var` paths resolve against `scope` (a repeater row sub-state, the repeater-scoping contract); every other path is absolute against the root state. |
| `evaluateCondition` | function | `packages/core/src/validation/json_logic.ts:243` | Evaluates a reactive rule for a visibility/requiredness decision: `Boolean()` applied to the raw rule value, per the reactivity contract's pinned truthiness. Warnings are dropped — decisions never throw. |
| `evaluationState` | function | `packages/core/src/validation/field_meta.ts:124` | The R1 evaluation state (the evaluation-state contract): field defaults merged UNDER the submitted state (submission wins). Hidden fields' submitted values stay visible to rules; there is no fixpoint — one pass, rule outcomes never feed back into the state. |
| `existingRelationKeys` | function | `packages/core/src/schema/fields/relation.ts:414` | The keys of `keys` that name a row of `target` INSIDE its `query()` scope — one `SELECT … WHERE pk IN (…)` however many keys are probed (§11.1, the batched relation-check contract). |
| `EXISTS_RULE` | constant | `packages/core/src/validation/database_rules.ts:71` | Rule name both variants report under (the database-rule contract). |
| `existsAllRule` | constant | `packages/core/src/validation/database_rules.ts:142` | §11.1 `belongsToMany`: every submitted key must name an existing, in-scope row — checked with ONE query for the whole array (the batched relation-check contract). |
| `ExistsColumn` | class | `packages/core/src/table/columns/aggregate.ts:138` | Whether a relation has any rows. |
| `ExistsKey` | type-only type | `packages/core/src/validation/database_rules.ts:34` | A key as it reaches the rule: whatever the schema's shape check produced. |
| `ExistsProbe` | type-only type | `packages/core/src/validation/database_rules.ts:40` | Resolves which of `keys` name an existing, in-scope row — ONE query per call, however many keys are passed. |
| `existsRule` | constant | `packages/core/src/validation/database_rules.ts:127` | §11.1 `belongsTo`: the submitted key must name an existing, in-scope row of the target resource. |
| `ExistsRuleOptions` | type-only interface | `packages/core/src/validation/database_rules.ts:43` | Options of `existsRule` / `existsAllRule`. |
| `ExpandedAttributeWrite` | type-only interface | `packages/core/src/schema/fields/relation.ts:153` | A field that expands one submitted state value into model attributes before the owner is inserted. Used by polymorphic relations, whose wire value is one object but whose storage is a type column plus an id column. |
| `ExpandedWrite` | type-only interface | `packages/core/src/validation/fill.ts:254` | One wire key expanded into model attributes before the owner save. |
| `extensionsForMediaType` | function | `packages/core/src/uploads/signatures.ts:177` | Extensions conventionally carrying `mime`, canonical one FIRST; empty for a type the table does not know. |
| `F` | constant | `packages/core/src/schema/fields/index.ts:122` | Field factory namespace — the §7.3 scalar set (B2-2), the structured `repeater` (B2-6), the rich-content tranche `keyValue`/`json`/`code`/ `markdown`/`richText` (B2-5), the media pair `file`/`image` (B2-7) and the relation pair `belongsTo`/`belongsToMany` (B2-4). |
| `Field` | class | `packages/core/src/schema/field.ts:255` | Base class for state-bearing schema fields (TECH_SPEC §7.2). |
| `FieldCallbackController` | class | `packages/core/src/http/controllers/field_callback_controller.ts:133` | Serves the per-field capability URLs of the descriptor's `urls` block. |
| `FieldCallbackControllerMethod` | type-only type | `packages/core/src/http/registrar.ts:88` | `FieldCallbackController` methods wired by the registrar (§10.1). |
| `FieldContextName` | type-only type | `packages/core/src/schema/field.ts:59` | Rendering contexts a field can be projected into (TECH_SPEC §7.2 `visibleOn`/`hiddenOn`). `form` covers both `create` and `edit`. |
| `FieldMeta` | type-only interface | `packages/core/src/validation/field_meta.ts:28` | Evaluator-ready view of one schema field (§11 compilation input). |
| `FieldOption` | type-only interface | `packages/core/src/schema/field.ts:68` | One option of a choice field (`select`, `radio`, `checkbox-list`, relation fields). `value` rides the wire verbatim as form state. |
| `FieldOptionsResponse` | type-only interface | `packages/core/src/http/controllers/field_callback_controller.ts:74` | The `field.options` response body (§9.3 dependent options). |
| `Fieldset` | class | `packages/core/src/schema/layout/fieldset.ts:11` | Bordered control group, e.g. `s.fieldset('Dimensions').columns(2).components([…])`. |
| `FieldUploadResponse` | type-only interface | `packages/core/src/http/controllers/field_callback_controller.ts:97` | The `field.upload` response body (protocol §4: "`upload` returns a temp Drive key; the field's form state dehydrates to that key string"). |
| `FileField` | class | `packages/core/src/schema/fields/file.ts:84` | Drive-backed file upload bound to a key column. |
| `FileFieldValue` | type-only type | `packages/core/src/schema/fields/file.ts:57` | Form-state shape of a file field: one key, a key array under `multiple()`, or `null` for "no file". |
| `fillableKeys` | function | `packages/core/src/validation/fill.ts:53` | Fill-set predicate over already-collected field metas: visible (R3) ∧ non-virtual ∧ non-disabled (R5) ∧ not read-only for `mode` (§7.2 `readonlyOn` — a read-only field renders and validates but is never written, so a tampered value cannot reach the model). Shared by `compileFillKeys` and `CompiledValidator.fillFor` so the two surfaces cannot drift. |
| `Filter` | constant | `packages/core/src/table/filters/index.ts:84` | The §8.2 filter DSL — and the abstract base plugins extend. Same object: see the module note. |
| `finalKeyFor` | function | `packages/core/src/uploads/keys.ts:149` | The permanent key for a temp object. |
| `FlashEnvelope` | type-only interface | `packages/core/src/types.ts:530` | The `adonia.flash` block (protocol §1), read from the session flash bag. Absent keys are OMITTED rather than serialized as `undefined`, so the wire carries `{}` for a request with nothing flashed. |
| `formatTranslation` | function | `packages/core/src/i18n.ts:493` | Interpolates `{{name}}` placeholders without evaluating host-provided text. |
| `FormMode` | type-only type | `packages/core/src/schema/field.ts:62` | Form sub-modes targeted by `readonlyOn` (TECH_SPEC §7.2). |
| `FormState` | type-only type | `packages/core/src/types.ts:35` | Flat form state keyed by node `key` (protocol §7). `var` paths in reactive rules address this map; layout nesting never namespaces keys. |
| `getAdoniaContext` | function | `packages/core/src/macros/http_context.ts:40` | Returns the lazily-created `AdoniaRequestContext` attached to `ctx`. Exported for tests and middleware; application code reads `ctx.adonia`. |
| `GlobalSearchController` | class | `packages/core/src/http/controllers/global_search_controller.ts:102` | Answers the panel's keyboard palette data source. |
| `GlobalSearchGroup` | type-only interface | `packages/core/src/http/controllers/global_search_controller.ts:48` | Hits of one authorized resource (§10.4). |
| `GlobalSearchHit` | type-only interface | `packages/core/src/http/controllers/global_search_controller.ts:34` | One hit inside a `GlobalSearchGroup` (§10.4). |
| `GlobalSearchResponse` | type-only interface | `packages/core/src/http/controllers/global_search_controller.ts:58` | The §10.4 global-search response body. |
| `Grid` | class | `packages/core/src/schema/layout/grid.ts:19` | Column grid. Used explicitly via `s.grid().columns(n).components([…])`, or implicitly: the descriptor compiler wraps a resource's top-level component list in a one-column grid when the list is not already a single grid. |
| `HAS_MANY_ID_KEY` | constant | `packages/core/src/schema/fields/has_many.ts:34` | Reserved identity key in each has-many child state object. |
| `HasMany` | class | `packages/core/src/schema/fields/has_many.ts:119` | A repeater whose visible submitted rows are authoritative for one Lucid has-many relation. Omission is handled by the fill set and performs no write. |
| `hasRequestScopedGate` | function | `packages/core/src/schema/traverse.ts:100` | Whether any node of `resource`'s schema carries a `request`-scoped visibility gate (a raw `canSee`/`visible`, or an explicit `recordDependent()` marker). |
| `hasResourceScope` | function | `packages/core/src/resource/scope.ts:108` | Whether `resourceClass` declares any scope for `stage`. |
| `hasSearchDriver` | function | `packages/core/src/table/search/driver.ts:104` | Whether a driver is registered under `name`. |
| `HiddenField` | class | `packages/core/src/schema/fields/hidden.ts:33` | Non-rendering field carrying a value through the form. |
| `HiddenValueType` | type-only type | `packages/core/src/schema/fields/hidden.ts:24` | Underlying scalar type a hidden value is validated as (§11.1). |
| `Html` | class | `packages/core/src/schema/display/html.ts:16` | Markup entry, e.g. `s.html('body').label('Body').columnSpan('full')`. |
| `HttpContextLike` | type-only interface | `packages/core/src/types.ts:562` | The structural slice of AdonisJS `HttpContext` that Adonia's compile-time callbacks (`canSee`) and the descriptor compiler consume. Both the real `HttpContext` and the `makeFakeContext` testing fake satisfy this shape, so unit tests stay hermetic (TECH_SPEC §21). |
| `HttpContextTranslator` | type-only interface | `packages/core/src/i18n.ts:517` | Resolved per-request translator produced by `createHttpContextTranslator`. |
| `HydrateFn` | type-only type | `packages/core/src/schema/field.ts:106` | Maps a model record onto the field's form-state value (§7.2 `hydrate`). |
| `hydrateState` | function | `packages/core/src/table/serializer.ts:397` | Builds the edit-mode form state (protocol §7): the descriptor's node keys hydrated from the record, explicit `null` where the record has no value. Keys come from the emitted tree, so the state-hygiene invariant holds by construction. |
| `HydrateStateOptions` | type-only interface | `packages/core/src/table/serializer.ts:372` | Extra inputs that let `hydrateState` use per-field-type hydration. |
| `ImageColumn` | class | `packages/core/src/table/columns/image.ts:19` | Image cell. |
| `ImageDimensions` | type-only interface | `packages/core/src/uploads/dimensions.ts:28` | Intrinsic pixel dimensions of a raster image. |
| `ImageEntry` | class | `packages/core/src/schema/display/image_entry.ts:15` | Image entry, e.g. `s.imageEntry('cover').disk('s3').visibility('private')`. |
| `ImageField` | class | `packages/core/src/schema/fields/image.ts:67` | Drive-backed image upload. |
| `imagePreview` | function | `packages/core/src/uploads/urls.ts:137` | Builds the `src`/`srcSet` pair for a stored image. |
| `ImagePreview` | type-only interface | `packages/core/src/uploads/urls.ts:59` | An `<img>`-shaped preview of one stored image (§7.3 "responsive preview URLs"). |
| `IncomingUpload` | type-only type | `packages/core/src/uploads/temp_upload.ts:79` | Buffered library input or the streamed HTTP upload shape. |
| `INDEX_COLUMN_CAP` | constant | `packages/core/src/table/derivation.ts:44` | Maximum number of derived columns when no field is marked `visibleOn('index')` (TECH_SPEC §7.5 "the first N scalar fields"). |
| `IndexPage` | type-only type | `packages/core/src/table/pagination/index.ts:60` | One page of rows and its `meta`, discriminated by the mode that produced it. Cursor pages carry no `total`/`lastPage` — omitting the `COUNT(*)` is the point of the mode (the cursor ordering contract). |
| `IndexPipelineOptions` | type-only interface | `packages/core/src/table/stages/index.ts:84` | Inputs for `buildIndexPipeline`. |
| `IndexPlan` | type-only interface | `packages/core/src/table/index_plan.ts:68` | Everything an index request can compute before it sees the query string. |
| `IndexPlanLookup` | type-only interface | `packages/core/src/table/index_plan.ts:96` | A plan plus whether it came from the cache, for §20 telemetry. |
| `IndexPlanOptions` | type-only interface | `packages/core/src/table/index_plan.ts:78` | Inputs of `resolveIndexPlan`. |
| `IndexQuery` | type-only type | `packages/core/src/table/state.ts:91` | A Lucid model query builder as the pipeline mutates it. |
| `IndexQueryInput` | type-only type | `packages/core/src/table/pipeline.ts:46` | A §10.2 query string in either of the two shapes it reaches us in: the already-decoded bag from `ctx.request.qs()`, or the raw `location.search` text (used by tests, by cursor links, and by anything holding a URL rather than a request). |
| `IndexQueryParseOptions` | type-only interface | `packages/core/src/table/pipeline.ts:49` | Inputs `parseIndexQueryState` validates the request against. |
| `IndexQueryState` | type-only interface | `packages/core/src/table/state.ts:38` | The parsed index request state (§10.2). Every member is already validated against the resource's declared allowlists — a stage may consume it without re-checking. |
| `IndexRecordsEnvelope` | type-only type | `packages/core/src/types.ts:380` | What an index page ships as `records`, in either pagination mode. |
| `IndexTableSpec` | type-only interface | `packages/core/src/table/stages/index.ts:66` | The resolved table the stages read. |
| `inertiaOf` | function | `packages/core/src/http/facades.ts:92` | The request's Inertia renderer, re-widened (see the module TSDoc for why the cast is unavoidable inside the library). |
| `InlineEditableDescriptor` | type-only interface | `packages/core/src/types.ts:176` | Editor capability attached to `column.props.editable` when a table column opts into inline updates. |
| `InlineUpdateResponse` | type-only interface | `packages/core/src/types.ts:186` | Successful response from an inline field PATCH capability. |
| `InMemoryActionBatchStore` | class | `packages/core/src/actions/batches.ts:51` | Deterministic in-memory implementation with the same monotonic rules as SQL adapters. |
| `InMemoryActionEventStore` | class | `packages/core/src/actions/events.ts:129` | Simple store useful to adapters and focused tests. |
| `InvalidActionRequestException` | class | `packages/core/src/actions/request.ts:9` | Stable 422 raised for malformed or widened action targets. |
| `invalidateAll` | function | `packages/core/src/serialization/descriptor_cache.ts:229` | Drops every compiled descriptor and validator (TECH_SPEC §9.4 "cache is fully invalidated on HMR of any `app/adonia/**` module"). |
| `InvalidConfigException` | class | `packages/core/src/errors.ts:233` | Thrown when `config/adonia.ts` (or any Adonia configuration surface, e.g. a panel id) has an invalid shape. Messages are path-qualified so the offending key is visible at boot, e.g. `defaults.perPage must be a positive integer` (IMPLEMENTATION_PLAN W1-1). |
| `InvalidCursorBehaviour` | type-only type | `packages/core/src/table/pagination/cursor.ts:58` | What a malformed, tampered or sort-mismatched cursor does (the cursor token contract vs. the lenient reading; see `BaseResource.onInvalidCursor`). |
| `InvalidCursorException` | class | `packages/core/src/errors.ts:251` | Thrown when a `?cursor=` token fails to decode, fails payload validation, carries an unknown format version, names a sort key outside the resource's sortable allowlist, or continues an ordering other than the request's resolved sort (the cursor token contract; the invalid-cursor contract). |
| `InvalidFieldCapabilityException` | class | `packages/core/src/errors.ts:306` | Thrown when a field callback URL is missing its capability signature, or when its signed resource, field, form mode, or record id was changed. |
| `InvalidImageDimensionsException` | class | `packages/core/src/errors.ts:535` | Thrown when an image's decoded header violates the field's `dimensions({ minWidth, maxWidth, minHeight, maxHeight, ratio })` rules, or when the accepted format carries no header Adonia can measure while such rules are declared (TECH_SPEC §19; fail closed rather than admit an unmeasured image past a size gate). |
| `InvalidPreferencesException` | class | `packages/core/src/errors.ts:263` | Thrown when a personal column-layout payload is malformed. |
| `InvalidSavedViewException` | class | `packages/core/src/errors.ts:257` | Thrown when a saved-view name or table-state payload is malformed. |
| `isAdoniaPluginManifest` | function | `packages/core/src/plugin/types.ts:215` | Whether a registered entry uses the installable manifest ABI. |
| `isCursorMeta` | function | `packages/core/src/table/pagination/index.ts:95` | Whether a `records.meta` is the cursor variant (the cursor ordering contract). |
| `isDeferredRelationWrite` | function | `packages/core/src/schema/fields/relation.ts:170` | Whether `field` persists through a relation after the row is saved. |
| `isDisabledFor` | function | `packages/core/src/validation/field_meta.ts:156` | R5 — whether the field is disabled for the given evaluation state: a static `disabled()` always wins, otherwise the `disabledWhen` rule. |
| `isRequiredFor` | function | `packages/core/src/validation/field_meta.ts:166` | R4 — whether the field is required for the given evaluation state: static `required`, or `requiredWhen` evaluating truthy; `disabledWhen` true suppresses requiredness, and a hidden field is never required. |
| `isSavedViewVisible` | function | `packages/core/src/saved_views/service.ts:71` | Whether one row belongs to the exact request scope and is visible to its user. |
| `isSniffable` | function | `packages/core/src/uploads/signatures.ts:152` | Whether `mime` has a registered signature, i.e. can ever be verified. |
| `isVisibleFor` | function | `packages/core/src/validation/field_meta.ts:148` | R3 — whether the field is visible for the given evaluation state. |
| `ItemLabelFn` | type-only type | `packages/core/src/schema/fields/repeater.ts:63` | Server-side item namer (`itemLabel(fn)`): computes the human name of one row. A closure can never ride the wire (protocol §2 rule 1), so this form is server-only — see `Repeater.itemLabel`. |
| `JOIN_ALIAS_PREFIX` | constant | `packages/core/src/table/stages/joins.ts:42` | Alias namespace for pipeline-generated joins. Prefixed so a generated alias can never collide with a real table name in the host schema. |
| `joinAliasFor` | function | `packages/core/src/table/stages/joins.ts:76` | Deterministic alias for a relation path: `author` → `adonia_author`, `author.company` → `adonia_author__company`. Separate from the path itself because `.` is not legal in an unquoted SQL identifier. |
| `JsonCoercionOptions` | type-only interface | `packages/core/src/table/json_value.ts:41` | Per-value coercion overrides (protocol §6). |
| `JsonField` | class | `packages/core/src/schema/fields/json_field.ts:47` | Arbitrary JSON document, edited as code and stored parsed. |
| `JsonLogicRule` | type-only type | `packages/core/src/types.ts:29` | A serialized JsonLogic rule over the closed operator set defined by the reactivity contract: `var === !== > >= < <= in ! and or if`. Loose equality (`==`, `!=`), arithmetic, and collection operators are deliberately excluded. |
| `JsonObject` | type-only type | `packages/core/src/types.ts:22` | A JSON object; the type of `DescriptorNode.props` (protocol §2). |
| `JsonValue` | type-only type | `packages/core/src/types.ts:19` | Any value representable as JSON. The only value type allowed anywhere in a serialized descriptor (protocol §2). |
| `KeyValueEntry` | class | `packages/core/src/schema/display/key_value_entry.ts:11` | Object entry, e.g. `s.keyValueEntry('meta').keyLabel('Property')`. |
| `KeyValueField` | class | `packages/core/src/schema/fields/key_value.ts:40` | Editable map of string pairs, bound to an object attribute (typically a JSON column). |
| `KeyValueState` | type-only type | `packages/core/src/schema/fields/key_value.ts:20` | Form state of a `key-value` field: a flat map of string pairs. |
| `LayoutComponent` | class | `packages/core/src/schema/component.ts:184` | Layout node base (TECH_SPEC §7.1): carries child components, no state key. |
| `Lens` | type-only interface | `packages/core/src/resource/lens.ts:19` | A named, authorized scope over a resource index. |
| `LensDescriptor` | type-only interface | `packages/core/src/resource/lens.ts:31` | Minimal wire form emitted in a resource descriptor. |
| `loadRecordFor` | function | `packages/core/src/serialization/form_relations.ts:87` | Loads the record a detail/edit page is about to render, inside the resource's base scope (§6.1/§8.3) and with the schema's relations preloaded (§18). |
| `localeFromHttpContext` | function | `packages/core/src/i18n.ts:529` | Resolves and canonicalizes the request locale from the optional i18n macro, then Accept-Language. |
| `LoggerLike` | type-only interface | `packages/core/src/telemetry/spans.ts:284` | A pino-shaped logger — the app logger, or any child of it. |
| `lookup` | function | `packages/core/src/validation/json_logic.ts:78` | Dotted-path lookup into form state. Numeric segments index into arrays (`items.0.price`). Missing segments yield `null` (never `undefined`, never throw). |
| `LruCache` | class | `packages/core/src/serialization/descriptor_cache.ts:65` | A bounded least-recently-used map. |
| `LucidActionRouteRuntime` | class | `packages/core/src/actions/lucid_route_runtime.ts:87` | Framework default bound by the provider; hosts only bind an optional queue adapter. |
| `LucidActionWorkerOptions` | type-only interface | `packages/core/src/actions/lucid_worker_runtime.ts:36` | Dependencies resolved once per worker process, never captured from an HTTP request. |
| `LucidActionWorkerRuntime` | class | `packages/core/src/actions/lucid_worker_runtime.ts:57` | Resolves panel/resource/action/actor/tenant for every job, then invokes the shared executor. |
| `MarkdownField` | class | `packages/core/src/schema/fields/markdown.ts:34` | Markdown source editor bound to a string attribute. |
| `MarkdownPreview` | type-only type | `packages/core/src/schema/fields/markdown.ts:25` | Preview layouts a markdown editor can offer (§7.3 "side-by-side preview"). |
| `MAX_SAVED_VIEW_NAME_LENGTH` | constant | `packages/core/src/saved_views/state.ts:7` | Maximum persisted view-name length. |
| `MAX_SAVED_VIEW_STATE_BYTES` | constant | `packages/core/src/saved_views/state.ts:5` | Maximum UTF-8-ish JSON payload retained for one saved view. |
| `MEASURABLE_IMAGE_TYPES` | constant | `packages/core/src/uploads/dimensions.ts:198` | Media types `probeImageDimensions` can measure, sorted. |
| `MediaSignature` | type-only interface | `packages/core/src/uploads/signatures.ts:32` | One entry of the signature table: a media type plus a predicate over the file's leading bytes. |
| `mediaTypeForExtension` | function | `packages/core/src/uploads/signatures.ts:186` | The media type an extension denotes, or `undefined` when no signature claims it. Only ever applied to an extension ADONIA chose (see `extensionsForMediaType`), never to a client-supplied one. |
| `mergeDefaults` | function | `packages/core/src/config.ts:221` | Overlays `overrides` on `base` — the §4 "most-specific wins" rule that resolves framework defaults → per-panel `defaults()` (§5.1) → (later) per-resource/per-field overrides. |
| `mergeSearchResult` | function | `packages/core/src/table/stages/search.ts:117` | Merges one driver answer into an existing scoped query. |
| `MetricAggregate` | type-only type | `packages/core/src/widgets/metrics.ts:20` | Aggregations supported by the portable metric SQL compiler. |
| `MetricDataResolver` | type-only type | `packages/core/src/widgets/metrics.ts:17` | Callback used by metric widgets to compute their wire payload. |
| `MetricDialect` | type-only type | `packages/core/src/widgets/date_bucket.ts:2` | SQL dialects supported by Adonia's metric compiler. |
| `MetricQueryClient` | type-only interface | `packages/core/src/widgets/metrics.ts:31` | Minimal Lucid-compatible raw query surface used by SQL-backed metrics. |
| `MetricQueryRow` | type-only type | `packages/core/src/widgets/metrics.ts:23` | One database row returned by a metric query client. |
| `MetricSqlQuery` | type-only type | `packages/core/src/widgets/metrics.ts:54` | Complete portable metric SQL query variants. |
| `mintTempKey` | function | `packages/core/src/uploads/keys.ts:117` | Mints the temp key a fresh upload is stored at. |
| `MorphTo` | class | `packages/core/src/schema/fields/morph_to.ts:73` | Polymorphic picker that never exposes model or table names on the wire. |
| `MorphToOptions` | type-only interface | `packages/core/src/schema/fields/morph_to.ts:26` | Declaration options. Keys are labels and values are stable resource slugs. |
| `MorphToState` | type-only interface | `packages/core/src/schema/fields/morph_to.ts:20` | Wire state of a morph-to field. `type` is always a registered resource slug. |
| `MultiSelectFilter` | class | `packages/core/src/table/filters/multi_select.ts:25` | Multi-choice filter. |
| `NavBuilder` | class | `packages/core/src/panel/navigation.ts:181` | Fluent composer handed to `panel.navigation((nav) => …)` (§5.1). |
| `NavBuildingHookPayload` | type-only interface | `packages/core/src/plugin/hooks.ts:126` | Mutable navigation result immediately before it enters the Inertia envelope. |
| `NavBuildOptions` | type-only interface | `packages/core/src/panel/navigation.ts:54` | Inputs of `buildNavigation`. |
| `NavItemOptions` | type-only interface | `packages/core/src/panel/navigation.ts:44` | Options of `NavBuilder.item`. |
| `NavNode` | type-only type | `packages/core/src/types.ts:436` | One node of a panel's navigation tree (protocol §1). The union is FROZEN alongside the rest of protocol v1: a `group` carries a label and children only — it has no icon and no URL of its own. |
| `NavVisibilityPredicate` | type-only type | `packages/core/src/panel/navigation.ts:41` | Decides whether the current user may see a resource's list page — the `viewList` ability of §12, injected by the caller (A2-4 passes the real authorizer). Resources it rejects are omitted from the tree. |
| `nestedFieldMetas` | function | `packages/core/src/validation/field_meta.ts:197` | The `FieldMeta` list of a **state-boundary** field's item sub-form (§7.3 `repeater`), or `undefined` when `field` is a plain scalar. |
| `NestedParentContext` | type-only interface | `packages/core/src/types.ts:383` | Additive context supplied when the current resource is parent-scoped. |
| `NO_AUTHORIZATION_LAYER` | constant | `packages/core/src/authorization/authorizer.ts:131` | A permissive authorizer for requests with no authorization layer. |
| `normalizeMetricDialect` | function | `packages/core/src/widgets/date_bucket.ts:29` | Collapses driver aliases to the compiler's canonical dialect names. |
| `noStore` | function | `packages/core/src/http/panel_request.ts:400` | Marks the response uncacheable — mandatory on every JSON endpoint of the route table (§10.1: `search`, `field.*`, `actions.status`, and `widgets.data`). |
| `NumberColumn` | class | `packages/core/src/table/columns/number.ts:21` | Numeric cell. Formatting (`decimal`, `money`) is a client instruction, not a server-side render: the raw number ships so that sorting, CSV export and the money formatter all see the same value, and so the user's locale — which the server does not own — decides the separators. |
| `NumberField` | class | `packages/core/src/schema/fields/number.ts:18` | Numeric input bound to a number attribute. |
| `NumberRangeFilter` | class | `packages/core/src/table/filters/number_range.ts:25` | Inclusive numeric range. |
| `NumericField` | class | `packages/core/src/schema/fields/numeric.ts:25` | Number-valued field base (TECH_SPEC §7.3 / §11.1 row 2). |
| `objectUrl` | function | `packages/core/src/uploads/urls.ts:114` | The URL a client should fetch `key` through: the disk's public URL for a public object, a freshly signed short-lived URL for a private one. |
| `ObjectUrlOptions` | type-only interface | `packages/core/src/uploads/urls.ts:42` | What `objectUrl` needs to resolve one stored key. |
| `offsetMeta` | function | `packages/core/src/table/pagination/offset.ts:68` | Builds the frozen protocol §6 `meta` for one offset window. |
| `OffsetPage` | type-only interface | `packages/core/src/table/pagination/offset.ts:40` | One page of rows plus its frozen §6 `meta`. |
| `OffsetPaginateOptions` | type-only interface | `packages/core/src/table/pagination/offset.ts:32` | Inputs for `paginateOffset`. |
| `OffsetPaginatorLike` | type-only interface | `packages/core/src/table/pagination/offset.ts:91` | The slice of Lucid's paginator `paginateOffset` reads. Structural so both `SimplePaginator` and `ModelPaginator` satisfy it, and so the boundary cases stay testable without a database (§21). |
| `OffsetWindow` | type-only interface | `packages/core/src/table/pagination/offset.ts:47` | The counted window `offsetMeta` describes. |
| `Operator` | type-only type | `packages/core/src/validation/json_logic.ts:41` | An operator of the closed subset. |
| `OPERATOR_SET` | constant | `packages/core/src/validation/json_logic.ts:25` | The closed operator set of the Adonia JsonLogic subset (the reactivity contract). |
| `optionalAuthOf` | function | `packages/core/src/http/facades.ts:125` | The request's auth facade, or `undefined` on a JSON-only/auth-less app. |
| `optionalContainerOf` | function | `packages/core/src/http/facades.ts:135` | The request-scoped container resolver, or `undefined` outside a booted app. |
| `optionalInertiaOf` | function | `packages/core/src/http/facades.ts:120` | The request's Inertia renderer, or `undefined` when Inertia is not installed. |
| `optionalSavedViewRepository` | function | `packages/core/src/saved_views/repository.ts:204` | Resolves the repository bound by a booted Adonia provider, when present. |
| `optionalSessionOf` | function | `packages/core/src/http/facades.ts:130` | The request's session, or `undefined` when the session middleware never ran. |
| `OptionFilter` | class | `packages/core/src/table/filters/options.ts:27` | A filter narrowing on a declared set of choices (§8.2). |
| `OptionsInput` | type-only type | `packages/core/src/schema/fields/choice.ts:31` | What an author may hand to `options()`: the full `FieldOption` shape, or the `value → label` shorthand that covers the common case. |
| `OptionsResolver` | type-only type | `packages/core/src/schema/field.ts:86` | Resolver for `dependentOptions()` (§7.2): computes the option list for the current form state on the server, reached through the node's `urls.options` capability URL (protocol §4). |
| `paginateCursor` | function | `packages/core/src/table/pagination/cursor.ts:300` | Runs the terminal `paginate` step in cursor mode (§8.3), returning the page's rows and the the cursor contract `meta`. |
| `paginateIndex` | function | `packages/core/src/table/pagination/index.ts:78` | Runs the §8.3 `paginate` step in the resource's effective mode. |
| `PaginateIndexOptions` | type-only interface | `packages/core/src/table/pagination/index.ts:67` | Inputs for `paginateIndex`: everything `paginateCursor` needs plus the resolved mode. Offset mode reads only `state.page`/`state.perPage` from it, but takes the same object so the controller assembles one. |
| `paginateOffset` | function | `packages/core/src/table/pagination/offset.ts:104` | Runs the terminal `paginate` step in offset mode (§8.3). |
| `paginating` | function | `packages/core/src/table/stages/query_surface.ts:137` | Views the index query through its pagination surface (see `conditions`). |
| `PaginationMode` | type-only type | `packages/core/src/config.ts:25` | Pagination modes supported by the table pipeline (TECH_SPEC §4). |
| `PaginationState` | type-only interface | `packages/core/src/table/pipeline.ts:33` | Resolved pagination state for one index request. |
| `PaginatorLike` | type-only interface | `packages/core/src/table/serializer.ts:178` | Structural slice of Lucid's paginator consumed here (SimplePaginator / ModelPaginator both satisfy it). Declared locally so the serializer stays testable without a database. |
| `Panel` | class | `packages/core/src/panel/panel.ts:279` | A mounted admin panel. Unique per app, mounted on a path and/or domain pattern (§5.2), holding a resource registry. |
| `PANEL_ACCESS_MIDDLEWARE` | constant | `packages/core/src/http/registrar.ts:190` | Name of Adonia's own access middleware (§5.2). |
| `PANEL_CSS_VARIABLE_PATTERN` | constant | `packages/core/src/panel/panel.ts:61` | CSS custom properties a panel may override (§13.5: all tokens are `--adonia-*`). |
| `PANEL_ERROR_PAGE` | constant | `packages/core/src/errors.ts:31` | Panel-chromed error page rendered for 403/404/500 (§17); overridable by the host app through the client registry (`r.page('error', …)`). Its React half is `ErrorPage` in `@adonia/ui/pages`, scaffolded into the host app as `inertia/pages/adonia/error.tsx`. |
| `PANEL_ID_PATTERN` | constant | `packages/core/src/panel/panel.ts:58` | Panel ids are route-name segments: `adonia.<id>.*` (TECH_SPEC §5.1). |
| `PanelAccessCallback` | type-only type | `packages/core/src/panel/panel.ts:136` | Panel access verdict (§5.1 `access()`): may this authenticated user enter the panel at all? A `false` verdict is a 403 — distinct from the per-resource abilities of §12, which decide what may be done inside. |
| `PanelAccessMiddleware` | class | `packages/core/src/http/middleware/panel_access_middleware.ts:44` | Guards every panel route behind the panel's guard and `access()` verdict. |
| `PanelAuthRouteSpec` | type-only interface | `packages/core/src/http/registrar.ts:215` | One authentication route of a panel's route table (§10.1). Structurally a `PanelRouteSpec`; a distinct type because these three are the §19 carve-out that sits OUTSIDE the access gate, and the registrar must not be able to mix the two lists up. |
| `panelAuthRouteSpecs` | function | `packages/core/src/http/registrar.ts:336` | The authentication route table of one panel (§10.1): empty unless the panel's login flow is enabled — a panel behind SSO or an app-owned login page registers no `/login` of its own. |
| `PanelBrand` | type-only interface | `packages/core/src/panel/panel.ts:220` | Resolved panel branding: every optional input replaced by an explicit value or `null`, so the §9.1 envelope can be serialized without re-deriving defaults on the client. |
| `PanelBrandOptions` | type-only interface | `packages/core/src/panel/panel.ts:194` | Panel branding (§5.1 `brand()`), as authored. |
| `PanelBrandResolver` | type-only type | `packages/core/src/panel/panel.ts:205` | Tenant-aware panel brand resolver. |
| `PanelConflictException` | class | `packages/core/src/errors.ts:272` | Thrown at boot when two panels resolve to the same `(domain, path)` mount pair, or when a panel id is registered twice (TECH_SPEC §5.2). |
| `PanelCredentials` | type-only interface | `packages/core/src/panel/panel.ts:139` | Credentials submitted to the packaged login form (§10.1 `login.attempt`). |
| `PanelCredentialsVerifier` | type-only type | `packages/core/src/panel/panel.ts:164` | Full override of credential verification. Return the user to sign in, or `null` when the credentials do not match (never throw for a bad password — a throw propagates as a 500). |
| `PanelDashboardBuilder` | type-only type | `packages/core/src/panel/panel.ts:123` | Dashboard composition callback (§5.1 `dashboard()`). |
| `PanelEnvelope` | type-only interface | `packages/core/src/types.ts:497` | The `adonia.panel` block (protocol §1): everything the chrome needs and nothing page-specific. Identical across every page of one panel and one request. |
| `PanelErrorMiddleware` | class | `packages/core/src/http/middleware/panel_error_middleware.ts:61` | Renders a foreign error escaping a panel route as the panel-chromed error page. Applied by `RouteRegistrar` to every panel group, outside the access gate and the app's own `panel.middleware([...])` so it covers them too. |
| `PanelLoginOptions` | type-only interface | `packages/core/src/panel/panel.ts:180` | Login-flow configuration (§5.1 `login()`). |
| `PanelManager` | class | `packages/core/src/panel/panel_manager.ts:70` | Registered panels and request-time resolution. |
| `PanelMiddlewareEntry` | type-only type | `packages/core/src/panel/panel.ts:103` | An entry of `Panel.middleware` (§5.1/§5.2): one of Adonia's own middleware names (accepted and de-duplicated — Adonia applies them regardless), a bare middleware function, or a parsed named middleware as produced by the app's `start/kernel.ts` (`middleware.auth()`). |
| `PanelNavigationBuilder` | type-only type | `packages/core/src/panel/panel.ts:125` | Navigation composition callback with the resolved tenant/request context. |
| `panelOf` | function | `packages/core/src/http/panel_request.ts:60` | The panel serving this request, resolved by the registrar's middleware. |
| `PanelPageImport` | type-only type | `packages/core/src/panel/panel.ts:120` | Lazy import of a custom panel page (§5.1 `pages()`). Custom pages — the `BasePage` contract, their route, and their rendering — are a Phase-3 surface; the panel only STORES the list, so the default export is typed `unknown` rather than faked against a class that does not exist yet. |
| `PanelPageLike` | type-only interface | `packages/core/src/http/controllers/custom_page_controller.ts:33` | The slice of a custom page class `pages.show` addresses (§5.1). The Phase-3 `BasePage` is a superset — see the module TSDoc. |
| `PanelRouteHandler` | type-only type | `packages/core/src/http/registrar.ts:116` | A controller tuple the registrar hands to the router — the `[class, method]` form v7 resolves through the container per request. |
| `PanelRouteMethod` | type-only type | `packages/core/src/http/registrar.ts:195` | HTTP methods the §10.1 route table uses. |
| `PanelRouteSpec` | type-only interface | `packages/core/src/http/registrar.ts:198` | One route of a panel's route table (§10.1). |
| `panelRouteSpecs` | function | `packages/core/src/http/registrar.ts:241` | The guarded route table of one panel — the complete §10.1 table minus the login carve-out (`panelAuthRouteSpecs`). |
| `PanelTheme` | type-only interface | `packages/core/src/panel/panel.ts:243` | Resolved panel theming; defaults applied. |
| `PanelThemeOptions` | type-only interface | `packages/core/src/panel/panel.ts:235` | Panel theming (§5.1 `theme()`), as authored. |
| `panelUrlBuilder` | function | `packages/core/src/http/panel_request.ts:347` | Resolves this request's `urlFor` for `panel` (protocol §1 and §4). |
| `PanelUrlFor` | type-only type | `packages/core/src/http/panel_request.ts:260` | Builds one panel route URL by its §10.1 name suffix (`dashboard`, `field.options`, …), falling back to `fallback` when the router cannot answer. |
| `parseActionRequest` | function | `packages/core/src/actions/request.ts:106` | Parses the exact §10.3 union and rejects all unknown keys. |
| `ParseActionRequestOptions` | type-only interface | `packages/core/src/actions/request.ts:38` | Options derived from the current resource plan, never from the client. |
| `ParsedTempKey` | type-only interface | `packages/core/src/uploads/keys.ts:64` | A temp key, split into the parts promotion needs. |
| `parseIndexQueryState` | function | `packages/core/src/table/pipeline.ts:304` | Parses the §10.2 index query-string contract into the fully validated `IndexQueryState` every pipeline stage consumes. |
| `parseOptionsRequest` | function | `packages/core/src/schema/fields/relation.ts:749` | Parses the `urls.options` query string out of the resolver state bag (protocol §4: `?q=&values=&page=&perPage=`). |
| `parsePaginationState` | function | `packages/core/src/table/pipeline.ts:98` | Resolves `?page=`/`?perPage=` against the config defaults (§8.3): a missing or malformed `page` falls back to `1`; a `perPage` outside `defaults.perPageOptions` is silently dropped to `defaults.perPage`. |
| `parseSavedViewName` | function | `packages/core/src/saved_views/state.ts:50` | Trims and validates an operator-supplied saved-view name. |
| `parseSavedViewState` | function | `packages/core/src/saved_views/state.ts:69` | Parses the closed URL-serializable saved-view state envelope. |
| `parseTempKey` | function | `packages/core/src/uploads/keys.ts:134` | Parses `key` as a temp key, or returns `undefined` when it is not one. |
| `partitionFill` | function | `packages/core/src/validation/fill.ts:278` | Splits a fill set into the keys `applyFill` writes as ATTRIBUTES and the ones a relation persists after the row is saved. |
| `PartitionMetric` | class | `packages/core/src/widgets/metrics.ts:301` | A group-by metric rendered as a partition chart. |
| `PartitionMetricData` | type-only interface | `packages/core/src/widgets/types.ts:69` | Segments returned by a partition metric (TECH_SPEC §16.2). |
| `PartitionMetricQuery` | type-only interface | `packages/core/src/widgets/metrics.ts:49` | Query options for a partition metric. |
| `PartitionSlice` | type-only interface | `packages/core/src/widgets/types.ts:63` | One labeled segment in a partition metric (TECH_SPEC §16.2). |
| `pendingMutation` | function | `packages/core/src/table/pipeline_runner.ts:83` | The pending half of a stage/filter/driver mutation — and ONLY when it is a real promise. |
| `pendingPromotedKeys` | function | `packages/core/src/uploads/lifecycle.ts:93` | Permanent keys currently queued for rollback deletion — diagnostics and tests. |
| `pendingSupersededKeys` | function | `packages/core/src/uploads/lifecycle.ts:88` | Keys currently queued for deletion on this request — diagnostics and tests. |
| `PIPELINE_STAGES` | constant | `packages/core/src/table/state.ts:133` | The named stages of the normative §8.3 pipeline order. `resolve` and `authorize` happen in the controller before the query exists, and `paginate`/`serialize` are terminal, so only the query-mutating stages are addressable for plugin insertion. |
| `PipelineBuildingHookPayload` | type-only interface | `packages/core/src/plugin/hooks.ts:59` | Mutable query pipeline after core stages have been assembled. |
| `PipelineContext` | type-only interface | `packages/core/src/table/state.ts:97` | Everything a stage may read. Stages MUST NOT mutate the context — only the query builder and, for `eagerLoad`, the shared `EagerHints`. |
| `pipelineSpan` | function | `packages/core/src/telemetry/spans.ts:218` | Wraps one index-pipeline stage as `adonia.pipeline.<stage>` (§20). |
| `PipelineStage` | type-only type | `packages/core/src/table/state.ts:150` | One pipeline stage: a pure mutation of the query builder for the given context. Stages never read the request directly — everything they need is on `PipelineContext`. |
| `PIVOT_KEY` | constant | `packages/core/src/schema/fields/belongs_to_many.ts:45` | State key holding the target's primary key inside a pivot item. |
| `placeRelationManagers` | function | `packages/core/src/serialization/relation_managers.ts:317` | Decorates explicit placement nodes and appends every unplaced declaration exactly once at the root. The manager payload lives in open `props`. |
| `PluginDoctorCheck` | type-only interface | `packages/core/src/plugin/types.ts:164` | Diagnostic exposed for devtools to discover from an attached manifest. |
| `PluginDoctorCheckResult` | type-only interface | `packages/core/src/plugin/types.ts:70` | Verdict returned by a manifest-contributed doctor check. |
| `PluginDoctorContext` | type-only interface | `packages/core/src/plugin/types.ts:147` | Static inputs and optional live services supplied by `@adonia/devtools/doctor`. |
| `PluginDoctorDatabaseInspector` | type-only interface | `packages/core/src/plugin/types.ts:83` | Live database surface optionally supplied when doctor runs inside a booted application. Migration names are the values recorded by Lucid in its schema table; static doctor contexts omit this inspector entirely. |
| `PluginException` | class | `packages/core/src/errors.ts:476` | Thrown when a plugin (TECH_SPEC §16) fails: an invalid registration, or a hook that throws outside the isolation boundary of §16.4. |
| `pluginListIdentity` | function | `packages/core/src/plugin/types.ts:327` | Collision-free, order-sensitive identity of an attached plugin list. |
| `PluginMigrationProbe` | type-only type | `packages/core/src/plugin/types.ts:87` | Result of comparing installed plugin migrations with Lucid's applied list. |
| `PluginRouteContext` | type-only interface | `packages/core/src/plugin/types.ts:60` | Context passed to a manifest's panel-scoped route callback at boot. |
| `PluginRouteHandler` | type-only type | `packages/core/src/plugin/types.ts:37` | A route handler accepted by the scoped manifest router. |
| `PolicyAuthorizerLike` | type-only interface | `packages/core/src/authorization/bouncer.ts:64` | The slice of Bouncer's per-policy authorizer the bridge drives. |
| `PolicyClass` | type-only interface | `packages/core/src/authorization/bouncer.ts:46` | Structural stand-in for a Bouncer policy class. Deliberately not imported from `@adonisjs/bouncer`: the bridge only ever hands the class back to Bouncer's own `with()`, which owns construction and user injection. |
| `PolicyImport` | type-only type | `packages/core/src/authorization/bouncer.ts:55` | Lazy policy import, the `() => import('#policies/post_policy')` form Bouncer's own registry uses. Invoked at most once per reference. |
| `PolicyMethodCandidate` | type-only interface | `packages/core/src/authorization/bouncer.ts:82` | One policy method the bridge will try, in order, for a given ability. |
| `policyMethodCandidates` | function | `packages/core/src/authorization/bouncer.ts:114` | The policy methods that may answer `ability`, most specific first (§12). |
| `PolicyReference` | type-only type | `packages/core/src/authorization/bouncer.ts:61` | What a resource's `static policy` may hold (§12): the policy class itself, or a lazy importer of it. |
| `PrepareActionRoute` | type-only type | `packages/core/src/actions/route_service.ts:18` | Factory used by hosts/providers to supply current panel/tenant/actor and scoped plan. |
| `PreparedActionRoute` | type-only interface | `packages/core/src/actions/route_service.ts:11` | Per-request preparation owns Lucid plan construction without duplicating execution. |
| `PrepareIndexPlan` | type-only type | `packages/core/src/table/index_plan.ts:104` | Async plan preparation seam used by hook-aware framework callers. |
| `primaryKeyColumn` | function | `packages/core/src/table/model_columns.ts:44` | The model's primary-key column, QUALIFIED with its table. |
| `probeImageDimensions` | function | `packages/core/src/uploads/dimensions.ts:174` | Intrinsic dimensions of `bytes` for the already-SNIFFED media type `mime` (uploads/signatures.ts), or `undefined` when the format carries no header this module can read or the header is truncated/malformed. |
| `probePluginMigrations` | function | `packages/core/src/plugin/types.ts:124` | Compare package migration basenames with the live Lucid schema ledger. |
| `projectDetailRecord` | function | `packages/core/src/serialization/detail_projection.ts:297` | Projects only descriptor-emitted keys plus the reserved `id` and exact record ability map. Relation and media values are purpose-built rather than leaking model attribute bags or Drive keys. |
| `promoteObject` | function | `packages/core/src/uploads/lifecycle.ts:68` | Records a permanent object created during dehydration. |
| `PROTOCOL_VERSION` | constant | `packages/core/src/types.ts:462` | Version stamped into every envelope (protocol v1 §1). Clients hard-fail on a mismatch, so it is a literal `1` and NOT derived from the package version. Mirrored by `@adonia/ui`'s `AdoniaEnvelope` and by the codegen manifest (`@adonia/devtools`); all three move together or not at all. |
| `PSEUDO_LOCALE` | constant | `packages/core/src/i18n.ts:365` | The BCP-47 pseudo-locale bundled for localization and clipping tests. |
| `pseudoTranslations` | function | `packages/core/src/i18n.ts:480` | Pseudo-localizes every bundled value while preserving keys and interpolation tokens. |
| `QueryAllowlists` | type-only interface | `packages/core/src/table/state.ts:61` | Allowlists derived from a resource's columns/filters (§8.1/§8.3). The parser drops any request key absent from these sets. |
| `QueryConditions` | type-only interface | `packages/core/src/table/stages/query_surface.ts:42` | The predicate surface: everything that narrows rows. Shared by the `softDeleteScope`, `search` and `filters` stages, and by the grouped sub-builders they hand to callbacks — a `where(callback)` group in Lucid *is* the same builder, so one interface covers both. |
| `QueryPagination` | type-only interface | `packages/core/src/table/stages/query_surface.ts:105` | The pagination surface: shaping plus the three calls the terminal `paginate` step needs and no stage does (C2-4). |
| `QueryShaping` | type-only interface | `packages/core/src/table/stages/query_surface.ts:82` | The shaping surface: predicates plus everything that changes the shape of the result set. Driven by the `sort` and `eagerLoad` stages. |
| `quoteMetricIdentifier` | function | `packages/core/src/widgets/date_bucket.ts:16` | Quotes a validated metric identifier for the selected SQL dialect (TECH_SPEC §16.2). |
| `Radio` | class | `packages/core/src/schema/fields/radio.ts:25` | Exclusive radio group bound to a scalar attribute — a `select` whose options are all visible at once, so it carries the same §11.1 enum mapping and differs only in layout. |
| `RATIO_TOLERANCE` | constant | `packages/core/src/uploads/verification.ts:52` | Aspect-ratio tolerance, as a fraction of the target ratio. |
| `RawInput` | type-only type | `packages/core/src/resource/base_resource.ts:108` | Raw or validated resource form input keyed by schema field state keys. |
| `ReactiveClosure` | type-only type | `packages/core/src/schema/field.ts:174` | A server closure passed where a declarative rule was expected. It can never be serialized, so it forces the `refetchSchema: true` fallback (the server-refetch contract) instead of riding the wire. |
| `ReactiveCondition` | type-only type | `packages/core/src/schema/field.ts:181` | Single-argument form of `visibleWhen`/`requiredWhen`/`disabledWhen`: a rule from the `when()` DSL (or hand-written JSON), or a closure electing the server-roundtrip fallback. |
| `ReactiveMatcher` | type-only type | `packages/core/src/schema/field.ts:189` | Overload target of `visibleWhen(field, matcher)` / `requiredWhen(field, matcher)` (the reactive-rule DSL): a bare primitive compiles to strict equality, an array to `in`, a rule object passes through, and a function forces the `refetchSchema` server-roundtrip fallback. |
| `ReactiveSpec` | type-only interface | `packages/core/src/types.ts:57` | Declarative reactivity attached to a descriptor node (protocol §5 + the reactivity contract). Always a TOP-LEVEL node sibling of `props`, never inside `props`. |
| `readAggregate` | function | `packages/core/src/table/columns/support.ts:63` | Reads a query-builder alias — where Lucid parks `withCount` / `withAggregate` results — as a number. |
| `readFieldMeta` | function | `packages/core/src/validation/field_meta.ts:72` | Reads the compilation-relevant view of one field from its DSL state (props bag + reactive spec). A closure matcher (`refetchSchema: true`, the server-refetch contract) attaches NO rule: the field stays always-validated and fillable, and the client refetches the descriptor instead (R9). |
| `readRecordPath` | function | `packages/core/src/table/columns/support.ts:35` | Walks a dotted column key across a record and its preloaded relations, returning the raw value. |
| `RECORD_ABILITIES` | constant | `packages/core/src/types.ts:151` | The abilities whose verdict may differ from row to row (TECH_SPEC §12, protocol §6): "Per-row `can` objects … MUST cover exactly: `view, edit, delete, restore, forceDelete`". The other two address the resource, not an instance, and belong to the §3 header alone. |
| `RecordAbility` | type-only type | `packages/core/src/types.ts:160` | An ability resolvable per record (TECH_SPEC §12). |
| `RecordAbilityLookup` | type-only type | `packages/core/src/table/serializer.ts:70` | Resolves the abilities of ONE record (protocol §6). |
| `recordCan` | function | `packages/core/src/table/serializer.ts:136` | The five-key `can` shape (§12: per-row `can` "MUST cover exactly `view, edit, delete, restore, forceDelete`"), read off `source` with `fallback` standing in for anything it does not project. |
| `RecordHookOperation` | type-only type | `packages/core/src/plugin/hooks.ts:67` | Mutation kind associated with record hooks. |
| `RecordHookPayload` | type-only interface | `packages/core/src/plugin/hooks.ts:70` | Record payload emitted inside the enclosing write transaction. |
| `recordJsonAttributes` | function | `packages/core/src/resource/mutation_lifecycle.ts:24` | Projects the schema-owned attributes used by record CRUD audit events. |
| `RecordsEnvelope` | type-only interface | `packages/core/src/types.ts:360` | Paginated records envelope of an OFFSET index page (protocol §6). The unqualified name is kept for the default mode; cursor pages ship `CursorRecordsEnvelope`. |
| `RecordsMeta` | type-only interface | `packages/core/src/types.ts:302` | The frozen `records.meta` subset of the paginator envelope (protocol §6) — the shape OFFSET pagination emits, and the only shape a §6 fixture carries. |
| `RedirectAfterCreate` | type-only type | `packages/core/src/config.ts:28` | Redirect targets after a successful create (TECH_SPEC §4). |
| `RedirectAfterUpdate` | type-only type | `packages/core/src/config.ts:31` | Redirect targets after a successful update (TECH_SPEC §4). |
| `registeredTransforms` | function | `packages/core/src/validation/sets.ts:96` | The registered `fn:*` transform names, sorted — diagnostics and `adonia:doctor`. |
| `registerHttpContextMacro` | function | `packages/core/src/macros/http_context.ts:68` | Installs the `ctx.adonia` getter macro on `target` (default: this package's own `HttpContext` import). Idempotent: a class that already carries the `adonia` getter is left untouched, so repeated calls (test app reboots, own + host-anchored registration) never throw. |
| `registerMediaSignature` | function | `packages/core/src/uploads/signatures.ts:140` | Registers a signature for a media type the built-in table does not cover (TECH_SPEC §16 plugins). A later registration for an existing `mime` REPLACES the built-in row, so a plugin can tighten a signature the framework spelled loosely. |
| `registerSearchDriver` | function | `packages/core/src/table/search/driver.ts:98` | Adds `driver` to the registry, replacing any driver of the same name. |
| `registerTransform` | function | `packages/core/src/validation/sets.ts:82` | Registers a named transform for `fn:<name>` derivations (§16; the transform-registry contract — the registry is a two-sided contract, so the client MUST register a transform of the same name for the live preview). |
| `RELATION_OPTIONS_PAGE_SIZE` | constant | `packages/core/src/schema/fields/relation.ts:69` | Default page size of the `urls.options` endpoint and of `preload()`. |
| `RelationColumn` | class | `packages/core/src/table/columns/relation.ts:26` | Relation cell, keyed by the dotted path it reads — `C.relation('author.fullName')` has key `author.fullName`, and the row carries that string VERBATIM (protocol §3: clients never split on `.`). |
| `RelationEntry` | class | `packages/core/src/schema/display/relation_entry.ts:15` | Relation entry, e.g. `s.relationEntry('author').resource('users').optionLabel('fullName').link('detail')`. |
| `RelationField` | class | `packages/core/src/schema/fields/relation.ts:439` | Base class of the §7.3 relation tranche. |
| `RelationFilter` | class | `packages/core/src/table/filters/relation.ts:40` | Related-record filter. |
| `RelationJoin` | type-only interface | `packages/core/src/table/stages/joins.ts:48` | A relation reached through one or more LEFT JOINs. |
| `RelationKey` | type-only type | `packages/core/src/schema/fields/relation.ts:63` | A relation key as it rides the wire: the target model's primary key. Vine narrows it to one of the two per field (see `RelationField.keyType`). |
| `RelationKeyType` | type-only type | `packages/core/src/schema/fields/relation.ts:66` | Primary-key shapes a relation field accepts (§11.1 belongsTo row). |
| `RelationManagerDef` | type-only interface | `packages/core/src/resource/relation_manager.ts:4` | Declares a child resource managed through one parent Lucid relation. |
| `RelationManagerDescriptor` | type-only interface | `packages/core/src/resource/relation_manager.ts:16` | Server-resolved relation manager placed on a parent detail/edit page. |
| `RelationManagerPlacement` | class | `packages/core/src/schema/relation_manager.ts:4` | Explicit placement marker for a declared relation manager. |
| `RelationOptionsRequest` | type-only interface | `packages/core/src/schema/fields/relation.ts:114` | One page of the options endpoint (protocol §4: `GET …/options?q=&values=&page=`). |
| `RelationTarget` | type-only interface | `packages/core/src/schema/fields/relation.ts:99` | A relation field's resolved target resource (§6.1 identity + a live instance). |
| `rememberAbilities` | function | `packages/core/src/authorization/authorizer.ts:157` | Publishes `abilities` as the resolved ability set of `ctx`, for the synchronous compile-time gate. Called by the descriptor compiler and by the mutation flow before either walks a schema tree. |
| `Repeater` | class | `packages/core/src/schema/fields/repeater.ts:85` | Repeatable sub-form bound to an array attribute (§7.3). |
| `RepeaterItem` | type-only type | `packages/core/src/schema/fields/repeater.ts:56` | One item of a repeater's state: a flat map keyed by the child fields. |
| `replaceTableColumns` | function | `packages/core/src/table/derivation.ts:240` | Replaces a resolved table's columns with a lens declaration (§6.3). |
| `ReplayActionTargetResolver` | class | `packages/core/src/actions/targets.ts:28` | One resolver used by inline and queued execution paths. |
| `ReplayActionTargetsOptions` | type-only interface | `packages/core/src/actions/targets.ts:9` | Dependencies supplied from the current scoped resource/index plan. |
| `requestAbilities` | function | `packages/core/src/authorization/authorizer.ts:169` | The ability set resolved for `ctx`, or `undefined` when nothing was published — a request that never went through an authorizer, where an ability-gated node must stay visible rather than silently vanish. |
| `RequestResource` | type-only interface | `packages/core/src/http/panel_request.ts:36` | A resource resolved for the current request: class + per-request instance. |
| `RequestResourceParent` | type-only type | `packages/core/src/http/panel_request.ts:44` | Parent class, instance and row resolved for a nested-resource request. |
| `RESERVED_ROW_KEYS` | constant | `packages/core/src/table/serializer.ts:59` | Row keys protocol §6 reserves for the envelope itself. A column may not claim one — see `assertColumnKeysUnreserved` in `table/derivation.ts`, which rejects the collision at derivation rather than letting the row builder silently pick a winner. |
| `resetSanitizePolicy` | function | `packages/core/src/schema/sanitize/policy.ts:394` | Restores `DEFAULT_SANITIZE_CONFIG`; for tests and `adonia:doctor`. |
| `resetTelemetry` | function | `packages/core/src/telemetry/spans.ts:181` | Drops all telemetry state (enabled flag, tracer, cached import) back to defaults. Test-only; each spec run must start from a known facade. |
| `resetTransforms` | function | `packages/core/src/validation/sets.ts:101` | Drops every registered `fn:*` transform. Test hygiene; built-ins stay. |
| `ResolvedResource` | type-only interface | `packages/core/src/resource/base_resource.ts:630` | A resource resolved for the current request (TECH_SPEC §5.2), exposed as `ctx.adonia.resource` once the router/middleware slice (W1-2) lands. |
| `ResolvedResourceParent` | type-only interface | `packages/core/src/resource/base_resource.ts:612` | Parent row resolved for a nested-resource request. |
| `resolveDrive` | function | `packages/core/src/uploads/drive.ts:142` | Resolves the Drive disk `diskName` (or the app default when `undefined`) through `container`. |
| `ResolvedTable` | type-only interface | `packages/core/src/table/derivation.ts:55` | A resource's index table as live objects, before any wire encoding. |
| `resolveIndexPlan` | function | `packages/core/src/table/index_plan.ts:145` | The memoized `IndexPlan` for one resource, panel and ability map. |
| `resolveIndexPlanAsync` | function | `packages/core/src/table/index_plan.ts:168` | Resolves a plan only after asynchronous pipeline preparation has completed. Stable plans are published atomically; concurrent callers await the same preparation and a rejection never enters the cache. |
| `resolvePaginationDefaults` | function | `packages/core/src/table/pagination/index.ts:118` | Folds a resource's `static pagination` / `static perPage` into the panel-resolved defaults (§4/§6.1: most-specific wins). |
| `resolveRelationOptions` | function | `packages/core/src/schema/fields/relation.ts:356` | Resolves one page of `target`'s options for the current request (§7.3 `searchable`/`preload`, protocol §4). |
| `resolveResource` | function | `packages/core/src/http/panel_request.ts:136` | Resolves the request resource: URL slug → the panel's registry lazy import → per-request instance (§6.1). |
| `resolveRowAbilities` | function | `packages/core/src/authorization/authorizer.ts:245` | Per-page `can` projections for a set of already-loaded records (§18). |
| `resolveSearchDriver` | function | `packages/core/src/table/search/driver.ts:124` | Resolves the driver named `name` (§4 `search.driver`). |
| `resolveSearchTargets` | function | `packages/core/src/table/stages/search.ts:85` | Expands the searchable allowlist into SQL targets. |
| `resolveSortTarget` | function | `packages/core/src/table/stages/sort.ts:69` | Resolves one sort target to an orderable SQL expression. |
| `resolveTable` | function | `packages/core/src/table/derivation.ts:190` | Resolves a resource's index table (§7.5/§8.1). |
| `resolveTracer` | function | `packages/core/src/telemetry/spans.ts:169` | Resolves `@opentelemetry/api` once and installs its tracer when present (§20 "when OTel is active"). Never throws and never rejects: a missing package, a broken SDK, or an API shape we do not recognise all resolve to `undefined`, leaving every wrapper a pass-through. |
| `resolveTransform` | function | `packages/core/src/validation/sets.ts:109` | Resolves one wire transform name to its implementation, or `undefined` when a `fn:*` name is not registered. |
| `resolveTranslations` | function | `packages/core/src/i18n.ts:487` | Resolves a complete catalog for a locale and optional host overrides. |
| `resolveTrashedScope` | function | `packages/core/src/table/filters/ternary.ts:120` | The soft-delete scope in force for a request (§8.2). |
| `ResolveWidgetOptions` | type-only interface | `packages/core/src/widgets/resolver.ts:73` | Request inputs needed to resolve a widget descriptor. |
| `RESOURCE_ABILITIES` | constant | `packages/core/src/types.ts:128` | The §12 ability vocabulary excluding parameterized abilities (`runAction:*`, `accessLens:*` land with the actions/lenses slices). |
| `ResourceAbility` | type-only type | `packages/core/src/types.ts:139` | A resource-level ability name (TECH_SPEC §12). |
| `ResourceAuthorizer` | class | `packages/core/src/authorization/authorizer.ts:335` | The §12 `Authorizer`, bound in the container as `adonia.authorizer`. |
| `ResourceAuthorizerOptions` | type-only interface | `packages/core/src/authorization/authorizer.ts:319` | Construction inputs of `ResourceAuthorizer`. |
| `ResourceBootedHookPayload` | type-only type | `packages/core/src/plugin/hooks.ts:46` | Payload emitted after a resource class is first resolved for a panel. |
| `ResourceClass` | type-only type | `packages/core/src/resource/base_resource.ts:557` | A resource class as stored in registries (§6.2): the static identity surface of `BaseResource` plus a concrete constructor, so a resolved registry entry can be instantiated per request while the abstract base itself cannot. |
| `ResourceController` | class | `packages/core/src/http/controllers/resource_controller.ts:288` | Phase-1 resource controller. Resolved through the IoC container per request by the router; request-scoped services (config, database) are resolved through `ctx.containerResolver`. |
| `ResourceControllerMethod` | type-only type | `packages/core/src/http/registrar.ts:72` | `ResourceController` methods wired by ordinary and nested §10.1 routes. Nested variants reuse these methods after resolving parent context. |
| `ResourceDescriptor` | type-only interface | `packages/core/src/types.ts:395` | The resource descriptor page prop (protocol §3). |
| `ResourceLabels` | type-only interface | `packages/core/src/types.ts:119` | Singular/plural display labels of a resource (protocol §3). |
| `ResourceLazyImport` | type-only type | `packages/core/src/panel/panel.ts:106` | Lazy import of a resource module, as emitted by the codegen hook (§14). |
| `ResourceParentContract` | type-only interface | `packages/core/src/resource/base_resource.ts:544` | Static declaration that makes a resource parent-scoped. |
| `ResourceRecordId` | type-only type | `packages/core/src/resource/base_resource.ts:111` | Scalar identifier accepted as a key in a resource's batched row-ability result. |
| `ResourceRegistryInput` | type-only type | `packages/core/src/panel/panel.ts:112` | Registry accepted by `Panel.resources`: `slug → lazy import` (the shape of the generated `.adonisjs/adonia/resources.ts`). |
| `ResourceScopeStage` | type-only type | `packages/core/src/resource/scope.ts:43` | Which companion hook joins `static query()` for a given read. |
| `resourceUrlBuilder` | function | `packages/core/src/http/panel_request.ts:203` | Creates the centralized parent-aware URL builder for a resolved resource. |
| `ResourceUrlBuilder` | type-only interface | `packages/core/src/http/panel_request.ts:183` | Parent-aware resource URL builder shared by controllers and serializers. |
| `RichTextField` | class | `packages/core/src/schema/fields/rich_text.ts:79` | WYSIWYG editor storing sanitized HTML. |
| `RichTextToolbar` | type-only type | `packages/core/src/schema/fields/rich_text.ts:36` | Toolbar presets of the §7.3 `rich-text` row. |
| `rollbackUploads` | function | `packages/core/src/uploads/lifecycle.ts:151` | Deletes permanent objects promoted by a mutation whose transaction rolled back, then clears every upload lifecycle entry for the request. |
| `RouteRegistrar` | class | `packages/core/src/http/registrar.ts:419` | Registers panel routes on the app's router. |
| `RowAbilities` | type-only type | `packages/core/src/table/serializer.ts:92` | The `can` source accepted by the serializers: A2-3's bare `RowAbilityLookup`, or the object form when a resource-level baseline should show through for abilities the per-record pass does not project. |
| `RowAbilitiesInput` | type-only interface | `packages/core/src/table/serializer.ts:73` | Resource-level projection plus the per-record overrides layered on it. |
| `RowAbilityLookup` | type-only type | `packages/core/src/authorization/authorizer.ts:83` | A record's ability projection, resolved AHEAD of serialization. |
| `RuleArgument` | type-only type | `packages/core/src/schema/when.ts:149` | One argument of `when.all` / `when.any`: a rule, or an array of rules. Both spellings exist because the reactivity contract writes the combinators variadically while the plan row writes them with an array literal; they compile identically. |
| `RuleBuilder` | class | `packages/core/src/schema/when.ts:48` | Condition builder for one state path, returned by `when`. |
| `RulesFn` | type-only type | `packages/core/src/schema/field.ts:112` | User-supplied Vine override (`rules()`, §7.2): replaces the field type's own base entirely. Receives the `vine` root so authors compose freely. |
| `runDeferredWrites` | function | `packages/core/src/validation/fill.ts:325` | Runs the deferred half of a fill against the SAVED record, inside the write transaction (§19: the same guard applies — only fill-set keys present in the payload are written). |
| `runExpandedWrites` | function | `packages/core/src/validation/fill.ts:305` | Applies multi-column field writes before the owner's first save. |
| `s` | constant | `packages/core/src/schema/builder.ts:151` | Shared schema-builder instance. Also the compiler's own factory, so resources and the compiler agree on layout semantics. |
| `safeActionException` | function | `packages/core/src/actions/events.ts:89` | Prevents database-size and secret leaks from thrown errors. |
| `safeJsonParse` | function | `packages/core/src/schema/sanitize/json.ts:91` | Parses `text` as a JSON document, rejecting prototype-polluting keys. |
| `sanitizeFilename` | function | `packages/core/src/uploads/keys.ts:86` | Reduces a client-supplied filename to something safe to use as the tail of an object key. |
| `sanitizeHtml` | function | `packages/core/src/schema/sanitize/html_sanitizer.ts:141` | Sanitizes `html` against `policy` (the app-wide policy by default) and returns well-formed, escaped markup containing no executable vector. |
| `SavedViewController` | class | `packages/core/src/http/controllers/saved_view_controller.ts:67` | CRUD capability endpoints for personal and resource-managed shared views. |
| `SavedViewControllerMethod` | type-only type | `packages/core/src/http/registrar.ts:111` | Personal/shared saved-view capability methods. |
| `SavedViewDescriptor` | type-only interface | `packages/core/src/types.ts:256` | One personal or shared saved view exposed on an index descriptor. |
| `savedViewDescriptors` | function | `packages/core/src/saved_views/service.ts:60` | Projects persistence rows onto their intentionally owner-free wire shape. |
| `savedViewEndpoints` | function | `packages/core/src/saved_views/service.ts:48` | Builds descriptor-level saved-view capability URLs from the resource's mounted path. |
| `SavedViewEndpoints` | type-only interface | `packages/core/src/types.ts:270` | Server-built CRUD capability URLs for saved views. |
| `SavedViewRecord` | type-only interface | `packages/core/src/saved_views/repository.ts:20` | Persistence-neutral saved-view row consumed by controllers and descriptors. |
| `savedViewRepository` | function | `packages/core/src/saved_views/repository.ts:218` | Resolves saved-view persistence or fails loudly on a mis-mounted controller. |
| `SavedViewRepository` | type-only interface | `packages/core/src/saved_views/repository.ts:41` | Persistence seam used by the HTTP controller and index descriptor assembly. |
| `SavedViewRepositoryResolver` | type-only type | `packages/core/src/saved_views/repository.ts:51` | Request-aware resolver bound by the provider, allowing host-anchored DB access. |
| `savedViewScope` | function | `packages/core/src/saved_views/service.ts:30` | Resolves the strict panel/resource/user/tenant partition of a saved-view request. |
| `SavedViewScope` | type-only interface | `packages/core/src/saved_views/repository.ts:12` | Panel/resource/user/tenant partition applied to every saved-view query. |
| `savedViewsDescriptor` | function | `packages/core/src/saved_views/service.ts:96` | Builds the additive index descriptor block from one already-resolved repository. |
| `SavedViewsDescriptor` | type-only interface | `packages/core/src/types.ts:284` | Additive saved-view block carried only by resource index descriptors. |
| `SavedViewSqlClient` | type-only interface | `packages/core/src/saved_views/repository.ts:67` | Structural database/transaction client subset used by the repository. |
| `SavedViewSqlQuery` | type-only interface | `packages/core/src/saved_views/repository.ts:56` | Structural Knex/Lucid query subset used by `SqlSavedViewRepository`. |
| `SavedViewState` | type-only interface | `packages/core/src/types.ts:242` | URL-serializable table state persisted by a saved view. |
| `SchemaBuilder` | class | `packages/core/src/schema/builder.ts:40` | Layout + display factory passed to `BaseResource.schema(s)`. Stateless — every method returns a fresh component, so the shared `s` instance is safe to use across concurrent compilations. |
| `SchemaComponent` | class | `packages/core/src/schema/component.ts:26` | Base class for every node that can appear in a resource schema. |
| `ScopedPluginRouter` | type-only interface | `packages/core/src/plugin/types.ts:46` | Router facade whose routes inherit the current panel's prefix, domain, and middleware. `name` is expanded to `adonia.<panel>.plugin.<manifest-name>.<name>`. |
| `scrubActionPayload` | function | `packages/core/src/actions/events.ts:60` | Scrubs form payload using a resource schema plus an action modal schema. |
| `scrubSensitive` | function | `packages/core/src/actions/events.ts:49` | Recursively replaces every sensitive-keyed value, including nested arrays/objects. |
| `SearchDriver` | type-only interface | `packages/core/src/table/search/driver.ts:61` | A registered search driver (§8.4). |
| `SearchDriverContext` | type-only interface | `packages/core/src/table/search/driver.ts:46` | What a driver may read. Everything on `PipelineContext` plus the resolved `SearchTarget`s, which is what makes a driver portable across resources. |
| `searchDriverNames` | function | `packages/core/src/table/search/driver.ts:109` | Registered driver names, in registration order. |
| `SearchDriverResult` | type-only type | `packages/core/src/table/search/driver.ts:58` | A driver's answer (§8.4): matching primary keys, a query mutation, or `null` for "nothing to narrow on". |
| `SearchQueryMutation` | type-only type | `packages/core/src/table/search/driver.ts:52` | A mutation the driver asks the `search` stage to apply. |
| `SearchResultsHookGroup` | type-only interface | `packages/core/src/plugin/hooks.ts:148` | Structural global-search group exposed without coupling hooks to a controller class. |
| `SearchResultsHookHit` | type-only interface | `packages/core/src/plugin/hooks.ts:134` | One mutable global-search hit exposed to plugins. |
| `SearchResultsHookPayload` | type-only interface | `packages/core/src/plugin/hooks.ts:158` | Mutable global-search result immediately before the JSON response. |
| `SearchStageOptions` | type-only interface | `packages/core/src/table/stages/search.ts:36` | Everything the stage needs, resolved once when the pipeline is built. |
| `SearchTarget` | type-only interface | `packages/core/src/table/search/driver.ts:34` | One resolved search target: a real SQL column, already table-qualified, plus the relation path (if any) it lives behind. |
| `Section` | class | `packages/core/src/schema/layout/section.ts:16` | Titled layout group, e.g. `s.section('Content').description('Public copy').columns(2).components([…])`. The workhorse container: everything the §7.1 layout DSL offers (`collapsible`, `collapsed`, `icon`, `description`) applies here. |
| `Select` | class | `packages/core/src/schema/fields/select.ts:29` | Dropdown bound to a scalar attribute, or — after `multiple()` — to an array attribute. |
| `SelectFilter` | class | `packages/core/src/table/filters/select.ts:24` | Single-choice filter. |
| `selectVisibleColumns` | function | `packages/core/src/table/derivation.ts:346` | The columns a request actually renders and serializes (§8.1 toggleable persistence) — `visibleColumns` applied to a `ResolvedTable`. |
| `sensitiveKeys` | function | `packages/core/src/actions/events.ts:38` | Attribute names whose values must never cross an audit boundary. |
| `SerializedPanelUser` | type-only interface | `packages/core/src/types.ts:471` | The current user as the panel chrome needs them (protocol §1). Derived defensively from whatever the guard hydrated: model field names vary per app, so `name` falls back through `fullName` → `name` → `email`, and a request without a usable user serializes as `null` rather than a partial object. |
| `SerializedRow` | type-only type | `packages/core/src/types.ts:346` | One serialized index row (protocol §6): a FLAT map with `id`, the column keys verbatim (possibly dotted, never split), and the per-record `can` authorization projection. |
| `serializeIndexPage` | function | `packages/core/src/table/serializer.ts:333` | Maps a resolved `IndexPage` onto the §6 envelope in EITHER pagination mode (the cursor contract; C2-4). |
| `serializePanelUser` | function | `packages/core/src/http/middleware/inertia_middleware.ts:90` | Projects whatever the guard hydrated onto the protocol §1 user shape. |
| `serializeRecord` | function | `packages/core/src/table/serializer.ts:358` | Serializes an edit record (protocol §6) as the compiled schema's keyed nodes plus `id` and the per-record `can` projection. |
| `serializeRecords` | function | `packages/core/src/table/serializer.ts:288` | Maps a Lucid paginator onto the protocol §6 records envelope. |
| `serializeRow` | function | `packages/core/src/table/serializer.ts:259` | Serializes one record into a flat index row (protocol §6): `id`, each column `key` verbatim, and the per-record `can` projection. |
| `ServerPluginRegistry` | class | `packages/core/src/plugin/registry.ts:15` | Panel-scoped registration surface for a plugin manifest's server half. |
| `SetsEntry` | type-only interface | `packages/core/src/types.ts:41` | One declarative state derivation (protocol §5, the reactivity contract). |
| `SetsTransform` | type-only type | `packages/core/src/types.ts:38` | The transform vocabulary allowed in `reactive.sets` (the reactivity contract). |
| `settleUploads` | function | `packages/core/src/uploads/lifecycle.ts:132` | Deletes every object superseded during this request and clears the register. Called by the mutation flow AFTER the transaction commits. |
| `setTracer` | function | `packages/core/src/telemetry/spans.ts:143` | Installs a tracer explicitly, bypassing `resolveTracer`. Intended for tests (inject a fake) and for hosts that manage their own OTel wiring; passing `undefined` removes it. |
| `shaping` | function | `packages/core/src/table/stages/query_surface.ts:132` | Views the index query through its shaping surface (see `conditions`). |
| `SIGNED_URL_TTL_SECONDS` | constant | `packages/core/src/uploads/urls.ts:39` | Default lifetime of a signed object URL, in seconds (5 minutes). |
| `Slider` | class | `packages/core/src/schema/fields/slider.ts:22` | Range-input slider bound to a number attribute, or — after `range()` — to a two-element `[from, to]` array attribute. |
| `sniffableMediaTypes` | function | `packages/core/src/uploads/signatures.ts:147` | Every media type the signature table can currently identify, sorted. |
| `sniffMediaType` | function | `packages/core/src/uploads/signatures.ts:164` | The media type of `bytes` as its leading signature declares it, or `undefined` when nothing in the table matches. |
| `SOFT_DELETE_COLUMN_CANDIDATES` | constant | `packages/core/src/table/stages/soft_delete_scope.ts:38` | Model attributes recognised as a soft-delete timestamp when a resource does not declare `static softDeletes` (§8.2). Ordered by precedence: Lucid's camelCase convention first, then the raw column name for models that skip the naming strategy. |
| `SoftDeleteInfo` | type-only interface | `packages/core/src/table/stages/soft_delete_scope.ts:45` | Whether a model soft-deletes, and through which attribute/column (§8.2). |
| `SoftDeleteStageOptions` | type-only interface | `packages/core/src/table/stages/soft_delete_scope.ts:111` | Everything the stage needs, resolved once when the pipeline is built. |
| `SortDirection` | type-only type | `packages/core/src/types.ts:170` | Sort direction of `TableDescriptor.defaultSort` (protocol §3). |
| `SortInstruction` | type-only interface | `packages/core/src/table/state.ts:27` | One resolved sort instruction (§10.2: `sort=-publishedAt`). |
| `SortStageOptions` | type-only interface | `packages/core/src/table/stages/sort.ts:37` | Everything the stage needs, resolved once when the pipeline is built. |
| `Spacer` | class | `packages/core/src/schema/layout/spacer.ts:15` | Empty space, e.g. `s.spacer().size('lg')` or `s.spacer().columnSpan(1)`. |
| `SPAN_ACTION_RUN` | constant | `packages/core/src/telemetry/spans.ts:75` | Span name of an action run (§20). |
| `SPAN_DESCRIPTOR_COMPILE` | constant | `packages/core/src/telemetry/spans.ts:72` | Span name of the descriptor compiler (§20). |
| `SPAN_PIPELINE_PREFIX` | constant | `packages/core/src/telemetry/spans.ts:81` | Prefix of the per-stage index pipeline spans: `adonia.pipeline.<stage>` (§20). |
| `SPAN_STATUS_ERROR` | constant | `packages/core/src/telemetry/spans.ts:88` | `SpanStatusCode.ERROR` from `@opentelemetry/api`, inlined because the enum lives in a package that may not be installed. The numeric values are part of the OTel spec (`UNSET = 0`, `OK = 1`, `ERROR = 2`). |
| `SPAN_WIDGET_DATA` | constant | `packages/core/src/telemetry/spans.ts:78` | Span name of a widget data fetch (§20). |
| `SpanAttributes` | type-only type | `packages/core/src/telemetry/spans.ts:37` | Attribute bag attached to a span when it starts. |
| `SpanAttributeValue` | type-only type | `packages/core/src/telemetry/spans.ts:34` | Attribute values Adonia attaches to spans (§20 uses scalars only). |
| `SpanLike` | type-only interface | `packages/core/src/telemetry/spans.ts:44` | The subset of the OTel `Span` surface the facade drives. A real `@opentelemetry/api` span satisfies this structurally; so does the fake tracer used in tests. |
| `SpanStartOptions` | type-only interface | `packages/core/src/telemetry/spans.ts:56` | Start options passed to `TracerLike.startActiveSpan`. |
| `SqlActionBatchStore` | class | `packages/core/src/actions/sql_stores.ts:101` | SQL batch store with locked, retry-idempotent chunk completion. |
| `SqlActionEventStore` | class | `packages/core/src/actions/sql_stores.ts:40` | SQL-backed mandatory event store. |
| `SqlSavedViewRepository` | class | `packages/core/src/saved_views/repository.ts:116` | Host-database-backed repository, intentionally structural for pnpm peer-variant safety. |
| `StageName` | type-only type | `packages/core/src/table/state.ts:143` | Name of an addressable pipeline stage (§16.2 insertion points). |
| `StageObserver` | type-only type | `packages/core/src/table/state.ts:161` | Around-hook invoked once per stage function the pipeline runs (§20). The observer MUST call `run()` exactly once and return (or await) its result; swallowing the continuation would silently skip the stage. |
| `StaleStateException` | class | `packages/core/src/errors.ts:440` | Thrown on an optimistic-lock conflict: an update carries a `lockVersion` older than the row's, so another writer saved between this form's load and its submission (TECH_SPEC §17, resources with `static lockVersion`). |
| `stampTenant` | function | `packages/core/src/tenancy.ts:137` | Stamps the server-owned tenant column after user fill, preventing ownership forgery. |
| `Step` | class | `packages/core/src/schema/layout/step.ts:11` | A single wizard step, e.g. `s.step('Basics').description('Who and what').components([…])`. |
| `storeTempUpload` | function | `packages/core/src/uploads/temp_upload.ts:116` | Stores one uploaded part under the temp prefix, verifies the stored object, and returns its key plus a preview URL. |
| `structEq` | function | `packages/core/src/validation/json_logic.ts:54` | Structural strict equality: primitives by `===`, arrays element-wise (order matters), objects key-by-key (order-insensitive). No type coercion, ever (the reactivity contract). |
| `SumColumn` | class | `packages/core/src/table/columns/aggregate.ts:88` | Sum of `column` across a relation. |
| `supersedeObject` | function | `packages/core/src/uploads/lifecycle.ts:58` | Records that `key` on `disk` is superseded by the value being written in this request, and should be deleted once that write commits. |
| `Tab` | class | `packages/core/src/schema/layout/tab.ts:16` | A single tab panel, e.g. `s.tab('SEO').icon('search').components([…])`. |
| `TableBuilder` | class | `packages/core/src/table/table_builder.ts:37` | Declarative index-table configuration. Every getter reports the declared value or `null`/`[]`, and `resolveTable` fills the gaps from config defaults — the builder itself never reaches for configuration. |
| `TableDescriptor` | type-only interface | `packages/core/src/types.ts:211` | Table block of an `index` resource descriptor (protocol §3), including derived/explicit columns, filters, sort, search, and pagination controls. |
| `TableIndexResolver` | type-only type | `packages/core/src/widgets/widgets.ts:10` | Resolves a table through the same index-plan pipeline as the resource index route. |
| `TableWidget` | class | `packages/core/src/widgets/widgets.ts:16` | Embeds a resource index table; it never owns a parallel query definition. |
| `TableWidgetData` | type-only interface | `packages/core/src/widgets/types.ts:74` | Table widgets carry the exact index descriptor and records envelope. |
| `Tabs` | class | `packages/core/src/schema/layout/tabs.ts:22` | Tab strip, e.g. `s.tabs().components([s.tab('Content'), s.tab('SEO')])`. |
| `TEMP_KEY_PREFIX` | constant | `packages/core/src/uploads/keys.ts:45` | Prefix every pending upload lives under. Namespaced so an operator can expire the whole tree on a schedule (`adonia/tmp/**` older than a day is, by construction, an abandoned form) without touching stored objects. |
| `tempKeyFor` | function | `packages/core/src/uploads/keys.ts:106` | Assembles the temp key for an existing upload id, stamp and filename. |
| `TemporalField` | class | `packages/core/src/schema/fields/temporal.ts:87` | Date-family field base (TECH_SPEC §7.3 / §11.1 row 5). |
| `TemporalShape` | type-only interface | `packages/core/src/schema/fields/temporal.ts:60` | Everything that distinguishes one date subtype from another, declared as data so `date`/`datetime`/`time` differ by a table row instead of by three near-identical implementations. |
| `TempUploadOptions` | type-only interface | `packages/core/src/uploads/temp_upload.ts:82` | Everything `storeTempUpload` needs beyond the request. |
| `TempUploadResult` | type-only interface | `packages/core/src/uploads/temp_upload.ts:96` | Outcome of an accepted upload. |
| `tenantCacheable` | function | `packages/core/src/tenancy.ts:92` | Whether cache entries derived from this request can be shared safely. |
| `tenantCacheIdentity` | function | `packages/core/src/tenancy.ts:82` | Collision-free bounded identity for tenant-partitioned caches; `null` disables caching. |
| `tenantIdentity` | function | `packages/core/src/tenancy.ts:24` | Returns a stable scalar identity for a tenant value, when one is available. |
| `TenantNotFoundException` | class | `packages/core/src/errors.ts:423` | Thrown when a tenant-scoped panel's `tenant()` resolver returns `null` or rejects for the current request (TECH_SPEC §5.3): the subdomain, path segment or session claim names a tenant that does not exist, or one this user may not enter. |
| `TenantResolver` | type-only type | `packages/core/src/tenancy.ts:11` | A tenant resolver attached to a panel. Returning `null` refuses the address as a 404. |
| `TenantScope` | type-only type | `packages/core/src/tenancy.ts:21` | Resource tenant declaration. `false` is an explicit shared/global opt-out. |
| `TenantScopeFn` | type-only type | `packages/core/src/tenancy.ts:14` | Function-form tenant scope for resources that cannot use a single equality column. |
| `tenantScopeHash` | function | `packages/core/src/tenancy.ts:97` | Descriptor/widget cache dimension for the request's active tenant. |
| `TenantSwitcherOption` | type-only interface | `packages/core/src/types.ts:483` | One safe tenant destination displayed by the optional panel switcher. |
| `TenantSwitcherResolver` | type-only type | `packages/core/src/panel/panel.ts:210` | Produces the safe tenant choices shown in panel chrome. |
| `TernaryFilter` | class | `packages/core/src/table/filters/ternary.ts:61` | Three-state boolean filter. |
| `Textarea` | class | `packages/core/src/schema/fields/textarea.ts:18` | Multi-line text input bound to a string attribute. |
| `TextColumn` | class | `packages/core/src/table/columns/text.ts:16` | Plain text cell. |
| `TextDirection` | type-only type | `packages/core/src/i18n.ts:359` | Text direction carried in the panel envelope. |
| `TextEntry` | class | `packages/core/src/schema/display/text_entry.ts:12` | Scalar text entry, e.g. `s.textEntry('publishedAt').format('datetime')`. |
| `TextInput` | class | `packages/core/src/schema/fields/text.ts:18` | Single-line text input bound to a string attribute. |
| `TextualField` | class | `packages/core/src/schema/fields/textual.ts:22` | String-valued field base (TECH_SPEC §7.3 / §11.1 row 1). |
| `TimeField` | class | `packages/core/src/schema/fields/time.ts:38` | Time-of-day picker bound to a time attribute. |
| `toCursorPrimaryKey` | function | `packages/core/src/table/pagination/cursor_token.ts:147` | Normalizes a primary key for the token: a safe integer rides as a JSON number, anything larger (a Postgres `bigint`, a ULID, a UUID) as a string. |
| `toCursorValue` | function | `packages/core/src/table/pagination/cursor_token.ts:124` | Coerces a row's sort-column value into the token's JSON vocabulary (the cursor token contract "type fidelity"), or `undefined` when the value has no orderable JSON form. |
| `Toggle` | class | `packages/core/src/schema/fields/toggle.ts:19` | Switch bound to a boolean attribute — the "state now" affordance, where `checkbox` is the "opt in" one. |
| `toInputErrorsBag` | function | `packages/core/src/validation/validator_compiler.ts:655` | Maps Vine's `SimpleErrorReporter` output onto the Inertia `inputErrorsBag` shape (`Record<fieldPath, message>`, first error per field wins). the nested-validation contract: Vine already emits dot paths for nested/array fields, so the mapping is a pure fold with NO path rewriting. |
| `toJsonValue` | function | `packages/core/src/table/json_value.ts:230` | Coerces one model attribute to a wire-safe `JsonValue` (protocol §2/§6). |
| `toRelationOptionProps` | function | `packages/core/src/schema/fields/relation.ts:789` | Serializes an option for `props.options` (protocol §10: `props` is the open surface). Relation options carry `{ value, label }` only — colours and icons belong to the static choice fields, whose option set an author authored by hand. |
| `TracerLike` | type-only interface | `packages/core/src/telemetry/spans.ts:66` | The subset of the OTel `Tracer` surface the facade drives. `startActiveSpan` (rather than `startSpan`) is used so pipeline-stage spans nest under the ambient request span without Adonia touching context propagation. |
| `TransformFn` | type-only type | `packages/core/src/validation/sets.ts:39` | A `sets` transform: pure, total, and given the whole evaluation state so aggregations (catalogue row 19: `fn:sumPrices` over a repeater array) can read siblings. Returning `null` is a legitimate derivation. |
| `translate` | function | `packages/core/src/i18n.ts:501` | Translates from a catalog with deterministic English missing-key fallback. |
| `TranslationCatalog` | type-only type | `packages/core/src/i18n.ts:353` | A complete, type-checked translation catalog. |
| `TranslationKey` | type-only type | `packages/core/src/i18n.ts:350` | A framework-owned translation key. |
| `TranslationMessages` | type-only type | `packages/core/src/i18n.ts:356` | An additive host override. Missing entries deterministically fall back to bundled English. |
| `TranslationParameters` | type-only type | `packages/core/src/i18n.ts:362` | Values accepted by translation template interpolation. |
| `TrashedScope` | type-only type | `packages/core/src/table/state.ts:24` | Soft-delete scope selected by the `trashed` ternary filter (§8.2). |
| `TrendMetric` | class | `packages/core/src/widgets/metrics.ts:220` | A time-bucketed metric series. |
| `TrendMetricData` | type-only interface | `packages/core/src/widgets/types.ts:58` | Ordered points returned by a trend metric (TECH_SPEC §16.2). |
| `TrendPoint` | type-only interface | `packages/core/src/widgets/types.ts:52` | One labeled point in a trend metric series (TECH_SPEC §16.2). |
| `UnauthorizedException` | class | `packages/core/src/errors.ts:391` | Thrown when a request is refused on authorization grounds (TECH_SPEC §17): a panel `access()` verdict of `false`, or (from A2-3) a denied ability. Rendered as the panel-chromed 403 page; JSON endpoints see `{ code, message }` per v7's Accept-aware status handling. |
| `uniformAbilities` | function | `packages/core/src/authorization/authorizer.ts:92` | The §12 ability map with one verdict for every resource-level ability. |
| `UniqueSpec` | type-only interface | `packages/core/src/schema/validation_spec.ts:30` | Unique-constraint declaration (`F.text('slug').unique()`, TECH_SPEC §11.1). Resolved against the resource's model table when `table`/`column` are omitted; `ignoreSelf` adds `whereNot(primaryKey, currentId)` in edit mode, and tenancy adds the tenant scope when active (§5.3). |
| `UnknownActionException` | class | `packages/core/src/errors.ts:350` | Thrown when `actions.run`/`actions.status` addresses an action key the resource does not expose to this request — unregistered, or filtered out by `runAction:<key>` (TECH_SPEC §10.1/§12). |
| `UnknownFieldException` | class | `packages/core/src/errors.ts:325` | Thrown when `field.options`/`field.upload` addresses a `:field` segment that is not a state-bearing field of the resource's schema for this request (TECH_SPEC §10.1). A 404 rather than an empty option list: the capability URL is minted from the compiled descriptor, so a miss is a stale client or a probe, and silently answering `{ results: [] }` would hide both. |
| `UnknownPageException` | class | `packages/core/src/errors.ts:334` | Thrown when `pages.show` addresses a page slug the panel's `pages()` list does not contain (TECH_SPEC §5.1/§10.1). |
| `UnknownResourceException` | class | `packages/core/src/errors.ts:282` | Thrown when a URL addresses a resource slug no panel has registered. Rendered as the panel-chromed 404 page (TECH_SPEC §17); JSON endpoints see `{ code, message }` via v7's Accept-aware status handling. |
| `UnknownSavedViewException` | class | `packages/core/src/errors.ts:292` | Thrown when a saved-view capability addresses a row outside the caller's panel/resource/tenant visibility scope. Personal views owned by another user deliberately collapse to the same 404 as a nonexistent identifier. |
| `UNSAFE_SCHEMES` | constant | `packages/core/src/schema/sanitize/policy.ts:97` | URL schemes that are never accepted, whatever the configuration says. Each of these executes script in at least one shipping browser. |
| `UNSAFE_TAGS` | constant | `packages/core/src/schema/sanitize/policy.ts:64` | Elements that can NEVER be allowlisted, and whose content is discarded with them. |
| `UnscopedResourceException` | class | `packages/core/src/errors.ts:407` | Thrown when a resource on a tenant-scoped panel declares no `tenantScope` (TECH_SPEC §5.3): opting out is legal but must be explicit (`static tenantScope = false`), because the default of "no scope" on a tenanted panel is a cross-tenant data leak. |
| `UnsupportedUploadTypeException` | class | `packages/core/src/errors.ts:511` | Thrown when the stored bytes' MAGIC-BYTE signature identifies a media type the field does not accept — or identifies nothing at all (TECH_SPEC §19). |
| `UploadRejectedException` | class | `packages/core/src/errors.ts:497` | Base of the `field.upload` rejection family (TECH_SPEC §10.1/§19; IMPLEMENTATION_PLAN B2-7), and the code raised for a request the endpoint cannot even begin to verify: no multipart part, more parts than the field accepts, or a part the body parser already flagged as broken. |
| `UploadRules` | type-only interface | `packages/core/src/uploads/verification.ts:69` | Everything the verifier needs about the field that declared the upload. |
| `uploadsConfigOf` | function | `packages/core/src/uploads/config.ts:26` | The request's `uploads` configuration, or the framework defaults when no container/binding is reachable. |
| `UploadTooLargeException` | class | `packages/core/src/errors.ts:523` | Thrown when the stored object exceeds `uploads.maxSizeMb` (§4) or the field's own `maxSize()`, whichever is smaller (TECH_SPEC §19). |
| `UploadVisibility` | type-only type | `packages/core/src/uploads/drive.ts:42` | Object visibility on a Drive disk (flydrive `ObjectVisibility`). |
| `validateAdoniaConfig` | function | `packages/core/src/config.ts:310` | Merge `input` over `ADONIA_CONFIG_DEFAULTS` and validate the resulting shape, throwing `E_ADONIA_INVALID_CONFIG` with a path-qualified message on failure (e.g. `defaults.perPage must be a positive integer`). |
| `ValidationBuildOptions` | type-only interface | `packages/core/src/schema/validation_spec.ts:44` | Everything a field needs to build its Vine schema for one submission (TECH_SPEC §11.1). Passed by the validator compiler; fields treat it as read-only. |
| `ValidationMode` | type-only type | `packages/core/src/schema/validation_spec.ts:22` | Validator compile modes (TECH_SPEC §11); mirrors `ValidatorMode`. |
| `ValidatorMode` | type-only type | `packages/core/src/validation/validator_compiler.ts:97` | Validator compile modes (TECH_SPEC §11). |
| `ValueMetric` | class | `packages/core/src/widgets/metrics.ts:171` | A scalar metric with an optional previous-period value. |
| `ValueMetricData` | type-only interface | `packages/core/src/widgets/types.ts:46` | Resolved current and comparison values for a value metric (TECH_SPEC §16.2). |
| `variantKeyFor` | function | `packages/core/src/uploads/keys.ts:179` | Key of the pre-generated `width`-pixel derivative of `key`. |
| `VerifiedUpload` | type-only interface | `packages/core/src/uploads/verification.ts:119` | What verification learned about an accepted object. |
| `verifyUpload` | function | `packages/core/src/uploads/verification.ts:215` | Verifies the STORED bytes of one upload against `rules`. |
| `VisibilityScope` | type-only type | `packages/core/src/authorization/visibility.ts:62` | How a node's compile-time visibility relates to the §9.4 descriptor cache key. |
| `visibleColumns` | function | `packages/core/src/table/column.ts:280` | The columns one request renders, out of `columns` (§8.1 toggleable persistence, §18 eager-load hints). |
| `visibleSavedViews` | function | `packages/core/src/saved_views/service.ts:81` | Lists visible rows with personal defaults ordered ahead of shared defaults. |
| `wantsJson` | function | `packages/core/src/http/facades.ts:148` | Whether the client wants JSON rather than a rendered page — the switch behind §17's Accept-aware error model (JSON endpoints get `{code, message}`, browsers get a panel-chromed page). |
| `when` | constant | `packages/core/src/schema/when.ts:186` | The reactive condition DSL (the reactive-rule DSL). |
| `WhenDsl` | type-only interface | `packages/core/src/schema/when.ts:162` | The callable `when` namespace: a path builder plus the combinators. |
| `widgetCacheKey` | function | `packages/core/src/widgets/resolver.ts:39` | Builds a collision-resistant, conservative cache key with every security dimension. |
| `WidgetCacheKeyParts` | type-only interface | `packages/core/src/widgets/resolver.ts:22` | Inputs that isolate cached widget data between request principals. |
| `WidgetCacheStore` | type-only interface | `packages/core/src/widgets/resolver.ts:16` | Minimal `@adonisjs/cache` store surface consumed by widgets. |
| `WidgetContext` | type-only interface | `packages/core/src/widgets/types.ts:25` | Request-specific inputs available while computing widget data. |
| `WidgetController` | class | `packages/core/src/http/controllers/widget_controller.ts:134` | Serves range switches for every dashboard widget through one no-store endpoint. |
| `WidgetControllerMethod` | type-only type | `packages/core/src/http/registrar.ts:94` | `WidgetController` methods wired by the registrar (§10.1). |
| `widgetDataSpan` | function | `packages/core/src/telemetry/spans.ts:268` | Wraps a widget data fetch as `adonia.widget.data` with the §20 attributes `widget`, `cacheHit`. |
| `WidgetDescriptor` | type-only type | `packages/core/src/widgets/types.ts:84` | One resolved dashboard tile. This is a constrained protocol-v1 descriptor node. |
| `WidgetPlacement` | type-only interface | `packages/core/src/widgets/types.ts:17` | Dashboard grid placement carried inside the widget node's `props`. |
| `WidgetRange` | type-only interface | `packages/core/src/widgets/types.ts:9` | A selectable time range exposed by a metric widget. |
| `WidgetResolver` | class | `packages/core/src/widgets/resolver.ts:88` | Resolves widget definitions into stable protocol-v1 descriptor nodes. |
| `withSpan` | function | `packages/core/src/telemetry/spans.ts:195` | Runs `run` inside a span named `name`. When telemetry is off this is a direct call — pass a thunk for `attributes` to skip building the bag too. |
| `Wizard` | class | `packages/core/src/schema/layout/wizard.ts:15` | Stepper container, e.g. `s.wizard().components([s.step('Basics'), …])`. |

## `@adonia/core/i18n`

| Export | Kind | Source | Summary |
| --- | --- | --- | --- |
| `createHttpContextTranslator` | function | `packages/core/src/i18n.ts:542` | Adapts the optional `@adonisjs/i18n` HttpContext macro without importing it. Hosts override keys under `adonia.<key>`; absent adapter/locales/keys fall back to the bundled English catalog. |
| `directionForLocale` | function | `packages/core/src/i18n.ts:447` | Returns `rtl` for right-to-left language or explicit script subtags. |
| `ENGLISH_TRANSLATIONS` | constant | `packages/core/src/i18n.ts:4` | Bundled framework translations. Resource, field, action, and tenant labels are host-owned and never catalogued. |
| `formatTranslation` | function | `packages/core/src/i18n.ts:493` | Interpolates `{{name}}` placeholders without evaluating host-provided text. |
| `HttpContextTranslator` | type-only interface | `packages/core/src/i18n.ts:517` | Resolved per-request translator produced by `createHttpContextTranslator`. |
| `localeFromHttpContext` | function | `packages/core/src/i18n.ts:529` | Resolves and canonicalizes the request locale from the optional i18n macro, then Accept-Language. |
| `PSEUDO_LOCALE` | constant | `packages/core/src/i18n.ts:365` | The BCP-47 pseudo-locale bundled for localization and clipping tests. |
| `pseudoTranslations` | function | `packages/core/src/i18n.ts:480` | Pseudo-localizes every bundled value while preserving keys and interpolation tokens. |
| `resolveTranslations` | function | `packages/core/src/i18n.ts:487` | Resolves a complete catalog for a locale and optional host overrides. |
| `TextDirection` | type-only type | `packages/core/src/i18n.ts:359` | Text direction carried in the panel envelope. |
| `translate` | function | `packages/core/src/i18n.ts:501` | Translates from a catalog with deterministic English missing-key fallback. |
| `TranslationCatalog` | type-only type | `packages/core/src/i18n.ts:353` | A complete, type-checked translation catalog. |
| `TranslationKey` | type-only type | `packages/core/src/i18n.ts:350` | A framework-owned translation key. |
| `TranslationMessages` | type-only type | `packages/core/src/i18n.ts:356` | An additive host override. Missing entries deterministically fall back to bundled English. |
| `TranslationParameters` | type-only type | `packages/core/src/i18n.ts:362` | Values accepted by translation template interpolation. |

## `@adonia/core/middleware/inertia`

| Export | Kind | Source | Summary |
| --- | --- | --- | --- |
| `default` | class | `packages/core/src/http/middleware/inertia_middleware.ts:116` | Shares the §9.1 `adonia` envelope with every Inertia page of a panel. |
| `serializePanelUser` | function | `packages/core/src/http/middleware/inertia_middleware.ts:90` | Projects whatever the guard hydrated onto the protocol §1 user shape. |

## `@adonia/core/middleware/panel_access`

| Export | Kind | Source | Summary |
| --- | --- | --- | --- |
| `default` | class | `packages/core/src/http/middleware/panel_access_middleware.ts:44` | Guards every panel route behind the panel's guard and `access()` verdict. |
| `PANEL_ERROR_PAGE` | constant | `packages/core/src/errors.ts:31` | Panel-chromed error page rendered for 403/404/500 (§17); overridable by the host app through the client registry (`r.page('error', …)`). Its React half is `ErrorPage` in `@adonia/ui/pages`, scaffolded into the host app as `inertia/pages/adonia/error.tsx`. |

## `@adonia/core/middleware/tenant`

| Export | Kind | Source | Summary |
| --- | --- | --- | --- |
| `default` | class | `packages/core/src/http/middleware/tenant_middleware.ts:14` | Resolves and stores the active tenant for tenant-enabled panels. |

## `@adonia/core/protocol/v1.schema.json`

Public asset: `./protocol/v1.schema.json`.

## `@adonia/core/providers/adonia_provider`

| Export | Kind | Source | Summary |
| --- | --- | --- | --- |
| `ADONIA_CONFIG_BINDING` | constant | `packages/core/src/providers/adonia_provider.ts:82` | Container alias of the validated Adonia config (`AdoniaConfig`). |
| `default` | class | `packages/core/src/providers/adonia_provider.ts:122` | The provider a host app lists in `adonisrc.ts` (TECH_SPEC §2.1). |

## `@adonia/core/testing`

| Export | Kind | Source | Summary |
| --- | --- | --- | --- |
| `assertFillOmits` | function | `packages/core/src/testing.ts:1063` | Asserts that values submitted for `keys` never reach the model (mirroring-test-design §4, invariant (b)). Fill is simulated against a plain-object stand-in via `applyFill` — the exact fill set is the contract, and a real Lucid `save()` is the integration suite's job. |
| `assertQueryCount` | function | `packages/core/src/testing.ts:1500` | Asserts that `fn` emits EXACTLY `expected` queries on `source` (mirroring-test-design §4; the N+1 guard of TECH_SPEC §21). Throws with the observed count on mismatch. |
| `assertRequiredWhen` | function | `packages/core/src/testing.ts:1087` | Asserts §11.2 invariant (c) for one key: omitting it fails validation with an error keyed to the field (even though a bypassing client never rendered it), and including a shape-valid value satisfies the requirement. |
| `assertValidatorKeys` | function | `packages/core/src/testing.ts:1012` | Asserts the EXACT validator key set of `resource` in `mode` for the submission's R1 state (mirroring-test-design §4, invariant (a)). Subset assertions would let a leaking field pass; exact-set equality is the point. |
| `assertValidatorOmits` | function | `packages/core/src/testing.ts:1034` | Asserts that submitting INVALID values for `keys` produces neither an error entry nor a validated-output entry for them (mirroring-test-design §4, invariant (a)): the keys are absent from the compiled validator for the submission's R1 state, so a bypassing client cannot even trip a shape error. |
| `compileFor` | function | `packages/core/src/testing.ts:675` | Compiles `resource`'s descriptor for `mode` (TECH_SPEC §7.4) against `ctx`, defaulting to a `makeFakeContext` fake so hermetic unit tests need no context plumbing. Thin wrapper over `DescriptorCompiler` with the W1-10 defaults (TECH_SPEC §21). |
| `countQueries` | function | `packages/core/src/testing.ts:1473` | Counts the queries emitted by `source` while `fn` runs; returns the raw query events for callers that assert on more than the count. |
| `FakeAuthUser` | type-only interface | `packages/core/src/testing.ts:83` | Minimal shape of an authenticated user as far as Adonia's pipeline cares. Structural on purpose: tests pass plain objects, and callers may extend it with application-specific fields (roles, permissions) via the generic parameter of `makeFakeContext`. |
| `FakeContextOverrides` | type-only interface | `packages/core/src/testing.ts:304` | Overrides accepted by `makeFakeContext`. |
| `FakeDeferredProp` | type-only interface | `packages/core/src/testing.ts:159` | Deferred prop captured by the fake, including its Inertia request group. |
| `fakeFieldCapabilityUrl` | function | `packages/core/src/testing.ts:381` | Signs a field capability URL with the deterministic app-key verifier used by `makeFakeContext`. Useful when a test compiles descriptors directly instead of driving a controller. |
| `FakeGuard` | type-only interface | `packages/core/src/testing.ts:99` | One guard reachable through `ctx.auth.use(name)` — the surface Adonia's login flow and access gate drive. |
| `FakeHttpContext` | type-only interface | `packages/core/src/testing.ts:214` | The subset of the HTTP context Adonia's pipeline touches, faked. |
| `FakeInertia` | type-only interface | `packages/core/src/testing.ts:165` | Recording Inertia facade: `render()` captures instead of responding. |
| `FakeInertiaRender` | type-only interface | `packages/core/src/testing.ts:148` | A page render captured by `FakeInertia`. |
| `FakeMultipartFile` | type-only interface | `packages/core/src/testing.ts:194` | The slice of AdonisJS' `MultipartFile` Adonia's upload endpoint reads (TECH_SPEC §10.1 `field.upload`). |
| `FakeRedirect` | type-only interface | `packages/core/src/testing.ts:115` | Redirect builder returned by `ctx.response.redirect()`. |
| `FakeResponse` | type-only interface | `packages/core/src/testing.ts:128` | Recording response facade. Nothing is written anywhere — the handler's effect is readable as `statusCode` / `redirectedTo` / `body`. |
| `FakeSharedState` | type-only type | `packages/core/src/testing.ts:156` | A shared-state provider registered through `inertia.share()`. |
| `GARBAGE_PROBE_VALUE` | constant | `packages/core/src/testing.ts:990` | Garbage probe value for `assertValidatorOmits` and `runMirroringFixture` (mirroring-test-design §3 row (a)): a number where a string is expected — if a supposedly hidden key leaks into the validator, Vine rejects it and the assertion observes the keyed error. |
| `makeFakeContext` | function | `packages/core/src/testing.ts:452` | Build a dependency-free fake HTTP context for unit tests. |
| `MirroringCaseRun` | type-only interface | `packages/core/src/testing.ts:1110` | Report of one executed case × mode row of the mirroring loop. |
| `MirroringFixture` | type-only interface | `packages/core/src/testing.ts:811` | A §11.2 mirroring fixture (format v1; docs/reactivity/fixtures/*.fixture.json). |
| `MirroringFixtureCase` | type-only interface | `packages/core/src/testing.ts:785` | One case of a mirroring fixture: a submitted state plus exact expectations. |
| `MirroringFixtureField` | type-only interface | `packages/core/src/testing.ts:731` | One field spec of a mirroring fixture (mirroring-test-design §2, v1). |
| `MirroringFixtureItem` | type-only interface | `packages/core/src/testing.ts:773` | Per-ITEM expectations inside a **state boundary**, one entry per row of the submitted array, in order (mirroring-test-design §2, R-7). |
| `MirroringFixtureRun` | type-only interface | `packages/core/src/testing.ts:1126` | Report of `runMirroringFixture`: every executed case × mode row. |
| `PluginConformanceOptions` | type-only interface | `packages/core/src/testing.ts:1539` | Options accepted by `runPluginConformance`. |
| `PluginConformanceResult` | type-only interface | `packages/core/src/testing.ts:1545` | Observable evidence returned by the framework-free plugin conformance kit. |
| `QueryEventSource` | type-only interface | `packages/core/src/testing.ts:1457` | Anything emitting Node-style `'query'` events: a knex client (`db.connection().client` in a booted AdonisJS app), a Lucid connection, or a unit-test fake. `assertQueryCount` subscribes for the duration of the measured function and ALWAYS unsubscribes afterwards. |
| `REQUIRED_PROBE_VALUE` | constant | `packages/core/src/testing.ts:993` | Placeholder satisfying the `vine.string()` shape of every Phase-1 field. |
| `resourceFromFixture` | function | `packages/core/src/testing.ts:929` | Builds a throwaway `BaseResource` from a mirroring fixture (mirroring-test-design §4). |
| `runMirroringCase` | function | `packages/core/src/testing.ts:1158` | Drives one case × mode row of the §3 mirroring loop against `fixture`: |
| `runMirroringFixture` | function | `packages/core/src/testing.ts:1438` | Drives the whole §3 mirroring loop over one fixture (mirroring-test-design §4): every case, in `case.mode` when declared and in BOTH `create` and `edit` otherwise. This is the W1-10 required CI check (§6); B2-3 runs the full corpus through the same driver. |
| `runPluginConformance` | function | `packages/core/src/testing.ts:1564` | Runs the public server-plugin ABI conformance probes against `plugin`. |
| `stableStringify` | function | `packages/core/src/testing.ts:1534` | JSON-stable stringify with CANONICAL key order (objects recursively key-sorted, array order preserved): two compilations of the same descriptor produce byte-identical output, so descriptor snapshots catch accidental protocol drift instead of key-order noise (W1-10; mirroring-test-design §4). Two-space indented for reviewable diffs. |
| `validateWith` | function | `packages/core/src/testing.ts:710` | Runs the full §11.2 submit pipeline for `resource` in `mode` — prune hidden keys against the R1 state, Vine-validate, re-derive `sets` — and returns a structured result instead of throwing, so conformance assertions can inspect both the error bag and the validated output (TECH_SPEC §21). |
| `ValidationResult` | type-only interface | `packages/core/src/testing.ts:687` | Outcome of `validateWith`: validated output, or the keyed error bag. |

## `@adonia/core/types`

| Export | Kind | Source | Summary |
| --- | --- | --- | --- |
| `ActionDescriptor` | type-only interface | `packages/core/src/types.ts:102` | Descriptor for one authorized action (TECH_SPEC §9/§10.3). |
| `AdoniaEnvelope` | type-only interface | `packages/core/src/types.ts:542` | The shared `adonia` page prop injected by `AdoniaInertiaMiddleware.share()` (protocol §1; TECH_SPEC §9.1). Page-specific props (`descriptor`, `records`, `record`, `state`) sit BESIDE this key, never inside it. |
| `ColumnDescriptor` | type-only interface | `packages/core/src/types.ts:198` | One column of an index table (protocol §3). `key` is the row key VERBATIM — it may be dotted (`author.fullName`) and clients must never split on `.`; row objects are flat maps keyed by this exact string (protocol §6). |
| `CompileMode` | type-only type | `packages/core/src/types.ts:167` | The modes `DescriptorCompiler` compiles schema trees for (TECH_SPEC §7.4). `index` descriptors carry a `table` instead of a schema tree and are produced by `DescriptorCompiler.compileIndex`. |
| `CursorRecordsEnvelope` | type-only interface | `packages/core/src/types.ts:366` | Paginated records envelope of a CURSOR index page (the cursor contract). |
| `CursorRecordsMeta` | type-only interface | `packages/core/src/types.ts:326` | Cursor-mode `records.meta` (the cursor ordering contract; the cursor pagination contract). |
| `DescriptorNode` | type-only interface | `packages/core/src/types.ts:83` | One node of the descriptor tree (protocol §2). The skeleton keys `{ type, key, props, reactive?, urls?, children? }` are FROZEN — new top-level keys require a protocol bump. |
| `FlashEnvelope` | type-only interface | `packages/core/src/types.ts:530` | The `adonia.flash` block (protocol §1), read from the session flash bag. Absent keys are OMITTED rather than serialized as `undefined`, so the wire carries `{}` for a request with nothing flashed. |
| `FormState` | type-only type | `packages/core/src/types.ts:35` | Flat form state keyed by node `key` (protocol §7). `var` paths in reactive rules address this map; layout nesting never namespaces keys. |
| `HttpContextLike` | type-only interface | `packages/core/src/types.ts:562` | The structural slice of AdonisJS `HttpContext` that Adonia's compile-time callbacks (`canSee`) and the descriptor compiler consume. Both the real `HttpContext` and the `makeFakeContext` testing fake satisfy this shape, so unit tests stay hermetic (TECH_SPEC §21). |
| `IndexRecordsEnvelope` | type-only type | `packages/core/src/types.ts:380` | What an index page ships as `records`, in either pagination mode. |
| `InlineEditableDescriptor` | type-only interface | `packages/core/src/types.ts:176` | Editor capability attached to `column.props.editable` when a table column opts into inline updates. |
| `InlineUpdateResponse` | type-only interface | `packages/core/src/types.ts:186` | Successful response from an inline field PATCH capability. |
| `JsonLogicRule` | type-only type | `packages/core/src/types.ts:29` | A serialized JsonLogic rule over the closed operator set defined by the reactivity contract: `var === !== > >= < <= in ! and or if`. Loose equality (`==`, `!=`), arithmetic, and collection operators are deliberately excluded. |
| `JsonObject` | type-only type | `packages/core/src/types.ts:22` | A JSON object; the type of `DescriptorNode.props` (protocol §2). |
| `JsonValue` | type-only type | `packages/core/src/types.ts:19` | Any value representable as JSON. The only value type allowed anywhere in a serialized descriptor (protocol §2). |
| `NavNode` | type-only type | `packages/core/src/types.ts:436` | One node of a panel's navigation tree (protocol §1). The union is FROZEN alongside the rest of protocol v1: a `group` carries a label and children only — it has no icon and no URL of its own. |
| `NestedParentContext` | type-only interface | `packages/core/src/types.ts:383` | Additive context supplied when the current resource is parent-scoped. |
| `PanelEnvelope` | type-only interface | `packages/core/src/types.ts:497` | The `adonia.panel` block (protocol §1): everything the chrome needs and nothing page-specific. Identical across every page of one panel and one request. |
| `PROTOCOL_VERSION` | constant | `packages/core/src/types.ts:462` | Version stamped into every envelope (protocol v1 §1). Clients hard-fail on a mismatch, so it is a literal `1` and NOT derived from the package version. Mirrored by `@adonia/ui`'s `AdoniaEnvelope` and by the codegen manifest (`@adonia/devtools`); all three move together or not at all. |
| `ReactiveSpec` | type-only interface | `packages/core/src/types.ts:57` | Declarative reactivity attached to a descriptor node (protocol §5 + the reactivity contract). Always a TOP-LEVEL node sibling of `props`, never inside `props`. |
| `RECORD_ABILITIES` | constant | `packages/core/src/types.ts:151` | The abilities whose verdict may differ from row to row (TECH_SPEC §12, protocol §6): "Per-row `can` objects … MUST cover exactly: `view, edit, delete, restore, forceDelete`". The other two address the resource, not an instance, and belong to the §3 header alone. |
| `RecordAbility` | type-only type | `packages/core/src/types.ts:160` | An ability resolvable per record (TECH_SPEC §12). |
| `RecordsEnvelope` | type-only interface | `packages/core/src/types.ts:360` | Paginated records envelope of an OFFSET index page (protocol §6). The unqualified name is kept for the default mode; cursor pages ship `CursorRecordsEnvelope`. |
| `RecordsMeta` | type-only interface | `packages/core/src/types.ts:302` | The frozen `records.meta` subset of the paginator envelope (protocol §6) — the shape OFFSET pagination emits, and the only shape a §6 fixture carries. |
| `RESOURCE_ABILITIES` | constant | `packages/core/src/types.ts:128` | The §12 ability vocabulary excluding parameterized abilities (`runAction:*`, `accessLens:*` land with the actions/lenses slices). |
| `ResourceAbility` | type-only type | `packages/core/src/types.ts:139` | A resource-level ability name (TECH_SPEC §12). |
| `ResourceDescriptor` | type-only interface | `packages/core/src/types.ts:395` | The resource descriptor page prop (protocol §3). |
| `ResourceLabels` | type-only interface | `packages/core/src/types.ts:119` | Singular/plural display labels of a resource (protocol §3). |
| `SavedViewDescriptor` | type-only interface | `packages/core/src/types.ts:256` | One personal or shared saved view exposed on an index descriptor. |
| `SavedViewEndpoints` | type-only interface | `packages/core/src/types.ts:270` | Server-built CRUD capability URLs for saved views. |
| `SavedViewsDescriptor` | type-only interface | `packages/core/src/types.ts:284` | Additive saved-view block carried only by resource index descriptors. |
| `SavedViewState` | type-only interface | `packages/core/src/types.ts:242` | URL-serializable table state persisted by a saved view. |
| `SerializedPanelUser` | type-only interface | `packages/core/src/types.ts:471` | The current user as the panel chrome needs them (protocol §1). Derived defensively from whatever the guard hydrated: model field names vary per app, so `name` falls back through `fullName` → `name` → `email`, and a request without a usable user serializes as `null` rather than a partial object. |
| `SerializedRow` | type-only type | `packages/core/src/types.ts:346` | One serialized index row (protocol §6): a FLAT map with `id`, the column keys verbatim (possibly dotted, never split), and the per-record `can` authorization projection. |
| `SetsEntry` | type-only interface | `packages/core/src/types.ts:41` | One declarative state derivation (protocol §5, the reactivity contract). |
| `SetsTransform` | type-only type | `packages/core/src/types.ts:38` | The transform vocabulary allowed in `reactive.sets` (the reactivity contract). |
| `SortDirection` | type-only type | `packages/core/src/types.ts:170` | Sort direction of `TableDescriptor.defaultSort` (protocol §3). |
| `TableDescriptor` | type-only interface | `packages/core/src/types.ts:211` | Table block of an `index` resource descriptor (protocol §3), including derived/explicit columns, filters, sort, search, and pagination controls. |
| `TenantSwitcherOption` | type-only interface | `packages/core/src/types.ts:483` | One safe tenant destination displayed by the optional panel switcher. |

Source: https://adonia.pages.dev/reference/api/core/index.mdx
