LLM Registry API: schemas
The request and response bodies of the operations in this API.
AgentAuthoringResponseDto
| Property | Type | Required | Description |
|---|
abilities | array of string | yes | |
capability | AgentCapabilityLayerDto or null | no | |
description | string or null | no | |
displayName | string | yes | |
draftUpdatedAt | string (date-time) | yes | Mutable draft concurrency token. |
durableWorkspace | DurableWorkspaceRefDto or null | no | |
id | string | yes | Stable Agent identity id. |
internetEgressCeiling | WorkerInternetEgress | no | Ceiling on whether the worker pod running this agent may open sockets to the public internet. A ceiling the agent ACCEPTS, never a grant: the effective mode is the most restrictive of the deployment, the owning Space, this value and the session, so open here widens nothing. What THIS agent itself states — NOT joined with the agent it extends; the resolved-agent and agent-blocks responses carry the joined value. ABSENT when it declares none — there is no default. |
liveRevision | AgentLiveRevisionDto or null | no | |
reachTier | AgentReachTier | yes | |
root | AgentNodeDto | yes | |
scope | ScopeSource | yes | |
sessionLifecycle | AgentSessionLifecycle or null | no | |
slug | string | yes | |
standingSession | StandingSessionRefDto or null | no | |
state | one of "draft", "live" | yes | |
workspace | AgentWorkspaceDto or null | no | |
workspaceSharing | WorkspaceSharingPolicy | yes | |
AgentAuthoringResponseDtoDataArrayEnvelope
AgentAuthoringResponseDtoDataEnvelope
AgentBiomeAvailabilityDto
| Property | Type | Required | Description |
|---|
exclude | array of string | no | Deny-list of biome ids. A contribution whose owning biome is listed is always dropped, even if it also appears in include. Absent/empty ⇒ nothing force-excluded. |
include | array of string | no | Allow-list of biome ids. When non-empty, ONLY contributions whose owning biome is listed survive (non-biome contributions always pass). Absent/empty ⇒ all biomes allowed unless excluded. |
AgentCapabilityAnalysisDto
| Property | Type | Required | Description |
|---|
reachTier | AgentReachTier | yes | The agent's reach-tier ceiling — the provisioning input. |
requiredCapabilities | array of string | yes | Deduped, sorted union of every CapabilityRef the agent needs to drive its armed tools + skills across the whole sub-agent tree. |
slug | string | yes | |
unresolvedSkillSlugs | array of string | yes | Armed skill slugs with no capability data available — see the skill-registry surfacing gap in capability-derivation.ts. |
unresolvedTools | array of UnresolvedToolDto | yes | Armed tool refs not resolvable to capabilities from the canonical MCP catalog (flagged, never silently dropped). |
version | string | yes | |
AgentCapabilityAnalysisDtoDataEnvelope
AgentCapabilityApertureDto
| Property | Type | Required | Description |
|---|
defaultEffect | one of "read", "write", "admin" or null | no | |
domains | map of one of "read", "write", "admin" | no | |
kind | one of "unrestricted", "armed", "scoped", "representative" | yes | |
refs | array of string | no | |
AgentCapabilityLayerDto
| Property | Type | Required | Description |
|---|
aperture | AgentCapabilityApertureDto | yes | Explicit, closed aperture union; never inferred from omission. |
mayEditRepos | one of "never", "when-granted" | no | |
mayWriteKnowledgeBase | boolean | no | |
writePolicy | one of "read-only", "own-pages-only", "full-write" | no | |
AgentCapabilitySetExpressionDto
| Property | Type | Required | Description |
|---|
exclude | array of string | yes | |
include | array of string | yes | |
AgentCredentialDto
| Property | Type | Required | Description |
|---|
kind | CredentialKind | yes | |
name | string | yes | |
required | boolean | yes | When true the run fails fast if the credential is unresolvable. |
sourceRef | string | yes | Opaque source ref the credential broker resolves the secret from. |
AgentDraftRingEntryDto
| Property | Type | Required | Description |
|---|
baseRevisionId | string or null | yes | |
contentHash | string | yes | Canonical content hash. Two entries never share one — the ring only appends when the hash changes. |
createdAt | string (date-time) | yes | |
id | string | yes | |
isCurrent | boolean | yes | True for the entry the Agent identity currently points at. |
restoredFromRevisionId | string or null | yes | |
updatedAt | string (date-time) | yes | |
updatedBy | string | yes | |
AgentDraftRingEntryDtoDataArrayEnvelope
AgentEnvVarDto
| Property | Type | Required | Description |
|---|
name | string | yes | |
value | string | yes | Authored value. May contain ${input.x} interpolation — the resolution service resolves it before projecting onto WorkspaceSpec. |
AgentExecutionMode
Type: one of "primary", "subagent"
AgentKernelResponseDto
| Property | Type | Required | Description |
|---|
avatarSeed | string or null | no | |
avatarStyle | string | yes | |
biomeId | string or null | no | Biome id when source='biome', otherwise null. |
capability | AgentCapabilityLayerDto | yes | The agent's resolved capability envelope and explicit aperture. Always present. |
createdAt | string (date-time) | yes | |
createdBy | string | yes | |
definitionHash | object or null | no | |
description | string or null | no | |
displayName | string | yes | |
executionMode | AgentExecutionMode | yes | |
forkedFrom | string or null | no | Origin reference (<source>:<biomeId|""">:<slug>) when this row was forked from a biome/system row. Survives uninstall — UI surfaces "fork without origin" if the origin is gone. |
hidden | boolean | yes | Hidden from user-facing pickers. Stays invocable via task delegation and workflow agentRef:. |
id | string | yes | |
identityVersion | number | yes | |
isActive | boolean | yes | |
mcpServices | array of string | yes | |
modelLane | string or null | yes | The model LANE this agent routes on — rules select on it. An OPEN vocabulary: every key is declared by a model-lane contribution, and GET /work-kinds?kind=model-lane enumerates what this organisation may use. Distinct from AgentRunRole (permissions). |
orgId | string or null | yes | The owning organisation, or null for a platform-owned agent (system / biome tier). |
ownerUserId | string or null | no | Owning user id when source='user', otherwise null. |
projectId | string or null | no | |
revisionNumber | number | yes | Server-generated immutable revision number. |
skills | array of string | yes | |
slug | string | yes | |
source | ScopeSource | yes | 5-tier owner-scope label for UI source-filter and fork CTA. Matches the source column on the row; defaults to org for legacy rows. |
supportsAgentSessions | boolean | yes | |
systemPrompt | string | yes | |
temperature | number or null | no | null defers to the engine/model default. |
updatedAt | string (date-time) | yes | |
workspace | AgentWorkspaceDto or null | no | Authored workspace intent for launch compatibility checks. |
AgentKernelResponseDtoDataArrayEnvelope
AgentKernelResponseDtoDataEnvelope
AgentKernelResponseDtoPaginatedEnvelope
AgentLiveRevisionDto
| Property | Type | Required | Description |
|---|
contentHash | string | yes | |
createdAt | string (date-time) | yes | |
id | string | yes | |
number | number | yes | |
AgentModelOverrideDto
| Property | Type | Required | Description |
|---|
kind | one of "concrete", "strategy" | yes | |
modelId | string | no | |
modelLane | string | no | Work kind this node's model resolves through (kind=strategy). OPEN vocabulary with no kernel core: every lane is declared by a model-lane contribution, so GET /work-kinds?kind=model-lane enumerates the lanes this organisation may use. Checked against the org's visible set on write. |
providerSlug | string | no | |
temperature | number | no | |
AgentModelOverrideResponseDto
| Property | Type | Required | Description |
|---|
agentSlug | string | yes | |
createdAt | string | yes | |
id | string | yes | |
model | object | no | Resolved model info (included when fetching). |
modelId | string | yes | |
orgId | string | yes | |
scope | one of "org", "user", "project" | yes | |
scopeId | string | yes | |
temperature | number or null | no | |
updatedAt | string | yes | |
AgentModelOverrideResponseDtoDataArrayEnvelope
AgentModelOverrideResponseDtoDataEnvelope
AgentMountLayoutDto
| Property | Type | Required | Description |
|---|
agentRunConfig | AgentRunConfigDto | yes | |
inputs | object | yes | Raw spec.inputs block — manifest DSL ManifestInputDeclaration map. |
mounts | object | yes | Raw spec.mounts block — manifest DSL ManifestMountDeclaration map keyed by AWP slot key. |
seedFiles | array of object | yes | Raw spec.seedFiles array — manifest DSL ManifestSeedFile entries. |
AgentNodeDto
| Property | Type | Required | Description |
|---|
agentContentHash | string | no | Server-stamped, resolve-only: SHA-256 of the STABLE revision of the agent this node references. Rejected on write. |
alias | string | no | Alias when the same agent appears more than once. |
biomeAvailability | AgentBiomeAvailabilityDto | no | Per-node biome opt-in/opt-out (DBM.2). A POST-scope filter the resolver applies over this node's biome-contributed references — its child agents (and, downstream, skills/tools). exclude wins; a non-empty include is an allow-list; absent ⇒ no filtering (implicit-by-scope). Mirrors the kernel BiomeAvailabilityScoped mixin on AgentNode. |
children | array of AgentNodeDto | yes | Sub-agents — recursive composition nodes. |
delegationBoundary | AgentCapabilitySetExpressionDto | no | DELEGATION BOUNDARY — a ceiling on the authority this node may be granted by the agent that delegates to it (kernel AgentNode.delegationBoundary). effective(this) = effective(parent) ∩ own(this) ∩ delegationBoundary; absent ⇒ no ADDITIONAL attenuation — the parent's authority still bounds this node. Meaningless on the ROOT node (nothing delegates to it) and refused there by AgentNodeValidator. |
instructions | string | no | Per-node instructions appended after the referenced agent definition's systemPrompt. Extends (does not replace) the agent prompt for this node only — sibling and child nodes are unaffected. Length is the author’s decision — no product cap; coarse abuse bounding is handled by the HTTP body-size limit. |
kernel | AgentRefDto | yes | |
modelOverride | AgentModelOverrideDto | no | |
permission | object | no | Per-node permission override map (action or per-target map per key), deep-merged over the referenced agent definition permission. e.g. { edit: "deny", webfetch: "deny", task: { "*": "deny", "kb-researcher": "allow" } } |
promptMode | one of "append", "replace" | no | How this node’s instructions combine with the referenced agent systemPrompt. "append" (default) appends after the base prompt; "replace" makes instructions the prompt body (config still inherited). |
skills | array of AgentSkillRefDto | yes | |
tools | array of AgentToolRefDto | yes | |
AgentOutputSurfaceDto
| Property | Type | Required | Description |
|---|
autoOpen | boolean | no | Auto-open the output surface pane on first ready signal. |
defaultDocument | string | no | Default document name served for directory requests when kind === 'static'. Defaults to index.html. |
healthPath | string | no | |
kind | OutputSurfaceKind | yes | |
mode | one of "single", "multi" | no | |
port | number | no | |
root | string | no | Workspace-relative directory served by the baked static-artifact-server. Required when kind === 'static', rejected for other kinds. |
AgentOwnerSpaceDto
| Property | Type | Required | Description |
|---|
appId | string | no | |
biomeId | string | no | |
orgId | string | no | |
projectId | string | no | |
sessionId | string | no | |
tier | one of "system", "org", "project", "app", "session", "biome", "user" | yes | |
userId | string | no | |
AgentOwnerSpaceRefDto
| Property | Type | Required | Description |
|---|
fence | one of "global", "tenant" | yes | |
orgId | string or null | yes | |
space | AgentOwnerSpaceDto | yes | |
AgentPermissionsDto
AgentPersistenceDto
| Property | Type | Required | Description |
|---|
overrides | object | no | Per-slot persistence-policy overrides keyed by AWP slot key. Values are the SlotPersistencePolicy union; only git-push slots are overridable. |
paths | array of string | yes | Workspace-relative paths. No leading "/", no "..". |
AgentProfileDto
| Property | Type | Required | Description |
|---|
avatarSeed | object or null | no | |
avatarStyle | string | yes | |
biomeId | string or null | no | Biome id when source='biome', otherwise null. Used by the FE talent-pool view to group biome-contributed agents under a single category bucket. |
description | object or null | no | |
displayName | string | yes | |
executionMode | AgentExecutionMode | yes | Role hint resolved from the agent's source manifest mode: frontmatter. primary agents lead a session; subagent agents are designed to be invoked via a primary's task tool. The distinction is a UI hint — any agent may be bound in either role at session/step time. |
id | string | yes | |
identityVersion | number | yes | |
isActive | boolean | yes | |
modelLane | string or null | yes | The model LANE this agent routes on — rules select on it. An OPEN vocabulary: every key is declared by a model-lane contribution, and GET /work-kinds?kind=model-lane enumerates what this organisation may use. Distinct from AgentRunRole (permissions). |
skills | array of string | yes | |
slug | string | yes | |
source | string | yes | Scope tier the row lives in. system rows ship with the platform; biome rows are contributed by an installed biome and grouped by biomeId; org rows are authored in the org; project rows are scoped to a single project. |
AgentProfileDtoDataEnvelope
AgentProfileDtoPaginatedEnvelope
AgentReachTier
The root composition agent's reach-tier permission ceiling (Chunk 2). A composition row with no explicit tier resolves to as-owner (the default), so this field is always populated. agent-session-api persists it onto the session and stamps it onto ExecutionContext.reachTier so authorization-api applies the tier constraint inside the verdict.
Type: one of "sandbox", "as-owner", "connected", "full"
AgentRefDto
| Property | Type | Required | Description |
|---|
slug | string | yes | |
version | string | no | Pinned version; omitted = latest. |
AgentRevisionHistoryEntryDto
| Property | Type | Required | Description |
|---|
contentHash | string | yes | |
createdAt | string (date-time) | yes | |
createdBy | string | yes | |
id | string | yes | |
number | number | yes | |
restoredFromRevisionId | string or null | no | |
sourceProvenance | object or null | no | Advanced provenance only. May contain sourceVersion/sourceCommit; it is not a version selector. |
AgentRevisionHistoryEntryDtoDataArrayEnvelope
AgentRollbackResponseDto
| Property | Type | Required | Description |
|---|
expectedChannelVersion | number | yes | |
identityId | string | yes | |
priorReleaseSetId | string | yes | |
releaseIntentId | string | yes | |
status | one of "pending", "reconciling", "applied", "failed" | yes | |
AgentRollbackResponseDtoDataEnvelope
AgentRunConfigDto
| Property | Type | Required | Description |
|---|
deliverableSpecRef | string | no | Deliverable-spec ref. May carry a ${input.x} token — resolved downstream by the workspace pipeline against the run bind inputs. |
role | string | yes | Canonical AgentRunRole — drives renderer + system-overlay framing. |
stage | string | yes | Stage key. |
AgentSessionLifecycle
The resolved agent's declared default session lifecycle (ephemeral|persistent), or null when it declares no preference. agent-session-api inherits this as the session lifecyclePolicy unless the launch passes an explicit override; null ⇒ agent-session applies its own ephemeral default last.
Type: one of "ephemeral", "persistent"
AgentSkillRefDto
| Property | Type | Required | Description |
|---|
slug | string | yes | |
version | string | no | Pinned version; omitted = latest approved. |
AgentTalentPoolStatsDto
| Property | Type | Required | Description |
|---|
avgDurationMs | number | yes | Mean wall-clock duration per invocation, in milliseconds. Always 0 while source is unavailable. |
avgTokensPerInvocation | number | yes | Mean tokens per invocation. Always 0 while source is unavailable. |
invocationCount | number | yes | Recorded invocations. Always 0 while source is unavailable. |
lastUsedAt | string (date-time) or null | no | When the agent was last invoked. Always null while source is unavailable. |
slug | string | yes | Slug of the agent these stats describe. |
source | AgentTalentPoolStatsSource | yes | Provenance of the numbers above. Read this before rendering them — unavailable means no telemetry exists, not that the agent was never used. |
AgentTalentPoolStatsDtoDataEnvelope
AgentTalentPoolStatsSource
Provenance of the numbers above. Read this before rendering them — unavailable means no telemetry exists, not that the agent was never used.
Type: one of "unavailable"
| Property | Type | Required | Description |
|---|
kind | one of "provider", "tool" | yes | |
providerKind | string | yes | Tool provider kind (see ToolProviderKind). |
resourceId | string | yes | |
toolName | string | no | Canonical MCP tool name. Required when kind = tool. |
AgentWorkingFileDto
| Property | Type | Required | Description |
|---|
format | one of "markdown", "html", "json", "yaml", "text" | yes | |
path | string | yes | |
slug | string | yes | |
sourceKind | string | yes | |
sourceRef | map of string | yes | |
syncDirection | one of "down-only", "up-only", "bidirectional" | yes | |
AgentWorkspaceDto
| Property | Type | Required | Description |
|---|
credentials | array of AgentCredentialDto | no | Declared credential requirements projected from the source manifest compiled spec.credentials[]. Read by the runtime EnvironmentResolver (snapshot + resume drift detection). Present only when the source manifest authored at least one credential. |
env | array of AgentEnvVarDto | no | |
mountLayout | AgentMountLayoutDto | no | |
outputSurface | AgentOutputSurfaceDto | no | |
permissions | AgentPermissionsDto | no | Coarse toolset allow/deny gate projected from the source manifest compiled spec.permissions. Read by the runtime EnvironmentResolver (snapshot + resume drift detection). Present only when the source manifest authored a non-empty allow or deny list. |
persistence | AgentPersistenceDto | no | |
workingFiles | array of AgentWorkingFileDto | no | Working files the platform materialises for sessions on this composition. Raw form — path / sourceRef values may carry ${input.x} tokens that the bundle-apply path resolves against the session's customConfig.manifestInputs. |
BindModelStrategyDto
| Property | Type | Required | Description |
|---|
strategyId | string | yes | Strategy ID to bind to the project |
CatalogModelDto
| Property | Type | Required | Description |
|---|
capabilities | array of string | yes | Model capabilities |
contextWindow | number | yes | Context window in tokens |
costInput | number | no | Cost per 1M input tokens (USD) |
costOutput | number | no | Cost per 1M output tokens (USD) |
deprecated | boolean | yes | Whether the model is deprecated |
displayName | string | yes | Display name |
family | string | yes | Model family |
modelId | string | yes | Model identifier |
outputWindow | number | no | Output window in tokens |
popular | boolean | yes | Whether this is a popular model |
reasoning | boolean | yes | Whether the model supports reasoning |
releaseDate | string | no | Release date (ISO) |
vision | boolean | yes | Whether the model supports vision |
CatalogModelDtoDataArrayEnvelope
CatalogProviderDto
| Property | Type | Required | Description |
|---|
apiType | one of "openai-compatible", "anthropic", "google" | yes | SDK / API type |
authType | one of "bearer", "api-key-header" | yes | |
baseUrl | string | yes | Default base URL |
description | string | yes | |
keyHelpUrl | string | yes | |
keyPlaceholder | string | yes | |
logoUrl | string | yes | Logo URL (SVG) |
name | string | yes | Display name |
slug | string | yes | Provider slug |
syncSupported | boolean | yes | Whether live /models sync is supported |
tier | one of "featured", "popular" | yes | |
CatalogProviderDtoDataArrayEnvelope
CodeStandardResponseDto
| Property | Type | Required | Description |
|---|
category | string | yes | Standard category |
content | string | yes | Standard content |
createdAt | string (date-time) | yes | |
createdBy | string | yes | Creator ID |
id | string | yes | Unique ID |
isActive | boolean | yes | Whether the standard is active |
name | string | yes | Standard name |
orgId | string | yes | Organization ID |
projectId | string | no | Project ID (null for org-wide standards) |
updatedAt | string (date-time) | yes | |
CodeStandardResponseDtoDataArrayEnvelope
CodeStandardResponseDtoDataEnvelope
CreateAgentDto
| Property | Type | Required | Description |
|---|
abilities | array of string | no | Special-ability CapabilityRefs granted on top of the reach tier; unioned into the auto-grant manifest. |
capability | AgentCapabilityLayerDto | no | Capability envelope applied at runtime. When omitted, a read-only default is applied at publish time. |
description | string | no | |
displayName | string | yes | |
durableWorkspace | DurableWorkspaceRefDto or null | no | Declares that every session this agent launches attaches to ONE durable, NAMED workspace shared across independent sessions/pods (multi-pod WorkspaceSharingPolicy.Shared) keyed by workspaceRef — its files are the source of truth and cross-session mutating turns serialize through a write-lease. Omitted / null ⇒ a private per-session workspace (the default). |
internetEgressCeiling | WorkerInternetEgress | no | Ceiling on whether the worker pod running this agent may open sockets to the public internet. A ceiling the agent ACCEPTS, never a grant: the effective mode is the most restrictive of the deployment, the owning Space, this value and the session, so open here widens nothing. Omitted ⇒ the agent states nothing and no default is substituted. |
reachTier | AgentReachTier | no | The agent's permission ceiling. Omitted ⇒ as-owner (the agent's authority equals its owner's — today's acts-as behavior). Enforcement lives in authz; this service only owns + exposes the field. |
root | AgentNodeDto | yes | The recursive root (primary agent) node. |
scope | ScopeSource | yes | Owner tier. Customer-authorable tiers only — org (default) or user. project is reached via re-scope; biome/system are platform-seeded. |
sessionLifecycle | AgentSessionLifecycle | no | The agent's default session lifecycle — ephemeral (idle-auto-pauses) or persistent (always-on). A launched session inherits this unless the launch passes an explicit override. Omitted ⇒ the agent declares no preference and agent-session-api applies its own ephemeral default. |
slug | string | yes | Stable slug; lowercase, hyphenated. |
standingSession | StandingSessionRefDto or null | no | Declares that every launch of this agent runs in ONE reusable "standing" session keyed by pinKey — agent-session-api adopts a non-terminal existing session for (orgId, projectId, pinKey) instead of minting a fresh one. Omitted / null ⇒ a fresh session per launch (the default). |
workspace | AgentWorkspaceDto | no | Authored workspace-layout config — persist-paths + per-slot overrides, env vars, output surface. Optional + additive: a composition with no workspace block runs on the AWP base slots alone. Projected onto the run's WorkspaceSpec by the resolution service. |
workspaceSharing | WorkspaceSharingPolicy | no | Whether a session launch of this agent may POOL onto a compatible, already-running pod as a new thread (shareable) or must always run in its own isolated worker (isolated). Omitted ⇒ the DB default isolated (the fail-safe) — mark shareable ONLY for workspace-stateless / chat-style agents that never mutate /workspace. |
CreateAgentKernelDto
| Property | Type | Required | Description |
|---|
avatarSeed | string | no | DiceBear avatar seed (defaults to slug). |
avatarStyle | string | no | DiceBear avatar style family. |
description | string | no | Free-text description rendered on the agent profile. |
displayName | string | yes | Display name for the agent. |
forkedFrom | string | no | Origin reference set when this row was forked from a biome/system agent. Format: <source>:<biomeId|"">:<slug>. Survives uninstall — UI surfaces "fork without origin" if the origin is gone. |
mcpServices | array of string | no | MCP service keys this agent can access. |
modelLane | string | yes | The model LANE this agent routes on — rules select on it. An OPEN vocabulary: every key is declared by a model-lane contribution, and GET /work-kinds?kind=model-lane enumerates what this organisation may use. Distinct from AgentRunRole (permissions). |
scope | ScopeSource | no | Owner tier the agent is created under. Customer-authorable tiers only — org (the org owns it; default) or user (private to the creator, promotable later via re-scope). biome and system rows are seeded by the platform, never created through this endpoint; project rows are created via re-scope from user/org. |
skills | array of string | no | Open-world skill tags. |
slug | string | yes | Unique slug for the agent definition. |
systemPrompt | string | yes | Base system prompt. |
temperature | number | no | LLM temperature override. |
CreateCodeStandardDto
| Property | Type | Required | Description |
|---|
category | one of "code_style", "api_conventions", "testing", "security", "naming", "documentation" | yes | |
content | string | yes | |
isActive | boolean | no | |
name | string | yes | |
projectId | string or null | no | Project ID — null for org-wide standard |
CreateModelDto
| Property | Type | Required | Description |
|---|
capabilities | array of string | no | Model capabilities |
contextWindow | number | yes | Required. Max input tokens the model supports (no silent fallback). |
displayName | string | yes | |
embeddingDimension | number | no | Embedding vector dimension (for embedding models only) |
isActive | boolean | no | |
modalities | array of ModelModality | no | Closed-enum INPUT modalities the model accepts, recorded with source operator. Omitted or empty means unknown (a provider sync may fill it). Consumed by the model-modality capability provider-binding. |
modelId | string | yes | |
CreateModelResolutionRuleDto
| Property | Type | Required | Description |
|---|
priority | number | no | Tie-break hint when two rules match the same number of dimensions and the fixed dimension-priority ladder does not separate them. Higher wins. Defaults to 0. |
selector | ModelResolutionSelectorDto | no | Dimensional selector. At least one dimension is required: an empty selector is refused (set the org default via the org model default). |
targetModelId | string | yes | Registry model record id (LlmModel.id) the rule routes to. It must be an active model on an active provider the organisation or the platform owns; otherwise the write is refused with 422 MODEL_NOT_SERVED. |
targetReasoningEffort | string | no | Optional reasoning effort carried by the resolved model, forwarded verbatim to the provider. OPEN vocabulary owned by the provider (e.g. minimal/low/medium/high, or low/medium/high/xhigh/max) — not an enum here, so a new provider spelling is not refused at the door. |
targetTemperature | number | no | Optional temperature override carried by the resolved model. |
CreateModelStrategyDto
| Property | Type | Required | Description |
|---|
description | string | no | |
displayName | string | yes | |
rules | array of CreateModelResolutionRuleDto | yes | The strategy's rules. A strategy holds only rules: each has the same shape and validation as an org-level model resolution rule, and applies to the projects this strategy is bound to. |
slug | string | yes | |
CreateProjectAgentOverrideDto
| Property | Type | Required | Description |
|---|
agentIdentityId | string | yes | Stable AgentIdentity ID to override for this project. |
mcpServicesAdd | array of string | no | Additional MCP services to enable. |
mcpServicesRemove | array of string | no | MCP services to disable for this project. |
systemPromptAppend | string | no | Text appended to the base system prompt. |
temperature | number | no | |
CreateProviderDto
| Property | Type | Required | Description |
|---|
apiKey | string | no | Optional enrolment transport: when supplied, the key is sealed in the credential plane and becomes the organisation's default credential (org_default pointer) for this provider's key; the provider row never stores it. Omit it when members use their own keys. |
apiType | one of "openai-compatible", "anthropic", "google" | yes | |
authType | one of "bearer", "api-key-header", "none" | no | How the provider authenticates upstream. Omitted = bearer. none declares a keyless endpoint (openai-compatible only): apiKey may then not be supplied, and no credential header is sent. |
baseUrl | string | yes | |
catalogSlug | string | no | Catalog provider slug — used to seed known models on creation |
maxConcurrentRequests | number | no | Maximum concurrent requests allowed to this provider. Null = unlimited. |
name | string | yes | |
slug | string | yes | URL-safe identifier |
CredentialKind
Type: one of "llm-provider", "scm-token", "oauth-bearer", "mcp-auth", "wallet-entry", "generic-secret"
DelegatedAgentRefDto
| Property | Type | Required | Description |
|---|
slug | string | yes | |
version | string | yes | Generated revision number (decimal string). |
DelegatedAgentSubjectDto
| Property | Type | Required | Description |
|---|
id | string | yes | |
kind | one of "agent" | yes | |
DelegatedApertureConstraintsDto
DurableWorkspaceRefDto
| Property | Type | Required | Description |
|---|
workspaceRef | string | yes | Stable identity of the durable shared workspace. Every session of every agent that resolves this ref within the same (orgId, projectId) mounts the SAME durable /workspace (its files are the source of truth; a session is a disposable cache). |
EmbeddingCommitmentActivationDto
| Property | Type | Required | Description |
|---|
activated | boolean | yes | True when this call flipped the commitment proposed → active; false when it was already active. |
EmbeddingCommitmentActivationDtoDataEnvelope
EmbeddingCommitmentDto
| Property | Type | Required | Description |
|---|
committedAt | string (date-time) or null | no | |
createdAt | string (date-time) | yes | |
createdBy | string | yes | |
dimension | number | yes | |
id | string | yes | |
modelId | string | yes | |
orgId | string | yes | |
pendingMigration | EmbeddingMigrationDto or null | no | |
provider | EmbeddingProviderSummaryDto | yes | |
providerId | string | yes | |
state | one of "proposed", "active", "migrating" | yes | |
updatedAt | string (date-time) | yes | |
EmbeddingCommitmentDtoDataEnvelope
EmbeddingConsumer
Type: one of "search_api", "memory_api"
EmbeddingDimensionVerdict
What this deployment's vector storage would do with this model's dimension. indexed is fully served; stored_unindexed works and is a linear scan; unsupported cannot be stored and must not be offered; unverified means NO consumer has declared what it can hold — which is an ANSWER, not a synonym for "fine". A client MUST render this rather than deciding from a local list of dimensions: a local list is how 4096 came to be offered with no storage behind it.
Type: one of "indexed", "stored_unindexed", "unsupported", "unverified"
EmbeddingMigrationDto
| Property | Type | Required | Description |
|---|
approvedAt | string (date-time) | yes | |
approvedBy | string | yes | |
completedAt | string (date-time) or null | no | |
consumerStates | array of MigrationConsumerProgressDto | yes | |
failedAt | string (date-time) or null | no | |
failureReason | string or null | no | |
fromDimension | number | yes | |
fromModelId | string | yes | |
fromProviderId | string | yes | |
id | string | yes | |
orgId | string | yes | |
rolledBackAt | string (date-time) or null | no | |
startedAt | string (date-time) or null | no | |
state | one of "approved", "in_progress", "completed", "failed", "rolled_back" | yes | |
toDimension | number | yes | |
toModelId | string | yes | |
toProviderId | string | yes | |
EmbeddingMigrationDtoDataEnvelope
EmbeddingMigrationRollbackDto
| Property | Type | Required | Description |
|---|
rolledBack | boolean | yes | Always true — the rollback either completed or the request failed with an error envelope. |
EmbeddingMigrationRollbackDtoDataEnvelope
EmbeddingModelOptionDto
| Property | Type | Required | Description |
|---|
capabilities | array of string | yes | |
contextWindow | number | yes | |
dimensionVerdict | EmbeddingDimensionVerdict | yes | What this deployment's vector storage would do with this model's dimension. indexed is fully served; stored_unindexed works and is a linear scan; unsupported cannot be stored and must not be offered; unverified means NO consumer has declared what it can hold — which is an ANSWER, not a synonym for "fine". A client MUST render this rather than deciding from a local list of dimensions: a local list is how 4096 came to be offered with no storage behind it. |
displayName | string | yes | |
embeddingDimension | number | yes | |
id | string | yes | |
modelId | string | yes | |
provider | EmbeddingProviderSummaryDto | yes | |
EmbeddingModelOptionDtoDataArrayEnvelope
EmbeddingProviderSummaryDto
| Property | Type | Required | Description |
|---|
apiType | string | yes | |
baseUrl | string | yes | |
id | string | yes | |
isSystem | boolean | yes | |
name | string | yes | |
slug | string | yes | |
EmbeddingStorageDeclarationAckDto
| Property | Type | Required | Description |
|---|
declaredAt | string (date-time) | yes | When THIS service recorded it, from its own clock rather than the caller's. It is what makes a consumer that stopped re-declaring visible: its row simply stops moving. |
recorded | boolean | yes | |
EmbeddingStorageDeclarationAckDtoDataEnvelope
EmbeddingStorageDeclarationDto
| Property | Type | Required | Description |
|---|
backend | string | yes | |
backendVersion | string | yes | Provenance for the sets above. A bare capability is a fact with no source; naming the backend and version makes it checkable, and makes a backend change visible instead of silently keeping an old answer. |
consumer | EmbeddingConsumer | yes | |
indexedDimensions | array of number | yes | The SUBSET of storableDimensions this consumer can also serve from an ANN index. Outside it recall is an exact scan: correct, and slower. It is advisory and never causes a refusal — conflating the two is what made 4096 look unsupported when it was merely unindexable. May be empty, which honestly means nothing is ANN-indexed. |
storableDimensions | array of number | yes | EXACT SET of dimensions this consumer can store — every one backed by real storage it has verified, not an interval. A dimension absent from this list is unsupported, including one that falls between two members. Must be non-empty: a consumer that cannot establish its own capability declares NOTHING and is reported unverified, which is a different answer from "stores nothing" and refuses nothing. |
ExactAgentRevisionAuthorityResponseDto
| Property | Type | Required | Description |
|---|
capabilityAperture | AgentCapabilityApertureDto | yes | |
contentHash | string (sha256) | yes | |
delegatedApertures | array of ResolvedDelegatedApertureDto | yes | Every agent reachable by DELEGATION from the primary agent (composition children and intrinsic delegates, cycles resolved to a fixed point, bounded by the platform delegation depth), each with its effective authority parent ∩ own ∩ boundary. Sorted by agentKey; exactly one entry (the primary agent) has a null parent. |
internetEgressCeiling | WorkerInternetEgress | no | Ceiling on whether the worker pod running the PRIMARY agent may open sockets to the public internet. A ceiling the agent ACCEPTS, never a grant: the effective mode is the most restrictive of the deployment, the owning Space, this value and the session, so open here widens nothing. RESOLVED: the agent's own declaration joined along its extends chain, so a child never widens its base. ABSENT when nothing in the chain declares one — there is no default. |
ownerSpaceRef | AgentOwnerSpaceRefDto | yes | |
preparationGenerationId | string | yes | |
reachTier | one of "sandbox", "as-owner", "connected", "full" | yes | |
resolvedGraph | ExactAgentRevisionResolvedGraphDto | yes | |
resourceId | string | yes | |
revisionId | string | yes | |
ExactAgentRevisionAuthorityResponseDtoDataEnvelope
ExactAgentRevisionResolvedGraphDto
InputArtifactEntryDto
| Property | Type | Required | Description |
|---|
contentType | string | no | |
path | string | yes | |
sourceArtifactId | string | yes | |
sourceVersion | number | yes | |
ListedModelProviderDto
| Property | Type | Required | Description |
|---|
authType | one of "bearer", "api-key-header", "none" | yes | How the provider authenticates upstream. none = a keyless endpoint. |
id | string | yes | |
isActive | boolean | yes | Whether the provider is active. An inactive provider serves no model. |
name | string | yes | |
slug | string | yes | |
ListedModelResponseDto
| Property | Type | Required | Description |
|---|
audioInputPerSecond | number or null | no | Per-input-audio-second price (USD per second). |
cacheReadPerMToken | number or null | no | Cache-read price (USD per 1M tokens). |
cacheWritePerMToken | number or null | no | Cache-write price (USD per 1M tokens). |
capabilities | array of string | yes | |
contextWindow | object or null | no | |
contextWindowSource | ModelFactSource or null | yes | Where a model size fact came from, highest rank first: operator (a person set it; no provider sync ever overwrites it), provider (provider discovery reported it), curated_catalog (the curated per-provider catalogue). For contextWindow, null = provenance not recorded (a model registered before sources were tracked). |
contextWindowVerifiedAt | string (date-time) or null | yes | When the source of contextWindow last asserted this value (ISO 8601). Null exactly when its source is null. |
createdAt | string | yes | |
deprecated | boolean | yes | Model has rolled out of the current window. |
deprecationDate | string or null | no | The operator-set retirement instant (ISO 8601); null when the model is not retired. From it on, resolutions that pick this model serve successorModelId instead, or refuse with MODEL_RETIRED_NO_SUCCESSOR when there is none. No catalogue sync writes it. |
displayName | string | yes | |
embeddingDimension | number or null | no | Embedding output vector dimension (only for embedding models). |
factConflicts | array of ModelFactConflictDto | yes | Every violated size-fact bound, with both sides' sources. Empty when consistent. |
factsConsistent | boolean | yes | False when the effective size facts conflict (see factConflicts). An inconsistent model is refused for selection and use with MODEL_FACTS_CONFLICT until an admin changes or clears the overriding value. |
id | string | yes | |
imageInputPerUnit | number or null | no | Per-input-image price (USD per unit). |
inputPricePerMToken | number or null | no | Input price (USD per 1M tokens). |
isActive | boolean | yes | |
maxInputTokens | number or null | yes | Max prompt (input) tokens, when the service caps input below the context window. Null when no source declares a cap (only the context window applies). |
maxInputTokensSource | ModelFactSource or null | yes | Where a model size fact came from, highest rank first: operator (a person set it; no provider sync ever overwrites it), provider (provider discovery reported it), curated_catalog (the curated per-provider catalogue). For maxInputTokens, null = the fact is unknown. |
maxInputTokensVerifiedAt | string (date-time) or null | yes | When the source of maxInputTokens last asserted this value (ISO 8601). Null exactly when its source is null. |
maxOutputTokens | number or null | no | Max generation/output tokens. Bounded by contextWindow, which is the TOTAL budget (prompt + reasoning + answer). Null when no authoritative source declares one. |
maxOutputTokensSource | ModelFactSource or null | yes | Where a model size fact came from, highest rank first: operator (a person set it; no provider sync ever overwrites it), provider (provider discovery reported it), curated_catalog (the curated per-provider catalogue). For maxOutputTokens, null with a null value = the fact is unknown; null beside a value = provenance not recorded (a model registered before sources were tracked). |
maxOutputTokensVerifiedAt | string (date-time) or null | yes | When the source of maxOutputTokens last asserted this value (ISO 8601). Null exactly when its source is null. |
modalities | array of ModelModality | yes | Closed-enum INPUT modalities the model accepts — a capability fact (see modalitiesSource). Empty when nobody declared any. |
modalitiesSource | ModelFactSource or null | yes | Where the modalities capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. an empty set with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
modalitiesVerifiedAt | string (date-time) or null | yes | When the source of modalities last asserted it (ISO 8601). Null exactly when its source is null. |
mode | ModelMode or null | no | Operating mode of the model. Null when no signal resolved one. |
modelId | string | yes | |
outputPricePerMToken | number or null | no | Output price (USD per 1M tokens). |
priceCurrency | string or null | no | Currency of the price columns ('USD' when any price is present, null otherwise). |
provider | ListedModelProviderDto | yes | |
providerId | string | yes | |
servable | boolean | yes | True iff model resolution would serve this model to the organisation: the model is active, its provider is active and usable by the org (the same predicate resolution refuses with MODEL_NOT_SERVED), and its size facts agree (else resolution refuses with MODEL_FACTS_CONFLICT). Model pickers offer only servable models. |
successorModelId | string or null | no | The model record id resolutions serve instead of this one from deprecationDate; null when none. |
supportsAudioInput | boolean | yes | Model accepts audio inputs. |
supportsAudioInputSource | ModelFactSource or null | yes | Where the supportsAudioInput capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsAudioInputVerifiedAt | string (date-time) or null | yes | When the source of supportsAudioInput last asserted it (ISO 8601). Null exactly when its source is null. |
supportsJsonMode | boolean | yes | Model supports structured JSON output mode. |
supportsJsonModeSource | ModelFactSource or null | yes | Where the supportsJsonMode capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsJsonModeVerifiedAt | string (date-time) or null | yes | When the source of supportsJsonMode last asserted it (ISO 8601). Null exactly when its source is null. |
supportsPdfInput | boolean | yes | Model accepts PDF inputs. |
supportsPdfInputSource | ModelFactSource or null | yes | Where the supportsPdfInput capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsPdfInputVerifiedAt | string (date-time) or null | yes | When the source of supportsPdfInput last asserted it (ISO 8601). Null exactly when its source is null. |
supportsPromptCaching | boolean | yes | Model supports prompt caching. |
supportsPromptCachingSource | ModelFactSource or null | yes | Where the supportsPromptCaching capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsPromptCachingVerifiedAt | string (date-time) or null | yes | When the source of supportsPromptCaching last asserted it (ISO 8601). Null exactly when its source is null. |
supportsReasoning | boolean | yes | Model performs explicit reasoning. |
supportsReasoningSource | ModelFactSource or null | yes | Where the supportsReasoning capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsReasoningVerifiedAt | string (date-time) or null | yes | When the source of supportsReasoning last asserted it (ISO 8601). Null exactly when its source is null. |
supportsTools | boolean | yes | Model exposes function/tool calling. |
supportsToolsSource | ModelFactSource or null | yes | Where the supportsTools capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsToolsVerifiedAt | string (date-time) or null | yes | When the source of supportsTools last asserted it (ISO 8601). Null exactly when its source is null. |
supportsVision | boolean | yes | Model accepts image inputs. |
supportsVisionSource | ModelFactSource or null | yes | Where the supportsVision capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsVisionVerifiedAt | string (date-time) or null | yes | When the source of supportsVision last asserted it (ISO 8601). Null exactly when its source is null. |
supportsWebSearch | boolean | yes | Model supports built-in web search. |
supportsWebSearchSource | ModelFactSource or null | yes | Where the supportsWebSearch capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsWebSearchVerifiedAt | string (date-time) or null | yes | When the source of supportsWebSearch last asserted it (ISO 8601). Null exactly when its source is null. |
tieredPricing | array of ModelPricingTierDto or null | no | Context-tier pricing overlay sorted ascending by minInputTokens. Null when no tier is published. |
ListedModelResponseDtoDataArrayEnvelope
LlmReadinessDetailsDto
| Property | Type | Required | Description |
|---|
missingModelSlugs | array of string | no | Model slugs that need to be synced |
missingProviderSlugs | array of string | no | Provider slugs that need to be added |
strategyId | string | no | Related strategy ID |
strategyName | string | no | Related strategy name |
unresolvedLanes | array of UnresolvedLaneDto | no | Present on required_lane_unresolved: every agent whose own model lane resolves to no usable model at the scope, ordered by agent slug then lane. The agents considered are those from a biome enabled for the organisation, not hidden, and supporting agent sessions. Agent-lane resolution only: a launch definition's own model intent and project scope are judged at launch, not here. |
LlmReadinessResponseDto
| Property | Type | Required | Description |
|---|
action | one of "add_provider", "sync_models", "set_default_model", "fix_routed_models", "fix_project_strategy", "bind_required_lanes" or null | no | Suggested remediation action. bind_required_lanes means an agent's own model lane has no resolution at the requested scope; it does not speak for a launch definition's own model intent, which is judged at launch. |
details | LlmReadinessDetailsDto | no | Additional diagnostic details |
message | string | yes | Human-readable status message |
ready | boolean | yes | Whether LLM is ready to use |
status | one of "ready", "missing_provider", "missing_models", "missing_model_routing", "routed_models_unavailable", "project_strategy_unavailable", "required_lane_unresolved" | yes | required_lane_unresolved reports agent-lane resolution at the requested scope only (each agent's own model lane); a launch definition's own model intent and project scope are judged at launch, not here. |
LlmReadinessResponseDtoDataEnvelope
MigrationAcknowledgementDto
| Property | Type | Required | Description |
|---|
acknowledged | boolean | yes | Always true — the report was recorded. A failure surfaces as an error envelope, never as false. |
MigrationAcknowledgementDtoDataEnvelope
MigrationConsumerDelegationDto
| Property | Type | Required | Description |
|---|
carrierId | string | yes | The carrier bound to the child delegation: what the consumer mints each delegated context from, and renews on its own tick. |
consumer | one of "search_api", "memory_api" | yes | |
delegationId | string | yes | The consumer’s child delegation id. Lends model:gateway-session.mint@1 for the org, presentable only by this consumer’s workload. |
state | MigrationConsumerState | yes | This consumer’s own progress on the migration. A consumer whose state is completed has finished its part and must not provision it again: provisioning a completed consumer is refused with a 409. |
MigrationConsumerDoneDto
| Property | Type | Required | Description |
|---|
consumer | one of "search_api", "memory_api" | yes | Which consumer has finished its backfill. |
MigrationConsumerFailedDto
| Property | Type | Required | Description |
|---|
consumer | one of "search_api", "memory_api" | yes | |
reason | string | yes | Reason the consumer gave up. |
MigrationConsumerProgressDto
| Property | Type | Required | Description |
|---|
consumer | one of "search_api", "memory_api" | yes | |
failedItems | number | yes | |
failureReason | string or null | no | |
id | string | yes | |
lastHeartbeatAt | string (date-time) or null | no | |
lastProcessedId | string or null | no | |
processedItems | number | yes | |
sourceCursor | string or null | no | |
state | one of "pending", "provisioning", "dual_writing", "completed", "failed" | yes | |
totalItems | number | yes | |
MigrationConsumerState
This consumer’s own progress on the migration. A consumer whose state is completed has finished its part and must not provision it again: provisioning a completed consumer is refused with a 409.
Type: one of "pending", "provisioning", "dual_writing", "completed", "failed"
MigrationHeartbeatDto
| Property | Type | Required | Description |
|---|
consumer | one of "search_api", "memory_api" | yes | Which consumer is reporting progress. |
failedDelta | number | no | Number of items that failed since the last heartbeat. |
lastProcessedId | string | yes | Last source row id processed. |
processedDelta | number | yes | Number of new items processed since the last heartbeat. |
MigrationProvisionDto
| Property | Type | Required | Description |
|---|
consumer | one of "search_api", "memory_api" | yes | Which consumer is provisioning. |
sourceCursor | string | yes | High-water-mark cursor snapshot taken at provision time. |
totalItems | number | yes | Total source items the consumer plans to process. |
MigrationTargetDto
| Property | Type | Required | Description |
|---|
consumers | array of MigrationConsumerDelegationDto | yes | The durable CHILD delegation each consumer re-embeds under, lent by the migration’s root delegation (anchored on the migration, originated by the approving admin at migration start). A consumer mints a delegated context per use from ITS OWN entry (a delegation names exactly one presenting workload) with mintDurableDelegatedToken(identity, { delegationId, organizationId, carrierId }), never caches it, and renews that carrier on its own tick (DurableDelegationHolderClient.renewCarrier). Entries with no child yet are omitted. Every entry ends when the migration completes, fails or is rolled back: authorization-api ends the delegations of an anchor that is no longer active. |
migrationId | string | yes | |
toDimension | number | yes | |
toModelId | string | yes | |
toProviderApiType | string | yes | |
toProviderBaseUrl | string | yes | |
toProviderId | string | yes | |
toProviderIsSystem | boolean | yes | |
toProviderSlug | string | yes | |
ModelCapability
A modality this invocation REQUIRES — the Matrix modelCapability dimension, so one rule can route every vision-needing invocation to a multimodal model without pinning a provider. It is ALSO a requirement on whatever the resolution selects: a resolved model that does not provide it is refused with 422 MODEL_CAPABILITY_UNSUPPORTED rather than returned, and no other model is substituted. Closed kernel set; an unknown value is a 400.
Type: one of "vision", "long_context", "reasoning", "function_calling", "audio", "embedding"
ModelFactConflictDto
| Property | Type | Required | Description |
|---|
fact | ModelFactName | yes | A model size fact (ModelResponseDto property name). Here: the capped fact (maxInputTokens or maxOutputTokens) that exceeds its bound. |
limitFact | ModelFactName | yes | The bounding fact (always contextWindow today). |
limitSource | ModelFactSource or null | yes | Where the bound came from; null = provenance not recorded. |
limitValue | number | yes | Its effective value. |
source | ModelFactSource or null | yes | Where that value came from; null = provenance not recorded. |
value | number | yes | Its effective value. |
ModelFactName
A model size fact (ModelResponseDto property name). Here: the capped fact (maxInputTokens or maxOutputTokens) that exceeds its bound.
Type: one of "contextWindow", "maxInputTokens", "maxOutputTokens"
ModelFactSource
Where a model size fact came from, highest rank first: operator (a person set it; no provider sync ever overwrites it), provider (provider discovery reported it), curated_catalog (the curated per-provider catalogue). For contextWindow, null = provenance not recorded (a model registered before sources were tracked).
Type: one of "operator", "provider", "curated_catalog"
ModelModality
Closed-enum INPUT modalities the model accepts — a capability fact (see modalitiesSource). Empty when nobody declared any.
Type: one of "text", "image", "pdf", "audio", "video"
ModelMode
Operating mode of the model. Null when no signal resolved one.
Type: one of "chat", "embedding"
ModelPricingTierDto
| Property | Type | Required | Description |
|---|
cacheReadPerMToken | number | no | Cache-read price (USD per 1M tokens), when the band declares one. |
cacheWritePerMToken | number | no | Cache-write price (USD per 1M tokens), when the band declares one. |
inputPricePerMToken | number | yes | Input price (USD per 1M tokens) within this band. |
minInputTokens | number | yes | Lower input-token bound this band applies from. |
outputPricePerMToken | number | yes | Output price (USD per 1M tokens) within this band. |
ModelResolutionErrorCode
The code a launch of this agent is refused with — the same value the resolve doors put on the refusal.
Type: one of "MODEL_NOT_CONFIGURED", "MODEL_NOT_SERVED", "MODEL_TARGET_NOT_A_MODEL", "MODEL_PROVIDER_PIN_MISMATCH", "MODEL_FACTS_CONFLICT", "MODEL_CAPABILITY_UNSUPPORTED", "MODEL_RETIRED_NO_SUCCESSOR"
ModelResolutionPreviewOutcome
Type: one of "resolved", "refused"
ModelResolutionPreviewResponseDto
ModelResolutionPreviewResponseDtoDataEnvelope
ModelResolutionRefusalCode
Type: one of "MODEL_NOT_CONFIGURED", "MODEL_NOT_SERVED", "MODEL_RETIRED_NO_SUCCESSOR"
ModelResolutionRefusalDto
ModelResolutionRuleResponseDto
| Property | Type | Required | Description |
|---|
createdAt | string | yes | |
createdBy | string | yes | |
id | string | yes | |
managedBy | string or null | no | ResourceManagedBy ownership KIND (ui/iac/seeder/runtime_registered/system). NULL for a plain user/org-admin-authored rule. |
managedKey | string or null | no | The owner's stable natural key. NULL for authored rules; non-null for managed/reconciler rows. |
managedOwner | string or null | no | Owning service identity for a service-actor-upserted rule (derived from the service subject). NULL for authored/reconciler rules. |
orgId | string | yes | |
priority | number | yes | |
selector | ModelResolutionSelectorResponseDto | yes | |
strategyId | string or null | no | The model strategy that owns this rule; null for an org-level rule. |
targetModelId | string | yes | Registry model record id (LlmModel.id) the rule routes to. |
targetReasoningEffort | string or null | no | |
targetTemperature | number or null | no | |
updatedAt | string | yes | |
ModelResolutionRuleResponseDtoDataArrayEnvelope
ModelResolutionRuleResponseDtoDataEnvelope
ModelResolutionSelectorDto
| Property | Type | Required | Description |
|---|
agent | string | no | Match when the resolving agent slug equals this value. |
extra | map of string | no | Forward-compat bag of additional registry dimensions → required literal. Omit / {} when only structured dimensions are used. |
modelCapability | one of "vision", "long_context", "reasoning", "function_calling", "audio", "embedding" | no | Match when the invocation REQUIRES this model capability/modality (the modelCapability dimension — one rule routes e.g. every vision-requiring invocation to a multimodal model without pinning a provider). |
modelLane | string | no | Match when the resolving agent's work kind equals this value (the modelLane dimension — one rule routes e.g. every review-kind agent). OPEN vocabulary with no kernel core: every lane is declared by a model-lane contribution, so GET /work-kinds?kind=model-lane enumerates the lanes this organisation may use. Checked against the org's visible set on write. |
project | string | no | Match when the invocation project id equals this value. |
purpose | string | no | Match when the non-agent invocation purpose equals this value. Used by system flows that route LLM calls outside the agent/skill model (memory summarization, embedding, reorganization). Closed value set is owned per consumer (see MemoryMatrixPurpose in memory-api). |
skill | string | no | Match when the active/launched skill slug equals this value. |
stage | string | no | Match when the invocation pipeline stage key equals this value. |
ModelResolutionSelectorResponseDto
| Property | Type | Required | Description |
|---|
agent | string or null | no | |
extra | map of string | yes | Additional registry dimensions. {} when none. |
modelCapability | one of "vision", "long_context", "reasoning", "function_calling", "audio", "embedding" or null | no | |
modelLane | string or null | no | |
project | string or null | no | |
purpose | string or null | no | |
skill | string or null | no | |
stage | string or null | no | |
ModelResolutionSource
Which resolution path produced this selection.
Type: one of "matrix", "override", "org_default", "unresolved"
ModelResponseDto
| Property | Type | Required | Description |
|---|
audioInputPerSecond | number or null | no | Per-input-audio-second price (USD per second). |
cacheReadPerMToken | number or null | no | Cache-read price (USD per 1M tokens). |
cacheWritePerMToken | number or null | no | Cache-write price (USD per 1M tokens). |
capabilities | array of string | yes | |
contextWindow | object or null | no | |
contextWindowSource | ModelFactSource or null | yes | Where a model size fact came from, highest rank first: operator (a person set it; no provider sync ever overwrites it), provider (provider discovery reported it), curated_catalog (the curated per-provider catalogue). For contextWindow, null = provenance not recorded (a model registered before sources were tracked). |
contextWindowVerifiedAt | string (date-time) or null | yes | When the source of contextWindow last asserted this value (ISO 8601). Null exactly when its source is null. |
createdAt | string | yes | |
deprecated | boolean | yes | Model has rolled out of the current window. |
deprecationDate | string or null | no | The operator-set retirement instant (ISO 8601); null when the model is not retired. From it on, resolutions that pick this model serve successorModelId instead, or refuse with MODEL_RETIRED_NO_SUCCESSOR when there is none. No catalogue sync writes it. |
displayName | string | yes | |
embeddingDimension | number or null | no | Embedding output vector dimension (only for embedding models). |
factConflicts | array of ModelFactConflictDto | yes | Every violated size-fact bound, with both sides' sources. Empty when consistent. |
factsConsistent | boolean | yes | False when the effective size facts conflict (see factConflicts). An inconsistent model is refused for selection and use with MODEL_FACTS_CONFLICT until an admin changes or clears the overriding value. |
id | string | yes | |
imageInputPerUnit | number or null | no | Per-input-image price (USD per unit). |
inputPricePerMToken | number or null | no | Input price (USD per 1M tokens). |
isActive | boolean | yes | |
maxInputTokens | number or null | yes | Max prompt (input) tokens, when the service caps input below the context window. Null when no source declares a cap (only the context window applies). |
maxInputTokensSource | ModelFactSource or null | yes | Where a model size fact came from, highest rank first: operator (a person set it; no provider sync ever overwrites it), provider (provider discovery reported it), curated_catalog (the curated per-provider catalogue). For maxInputTokens, null = the fact is unknown. |
maxInputTokensVerifiedAt | string (date-time) or null | yes | When the source of maxInputTokens last asserted this value (ISO 8601). Null exactly when its source is null. |
maxOutputTokens | number or null | no | Max generation/output tokens. Bounded by contextWindow, which is the TOTAL budget (prompt + reasoning + answer). Null when no authoritative source declares one. |
maxOutputTokensSource | ModelFactSource or null | yes | Where a model size fact came from, highest rank first: operator (a person set it; no provider sync ever overwrites it), provider (provider discovery reported it), curated_catalog (the curated per-provider catalogue). For maxOutputTokens, null with a null value = the fact is unknown; null beside a value = provenance not recorded (a model registered before sources were tracked). |
maxOutputTokensVerifiedAt | string (date-time) or null | yes | When the source of maxOutputTokens last asserted this value (ISO 8601). Null exactly when its source is null. |
modalities | array of ModelModality | yes | Closed-enum INPUT modalities the model accepts — a capability fact (see modalitiesSource). Empty when nobody declared any. |
modalitiesSource | ModelFactSource or null | yes | Where the modalities capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. an empty set with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
modalitiesVerifiedAt | string (date-time) or null | yes | When the source of modalities last asserted it (ISO 8601). Null exactly when its source is null. |
mode | ModelMode or null | no | Operating mode of the model. Null when no signal resolved one. |
modelId | string | yes | |
outputPricePerMToken | number or null | no | Output price (USD per 1M tokens). |
priceCurrency | string or null | no | Currency of the price columns ('USD' when any price is present, null otherwise). |
providerId | string | yes | |
successorModelId | string or null | no | The model record id resolutions serve instead of this one from deprecationDate; null when none. |
supportsAudioInput | boolean | yes | Model accepts audio inputs. |
supportsAudioInputSource | ModelFactSource or null | yes | Where the supportsAudioInput capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsAudioInputVerifiedAt | string (date-time) or null | yes | When the source of supportsAudioInput last asserted it (ISO 8601). Null exactly when its source is null. |
supportsJsonMode | boolean | yes | Model supports structured JSON output mode. |
supportsJsonModeSource | ModelFactSource or null | yes | Where the supportsJsonMode capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsJsonModeVerifiedAt | string (date-time) or null | yes | When the source of supportsJsonMode last asserted it (ISO 8601). Null exactly when its source is null. |
supportsPdfInput | boolean | yes | Model accepts PDF inputs. |
supportsPdfInputSource | ModelFactSource or null | yes | Where the supportsPdfInput capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsPdfInputVerifiedAt | string (date-time) or null | yes | When the source of supportsPdfInput last asserted it (ISO 8601). Null exactly when its source is null. |
supportsPromptCaching | boolean | yes | Model supports prompt caching. |
supportsPromptCachingSource | ModelFactSource or null | yes | Where the supportsPromptCaching capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsPromptCachingVerifiedAt | string (date-time) or null | yes | When the source of supportsPromptCaching last asserted it (ISO 8601). Null exactly when its source is null. |
supportsReasoning | boolean | yes | Model performs explicit reasoning. |
supportsReasoningSource | ModelFactSource or null | yes | Where the supportsReasoning capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsReasoningVerifiedAt | string (date-time) or null | yes | When the source of supportsReasoning last asserted it (ISO 8601). Null exactly when its source is null. |
supportsTools | boolean | yes | Model exposes function/tool calling. |
supportsToolsSource | ModelFactSource or null | yes | Where the supportsTools capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsToolsVerifiedAt | string (date-time) or null | yes | When the source of supportsTools last asserted it (ISO 8601). Null exactly when its source is null. |
supportsVision | boolean | yes | Model accepts image inputs. |
supportsVisionSource | ModelFactSource or null | yes | Where the supportsVision capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsVisionVerifiedAt | string (date-time) or null | yes | When the source of supportsVision last asserted it (ISO 8601). Null exactly when its source is null. |
supportsWebSearch | boolean | yes | Model supports built-in web search. |
supportsWebSearchSource | ModelFactSource or null | yes | Where the supportsWebSearch capability fact came from, highest rank first: operator (no sync overwrites it), provider (the provider declared it), curated_catalog. false with a null source = the fact is unknown (nobody declared it); a non-default value with a null source = provenance not recorded. |
supportsWebSearchVerifiedAt | string (date-time) or null | yes | When the source of supportsWebSearch last asserted it (ISO 8601). Null exactly when its source is null. |
tieredPricing | array of ModelPricingTierDto or null | no | Context-tier pricing overlay sorted ascending by minInputTokens. Null when no tier is published. |
ModelResponseDtoDataArrayEnvelope
ModelResponseDtoDataEnvelope
ModelRetirementSubstitutionDto
ModelStatusDto
| Property | Type | Required | Description |
|---|
deprecated | boolean | yes | Whether the model is deprecated |
exists | boolean | yes | Whether the model exists in the catalog |
family | string | no | Model family |
latestInFamily | string | no | Latest model in the family |
provider | string | no | Provider slug |
ModelStatusDtoDataEnvelope
ModelStrategyResponseDto
| Property | Type | Required | Description |
|---|
createdAt | string | yes | |
createdBy | string | yes | |
description | string or null | no | |
displayName | string | yes | |
id | string | yes | |
orgId | string | yes | |
rules | array of ModelResolutionRuleResponseDto | no | The strategy's rules: a strategy holds only rules, and they apply to the projects it is bound to. |
slug | string | yes | |
source | ModelStrategySource | yes | Who authored this strategy. Always org today: the platform predefines no strategy, and no contribution kind lets a biome contribute one. A biome-contributed strategy would add a biome member (with its biomeId) when that contribution path exists. |
updatedAt | string | yes | |
version | number | yes | The rule set's concurrency counter. Send it back as expectedVersion when replacing the whole rule set. Moves on every write that changes the rules — including a per-lane write — and not on an unrelated metadata edit. |
ModelStrategyResponseDtoDataArrayEnvelope
ModelStrategyResponseDtoDataEnvelope
ModelStrategySource
Who authored this strategy. Always org today: the platform predefines no strategy, and no contribution kind lets a biome contribute one. A biome-contributed strategy would add a biome member (with its biomeId) when that contribution path exists.
Type: one of "org"
ModelSubstitutionReason
Why the pick was substituted.
Type: one of "model-retired"
ModelVocabularyKeyDto
| Property | Type | Required | Description |
|---|
declaringBiomeIds | array of string | yes | The biome(s) that declare this key, among the declarations visible to the caller — sorted, de-duplicated, and EVERY declarer rather than one: two biomes may declare the same key, and both are reported. Empty for a key no biome declared. PROVENANCE, NOT IDENTITY: the key alone is the stable identifier, and this list moves when a biome is renamed or replaced — group or explain by it, never key a binding on it. |
description | string | yes | What work this key names, in the reader's words. |
key | string | yes | The routing key. Lower-kebab and NOT namespaced by the declaring biome: a key that encoded it would move when that biome is renamed or replaced, silently invalidating every rule and strategy entry that names it. |
kind | ModelVocabularyKind | yes | Which Matrix dimension this key may select, and which contribution kind declared it. model-lane — work an agent does, selecting modelLane. model-purpose — a use the platform or a biome makes of a model on nobody's behalf, selecting purpose. |
title | string | yes | |
ModelVocabularyKind
Which Matrix dimension this key may select, and which contribution kind declared it. model-lane — work an agent does, selecting modelLane. model-purpose — a use the platform or a biome makes of a model on nobody's behalf, selecting purpose.
Type: one of "model-lane", "model-purpose"
ModelVocabularyListDto
ModelVocabularyListDtoDataEnvelope
MountEntryDto
| Property | Type | Required | Description |
|---|
mode | one of "read-only", "read-write" | yes | |
mount | string | yes | |
source | string | no | Source URI the activity resolves at mount time. Schemes: artifact-store://, deliverable-spec://, scm://, literal://. Omitted when the renderer only needs (mount, mode) (e.g. compose-time mount-plan summarization). |
MoveRevisionPinsDto
| Property | Type | Required | Description |
|---|
fromRevisionId | string | yes | The revision pins are currently held on. |
toRevisionId | string | yes | The revision movable pins should point at. |
OrgModelDefaultResponseDto
| Property | Type | Required | Description |
|---|
configured | boolean | yes | True when the organisation has set a default model. |
modelId | string | no | The registry model record id; present only when configured. |
setByActorId | string | no | The actor who last set the default; present only when configured. |
updatedAt | string | no | When the default was last set (ISO 8601); present only when configured. |
OrgModelDefaultResponseDtoDataEnvelope
OutputSurfaceKind
Type: one of "none", "web", "static", "app", "tunnel"
| Property | Type | Required | Description |
|---|
hasMore | boolean | no | |
limit | number | no | |
nextCursor | string or null | no | |
page | number | no | |
previousCursor | string or null | no | |
total | number | no | |
totalPages | number | no | |
PreviewModelResolutionDto
| Property | Type | Required | Description |
|---|
modelLane | string | yes | The model lane to resolve — the Matrix modelLane dimension. Must be a declared lane. |
space | string | yes | The Space to resolve in: xema://orgs/<id> or xema://orgs/<id>/projects/<id>. It must name the organisation the caller is an admin of; it selects a Space inside it and never widens it. |
ProbeProviderDto
| Property | Type | Required | Description |
|---|
apiKey | string | no | The key to probe with. Required unless authType is none. |
apiType | one of "openai-compatible", "anthropic", "google" | yes | |
authType | one of "bearer", "api-key-header", "none" | no | Omitted = bearer. none probes a keyless endpoint (openai-compatible only): apiKey must then be absent and no credential header is sent. |
baseUrl | string | yes | |
ProbedModelDto
| Property | Type | Required | Description |
|---|
contextWindow | number | no | TOTAL context window (prompt + answer) resolved from the provider /models response or gateway metadata — never an input cap. Absent when no authoritative total was found. |
displayName | string | no | Human-readable model name, when the provider reports one. |
id | string | yes | Model ID as reported by the provider /models endpoint. |
ProblemActionableBy
Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
Type: one of "user", "org-admin", "platform", "none"
ProblemDetailsDto
RFC 9457 problem document. The declared members are the reserved core; extension members are TOP-LEVEL and OPEN, owned by the refusing plane.
| Property | Type | Required | Description |
|---|
actionableBy | ProblemActionableBy | no | Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed. |
code | string | yes | SCREAMING_SNAKE_CASE. The machine-branchable refusal, and the value a policy rule, a retry predicate and a UI branch all name. |
detail | string | no | Human-readable and specific to THIS occurrence. |
errors | array of ProblemFieldIssueDto | no | Field-level issues, when the refusal is about the request body. |
instance | string | no | URI reference identifying the occurrence — a request path, a run, a row. |
params | map of string or number or boolean | no | Safe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics. |
retry | ProblemRetry | no | What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known. |
status | number | yes | The HTTP status code, repeated in the body so a logged document is self-contained. |
title | string | yes | Short, human-readable, and STABLE for a given type. Never per-occurrence — that is detail. |
traceId | string | no | W3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not. |
type | string | yes | Absolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank. |
ProblemFieldIssueDto
| Property | Type | Required | Description |
|---|
code | string | no | SCREAMING_SNAKE_CASE code of THIS issue, for a frontend i18n key. Present when the issue was minted by a declared problem. |
detail | string | yes | Prose for logs and developers. A frontend localises from code + params instead. |
params | map of string or number or boolean | no | Safe i18n interpolation values for this issue's code. |
pointer | string | yes | RFC 6901 JSON Pointer into the request body. Root is "/". |
ProblemRetry
What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
Type: one of "transient", "after-change", "never"
ProjectAgentOverrideResponseDto
| Property | Type | Required | Description |
|---|
agentContentHash | string | yes | SHA-256 of the pinned AgentRevision content. |
agentRevisionId | string | yes | Immutable AgentRevision id pinned by this override. |
createdAt | string (date-time) | yes | |
createdBy | string | yes | |
id | string | yes | |
isActive | boolean | yes | |
mcpServicesAdd | array of string | yes | |
mcpServicesRemove | array of string | yes | |
orgId | string | yes | |
projectId | string | yes | |
systemPromptAppend | object or null | no | |
temperature | object or null | no | |
updatedAt | string (date-time) | yes | |
ProjectAgentOverrideResponseDtoDataArrayEnvelope
ProjectAgentOverrideResponseDtoDataEnvelope
ProjectKitAuthDto
| Property | Type | Required | Description |
|---|
tokenEnvVar | string | yes | Env-var key, within the resolved wallet, holding the token. |
walletName | string | yes | Wallet name that holds the auth token. |
ProjectKitDefinitionDto
| Property | Type | Required | Description |
|---|
compatibleTargets | array of string | yes | Tech-stack tags the kit is valid for. |
defaultForTargets | array of string | yes | Tech-stack tags for which the kit is pre-selected on a new project. |
description | string | no | One-line kit summary. |
displayName | string | yes | Human-readable kit name. |
enrichmentSkillSlug | string | no | Skill slug mounted so the agent knows how to use the kit. |
kitKind | ProjectKitKind | yes | How the kit is installed into the project. |
purpose | ProjectKitPurpose | yes | What the kit is, from the code-producing agent’s point of view. |
slug | string | yes | Kebab-case unique kit slug. |
source | ProjectKitSourceDto | yes | |
visibilityTier | RegistryVisibilityTier | no | Visibility tier of this kit in the registry. |
ProjectKitDefinitionDtoDataEnvelope
ProjectKitDefinitionDtoPaginatedEnvelope
ProjectKitKind
How the kit is installed into the project.
Type: one of "npm-dependency", "shadcn-registry"
ProjectKitPurpose
What the kit is, from the code-producing agent’s point of view.
Type: one of "component-library", "generic-dependency"
ProjectKitSourceDto
| Property | Type | Required | Description |
|---|
auth | ProjectKitAuthDto | no | Wallet-backed auth for a private registry/git source. |
baseColor | string | no | shadcn-registry source: base color palette. |
components | array of string | no | shadcn-registry source: component names to install (e.g. ["button", "card"]). |
gitUrl | string | no | git source: HTTPS git URL. |
iconLibrary | string | no | shadcn-registry source: icon library (lucide | radix). |
kind | ProjectKitSourceKind | yes | Source discriminator. |
package | string | no | npm-registry source: package name. |
packageName | string | no | git source: npm package name the repository publishes. |
ref | string | no | git source: tag / branch / commit. |
registryUrl | string | no | npm-registry source: custom registry URL (scoped/private). |
rsc | boolean | no | shadcn-registry source: enable React Server Components. |
scope | string | no | npm-registry source: npm scope the registry serves. |
style | string | no | shadcn-registry source: style preset. |
typescript | boolean | no | shadcn-registry source: use TypeScript. |
versionRange | string | no | npm-registry source: semver range. |
ProjectKitSourceKind
Source discriminator.
Type: one of "npm-registry", "git", "shadcn-registry"
ProjectModelStrategyBindingResponseDto
| Property | Type | Required | Description |
|---|
createdAt | string | yes | |
id | string | yes | |
orgId | string | yes | |
projectId | string | yes | |
strategy | ModelStrategyResponseDto | no | |
strategyId | string | yes | |
updatedAt | string | yes | |
ProjectModelStrategyBindingResponseDtoDataEnvelope
ProviderDeletionAffectedStrategyDto
| Property | Type | Required | Description |
|---|
name | string | yes | |
strategyId | string | yes | |
ProviderDeletionImpactResponseDto
| Property | Type | Required | Description |
|---|
affectedOrgDefaultCount | number | yes | Org default models (0 or 1) pointing at a removed model. Confirming the delete unsets it. |
affectedProjectIds | array of string | yes | Projects bound to an affected strategy. Deduplicated: a project bound to two affected strategies appears once. |
affectedRuleCount | number | yes | Every resolution RULE referencing a removed model, strategy rules and org-level rules alike. Confirming the delete removes them. |
affectedStrategies | array of ProviderDeletionAffectedStrategyDto | yes | |
canDelete | boolean | yes | Whether the delete is permitted at all. False for system providers. |
isSystem | boolean | yes | System providers are platform-managed and cannot be deleted; this is what canDelete reflects. |
modelCount | number | yes | Models removed along with the provider. |
providerId | string | yes | |
providerName | string | yes | |
ProviderDeletionImpactResponseDtoDataEnvelope
ProviderEgressUnavailableCode
PROVIDER_EGRESS_POLICY_UNAVAILABLE: the installation destination policy could not be read; nothing was sent.
Type: one of "PROVIDER_EGRESS_POLICY_UNAVAILABLE"
ProviderEgressUnavailableProblemDto
RFC 9457 problem document of an unreadable egress destination policy. code is closed.
| Property | Type | Required | Description |
|---|
actionableBy | ProblemActionableBy | no | Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed. |
code | ProviderEgressUnavailableCode | yes | PROVIDER_EGRESS_POLICY_UNAVAILABLE: the installation destination policy could not be read; nothing was sent. |
detail | string | no | Human-readable and specific to THIS occurrence. |
errors | array of ProblemFieldIssueDto | no | Field-level issues, when the refusal is about the request body. |
instance | string | no | URI reference identifying the occurrence — a request path, a run, a row. |
params | map of string or number or boolean | no | Safe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics. |
retry | ProblemRetry | no | What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known. |
status | number | yes | The HTTP status code, repeated in the body so a logged document is self-contained. |
title | string | yes | Short, human-readable, and STABLE for a given type. Never per-occurrence — that is detail. |
traceId | string | no | W3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not. |
type | string | yes | Absolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank. |
ProviderFetchBodyRefusedCode
PROVIDER_BASE_URL_NOT_ADMITTED: the provider baseUrl is outside the destinations the installation admits. PROVIDER_BASE_URL_REDIRECTED: the provider baseUrl answered with a redirect, which is never followed. REQUEST_VALIDATION_FAILED: the request body failed validation.
Type: one of "PROVIDER_BASE_URL_NOT_ADMITTED", "PROVIDER_BASE_URL_REDIRECTED", "REQUEST_VALIDATION_FAILED"
ProviderFetchBodyRefusedProblemDto
RFC 9457 problem document of a 422 from a provider probe. code is closed.
| Property | Type | Required | Description |
|---|
actionableBy | ProblemActionableBy | no | Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed. |
code | ProviderFetchBodyRefusedCode | yes | PROVIDER_BASE_URL_NOT_ADMITTED: the provider baseUrl is outside the destinations the installation admits. PROVIDER_BASE_URL_REDIRECTED: the provider baseUrl answered with a redirect, which is never followed. REQUEST_VALIDATION_FAILED: the request body failed validation. |
detail | string | no | Human-readable and specific to THIS occurrence. |
errors | array of ProblemFieldIssueDto | no | Field-level issues, when the refusal is about the request body. |
instance | string | no | URI reference identifying the occurrence — a request path, a run, a row. |
params | map of string or number or boolean | no | Safe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics. |
retry | ProblemRetry | no | What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known. |
status | number | yes | The HTTP status code, repeated in the body so a logged document is self-contained. |
title | string | yes | Short, human-readable, and STABLE for a given type. Never per-occurrence — that is detail. |
traceId | string | no | W3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not. |
type | string | yes | Absolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank. |
ProviderFetchRefusedCode
PROVIDER_BASE_URL_NOT_ADMITTED: the provider baseUrl is outside the destinations the installation admits. PROVIDER_BASE_URL_REDIRECTED: the provider baseUrl answered with a redirect, which is never followed.
Type: one of "PROVIDER_BASE_URL_NOT_ADMITTED", "PROVIDER_BASE_URL_REDIRECTED"
ProviderFetchRefusedProblemDto
RFC 9457 problem document of a provider baseUrl egress refusal. code is closed.
| Property | Type | Required | Description |
|---|
actionableBy | ProblemActionableBy | no | Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed. |
code | ProviderFetchRefusedCode | yes | PROVIDER_BASE_URL_NOT_ADMITTED: the provider baseUrl is outside the destinations the installation admits. PROVIDER_BASE_URL_REDIRECTED: the provider baseUrl answered with a redirect, which is never followed. |
detail | string | no | Human-readable and specific to THIS occurrence. |
errors | array of ProblemFieldIssueDto | no | Field-level issues, when the refusal is about the request body. |
instance | string | no | URI reference identifying the occurrence — a request path, a run, a row. |
params | map of string or number or boolean | no | Safe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics. |
retry | ProblemRetry | no | What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known. |
status | number | yes | The HTTP status code, repeated in the body so a logged document is self-contained. |
title | string | yes | Short, human-readable, and STABLE for a given type. Never per-occurrence — that is detail. |
traceId | string | no | W3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not. |
type | string | yes | Absolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank. |
ProviderOwnerSpaceKind
Owner tier: system (platform-owned) or org.
Type: one of "system", "org"
ProviderProbeResponseDto
| Property | Type | Required | Description |
|---|
models | array of ProbedModelDto | yes | Models discovered at the probed endpoint (server-side, before the provider is saved). |
ProviderProbeResponseDtoDataEnvelope
ProviderResponseDto
| Property | Type | Required | Description |
|---|
apiType | one of "openai-compatible", "anthropic", "google" | yes | |
authType | one of "bearer", "api-key-header", "none" | yes | |
baseUrl | string | yes | |
createdAt | string | yes | |
createdBy | string | yes | |
id | string | yes | |
isActive | boolean | yes | |
isSystem | boolean | yes | |
maxConcurrentRequests | number or null | no | Maximum concurrent requests allowed for this provider. Null = unlimited. |
models | array of ModelResponseDto | yes | |
name | string | yes | |
orgId | string or null | yes | The owning organisation, or null for a PLATFORM-owned provider (ownerSpaceKind = system). |
ownerSpaceKind | ProviderOwnerSpaceKind | yes | Owner tier: system (platform-owned) or org. |
slug | string | yes | |
ProviderResponseDtoDataArrayEnvelope
ProviderResponseDtoDataEnvelope
ProviderTestResponseDto
| Property | Type | Required | Description |
|---|
modelCount | number | yes | Number of models returned by provider /models endpoint. |
ProviderTestResponseDtoDataEnvelope
ProviderWriteRefusedCode
PROVIDER_BASE_URL_NOT_ADMITTED: the provider baseUrl is outside the destinations the installation admits. REQUEST_VALIDATION_FAILED: the request body failed validation.
Type: one of "PROVIDER_BASE_URL_NOT_ADMITTED", "REQUEST_VALIDATION_FAILED"
ProviderWriteRefusedProblemDto
RFC 9457 problem document of a 422 from a provider write. code is closed.
| Property | Type | Required | Description |
|---|
actionableBy | ProblemActionableBy | no | Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed. |
code | ProviderWriteRefusedCode | yes | PROVIDER_BASE_URL_NOT_ADMITTED: the provider baseUrl is outside the destinations the installation admits. REQUEST_VALIDATION_FAILED: the request body failed validation. |
detail | string | no | Human-readable and specific to THIS occurrence. |
errors | array of ProblemFieldIssueDto | no | Field-level issues, when the refusal is about the request body. |
instance | string | no | URI reference identifying the occurrence — a request path, a run, a row. |
params | map of string or number or boolean | no | Safe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics. |
retry | ProblemRetry | no | What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known. |
status | number | yes | The HTTP status code, repeated in the body so a logged document is self-contained. |
title | string | yes | Short, human-readable, and STABLE for a given type. Never per-occurrence — that is detail. |
traceId | string | no | W3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not. |
type | string | yes | Absolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank. |
ProviderWriteUnavailableCode
PROVIDER_EGRESS_POLICY_UNAVAILABLE: the installation destination policy could not be read; nothing was sent. PROVIDER_TIER_POLICY_UNAVAILABLE: the organization credential policy could not be read.
Type: one of "PROVIDER_EGRESS_POLICY_UNAVAILABLE", "PROVIDER_TIER_POLICY_UNAVAILABLE"
ProviderWriteUnavailableProblemDto
RFC 9457 problem document of an unreadable policy on a provider write. code is closed.
| Property | Type | Required | Description |
|---|
actionableBy | ProblemActionableBy | no | Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed. |
code | ProviderWriteUnavailableCode | yes | PROVIDER_EGRESS_POLICY_UNAVAILABLE: the installation destination policy could not be read; nothing was sent. PROVIDER_TIER_POLICY_UNAVAILABLE: the organization credential policy could not be read. |
detail | string | no | Human-readable and specific to THIS occurrence. |
errors | array of ProblemFieldIssueDto | no | Field-level issues, when the refusal is about the request body. |
instance | string | no | URI reference identifying the occurrence — a request path, a run, a row. |
params | map of string or number or boolean | no | Safe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics. |
retry | ProblemRetry | no | What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known. |
status | number | yes | The HTTP status code, repeated in the body so a logged document is self-contained. |
title | string | yes | Short, human-readable, and STABLE for a given type. Never per-occurrence — that is detail. |
traceId | string | no | W3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not. |
type | string | yes | Absolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank. |
PublishAgentRevisionDto
| Property | Type | Required | Description |
|---|
expectedDraftUpdatedAt | string | yes | Current draft concurrency token. Publication fails if another author changed the draft. |
idempotencyKey | string | yes | Caller-stable key for retry-safe publication of this exact draft. |
releaseNotes | string | no | |
sourceCommit | string | no | Optional source commit retained as provenance only. |
sourceVersion | string | no | Optional source-system version retained as provenance only. |
RegistryVisibilityTier
Visibility tier of this kit in the registry.
Type: one of "system", "system-shareable", "org", "external"
RenderAgentRunContextRequestDto
| Property | Type | Required | Description |
|---|
agentSlug | string | yes | |
changeUnitId | string or null | no | |
correlationId | string or null | no | |
deliverableSpecRef | string or null | no | |
hasRetryContext | boolean | no | When true, the renderer seeds retry-oriented context pointers so the session knows /workspace/deliverables/pages/ is pre-populated. |
inputArtifacts | array of InputArtifactEntryDto | no | Files materialised into the workspace from upstream artifact-store versions. Surfaced in AGENTS.md # Inputs so the agent can read them directly without first ls'ing the slot. |
jobRunId | string or null | no | |
mounts | array of MountEntryDto | no | |
priorAttemptRef | string or null | no | |
projectId | string | yes | |
role | string | yes | The role this invocation takes: the key of a role-capability profile some installed biome contributes. An OPEN vocabulary (contracts 0.46 deleted the closed AGENT_RUN_ROLES list), so the DTO validates the GRAMMAR only — the same RESOURCE_ROLE_PATTERN the kernel's AgentRunRoleSchema uses. A well-formed role no visible biome declares is refused by RoleCapabilityRegistryService.getByRole, which names the declared roles. |
sessionId | string or null | no | Interactive-surface analogue of workflowRunId. Set by workspace-proxy when composing mount sources for an interactive session (chat / brainstorming) so contextJson.invocation.sessionId is populated instead of runId. Pipeline flows leave this null. |
workflowInputs | object | no | Workflow job inputs (passed through from the DSL with: block). |
workflowRunId | string or null | no | |
workingFiles | array of WorkingFileEntryDto | no | Working files the platform materialises before the agent's first turn. Each entry's absolute path is added to authority.mayWriteWorkspace so the agent may write to it; the full structured list is emitted on context.json.workingFiles for agent introspection. |
RenderAgentRunContextResponseDto
| Property | Type | Required | Description |
|---|
agentsMd | string | yes | Full markdown body of Xema's AGENTS.md, written verbatim to the runtime-config mount (/run/xema-runtime-config/AGENTS.md), never to /workspace. |
appliedOverlays | array of string | yes | |
contextJson | object | yes | Parsed /workspace/context.json payload. Serialized to JSON at write time. |
mountPlan | RenderedMountPlanDto | yes | |
renderedContextHash | string | yes | |
resolvedAgentSnapshotHash | string | yes | |
systemOverlay | string | yes | Markdown body written verbatim to the runtime-config mount (/run/xema-runtime-config/system-overlay.md), never to /workspace. The runtime bridge plugin appends it to the LLM system prompt so the agent sees the AWP base layer + deliverable contract + authority + retry context as platform-level context, not project-level prose. |
toolAllowlist | array of string | yes | |
RenderAgentRunContextResponseDtoDataEnvelope
RenderedMountPlanDto
RescopeDto
| Property | Type | Required | Description |
|---|
targetProjectId | string | no | Project that becomes the new owner. Required when targetScope = project; rejected for any other target. |
targetScope | ScopeSource | yes | Target owner tier. Must be a legal promotion from the row's current tier (user → project|org, project → org). Demotion and moves into/out of biome/system are rejected with 400. |
ResolveFullResponseDto
| Property | Type | Required | Description |
|---|
description | string or null | no | Agent description. |
displayName | string | yes | Agent display name. |
executionMode | AgentExecutionMode | yes | Execution mode (primary, subagent). |
hasProjectOverride | boolean | yes | Whether a project-level override was applied. |
identityVersion | number | yes | Definition identity version. |
intrinsicSubAgentPins | map of string | yes | Definition PIN per intrinsic sub-agent slug: the content address of the agent definition that slug resolves to in this org/project scope, folded over its extends chain — the same value the resolver stamps as AgentNodeDto.agentContentHash. It reaches the warm-pool static template fingerprint, so editing an intrinsic delegate's prompt retires the pods primed against the previous one instead of serving it silently for the whole idle TTL. A slug with no active definition in scope is ABSENT from the map rather than carrying a substituted value: absent is the pre-pin identity, and an invented one would name a definition that does not exist. |
intrinsicSubAgents | array of string | yes | Sub-agent slugs the primary may delegate to (parsed from its source manifest's permission.task map). These are intrinsic to the agent's design and form the FLOOR of the runtime sub-agent set — workspace/session/step bindings layer on top but never remove from this list. |
intrinsicTools | array of string | yes | Built-in OpenCode tool keys the agent may invoke directly (parsed from its source manifest's permission.<toolKey> map, excluding task). Tools like edit / write / read / bash / glob / grep / webfetch / question. Separate from toolProfiles which carries the MCP-served catalog bindings. |
mcpServices | array of string | yes | Effective MCP service keys after project override merge. |
model | ResolvedModelStubDto | yes | Resolved LLM model. |
modelLane | string or null | yes | The model LANE this agent routes on; null when the agent names none. An OPEN vocabulary: every key is declared by a model-lane contribution, so there is no closed set to publish here. GET /work-kinds?kind=model-lane enumerates what this organisation may use. Distinct from AgentRunRole (permissions). |
modelSelection | ResolvedModelSelectionDto | yes | Full LLM routing record (modelId + providerSlug + opencodeProviderId + temperature + contextWindow). Carries the same data as model plus the worker-side opencodeProviderId. Decoupled from structuralConfigHash on purpose. |
resolvedConfigHash | string | yes | SHA-256 hash of the canonical resolved config. Stable identity fingerprint of the full agent payload at resolve time — used by snapshot integrity checks, mcp-gateway attribution, and agent-run-context render audit. agent-session resume does NOT gate on this (resume is best-effort with a field-level drift report on the SessionResumed event); workflow runs are deterministic and rely on the snapshot identity differently. |
skills | array of ResolvedSkillEntryDto | yes | Skills resolved (system-wide + base + pinned). |
slug | string | yes | Agent definition slug. |
snapshotId | string or null | no | Frozen resolved snapshot ID for this top-level resolution. |
systemPrompt | string | yes | Merged system prompt (base + project override append). |
temperature | number or null | no | Effective temperature. null defers to the engine/model default. |
toolProfiles | array of ResolvedAgentToolProfileDto | yes | Merged tool profiles. |
workspace | AgentWorkspaceDto or null | no | The agent's compiled workspace block — mount layout, persist paths, env and output surface — merged from its SELF-WRAP workspace manifest at biome discovery and stored verbatim on the agent. null for an agent that ships no self-wrap manifest: a sub-agent-only leaf is never launched as an interactive session and needs no user-data layout. |
ResolveFullResponseDtoDataEnvelope
ResolveModelForInvocationDto
| Property | Type | Required | Description |
|---|
agentSlug | string | no | The resolving agent — the Matrix agent dimension. |
modelCapability | ModelCapability | no | A modality this invocation REQUIRES — the Matrix modelCapability dimension, so one rule can route every vision-needing invocation to a multimodal model without pinning a provider. It is ALSO a requirement on whatever the resolution selects: a resolved model that does not provide it is refused with 422 MODEL_CAPABILITY_UNSUPPORTED rather than returned, and no other model is substituted. Closed kernel set; an unknown value is a 400. |
modelId | string | no | ABOVE-RULES concrete-model override. Pins this credentialed model and skips the strategy cascade. |
modelLane | string | no | The model lane this invocation runs in — the Matrix modelLane CONTEXT dimension. Lane rules decide; it is not an override. When both this and preferredModelLane are supplied, this wins. |
preferredModelLane | string | no | Per-session "smartness" preference — the Matrix modelLane MATCHED dimension, NOT an above-rules override. It populates the resolution context so a tier-injected managed rule can CLAMP it, and an unmapped kind matches no lane rule. Ignored when an explicit modelLane/modelId override is present. An AGENT-axis work kind: the kernel core plus every key a biome or this organisation has declared. Lower-kebab; an undeclared value is a 400 so a typo never silently lands on the no-match path — the same posture purpose has one field up. |
providerSlug | string | no | Disambiguates modelId when one model id is credentialed under two providers. Optional partner to modelId. |
purpose | string | no | Non-agent invocation purpose — the Matrix purpose dimension, and the MACHINE half of the contributed work-kind vocabulary. Must be a declared machine-axis work kind (GET /work-kinds?axis=machine); an undeclared value is a 400 so a typo never silently lands as the default rule's match path. |
skillSlug | string | no | The active/launched skill — the Matrix skill dimension. Free-form: the skill vocabulary is open and owned by skill-registry-api, so an unknown value simply matches no rule rather than being refused. |
space | string | yes | The Space this invocation happens in, as a canonical xema:// SpaceRef. xema://orgs/<orgId> for an org-scoped invocation (a Canopy turn, a memory summarization, an org-layer session); xema://orgs/<orgId>/projects/<projectId> when the invocation genuinely belongs to a project. The org segment MUST match the calling context's org — it selects a Space inside the tenant the token already proved, and never widens it. Only the project form contributes the Matrix's project dimension; an org-scoped resolve carries no project dimension at all, so a project selector rule cannot match it. |
stageKey | string | no | The Matrix stage dimension. Omit it when the call has no stage: the resolve then runs on the lane rules and the org default only, and no stage rule can match. (A caller that passes its agent slug here is treated the same: the resolver drops the dimension when the two are equal.) |
ResolvedAgentKernelResponseDto
| Property | Type | Required | Description |
|---|
displayName | string | yes | |
hasProjectOverride | boolean | no | |
mcpServices | array of string | yes | |
modelLane | string or null | yes | The model LANE this agent routes on — rules select on it. An OPEN vocabulary: every key is declared by a model-lane contribution, and GET /work-kinds?kind=model-lane enumerates what this organisation may use. Distinct from AgentRunRole (permissions). |
slug | string | yes | |
source | string | yes | |
systemPrompt | string | yes | |
temperature | number or null | no | null defers to the engine/model default. |
ResolvedAgentKernelResponseDtoDataEnvelope
ResolvedAgentModelResponseDto
| Property | Type | Required | Description |
|---|
agentSlug | string | yes | |
modelDisplayName | string | yes | |
modelId | string | yes | |
modelRecordId | string | yes | |
providerName | string | yes | |
providerSlug | string | yes | |
source | one of "project", "user", "org", "strategy", "default" | yes | |
temperature | number or null | no | |
ResolvedAgentModelResponseDtoDataEnvelope
ResolvedAgentResponseDto
| Property | Type | Required | Description |
|---|
abilities | array of string | yes | Special-ability CapabilityRefs granted on top of the reach tier; unioned into the auto-grant manifest (so they also appear in requiredCapabilities). Always present (defaults to []). |
agentContentHash | string or null | no | SHA-256 of the immutable AgentRevision content. Null only for mutable Studio drafts. |
agentRevisionId | string or null | no | Immutable AgentRevision id selected at published resolution. Null only for mutable Studio drafts. |
capability | AgentCapabilityLayerDto | yes | Capability envelope applied to the whole composition at runtime. Always present. |
channelVersion | number | no | |
compiledLaunchPlanHash | string or null | no | Content address of the prepared immutable session launch plan. |
displayName | string | yes | |
durableWorkspace | DurableWorkspaceRefDto or null | no | Resolved durable shared-workspace binding — present only when the agent declares one. When present, agent-session-api stores workspaceRef on Session.workspaceRef so the session attaches to the SHARED, workspaceRef-keyed durable workspace (multi-pod WorkspaceSharingPolicy.Shared) instead of a private per-session one. Absent ⇒ a private per-session workspace. |
internetEgressCeiling | WorkerInternetEgress | no | Ceiling on whether the worker pod running this agent may open sockets to the public internet. A ceiling the agent ACCEPTS, never a grant: the effective mode is the most restrictive of the deployment, the owning Space, this value and the session, so open here widens nothing. RESOLVED: the agent's own declaration joined along its extends chain, so a child never widens its base. ABSENT when nothing in the chain declares one — there is no default. |
preparationGenerationId | string or null | no | |
reachTier | AgentReachTier | yes | The root composition agent's reach-tier permission ceiling (Chunk 2). A composition row with no explicit tier resolves to as-owner (the default), so this field is always populated. agent-session-api persists it onto the session and stamps it onto ExecutionContext.reachTier so authorization-api applies the tier constraint inside the verdict. |
releaseSetId | string | no | |
requiredCapabilities | array of string | yes | Chunk 3 — the deduped, sorted union of every CapabilityRef the agent needs to drive its armed tools + skills across the whole sub-agent tree (the auto-grant-from-arming manifest). Derived at resolve time from the MCP catalog (tools) + skill frontmatter (skills). Empty when nothing armed declares a capability — the default-safe no-op. The capability-analysis endpoint returns the same union plus the unresolved-ref diagnostics. |
resourceId | string | yes | Stable Agent AuthoredResource identity selected by resolution. |
root | AgentNodeDto | yes | Resolved root node — Agent fully revision-pinned, recursive children resolved. |
runtimeTemplateHash | string or null | no | Hash of the prepared plan RuntimeTemplateKey. |
scope | ScopeSource | yes | |
sessionLifecycle | AgentSessionLifecycle or null | no | The resolved agent's declared default session lifecycle (ephemeral|persistent), or null when it declares no preference. agent-session-api inherits this as the session lifecyclePolicy unless the launch passes an explicit override; null ⇒ agent-session applies its own ephemeral default last. |
slug | string | yes | |
standingSession | StandingSessionRefDto or null | no | Resolved standing-session pin — present only when the agent declares one. When present, agent-session-api does a (orgId, projectId, pinKey) get-or-create at POST /sessions and ADOPTS a non-terminal existing session instead of minting a fresh one. Absent ⇒ a fresh session per launch. |
version | string | yes | Server-generated immutable revision number. |
workspace | AgentWorkspaceDto | no | Resolved workspace-layout config — present when the source composition declared a workspace block. The ${input.x} interpolation in env values is already resolved here. The workspace pipeline projects this onto the run's WorkspaceSpec. |
workspaceSharing | WorkspaceSharingPolicy | yes | Resolved workspace-sharing policy — whether a session launch of this agent may POOL onto a compatible running pod as a new thread (shareable) or must always run in its own isolated worker (isolated). Always populated: a row with no stored value resolves to isolated (WORKSPACE_SHARING_DEFAULT). agent-session-api reads this to gate session-thread pooling at launch. |
ResolvedAgentResponseDtoDataEnvelope
| Property | Type | Required | Description |
|---|
allowedTools | array of string | yes | Explicitly allowed tools. |
catalogId | string or null | no | Catalog ID for the tool source. |
isOptional | boolean | yes | Whether this tool profile is optional. |
mcpServiceKey | string | yes | MCP service key. |
toolGroups | array of string | yes | Tool groups enabled for this service. |
ResolvedConfigSnapshotResponseDto
| Property | Type | Required | Description |
|---|
agentSlug | string | yes | Agent slug captured by this snapshot. |
canonicalizationVersion | number | yes | Canonicalization version. |
createdAt | string (date-time) | yes | Snapshot creation timestamp. |
id | string | yes | Snapshot ID. |
invocationId | string | yes | Invocation ID associated with this snapshot. |
payload | object or null | no | Inline snapshot payload stored in the database. |
payloadObjectKey | object or null | no | External payload object key when the snapshot is offloaded from the database. |
resolvedConfigHash | string | yes | Resolved config hash captured by this snapshot. |
snapshotSchemaVersion | number | yes | Snapshot schema version. |
ResolvedConfigSnapshotResponseDtoDataEnvelope
ResolvedDelegatedApertureDto
| Property | Type | Required | Description |
|---|
agentKey | string | yes | |
agentRef | DelegatedAgentRefDto | yes | |
authoredPath | array of DelegatedAgentSubjectDto | yes | |
constraints | DelegatedApertureConstraintsDto | yes | |
delegateAgentKeys | array of string | yes | Every entry this authority may delegate to (all routes, not only the canonical parent), sorted. |
depth | number | yes | |
parentAgentKey | string or null | yes | |
reachTier | one of "sandbox", "as-owner", "connected", "full" | yes | |
ResolvedEmbeddingCommitmentDto
| Property | Type | Required | Description |
|---|
commitmentId | string | yes | |
dimension | number | yes | |
migration | MigrationTargetDto or null | no | Present only when state = migrating. Consumers must dual-write to both the current model/dimension and this target. |
modelId | string | yes | |
providerApiType | string | yes | |
providerBaseUrl | string | yes | |
providerId | string | yes | |
providerIsSystem | boolean | yes | |
providerName | string | yes | |
providerSlug | string | yes | |
state | one of "proposed", "active", "migrating" | yes | |
ResolvedEmbeddingCommitmentDtoDataEnvelope
ResolvedModelDecisionDto
| Property | Type | Required | Description |
|---|
matchedDimensions | array of string | yes | Dimensions the winning rule matched on. |
matchedRuleId | string or null | no | Id of the rule that won; null when the implicit default fallback was used. |
model | ResolvedModelRefDto | yes | The resolved model reference. |
overridden | boolean | yes | True when a run/realtime override pre-empted the matrix. |
reason | string | yes | Human-readable win reason. |
ResolvedModelRefDto
| Property | Type | Required | Description |
|---|
kind | one of "concrete" | yes | Always concrete: a rule targets a model. |
modelId | string or null | no | Concrete model id. |
providerSlug | string or null | no | Provider slug pinned by the rule. |
reasoningEffort | string or null | no | |
temperature | number or null | no | |
ResolvedModelSelectionDto
| Property | Type | Required | Description |
|---|
capabilities | array of string | no | Model capabilities (e.g. vision). |
contextWindow | number or null | no | Context window (tokens). |
modelId | string or null | no | |
opencodeProviderId | string or null | no | OpenCode provider ID (worker-side routing). |
providerFamily | string | no | llm-gateway provider family (open vocabulary). OMITTED when unknown; an absent value means unknown. |
providerSlug | string or null | no | |
source | one of "matrix", "override", "org_default", "unresolved" | yes | Source of the model resolution. |
temperature | number or null | no | null defers to the engine/model default. |
ResolvedModelStubDto
| Property | Type | Required | Description |
|---|
modelId | string or null | no | Resolved model ID (null when unresolved). |
providerSlug | string or null | no | Provider slug (null when unresolved). |
source | one of "matrix", "override", "org_default", "unresolved" | yes | Source of the model resolution. |
temperature | number or null | no | Temperature for the model. null defers to the engine/model default. |
ResolvedPhaseConfigDto
| Property | Type | Required | Description |
|---|
contextWindow | number or null | no | The model's TOTAL token budget (prompt + reasoning + answer). Never an input cap. |
decision | ResolvedModelDecisionDto or null | no | Model Resolution Matrix win-reason trace — which rule won and why. Null only for the persisted per-agent override path. |
llmModelId | string | yes | The registry model record id (LlmModel.id) the resolution selected — the id a rule or the org default targets. |
maxInputTokens | number or null | no | A declared cap on the PROMPT alone, independent of the window. Null = none declared; only the window bounds the prompt. |
maxOutputTokens | number or null | no | Declared ceiling on one answer. Null = UNKNOWN — never "unlimited", never "the rest of the window". |
modelDisplayName | string | yes | |
modelId | string | yes | The provider's own model id. |
providerApiType | string | yes | |
providerBaseUrl | string | yes | |
providerFamily | string | no | llm-gateway provider family of the provider (open vocabulary). OMITTED when unknown; an absent value means unknown. |
providerId | string | yes | |
providerName | string | yes | |
reasoningEffort | string or null | no | Reasoning effort the resolution path selected, forwarded verbatim to the provider. null defers to the model default — never a substituted value. |
retirement | ModelRetirementSubstitutionDto | no | Present only when the picked model was retired and its successor was served instead; decision still names the pick. |
source | string | yes | |
stageKey | string | yes | |
temperature | number or null | no | null defers to the engine/model default. |
ResolvedPhaseConfigDtoDataEnvelope
ResolvedSkillEntryDto
| Property | Type | Required | Description |
|---|
displayName | string or null | no | Display name. |
key | string | yes | Skill key/slug. |
source | one of "system", "base" | yes | How this skill was selected (resolution layer). |
ResolvedStageModelConfigDto
| Property | Type | Required | Description |
|---|
apiType | string | yes | Wire protocol the provider speaks, as stored on the provider row. |
baseUrl | string | yes | Provider base URL the invocation would call. |
decision | ResolvedModelDecisionDto or null | no | Model Resolution Matrix win-reason trace — which rule won and why. Null only for the persisted per-agent override path. |
modelId | string | yes | Provider-native model id this stage currently routes to. |
providerId | string | yes | Registry id of the provider serving the model. |
providerName | string | yes | Provider display name. |
providerSlug | string | yes | Provider slug. |
reasoningEffort | string or null | no | Reasoning effort this stage currently resolves to. null defers to the model default. |
retirement | ModelRetirementSubstitutionDto | no | Present only when the stage's picked model was retired and its successor is served instead; decision still names the pick. |
source | ModelResolutionSource | yes | Which resolution path produced this selection. |
temperature | number or null | no | null defers to the engine/model default. |
| Property | Type | Required | Description |
|---|
allowedTools | array of string | yes | |
catalogId | object or null | no | |
isOptional | boolean | yes | |
mcpServiceKey | string | yes | |
source | ScopeSource | yes | Owner tier that resolved this profile. |
toolGroups | array of string | yes | |
RestoreAgentRevisionDto
| Property | Type | Required | Description |
|---|
expectedDraftUpdatedAt | string | yes | Current draft concurrency token. Restore fails if another author changed the draft. |
RetirementModelRefDto
| Property | Type | Required | Description |
|---|
modelId | string | yes | The provider's model id. |
recordId | string | yes | The model record id (LlmModel.id). |
RevisionPinDto
| Property | Type | Required | Description |
|---|
holder | RevisionPinHolder | yes | What may be DONE with this pin. Only mutable pins are movable; immutable needs the holder republished, and provenance records what happened and is never touched. |
holderId | string | yes | |
holderKind | string | yes | Which kind of consumer holds it, e.g. project-agent-override. |
label | string or null | yes | |
resourceId | string | yes | The Agent identity that owns the revision. |
revisionId | string | yes | |
RevisionPinDtoDataArrayEnvelope
RevisionPinHolder
What may be DONE with this pin. Only mutable pins are movable; immutable needs the holder republished, and provenance records what happened and is never touched.
Type: one of "mutable", "immutable", "provenance"
RevisionPinMovePlanDto
| Property | Type | Required | Description |
|---|
immovable | array of RevisionPinDto | yes | Pins that record what DID run. Never moved: moving one would not re-point a consumer, it would rewrite history. |
move | array of RevisionPinDto | yes | Pins that were moved. |
republishRequired | array of RevisionPinDto | yes | Pins embedded inside a published revision. Republish the holder to change them — rewriting one would mutate an immutable revision. |
RevisionPinMovePlanDtoDataEnvelope
RoleCapabilityProfileDto
| Property | Type | Required | Description |
|---|
mayEditRepos | one of "never", "when-granted" | yes | Whether the role may edit repositories |
mayWriteKnowledgeBase | boolean | yes | Knowledge-base write capability |
role | string | yes | AgentRunRole slug — kebab-case |
surface | one of "pipeline-run", "agent-session", "gate-review" | yes | Where this role may run |
writePolicy | one of "read-only", "own-pages-only", "full-write" | yes | Workspace write policy |
RoleCapabilityProfileDtoDataEnvelope
RoleCapabilityProfileDtoPaginatedEnvelope
RollbackAgentRevisionDto
| Property | Type | Required | Description |
|---|
expectedChannelVersion | number | yes | |
priorReleaseSetId | string | yes | Owner-fenced immutable ReleaseSet whose stable state should be replayed. |
ScopeSource
Type: one of "system", "biome", "org", "project", "user"
SetModelRetirementDto
| Property | Type | Required | Description |
|---|
retiresAt | string (date-time) | yes | The retirement instant (ISO 8601). From this instant on the model is never served as picked. |
successorModelId | string or null | no | The model record id (LlmModel.id) resolutions use instead from retiresAt. Must be served to the organisation, must not be the model itself, and its own successor chain must reach a model not retired at retiresAt without cycling. Omit or null: the model is refused from retiresAt. |
SetOrgModelDefaultDto
| Property | Type | Required | Description |
|---|
modelId | string | yes | The registry model record id (LlmModel.id) the organisation routes to when nothing more specific applies. Must be served by an active provider. |
StandingSessionRefDto
| Property | Type | Required | Description |
|---|
pinKey | string | yes | Stable key identifying the standing session for a purpose/biome, e.g. {biomeId}:{purpose}. Two launches of the same agent within the same (orgId, projectId) that resolve this key reuse ONE session row. |
StartEmbeddingMigrationDto
| Property | Type | Required | Description |
|---|
acknowledgeReprocessing | boolean | yes | The user must explicitly tick a checkbox acknowledging that all existing vectors will be reprocessed. Sent as true; the backend rejects the migration if false. |
targetModelId | string | yes | Target embedding model id. |
targetProviderId | string | yes | Target provider id. |
typedOrgSlug | string | yes | Required confirmation: the org slug typed by the user. The backend rejects the migration if this does not match the actual org slug. |
StrategyDeletionAffectedProjectDto
| Property | Type | Required | Description |
|---|
projectId | string | yes | Project whose binding cascade-deletes. |
StrategyDeletionImpactResponseDto
| Property | Type | Required | Description |
|---|
affectedProjects | array of StrategyDeletionAffectedProjectDto | yes | |
boundProjectCount | number | yes | Projects explicitly bound to this strategy. Their bindings cascade-delete. |
displayName | string | yes | |
strategyId | string | yes | |
StrategyDeletionImpactResponseDtoDataEnvelope
SurfaceKindDto
| Property | Type | Required | Description |
|---|
biomeId | string | no | Present only for biome-contributed kinds. |
displayName | string | yes | Human-readable display name. |
kind | string | yes | Fully-namespaced kind slug the FE registry keys by. A first-party kind is its bare enum value (e.g. markdown); a biome kind is <biomeId>:<kind>. |
payloadSchema | object | yes | JSON Schema for the surface payload (passed through verbatim; the FE derives its generic renderer from it). |
source | SurfaceKindSource | yes | Provenance of this kind. |
summary | string | yes | What the surface shows and when to open it. |
version | number | yes | Monotonic payload schema version. |
SurfaceKindListDto
SurfaceKindListDtoDataEnvelope
SurfaceKindSource
Provenance of this kind.
Type: one of "first-party", "biome"
SyncModelsResponseDto
| Property | Type | Required | Description |
|---|
discoveredCount | number | yes | Total number of models discovered from provider /models. |
existingCount | number | yes | Number of discovered models already registered in llm-model table. |
existingModelIds | array of string | yes | Model IDs that were already present before this sync. |
modelIds | array of string | yes | Model IDs newly inserted during this sync. |
skippedCount | number | yes | Number of discovered models skipped because required metadata was missing. |
skippedModelIds | array of string | yes | Model IDs skipped due to missing required metadata (e.g. contextWindow). |
syncedCount | number | yes | Number of new models inserted into llm-model table. |
SyncModelsResponseDtoDataEnvelope
| Property | Type | Required | Description |
|---|
agentSlug | string | yes | |
allowedTools | array of string | yes | |
biomeId | string or null | no | Biome id when source='biome', otherwise null. |
catalogId | string or null | no | |
createdAt | string (date-time) | yes | |
forkedFrom | string or null | no | Origin reference (<source>:<biomeId|"">:<key>) when this row was forked from a biome/system tool profile. |
id | string | yes | |
isActive | boolean | yes | |
isOptional | boolean | yes | |
mcpServiceKey | string | yes | |
orgId | string or null | no | |
ownerUserId | string or null | no | Owning user id when source='user', otherwise null. |
projectId | string or null | no | |
source | ScopeSource | yes | Owner tier — the kernel's SpaceKind, narrowed to the five tiers this registry owns. The wire schema keeps the name ScopeSource. Resolution precedence at read time: user > project > org > biome > system. |
toolGroups | array of string | yes | |
updatedAt | string (date-time) | yes | |
version | number | yes | |
Type: one of "read", "write", "exec", "web", "mcp", "delegate"
UnresolvedLaneDto
| Property | Type | Required | Description |
|---|
agentSlug | string | yes | Slug of the agent whose model cannot be resolved. |
message | string | yes | Human-readable statement of what is missing. |
modelLane | string or null | yes | The model lane the agent asks for; null when it asks for none (only lane-less rules and the organisation default can answer it). |
reason | ModelResolutionErrorCode | yes | The code a launch of this agent is refused with — the same value the resolve doors put on the refusal. |
| Property | Type | Required | Description |
|---|
providerKind | string | yes | |
resourceId | string | yes | |
toolName | string | no | |
UpdateAgentDraftDto
| Property | Type | Required | Description |
|---|
abilities | array of string | no | Special-ability CapabilityRefs granted on top of the reach tier; unioned into the auto-grant manifest. |
capability | AgentCapabilityLayerDto | no | |
description | string | no | |
displayName | string | no | |
durableWorkspace | DurableWorkspaceRefDto or null | no | Durable shared-workspace binding. Omitted leaves the stored value unchanged; set { workspaceRef } to attach every session this agent launches to ONE durable shared workspace; pass null to clear it (the agent reverts to a private per-session workspace). |
expectedDraftUpdatedAt | string | yes | Current draft concurrency token. The update fails on stale writes. |
internetEgressCeiling | WorkerInternetEgress or null | no | Ceiling on whether the worker pod running this agent may open sockets to the public internet. A ceiling the agent ACCEPTS, never a grant: the effective mode is the most restrictive of the deployment, the owning Space, this value and the session, so open here widens nothing. Omitted leaves the stored value unchanged; null CLEARS it, so the agent states nothing again. |
reachTier | AgentReachTier | no | The agent's permission ceiling. Omitted leaves the stored value unchanged; a NULL stored value reads as as-owner. |
root | AgentNodeDto | no | |
sessionLifecycle | AgentSessionLifecycle | no | The agent's default session lifecycle (ephemeral|persistent). Omitted leaves the stored value unchanged; a NULL stored value means the agent declares no preference. |
standingSession | StandingSessionRefDto or null | no | Standing-session pin. Omitted leaves the stored value unchanged; set { pinKey } to make every launch reuse ONE session keyed by pinKey; pass null to clear the pin (the agent stops being a standing agent). |
workspace | AgentWorkspaceDto | no | Authored workspace-layout config — persist-paths + per-slot overrides, env vars, output surface. |
workspaceSharing | WorkspaceSharingPolicy | no | Whether a session launch may POOL onto a compatible running pod (shareable) or must always run isolated (isolated). Omitted leaves the stored value unchanged; the column default is isolated. |
UpdateAgentKernelDto
| Property | Type | Required | Description |
|---|
avatarSeed | string | no | |
avatarStyle | string | no | |
description | string | no | |
displayName | string | no | |
isActive | boolean | no | |
mcpServices | array of string | no | |
modelLane | string | no | The model LANE this agent routes on — rules select on it. An OPEN vocabulary: every key is declared by a model-lane contribution, and GET /work-kinds?kind=model-lane enumerates what this organisation may use. Distinct from AgentRunRole (permissions). |
skills | array of string | no | |
systemPrompt | string | no | |
temperature | number | no | |
UpdateCodeStandardDto
| Property | Type | Required | Description |
|---|
content | string | no | |
isActive | boolean | no | |
name | string | no | |
UpdateModelDto
| Property | Type | Required | Description |
|---|
capabilities | array of string | no | Model capabilities |
contextWindow | number | no | Context window (max input tokens). Recorded with source operator; the provider sync never overwrites an operator value. Not nullable — a model always has a context window. Omit to leave it unchanged. |
displayName | string | no | Human-friendly display name |
embeddingDimension | number | no | Embedding vector dimension (for embedding models only) |
isActive | boolean | no | Whether the model is active and available for selection |
maxInputTokens | number or null | no | Max prompt (input) tokens, when the service caps input below the context window. A positive integer is recorded with source operator. null clears the fact to unknown (value and source). Omit to leave it unchanged. |
maxOutputTokens | number or null | no | Max generation/output tokens. A positive integer is recorded with source operator and the provider sync never overwrites it. null clears the fact to unknown (value and source), so the next provider sync may fill it again. Omit to leave it unchanged. |
modalities | array of ModelModality | no | Closed-enum INPUT modalities the model accepts — an operator declaration recorded with source operator, which no sync overwrites. An empty array clears the fact to unknown so the next sync may fill it. Omit to leave it unchanged. |
supportsAudioInput | boolean or null | no | The model accepts audio inputs. true/false is recorded with source operator, which no sync overwrites. null clears the fact to unknown so the next sync may fill it. Omit to leave it unchanged. |
supportsJsonMode | boolean or null | no | The model supports structured JSON output. true/false is recorded with source operator, which no sync overwrites. null clears the fact to unknown so the next sync may fill it. Omit to leave it unchanged. |
supportsPdfInput | boolean or null | no | The model accepts PDF inputs. true/false is recorded with source operator, which no sync overwrites. null clears the fact to unknown so the next sync may fill it. Omit to leave it unchanged. |
supportsPromptCaching | boolean or null | no | The model supports prompt caching. true/false is recorded with source operator, which no sync overwrites. null clears the fact to unknown so the next sync may fill it. Omit to leave it unchanged. |
supportsReasoning | boolean or null | no | The model performs explicit reasoning. true/false is recorded with source operator, which no sync overwrites. null clears the fact to unknown so the next sync may fill it. Omit to leave it unchanged. |
supportsTools | boolean or null | no | The model exposes function/tool calling. true/false is recorded with source operator, which no sync overwrites. null clears the fact to unknown so the next sync may fill it. Omit to leave it unchanged. |
supportsVision | boolean or null | no | The model accepts image inputs. true/false is recorded with source operator, which no sync overwrites. null clears the fact to unknown so the next sync may fill it. Omit to leave it unchanged. |
supportsWebSearch | boolean or null | no | The model supports built-in web search. true/false is recorded with source operator, which no sync overwrites. null clears the fact to unknown so the next sync may fill it. Omit to leave it unchanged. |
UpdateModelResolutionRuleDto
| Property | Type | Required | Description |
|---|
priority | number | no | |
selector | ModelResolutionSelectorDto | no | |
targetModelId | string | no | |
targetReasoningEffort | string | no | |
targetTemperature | number | no | |
UpdateModelStrategyDto
| Property | Type | Required | Description |
|---|
description | string or null | no | |
displayName | string | no | |
UpdateProjectAgentOverrideDto
| Property | Type | Required | Description |
|---|
isActive | boolean | no | |
mcpServicesAdd | array of string | no | |
mcpServicesRemove | array of string | no | |
systemPromptAppend | string | no | |
temperature | number | no | |
UpdateProviderDto
| Property | Type | Required | Description |
|---|
apiKey | string | no | Optional enrolment transport: when supplied, the key is sealed in the credential plane and becomes the organisation's default credential (org_default pointer) for this provider's key; the provider row never stores it. Omit it when members use their own keys. |
apiType | one of "openai-compatible", "anthropic", "google" | no | |
authType | one of "bearer", "api-key-header", "none" | no | |
baseUrl | string | no | |
isActive | boolean | no | |
maxConcurrentRequests | number or null | no | Maximum concurrent requests. Set to null to remove the limit. |
name | string | no | |
slug | string | no | |
UpsertAgentModelOverrideDto
| Property | Type | Required | Description |
|---|
agentSlug | string | yes | Agent slug to override the model for. |
modelId | string | yes | LLM model ID to assign to this agent. |
scope | one of "org", "user", "project" | yes | Override scope: "org" (org-wide default), "user" (personal preference), "project" (project-specific). |
scopeId | string | yes | Scope identifier: orgId for "org", userId for "user", projectId for "project". |
temperature | number | no | Optional temperature override (0.0 - 2.0). |
UpsertEmbeddingCommitmentDto
| Property | Type | Required | Description |
|---|
modelId | string | yes | Embedding model id (e.g. "text-embedding-3-small"). The model must be registered in the org's providers and have the "embeddings" capability. |
providerId | string | yes | Provider id that hosts the model. |
UpsertModelStrategyLaneRuleDto
| Property | Type | Required | Description |
|---|
priority | number | no | Tie-break hint when two rules match the same number of dimensions and the fixed dimension-priority ladder does not separate them. Higher wins. Defaults to 0. |
targetModelId | string | yes | Registry model record id (LlmModel.id) the rule routes to. It must be an active model on an active provider the organisation or the platform owns; otherwise the write is refused with 422 MODEL_NOT_SERVED. |
targetReasoningEffort | string | no | Optional reasoning effort carried by the resolved model, forwarded verbatim to the provider. OPEN vocabulary owned by the provider (e.g. minimal/low/medium/high, or low/medium/high/xhigh/max) — not an enum here, so a new provider spelling is not refused at the door. |
targetTemperature | number | no | Optional temperature override carried by the resolved model. |
UpsertModelStrategyRulesDto
| Property | Type | Required | Description |
|---|
expectedVersion | number | no | The version read from this strategy. When sent, a stale value is refused with 409 MODEL_STRATEGY_VERSION_MISMATCH, which carries currentVersion to retry with. Send it: it is optional only for one transition and will become REQUIRED — without it this route replaces the whole rule set unconditionally, so a concurrent edit to a DIFFERENT lane is silently discarded. To change one lane, use PUT /model-strategies/:id/rules/lane/:lane, which needs no version. |
rules | array of CreateModelResolutionRuleDto | yes | The strategy's rules (replaces the whole rule set). Each rule has the same shape and the same validation as an org-level model resolution rule. |
UpsertOrgLaneRuleDto
| Property | Type | Required | Description |
|---|
priority | number | no | Tie-break hint when two rules match the same number of dimensions and the fixed dimension-priority ladder does not separate them. Higher wins. Defaults to 0. |
targetModelId | string | yes | Registry model record id (LlmModel.id) the rule routes to. It must be an active model on an active provider the organisation or the platform owns; otherwise the write is refused with 422 MODEL_NOT_SERVED. |
targetReasoningEffort | string | no | Optional reasoning effort carried by the resolved model, forwarded verbatim to the provider. OPEN vocabulary owned by the provider (e.g. minimal/low/medium/high, or low/medium/high/xhigh/max) — not an enum here, so a new provider spelling is not refused at the door. |
targetTemperature | number | no | Optional temperature override carried by the resolved model. |
| Property | Type | Required | Description |
|---|
allowedTools | array of string | no | Explicitly allowed tool names. |
catalogId | string | no | Catalog identifier for tool discovery. |
expectedVersion | number | yes | Optimistic concurrency version. Use 0 for create. |
isOptional | boolean | no | Whether this MCP service is optional for the agent. |
toolGroups | array of string | no | Tool group identifiers. |
| Property | Type | Required | Description |
|---|
biomeId | string | no | Present only for biome-contributed kinds. |
displayName | string | yes | Human-readable display name. |
kind | string | yes | Fully-namespaced kind slug the FE registry keys by. A first-party kind is its bare enum value (e.g. plan); a biome kind is <biomeId>:<kind>. |
payloadSchema | object | yes | JSON Schema for the widget payload (passed through verbatim). |
source | WidgetKindSource | yes | Provenance of this kind. |
summary | string | yes | What the widget shows and when to use it. |
version | number | yes | Monotonic payload schema version. |
| Property | Type | Required | Description |
|---|
widgetKinds | array of WidgetKindDto | yes | |
Provenance of this kind.
Type: one of "first-party", "biome"
WorkerInternetEgress
Ceiling on whether the worker pod running this agent may open sockets to the public internet. A ceiling the agent ACCEPTS, never a grant: the effective mode is the most restrictive of the deployment, the owning Space, this value and the session, so open here widens nothing. RESOLVED: the agent's own declaration joined along its extends chain, so a child never widens its base. ABSENT when nothing in the chain declares one — there is no default.
Type: one of "open", "governed"
WorkingFileEntryDto
| Property | Type | Required | Description |
|---|
format | string | yes | |
path | string | yes | |
slug | string | yes | |
sourceKind | string | yes | |
sourceRef | map of string | yes | |
syncDirection | string | yes | |
WorkspaceSharingPolicy
Resolved workspace-sharing policy — whether a session launch of this agent may POOL onto a compatible running pod as a new thread (shareable) or must always run in its own isolated worker (isolated). Always populated: a row with no stored value resolves to isolated (WORKSPACE_SHARING_DEFAULT). agent-session-api reads this to gate session-thread pooling at launch.
Type: one of "isolated", "shareable", "shared"