Changelog
Changelog — 2026-05-18
Initial daily docs refresh — surfaces breaking changes accumulated across recent alpha releases.
Breaking
.system()removed; default is nowsystem: true. All schema builders (objects and attributes) are system by default — anything declared in code is immutable at runtime. Call.runtime()only inside tests, seeds, and fixtures. See Schema and Attributes.DatabaseAdapter.searchis mandatory. Composing aDatabaseAdapterwithout aSearchAdapterfails type-check and throwsSearchAdapterRequiredErrorat bootstrap.SearchUnavailableErrorandGlobalSearchService.registerHandlers()are removed. The adapter lifecycle split intoensureIndex()+applySchemaSettings(settings)(legacyensureIndexes()removed). See Search and the Meilisearch guide.- Actor-first identity unification.
userIdis gone fromTenantContext,BaseService,BaseRepository, andPolicyContext— useactorId.withTenantContext(tenantId, fn, actorId?)lost itsuserIdparameter.checkPermissionandbuildPolicyContextrenamed accordingly. See RBAC. - BullMQ/Redis adapters split into dedicated packages. Import from
@stndrds/adapter-bullmqand@stndrds/adapter-redis; the deprecated re-exports from@stndrds/adapter-nestjsare removed. The agent service tokensAGENT_ORCHESTRATOR_SERVICEandAGENT_RUNNER_SERVICEare removed — useAGENT_DEFINITION_SERVICE+AGENT_SESSION_SERVICEandAGENT_EXECUTION_SERVICE. TheAgentFactory/AgentRunneraliases in@stndrds/runtimeare removed — useCompletionEngineandAgentExecutionService. See the Redis & BullMQ guide. changeAttributeTypevia the runtime admin API is disabled — throwsChangeTypeNotSupportedError. Type changes must be declared in code with.migration(N, m => m.changeType(...)).
Features
- Soft-delete records and edges.
useDeleteRecordnow archives instead of destroying. New hooksuseRestoreRecordandusePurgeRecordhandle restore and permanent deletion. Cascade-tagged edges wake on restore; edges archived independently stay archived. See Records. - Schema migrations (L2). Declare
.migration(version, m => ...)on the object builder to resolve ambiguous diffs (rename, change_type). Safe additions auto-apply at boot; destructive but non-ambiguous diffs demote to runtime (or delete withSTANDARDS_ALLOW_DESTRUCTIVE_SYNC=1). Tracked inschema_sync_log. See Schema → Migrations. - Agents on a schedule. Agent definitions with a
schedulecron now actually execute — theBullMQScheduleAdapterenqueues ascheduled-jobpayload that the runtime handler translates into alaunchRuncall. Autonomous sessions also get an auto-generated title after the first completion. - Auto-upsert default agent role. A default
agent_defaultrole is upserted at boot so newly-created agent actors have a session-capable role out of the box.
Fixes
- Background agents are now opt-in — the module stays disabled unless
agents: { enabled: true, ... }is set explicitly, avoiding a NestJS startup crash when Redis/BullMQ is not configured. - Meilisearch reconcile / reindex no longer silently process only a fraction of records (estimated counts ignored for loop termination;
primaryKey: "id"always passed; bulkIndex errors surfaced). - Meilisearch system fields (
createdAt,updatedAt,objectId,objectName,completionStatus) are correctly mapped to their snake_case Meili columns — filters and sorts on system date fields now resolve instead of routing to non-existentvalues_raw.*paths. - Edge-property filters are now resolved entirely inside the search adapter (Meilisearch projects edge properties into the document at write time), so
rule.propertypredicates evaluate directly against the index — the standaloneEdgeFilterResolverhas been removed. - Record reference edges are the single source of truth for record-to-record references; all user reference attributes route through
record_reference_edgesregardless of theattribute.systemflag.