@dyrected/core 2.17.0 → 2.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as Field, B as Block, C as CollectionConfig, D as DyrectedConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, G as GlobalConfig, a as DeclarativeHookExpression, W as WorkflowConfig, b as AuthenticatedUser, c as WorkflowTransition, L as LifecycleEventName, d as LifecycleEvent, e as BaseDocument, H as HookRequestContext, f as DetailActionOptions, g as DetailAction, h as DetailComputedOptions, i as ComputedHandler, j as DetailComputed, k as DetailCustomOptions, l as DetailCustom, m as DetailDividerOptions, n as DetailDivider, o as DisplayFieldOptions, p as DetailField, q as DetailItem, r as DetailGridOptions, s as DetailGrid, t as DetailRepeatOptions, u as DetailRepeat, v as DetailSectionOptions, w as DetailSection, x as DetailTabOptions, y as DetailTab, z as DetailTabsOptions, E as DetailTabs, I as DetailTextOptions, J as DetailText, K as DetailSchema, M as DyrectedContext, N as AIConfig, O as AIPIIConfig, Q as IdStrategy, R as CompiledNavTree, S as CompiledNavItem, U as UserNavigationPreferences, T as DefineWorkspaceOptions, V as ArrayField, X as FieldType, Y as BooleanField, Z as AuthConfig, _ as AccessPolicyResolver, $ as DateField, a0 as DateTimeField, a1 as EmailField, a2 as IconField, a3 as ImageField, a4 as JoinField, a5 as JsonField, a6 as MultiSelectField, a7 as NumberField, a8 as ObjectField, a9 as RadioField, aa as RelationshipField, ab as RichTextField, ac as RowField, ad as SelectField, ae as TextField, af as TextareaField, ag as TimeField, ah as UrlField } from './app-CLdT_0se.cjs';
2
- export { ai as AIAction, aj as AIActionStatus, ak as AIActionType, al as AIAuditActionType, am as AIAuditRecord, an as AIChunk, ao as AIMessage, ap as AIPIIPattern, aq as AIRateLimitResult, ar as AIRateLimitStore, as as AIThread, at as AIToolContext, au as AIToolDefinition, av as AI_ACTIONS_COLLECTION, aw as AI_AUDIT_COLLECTION, ax as AI_CHUNKS_COLLECTION, ay as AI_MESSAGES_COLLECTION, az as AI_THREADS_COLLECTION, aA as AccessConfig, aB as AccessFunction, aC as AccessFunctionArgs, aD as AccessResult, aE as AccessRule, aF as ActionConfig, aG as ActionConfigBase, aH as ActionConfigWithHandler, aI as ActionConfigWithMutation, aJ as ActionContext, aK as ActionType, aL as AdminAuthAccessResolution, aM as AdminAuthClaimMapping, aN as AdminAuthMember, aO as AdminAuthProvider, aP as AdminAuthProviderMembersConfig, aQ as AdminAuthProvisioningMode, aR as AdminAuthResolveAccessArgs, aS as AdminAuthResolvedIdentity, aT as AdminConfig, aU as AdminDashboardComponentSlots, aV as AdminIconName, aW as AggregateArgs, aX as AggregateCastType, aY as AggregateCollectionResult, aZ as AggregateInput, a_ as AggregateOperation, a$ as AggregateResult, b0 as BaseAdminAuthProvider, b1 as BaseFieldAdmin, b2 as BlockVariant, b3 as BlocksField, b4 as BooleanFieldAdmin, b5 as BooleanFormat, b6 as CURRENT_NAV_PREFERENCES_VERSION, b7 as CalendarViewConfig, b8 as CardsViewConfig, b9 as CharacterLimitFieldAdmin, ba as CharacterLimitFieldConfig, bb as CollectionAfterChangeHook, bc as CollectionAfterDeleteHook, bd as CollectionAfterReadHook, be as CollectionAfterReadHookEntry, bf as CollectionAfterTransitionHook, bg as CollectionBeforeChangeHook, bh as CollectionBeforeChangeHookEntry, bi as CollectionBeforeDeleteHook, bj as CollectionBeforeReadHook, bk as CollectionBeforeReadHookEntry, bl as CollectionBeforeTransitionHook, bm as CollectionIndex, bn as CollectionListComponentSlots, bo as CollectionRAGConfig, bp as CollectionSchemaResult, bq as CollectionSummaryResult, br as CollectionViewComponentSlots, bs as CompiledNavGroup, bt as CountOperation, bu as CustomAdminAuthProvider, bv as DEFAULT_USER_NAV_PREFERENCES, bw as DatabaseAdapter, bx as DateFieldAdmin, by as DateFormat, bz as DefaultValueContext, bA as DefineActionOptions, bB as DefineCalendarViewOptions, bC as DefineCardsViewOptions, bD as DefineGanttViewOptions, bE as DefineKanbanViewOptions, bF as DefineTableViewOptions, bG as DefineViewBaseOptions, bH as DefineViewOptions, bI as DetailSpan, bJ as DisplayTone, bK as DisplayVariant, bL as DistinctCountOperation, bM as DistinctValuesOperation, bN as DynamicOptionItem, bO as DynamicOptionsConfig, bP as DynamicOptionsResolver, bQ as DynamicOptionsResolverArgs, bR as DyrectedAIContext, bS as DyrectedLoggerConfig, bT as DyrectedObservabilityConfig, bU as EmailFieldAdmin, bV as FieldAdminHooks, bW as FieldAdminOnChangeHook, bX as FieldAdminOnChangeHookArgs, bY as FieldAdminOptionsHook, bZ as FieldAdminOptionsHookArgs, b_ as FieldAdminOptionsHookResult, b$ as FieldAfterReadHook, c0 as FieldAfterReadHookArgs, c1 as FieldBase, c2 as FieldBeforeChangeHook, c3 as FieldBeforeChangeHookArgs, c4 as FieldHook, c5 as FieldHooks, c6 as FileData, c7 as GanttViewConfig, c8 as GetDocumentResult, c9 as GlobalAfterChangeHook, ca as GlobalAfterReadHook, cb as GlobalAfterReadHookEntry, cc as GlobalBeforeChangeHook, cd as GlobalBeforeChangeHookEntry, ce as GlobalBeforeReadHook, cf as GlobalBeforeReadHookEntry, cg as GlobalRAGConfig, ch as GlobalSchemaResult, ci as GlobalSummaryResult, cj as HeadingLevel, ck as HookFunction, cl as IconFieldAdmin, cm as ImageService, cn as ImageTransformOptions, co as InferAggregateResult, cp as JoinFieldAdmin, cq as JsonFieldAdmin, cr as JsonFormat, cs as KanbanViewConfig, ct as LIFECYCLE_EVENT_NAMES, cu as LifecycleEventHandler, cv as LinkFormat, cw as MetricColor, cx as MultiSelectFieldAdmin, cy as NamedAccessPolicy, cz as NavBadgeConfig, cA as NavGroup, cB as NumberFieldAdmin, cC as NumberFormat, cD as NumberLimitFieldAdmin, cE as NumberLimitFieldConfig, cF as NumericOperation, cG as NumericUpdateOperator, cH as OIDCAdminAuthProvider, cI as OptionFormat, cJ as PaginatedResult, cK as PinnedNavItemRef, cL as PublicAdminAuthProvider, cM as QueryCollectionResult, cN as RAGSearchResult, cO as RadioFieldAdmin, cP as RateLimitConfig, cQ as ReadonlyDatabaseAdapter, cR as RichTextFeature, cS as RichTextFieldConfig, cT as SelectFieldAdmin, cU as SqlWhereResult, cV as StorageAdapter, cW as TableViewConfig, cX as TextFieldAdmin, cY as TextFormat, cZ as TextareaFieldAdmin, c_ as TrustProxyConfig, c$ as TypedField, d0 as UploadConfig, d1 as UrlFieldAdmin, d2 as UrlLinkValue, d3 as ViewActionFeatures, d4 as ViewComponentSlots, d5 as ViewConfig, d6 as ViewConfigBase, d7 as ViewLayout, d8 as ViewMetric, d9 as ViewSubMetric, da as WhereClause, db as WhereOperator, dc as WhereOperatorName, dd as WordLimitFieldAdmin, de as WordLimitFieldConfig, df as WorkflowMetadata, dg as WorkflowRole, dh as WorkflowState, di as WorkflowTransitionContext, dj as defineAction, dk as defineCalendarView, dl as defineCardsView, dm as defineGanttView, dn as defineKanbanView, dp as defineTableView, dq as defineView, dr as defineWorkspace, ds as isAICollection, dt as parseMongoWhere, du as parseSqlWhere } from './app-CLdT_0se.cjs';
1
+ import { F as Field, B as Block, C as CollectionConfig, D as DyrectedConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, G as GlobalConfig, a as DeclarativeHookExpression, W as WorkflowConfig, b as AuthenticatedUser, c as WorkflowTransition, L as LifecycleEventName, d as LifecycleEvent, e as DatabaseAdapter, f as BaseDocument, H as HookRequestContext, T as TaskRunResult, g as TaskConfig, h as DetailActionOptions, i as DetailAction, j as DetailComputedOptions, k as ComputedHandler, l as DetailComputed, m as DetailCustomOptions, n as DetailCustom, o as DetailDividerOptions, p as DetailDivider, q as DisplayFieldOptions, r as DetailField, s as DetailItem, t as DetailGridOptions, u as DetailGrid, v as DetailRepeatOptions, w as DetailRepeat, x as DetailSectionOptions, y as DetailSection, z as DetailTabOptions, E as DetailTab, I as DetailTabsOptions, J as DetailTabs, K as DetailTextOptions, M as DetailText, N as DetailSchema, O as DyrectedContext, Q as AIConfig, R as AIPIIConfig, S as IdStrategy, U as CompiledNavTree, V as CompiledNavItem, X as UserNavigationPreferences, Y as DefineWorkspaceOptions, Z as ViewConfig, _ as ArrayField, $ as FieldType, a0 as BooleanField, a1 as AuthConfig, a2 as AccessPolicyResolver, a3 as DateField, a4 as DateTimeField, a5 as EmailField, a6 as IconField, a7 as ImageField, a8 as JoinField, a9 as JsonField, aa as MoneyField, ab as MultiSelectField, ac as NumberField, ad as ObjectField, ae as RadioField, af as RelationshipField, ag as RichTextField, ah as RowField, ai as SelectField, aj as TextField, ak as TextareaField, al as TimeField, am as UrlField } from './app-x7J5BIqK.cjs';
2
+ export { an as AIAction, ao as AIActionStatus, ap as AIActionType, aq as AIAuditActionType, ar as AIAuditRecord, as as AIChunk, at as AIMessage, au as AIPIIPattern, av as AIRateLimitResult, aw as AIRateLimitStore, ax as AIThread, ay as AIToolContext, az as AIToolDefinition, aA as AI_ACTIONS_COLLECTION, aB as AI_AUDIT_COLLECTION, aC as AI_CHUNKS_COLLECTION, aD as AI_MESSAGES_COLLECTION, aE as AI_THREADS_COLLECTION, aF as AccessConfig, aG as AccessFunction, aH as AccessFunctionArgs, aI as AccessResult, aJ as AccessRule, aK as ActionConfig, aL as ActionConfigBase, aM as ActionConfigWithHandler, aN as ActionConfigWithMutation, aO as ActionContext, aP as ActionType, aQ as AdminAuthAccessResolution, aR as AdminAuthClaimMapping, aS as AdminAuthMember, aT as AdminAuthProvider, aU as AdminAuthProviderMembersConfig, aV as AdminAuthProvisioningMode, aW as AdminAuthResolveAccessArgs, aX as AdminAuthResolvedIdentity, aY as AdminConfig, aZ as AdminDashboardComponentSlots, a_ as AdminIconName, a$ as AggregateArgs, b0 as AggregateCastType, b1 as AggregateCollectionResult, b2 as AggregateInput, b3 as AggregateOperation, b4 as AggregateResult, b5 as BaseAdminAuthProvider, b6 as BaseFieldAdmin, b7 as BlockVariant, b8 as BlocksField, b9 as BooleanFieldAdmin, ba as BooleanFormat, bb as CURRENT_NAV_PREFERENCES_VERSION, bc as CalendarViewConfig, bd as CardsViewConfig, be as CharacterLimitFieldAdmin, bf as CharacterLimitFieldConfig, bg as CollectionAfterChangeHook, bh as CollectionAfterDeleteHook, bi as CollectionAfterReadHook, bj as CollectionAfterReadHookEntry, bk as CollectionAfterTransitionHook, bl as CollectionBeforeChangeHook, bm as CollectionBeforeChangeHookEntry, bn as CollectionBeforeCommitHook, bo as CollectionBeforeDeleteHook, bp as CollectionBeforeReadHook, bq as CollectionBeforeReadHookEntry, br as CollectionBeforeTransitionHook, bs as CollectionIndex, bt as CollectionListComponentSlots, bu as CollectionRAGConfig, bv as CollectionSchemaResult, bw as CollectionSummaryResult, bx as CollectionViewComponentSlots, by as CompiledNavGroup, bz as CountOperation, bA as CustomAdminAuthProvider, bB as DEFAULT_USER_NAV_PREFERENCES, bC as DateFieldAdmin, bD as DateFormat, bE as DefaultValueContext, bF as DefineActionOptions, bG as DefineCalendarViewOptions, bH as DefineCardsViewOptions, bI as DefineGanttViewOptions, bJ as DefineKanbanViewOptions, bK as DefineTableViewOptions, bL as DefineViewBaseOptions, bM as DefineViewOptions, bN as DetailSpan, bO as DisplayTone, bP as DisplayVariant, bQ as DistinctCountOperation, bR as DistinctValuesOperation, bS as DynamicOptionItem, bT as DynamicOptionsConfig, bU as DynamicOptionsResolver, bV as DynamicOptionsResolverArgs, bW as DyrectedAIContext, bX as DyrectedLoggerConfig, bY as DyrectedObservabilityConfig, bZ as EmailFieldAdmin, b_ as FieldAdminHooks, b$ as FieldAdminOnChangeHook, c0 as FieldAdminOnChangeHookArgs, c1 as FieldAdminOptionsHook, c2 as FieldAdminOptionsHookArgs, c3 as FieldAdminOptionsHookResult, c4 as FieldAfterReadHook, c5 as FieldAfterReadHookArgs, c6 as FieldBase, c7 as FieldBeforeChangeHook, c8 as FieldBeforeChangeHookArgs, c9 as FieldHook, ca as FieldHooks, cb as FileData, cc as GanttViewConfig, cd as GetDocumentResult, ce as GlobalAfterChangeHook, cf as GlobalAfterReadHook, cg as GlobalAfterReadHookEntry, ch as GlobalBeforeChangeHook, ci as GlobalBeforeChangeHookEntry, cj as GlobalBeforeReadHook, ck as GlobalBeforeReadHookEntry, cl as GlobalRAGConfig, cm as GlobalSchemaResult, cn as GlobalSummaryResult, co as HeadingLevel, cp as HookFunction, cq as IconFieldAdmin, cr as ImageService, cs as ImageTransformOptions, ct as InferAggregateResult, cu as JoinFieldAdmin, cv as JsonFieldAdmin, cw as JsonFormat, cx as KanbanViewConfig, cy as LIFECYCLE_EVENT_NAMES, cz as LifecycleEventHandler, cA as LinkFormat, cB as MetricColor, cC as MoneyFieldAdmin, cD as MoneyFieldConfig, cE as MultiSelectFieldAdmin, cF as NamedAccessPolicy, cG as NavBadgeConfig, cH as NavGroup, cI as NumberFieldAdmin, cJ as NumberFormat, cK as NumberLimitFieldAdmin, cL as NumberLimitFieldConfig, cM as NumericOperation, cN as NumericUpdateOperator, cO as OIDCAdminAuthProvider, cP as OptionFormat, cQ as PaginatedResult, cR as PinnedNavItemRef, cS as PublicAdminAuthProvider, cT as QueryCollectionResult, cU as RAGSearchResult, cV as RadioFieldAdmin, cW as RateLimitConfig, cX as ReadonlyDatabaseAdapter, cY as RichTextFeature, cZ as RichTextFieldConfig, c_ as SelectFieldAdmin, c$ as SqlWhereResult, d0 as StorageAdapter, d1 as TableViewConfig, d2 as TaskContext, d3 as TaskLogger, d4 as TaskRunStatus, d5 as TextFieldAdmin, d6 as TextFormat, d7 as TextareaFieldAdmin, d8 as TrustProxyConfig, d9 as TypedField, da as UploadConfig, db as UrlFieldAdmin, dc as UrlLinkValue, dd as ViewActionFeatures, de as ViewComponentSlots, df as ViewConfigBase, dg as ViewLayout, dh as ViewMetric, di as ViewSubMetric, dj as WhereClause, dk as WhereOperator, dl as WhereOperatorName, dm as WordLimitFieldAdmin, dn as WordLimitFieldConfig, dp as WorkflowMetadata, dq as WorkflowOnTransitionContext, dr as WorkflowOnTransitionHook, ds as WorkflowRole, dt as WorkflowState, du as WorkflowTransitionContext, dv as coerceBooleanWhere, dw as defineAction, dx as defineCalendarView, dy as defineCardsView, dz as defineGanttView, dA as defineKanbanView, dB as defineTableView, dC as defineView, dD as defineWorkspace, dE as isAICollection, dF as parseMongoWhere, dG as parseSqlWhere } from './app-x7J5BIqK.cjs';
3
3
  import jexl from 'jexl';
4
4
  import { Context } from 'hono';
5
5
  export { z } from 'zod';
@@ -13,7 +13,7 @@ import '@opentelemetry/exporter-prometheus';
13
13
  type Prettify<T> = {
14
14
  [K in keyof T]: T[K];
15
15
  };
16
- type FieldValueType<F extends Field> = F["type"] extends "text" | "textarea" | "email" | "url" | "icon" | "date" | "datetime" | "time" | "select" | "radio" ? string : F["type"] extends "number" ? number : F["type"] extends "boolean" ? boolean : F["type"] extends "multiSelect" ? string[] : F["type"] extends "relationship" ? F extends {
16
+ type FieldValueType<F extends Field> = F["type"] extends "text" | "textarea" | "email" | "url" | "icon" | "date" | "datetime" | "time" | "select" | "radio" ? string : F["type"] extends "number" | "money" ? number : F["type"] extends "boolean" ? boolean : F["type"] extends "multiSelect" ? string[] : F["type"] extends "relationship" ? F extends {
17
17
  hasMany: true;
18
18
  } ? string[] : string : F["type"] extends "image" ? F extends {
19
19
  hasMany: true;
@@ -639,6 +639,8 @@ declare function saveWorkflowDraft(args: {
639
639
  originalDoc: BaseDocument;
640
640
  data: Record<string, unknown>;
641
641
  user?: AuthenticatedUser;
642
+ /** Runs inside the write transaction, after the draft is saved. */
643
+ beforeCommit?: (tx: DatabaseAdapter, doc: BaseDocument) => Promise<void>;
642
644
  }): Promise<{
643
645
  doc: BaseDocument;
644
646
  event: LifecycleEvent;
@@ -648,6 +650,8 @@ declare function createWorkflowDocument(args: {
648
650
  collection: CollectionConfig;
649
651
  data: Record<string, unknown>;
650
652
  user?: AuthenticatedUser;
653
+ /** Runs inside the write transaction, after the document is created. */
654
+ beforeCommit?: (tx: DatabaseAdapter, doc: BaseDocument) => Promise<void>;
651
655
  }): Promise<{
652
656
  doc: BaseDocument;
653
657
  event: LifecycleEvent;
@@ -659,10 +663,74 @@ declare function transitionWorkflow(args: {
659
663
  transitionName: string;
660
664
  expectedRevision?: number;
661
665
  comment?: string;
666
+ input?: Record<string, unknown>;
662
667
  user?: AuthenticatedUser;
663
668
  req: HookRequestContext;
664
669
  }): Promise<BaseDocument>;
665
670
 
671
+ declare const TASK_LOCKS_COLLECTION = "__task_locks";
672
+ /** Internal collection holding one lock row per task. Created on demand by the runner. */
673
+ declare const TASK_LOCKS_COLLECTION_CONFIG: CollectionConfig;
674
+ interface CronSchedule {
675
+ minutes: Set<number>;
676
+ hours: Set<number>;
677
+ daysOfMonth: Set<number>;
678
+ months: Set<number>;
679
+ daysOfWeek: Set<number>;
680
+ /** Standard cron semantics: when both day fields are restricted, either may match. */
681
+ dayFieldsBothRestricted: boolean;
682
+ }
683
+ /** Parses a five-field cron expression. Throws a descriptive error when it is invalid. */
684
+ declare function parseCron(expression: string): CronSchedule;
685
+ /** The first cron slot strictly after `after`, in UTC. */
686
+ declare function nextCronRun(expression: string | CronSchedule, after: Date): Date;
687
+ /**
688
+ * Defines a background task. Validates the name, cron expression and lock
689
+ * timeout immediately, so a typo fails at startup rather than at 3am.
690
+ *
691
+ * @example
692
+ * ```ts
693
+ * export const ledgerDrift = defineTask({
694
+ * name: "wallet:ledger-drift",
695
+ * cron: "*\/15 * * * *",
696
+ * lockTimeout: 300,
697
+ * async run({ db, logger }) {
698
+ * const drifts = await checkLedgerDrift(db);
699
+ * if (drifts.length) logger.error({ drifts }, "Ledger drift detected");
700
+ * },
701
+ * });
702
+ * ```
703
+ */
704
+ declare function defineTask<const T extends TaskConfig>(task: T): T;
705
+ interface TaskRunner {
706
+ /**
707
+ * Runs one task now, ignoring its schedule. Returns `skipped` with reason
708
+ * `"locked"` when another instance is already running it.
709
+ */
710
+ runTask(name: string): Promise<TaskRunResult>;
711
+ /**
712
+ * Runs every scheduled task that is due. Safe to call from any number of
713
+ * instances or from a platform cron: each due slot runs exactly once.
714
+ */
715
+ runDue(now?: Date): Promise<TaskRunResult[]>;
716
+ /** Starts polling for due tasks. Returns immediately and never blocks startup. */
717
+ start(options?: {
718
+ intervalMs?: number;
719
+ }): void;
720
+ /** Stops polling and waits for any run in progress to settle. */
721
+ stop(): Promise<void>;
722
+ }
723
+ /**
724
+ * Creates the runner for the tasks in `config.tasks`. Coordination between
725
+ * instances uses a lock row per task in the database, taken with a single
726
+ * conditional update, so it works across processes and on every adapter.
727
+ *
728
+ * Core does not start it for you: a timer is unreliable on serverless, so the
729
+ * host chooses. Call `start()` on a long-lived Node server, or call `runDue()`
730
+ * from a platform cron.
731
+ */
732
+ declare function createTaskRunner(config: DyrectedConfig): TaskRunner;
733
+
666
734
  /**
667
735
  * Normalizes a DetailItem (which may be a shorthand string) into a standard DetailItem object.
668
736
  *
@@ -1393,6 +1461,28 @@ declare function generateDocumentId(collectionOrSlug?: string | {
1393
1461
  idGenerator?: (slug: string) => string;
1394
1462
  }): string;
1395
1463
 
1464
+ /**
1465
+ * Builds the physical name of an index, for example `uniq_collection_wallets_currency`.
1466
+ *
1467
+ * MySQL rejects names over 64 characters and Postgres silently truncates at 63, which can
1468
+ * collide or, on MySQL, leave a unique constraint uncreated. Names that would be too long are
1469
+ * shortened to `<prefix>_<hash>_<last field>`, where the hash is derived from the full name so
1470
+ * the result stays stable and unique per table and field set.
1471
+ */
1472
+ declare function resolveIndexName(prefix: "uniq" | "idx", table: string, fields: string[]): string;
1473
+
1474
+ /** Key used for the group whose value is null or missing. */
1475
+ declare const UNASSIGNED_GROUP_KEY = "__unassigned__";
1476
+ /**
1477
+ * Turns the raw value of a `groupBy` column into the string key used in aggregate results.
1478
+ *
1479
+ * Databases hand the same logical value back in different shapes: a boolean is `true`, `1` or
1480
+ * `'1'`; a decimal column returns `'1.0000'`; a timestamp is a `Date` or a space-separated string.
1481
+ * Normalizing by the field's declared type keeps the keys identical on every adapter, so callers
1482
+ * can look up `groups["true"]`, `groups["1"]` or an ISO date whichever database they run on.
1483
+ */
1484
+ declare function normalizeGroupKey(raw: unknown, fieldType?: string): string;
1485
+
1396
1486
  interface ReconciledNavTree extends CompiledNavTree {
1397
1487
  pinnedItems: CompiledNavItem[];
1398
1488
  }
@@ -1449,6 +1539,13 @@ declare function compileNavigation(config: DyrectedConfig<any> | {
1449
1539
  * Filter compiled navigation based on user access rules.
1450
1540
  */
1451
1541
  declare function pruneNavigationForUser(tree: CompiledNavTree, user?: any): CompiledNavTree;
1542
+ /**
1543
+ * Resolves all operational views associated with a collection, combining:
1544
+ * 1. Views declared directly on the collection (`collection.views`)
1545
+ * 2. Views targeting this collection via `admin.navigation` (including `addToCollection`,
1546
+ * explicit collection navigation items, and views inside standalone operational workspaces).
1547
+ */
1548
+ declare function resolveAllCollectionViews(collection: CollectionConfig, config?: Partial<DyrectedConfig> | null): ViewConfig[];
1452
1549
 
1453
1550
  type TopLevelFieldName<TFields extends readonly Field[]> = Extract<TFields[number], {
1454
1551
  name: string;
@@ -1770,6 +1867,10 @@ declare const defineRichTextField: <const T extends Omit<RichTextField, "type">>
1770
1867
  declare const defineNumberField: <const T extends Omit<NumberField, "type">>(field: T) => T & {
1771
1868
  type: "number";
1772
1869
  };
1870
+ /** Define a `money` field stored as integer minor units. */
1871
+ declare const defineMoneyField: <const T extends Omit<MoneyField, "type">>(field: T) => T & {
1872
+ type: "money";
1873
+ };
1773
1874
  /** Define a `boolean` field. */
1774
1875
  declare const defineBooleanField: <const T extends Omit<BooleanField, "type">>(field: T) => T & {
1775
1876
  type: "boolean";
@@ -1946,4 +2047,4 @@ declare function defineTab<const T extends readonly Field[]>(args: {
1946
2047
  fields: T;
1947
2048
  }): T;
1948
2049
 
1949
- export { AIConfig, type AIErrorCode, AIPIIConfig, type AccessConditions, AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BASE62_ALPHABET, BUILTIN_JEXL_HELPERS, BaseDocument, Block, BooleanField, CROCKFORD_BASE32, CollectionConfig, CompiledNavItem, CompiledNavTree, ComputedHandler, type ConfigDiagnostic, ConfigValidationError, ConflictError, DateField, DateTimeField, type DeclarativeAccessSurface, type DeclarativeAccessValidationIssue, type DeclarativeAdminSurface, type DeclarativeAdminValidationIssue, DeclarativeHookExpression, type DeclarativeHookSurface, type DeclarativeHookValidationIssue, type DeclarativePreviewSurface, type DeclarativePreviewValidationIssue, DefineWorkspaceOptions, DetailAction, DetailActionOptions, DetailComputed, DetailComputedOptions, DetailCustom, DetailCustomOptions, DetailDivider, DetailDividerOptions, DetailField, DetailGrid, DetailGridOptions, DetailItem, DetailRepeat, DetailRepeatOptions, DetailSchema, DetailSection, DetailSectionOptions, DetailTab, DetailTabOptions, DetailTabs, DetailTabsOptions, DetailText, DetailTextOptions, DisplayFieldOptions, DuplicateKeyError, DyrectedAIError, DyrectedConfig, DyrectedError, EmailField, type ExprFunction, type ExtractCollectionSlugs, Field, FieldConditionBuilder, FieldType, ForbiddenError, type GenerateIdOptions, GlobalConfig, HookRequestContext, IconField, IdStrategy, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, LifecycleEvent, LifecycleEventName, MatchBuilder, MultiSelectField, NANOID_ALPHABET, NON_NEGOTIABLE_CREDENTIAL_FIELDS, NotFoundError, NumberField, ObjectField, PII_REGEX_PATTERNS, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RESERVED_NAVIGATION_SLUGS, RadioField, type ReconcileNavigationOptions, type ReconciledNavTree, RelationshipField, RichTextField, RowField, type SanitizeDocForAIOptions, SelectField, type SortClause, type SortDirection, type SqlSortDialect, type SystemDocFields, TextField, TextareaField, TimeField, type UploadDocFields, UrlField, UserNavigationPreferences, ValidationError, WORKFLOW_HISTORY_COLLECTION, type WhenFunction, WorkflowConfig, WorkflowTransition, abs, addDays, asCollection, assertValidAdminConditionsInConfig, assertValidDeclarativeAccessInConfig, assertValidDeclarativeHookExpression, assertValidDeclarativeHookResult, assertValidDeclarativeHooksInConfig, assertValidNavigationSlugs, assertValidPreviewUrlsInConfig, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, capitalize, ceil, clamp, coalesce, collectAdminConditionValidationIssues, collectConfigDiagnostics, collectDeclarativeAccessValidationIssues, collectDeclarativeHookValidationIssues, collectPreviewUrlValidationIssues, compact, compileNavigation, count, createLifecycleEvent, createWorkflowDocument, defaultValue, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRowField, defineSelectField, defineTab, defineTextField, defineTextareaField, defineTimeField, defineUrlField, diffDays, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, displayAction, displayComputed, displayCustom, displayCustomComponent, displayDivider, displayField, displayGrid, displayRepeat, displaySection, displayTab, displayTabs, displayText, endsWith, evaluateDetailComputed, evaluateJexl, evaluateJexlSync, executeFieldAfterRead, executeFieldBeforeChange, expr, first, floor, formatConfigDiagnostics, formatDate, formatJexlValue, generateDefaultDetailSchema, generateDocumentId, generateId, generateOpenApi, get, getAdminAuthCollection, getAdminRoleForCollection, getAllowedSitesForUser, getPublicAdminAuthConfig, includes, initializeWorkflowDocument, isConfigValidationError, isDetailItemVisible, isEmpty, isFuture, isPast, isSiteAuthorized, isUserAdmin, join, last, length, lower, maskEmail, maskPhone, maskTextPII, materializeWorkflowDocument, max, min, nanoid, normalizeConfig, normalizeDetailItem, now, numericFieldNames, parseSort, pow, prefixedId, pruneNavigationForUser, publishedStateName, publishingWorkflow, readingTime, reconcileNavigation, registerJexlHelpers, replace, resolveAdminAuthCollection, resolveAuthorizedSiteId, resolvePrefix, round, runCollectionHooks, sanitizeDocForAI, saveWorkflowDraft, simplePublishingWorkflow, slugify, sqrt, startsWith, sum, today, transitionWorkflow, trim, truncate, ulid, unique, upper, uuid, validateAdminConditionExpression, validateDeclarativeAccessExpression, validateDeclarativeHookExpression, validatePreviewUrlExpression, when, wordCount, workflowCapabilities };
2050
+ export { AIConfig, type AIErrorCode, AIPIIConfig, type AccessConditions, AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BASE62_ALPHABET, BUILTIN_JEXL_HELPERS, BaseDocument, Block, BooleanField, CROCKFORD_BASE32, CollectionConfig, CompiledNavItem, CompiledNavTree, ComputedHandler, type ConfigDiagnostic, ConfigValidationError, ConflictError, DatabaseAdapter, DateField, DateTimeField, type DeclarativeAccessSurface, type DeclarativeAccessValidationIssue, type DeclarativeAdminSurface, type DeclarativeAdminValidationIssue, DeclarativeHookExpression, type DeclarativeHookSurface, type DeclarativeHookValidationIssue, type DeclarativePreviewSurface, type DeclarativePreviewValidationIssue, DefineWorkspaceOptions, DetailAction, DetailActionOptions, DetailComputed, DetailComputedOptions, DetailCustom, DetailCustomOptions, DetailDivider, DetailDividerOptions, DetailField, DetailGrid, DetailGridOptions, DetailItem, DetailRepeat, DetailRepeatOptions, DetailSchema, DetailSection, DetailSectionOptions, DetailTab, DetailTabOptions, DetailTabs, DetailTabsOptions, DetailText, DetailTextOptions, DisplayFieldOptions, DuplicateKeyError, DyrectedAIError, DyrectedConfig, DyrectedError, EmailField, type ExprFunction, type ExtractCollectionSlugs, Field, FieldConditionBuilder, FieldType, ForbiddenError, type GenerateIdOptions, GlobalConfig, HookRequestContext, IconField, IdStrategy, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, LifecycleEvent, LifecycleEventName, MatchBuilder, MoneyField, MultiSelectField, NANOID_ALPHABET, NON_NEGOTIABLE_CREDENTIAL_FIELDS, NotFoundError, NumberField, ObjectField, PII_REGEX_PATTERNS, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RESERVED_NAVIGATION_SLUGS, RadioField, type ReconcileNavigationOptions, type ReconciledNavTree, RelationshipField, RichTextField, RowField, type SanitizeDocForAIOptions, SelectField, type SortClause, type SortDirection, type SqlSortDialect, type SystemDocFields, TASK_LOCKS_COLLECTION, TASK_LOCKS_COLLECTION_CONFIG, TaskConfig, TaskRunResult, type TaskRunner, TextField, TextareaField, TimeField, UNASSIGNED_GROUP_KEY, type UploadDocFields, UrlField, UserNavigationPreferences, ValidationError, ViewConfig, WORKFLOW_HISTORY_COLLECTION, type WhenFunction, WorkflowConfig, WorkflowTransition, abs, addDays, asCollection, assertValidAdminConditionsInConfig, assertValidDeclarativeAccessInConfig, assertValidDeclarativeHookExpression, assertValidDeclarativeHookResult, assertValidDeclarativeHooksInConfig, assertValidNavigationSlugs, assertValidPreviewUrlsInConfig, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, capitalize, ceil, clamp, coalesce, collectAdminConditionValidationIssues, collectConfigDiagnostics, collectDeclarativeAccessValidationIssues, collectDeclarativeHookValidationIssues, collectPreviewUrlValidationIssues, compact, compileNavigation, count, createLifecycleEvent, createTaskRunner, createWorkflowDocument, defaultValue, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMoneyField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRowField, defineSelectField, defineTab, defineTask, defineTextField, defineTextareaField, defineTimeField, defineUrlField, diffDays, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, displayAction, displayComputed, displayCustom, displayCustomComponent, displayDivider, displayField, displayGrid, displayRepeat, displaySection, displayTab, displayTabs, displayText, endsWith, evaluateDetailComputed, evaluateJexl, evaluateJexlSync, executeFieldAfterRead, executeFieldBeforeChange, expr, first, floor, formatConfigDiagnostics, formatDate, formatJexlValue, generateDefaultDetailSchema, generateDocumentId, generateId, generateOpenApi, get, getAdminAuthCollection, getAdminRoleForCollection, getAllowedSitesForUser, getPublicAdminAuthConfig, includes, initializeWorkflowDocument, isConfigValidationError, isDetailItemVisible, isEmpty, isFuture, isPast, isSiteAuthorized, isUserAdmin, join, last, length, lower, maskEmail, maskPhone, maskTextPII, materializeWorkflowDocument, max, min, nanoid, nextCronRun, normalizeConfig, normalizeDetailItem, normalizeGroupKey, now, numericFieldNames, parseCron, parseSort, pow, prefixedId, pruneNavigationForUser, publishedStateName, publishingWorkflow, readingTime, reconcileNavigation, registerJexlHelpers, replace, resolveAdminAuthCollection, resolveAllCollectionViews, resolveAuthorizedSiteId, resolveIndexName, resolvePrefix, round, runCollectionHooks, sanitizeDocForAI, saveWorkflowDraft, simplePublishingWorkflow, slugify, sqrt, startsWith, sum, today, transitionWorkflow, trim, truncate, ulid, unique, upper, uuid, validateAdminConditionExpression, validateDeclarativeAccessExpression, validateDeclarativeHookExpression, validatePreviewUrlExpression, when, wordCount, workflowCapabilities };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as Field, B as Block, C as CollectionConfig, D as DyrectedConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, G as GlobalConfig, a as DeclarativeHookExpression, W as WorkflowConfig, b as AuthenticatedUser, c as WorkflowTransition, L as LifecycleEventName, d as LifecycleEvent, e as BaseDocument, H as HookRequestContext, f as DetailActionOptions, g as DetailAction, h as DetailComputedOptions, i as ComputedHandler, j as DetailComputed, k as DetailCustomOptions, l as DetailCustom, m as DetailDividerOptions, n as DetailDivider, o as DisplayFieldOptions, p as DetailField, q as DetailItem, r as DetailGridOptions, s as DetailGrid, t as DetailRepeatOptions, u as DetailRepeat, v as DetailSectionOptions, w as DetailSection, x as DetailTabOptions, y as DetailTab, z as DetailTabsOptions, E as DetailTabs, I as DetailTextOptions, J as DetailText, K as DetailSchema, M as DyrectedContext, N as AIConfig, O as AIPIIConfig, Q as IdStrategy, R as CompiledNavTree, S as CompiledNavItem, U as UserNavigationPreferences, T as DefineWorkspaceOptions, V as ArrayField, X as FieldType, Y as BooleanField, Z as AuthConfig, _ as AccessPolicyResolver, $ as DateField, a0 as DateTimeField, a1 as EmailField, a2 as IconField, a3 as ImageField, a4 as JoinField, a5 as JsonField, a6 as MultiSelectField, a7 as NumberField, a8 as ObjectField, a9 as RadioField, aa as RelationshipField, ab as RichTextField, ac as RowField, ad as SelectField, ae as TextField, af as TextareaField, ag as TimeField, ah as UrlField } from './app-CLdT_0se.js';
2
- export { ai as AIAction, aj as AIActionStatus, ak as AIActionType, al as AIAuditActionType, am as AIAuditRecord, an as AIChunk, ao as AIMessage, ap as AIPIIPattern, aq as AIRateLimitResult, ar as AIRateLimitStore, as as AIThread, at as AIToolContext, au as AIToolDefinition, av as AI_ACTIONS_COLLECTION, aw as AI_AUDIT_COLLECTION, ax as AI_CHUNKS_COLLECTION, ay as AI_MESSAGES_COLLECTION, az as AI_THREADS_COLLECTION, aA as AccessConfig, aB as AccessFunction, aC as AccessFunctionArgs, aD as AccessResult, aE as AccessRule, aF as ActionConfig, aG as ActionConfigBase, aH as ActionConfigWithHandler, aI as ActionConfigWithMutation, aJ as ActionContext, aK as ActionType, aL as AdminAuthAccessResolution, aM as AdminAuthClaimMapping, aN as AdminAuthMember, aO as AdminAuthProvider, aP as AdminAuthProviderMembersConfig, aQ as AdminAuthProvisioningMode, aR as AdminAuthResolveAccessArgs, aS as AdminAuthResolvedIdentity, aT as AdminConfig, aU as AdminDashboardComponentSlots, aV as AdminIconName, aW as AggregateArgs, aX as AggregateCastType, aY as AggregateCollectionResult, aZ as AggregateInput, a_ as AggregateOperation, a$ as AggregateResult, b0 as BaseAdminAuthProvider, b1 as BaseFieldAdmin, b2 as BlockVariant, b3 as BlocksField, b4 as BooleanFieldAdmin, b5 as BooleanFormat, b6 as CURRENT_NAV_PREFERENCES_VERSION, b7 as CalendarViewConfig, b8 as CardsViewConfig, b9 as CharacterLimitFieldAdmin, ba as CharacterLimitFieldConfig, bb as CollectionAfterChangeHook, bc as CollectionAfterDeleteHook, bd as CollectionAfterReadHook, be as CollectionAfterReadHookEntry, bf as CollectionAfterTransitionHook, bg as CollectionBeforeChangeHook, bh as CollectionBeforeChangeHookEntry, bi as CollectionBeforeDeleteHook, bj as CollectionBeforeReadHook, bk as CollectionBeforeReadHookEntry, bl as CollectionBeforeTransitionHook, bm as CollectionIndex, bn as CollectionListComponentSlots, bo as CollectionRAGConfig, bp as CollectionSchemaResult, bq as CollectionSummaryResult, br as CollectionViewComponentSlots, bs as CompiledNavGroup, bt as CountOperation, bu as CustomAdminAuthProvider, bv as DEFAULT_USER_NAV_PREFERENCES, bw as DatabaseAdapter, bx as DateFieldAdmin, by as DateFormat, bz as DefaultValueContext, bA as DefineActionOptions, bB as DefineCalendarViewOptions, bC as DefineCardsViewOptions, bD as DefineGanttViewOptions, bE as DefineKanbanViewOptions, bF as DefineTableViewOptions, bG as DefineViewBaseOptions, bH as DefineViewOptions, bI as DetailSpan, bJ as DisplayTone, bK as DisplayVariant, bL as DistinctCountOperation, bM as DistinctValuesOperation, bN as DynamicOptionItem, bO as DynamicOptionsConfig, bP as DynamicOptionsResolver, bQ as DynamicOptionsResolverArgs, bR as DyrectedAIContext, bS as DyrectedLoggerConfig, bT as DyrectedObservabilityConfig, bU as EmailFieldAdmin, bV as FieldAdminHooks, bW as FieldAdminOnChangeHook, bX as FieldAdminOnChangeHookArgs, bY as FieldAdminOptionsHook, bZ as FieldAdminOptionsHookArgs, b_ as FieldAdminOptionsHookResult, b$ as FieldAfterReadHook, c0 as FieldAfterReadHookArgs, c1 as FieldBase, c2 as FieldBeforeChangeHook, c3 as FieldBeforeChangeHookArgs, c4 as FieldHook, c5 as FieldHooks, c6 as FileData, c7 as GanttViewConfig, c8 as GetDocumentResult, c9 as GlobalAfterChangeHook, ca as GlobalAfterReadHook, cb as GlobalAfterReadHookEntry, cc as GlobalBeforeChangeHook, cd as GlobalBeforeChangeHookEntry, ce as GlobalBeforeReadHook, cf as GlobalBeforeReadHookEntry, cg as GlobalRAGConfig, ch as GlobalSchemaResult, ci as GlobalSummaryResult, cj as HeadingLevel, ck as HookFunction, cl as IconFieldAdmin, cm as ImageService, cn as ImageTransformOptions, co as InferAggregateResult, cp as JoinFieldAdmin, cq as JsonFieldAdmin, cr as JsonFormat, cs as KanbanViewConfig, ct as LIFECYCLE_EVENT_NAMES, cu as LifecycleEventHandler, cv as LinkFormat, cw as MetricColor, cx as MultiSelectFieldAdmin, cy as NamedAccessPolicy, cz as NavBadgeConfig, cA as NavGroup, cB as NumberFieldAdmin, cC as NumberFormat, cD as NumberLimitFieldAdmin, cE as NumberLimitFieldConfig, cF as NumericOperation, cG as NumericUpdateOperator, cH as OIDCAdminAuthProvider, cI as OptionFormat, cJ as PaginatedResult, cK as PinnedNavItemRef, cL as PublicAdminAuthProvider, cM as QueryCollectionResult, cN as RAGSearchResult, cO as RadioFieldAdmin, cP as RateLimitConfig, cQ as ReadonlyDatabaseAdapter, cR as RichTextFeature, cS as RichTextFieldConfig, cT as SelectFieldAdmin, cU as SqlWhereResult, cV as StorageAdapter, cW as TableViewConfig, cX as TextFieldAdmin, cY as TextFormat, cZ as TextareaFieldAdmin, c_ as TrustProxyConfig, c$ as TypedField, d0 as UploadConfig, d1 as UrlFieldAdmin, d2 as UrlLinkValue, d3 as ViewActionFeatures, d4 as ViewComponentSlots, d5 as ViewConfig, d6 as ViewConfigBase, d7 as ViewLayout, d8 as ViewMetric, d9 as ViewSubMetric, da as WhereClause, db as WhereOperator, dc as WhereOperatorName, dd as WordLimitFieldAdmin, de as WordLimitFieldConfig, df as WorkflowMetadata, dg as WorkflowRole, dh as WorkflowState, di as WorkflowTransitionContext, dj as defineAction, dk as defineCalendarView, dl as defineCardsView, dm as defineGanttView, dn as defineKanbanView, dp as defineTableView, dq as defineView, dr as defineWorkspace, ds as isAICollection, dt as parseMongoWhere, du as parseSqlWhere } from './app-CLdT_0se.js';
1
+ import { F as Field, B as Block, C as CollectionConfig, D as DyrectedConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, G as GlobalConfig, a as DeclarativeHookExpression, W as WorkflowConfig, b as AuthenticatedUser, c as WorkflowTransition, L as LifecycleEventName, d as LifecycleEvent, e as DatabaseAdapter, f as BaseDocument, H as HookRequestContext, T as TaskRunResult, g as TaskConfig, h as DetailActionOptions, i as DetailAction, j as DetailComputedOptions, k as ComputedHandler, l as DetailComputed, m as DetailCustomOptions, n as DetailCustom, o as DetailDividerOptions, p as DetailDivider, q as DisplayFieldOptions, r as DetailField, s as DetailItem, t as DetailGridOptions, u as DetailGrid, v as DetailRepeatOptions, w as DetailRepeat, x as DetailSectionOptions, y as DetailSection, z as DetailTabOptions, E as DetailTab, I as DetailTabsOptions, J as DetailTabs, K as DetailTextOptions, M as DetailText, N as DetailSchema, O as DyrectedContext, Q as AIConfig, R as AIPIIConfig, S as IdStrategy, U as CompiledNavTree, V as CompiledNavItem, X as UserNavigationPreferences, Y as DefineWorkspaceOptions, Z as ViewConfig, _ as ArrayField, $ as FieldType, a0 as BooleanField, a1 as AuthConfig, a2 as AccessPolicyResolver, a3 as DateField, a4 as DateTimeField, a5 as EmailField, a6 as IconField, a7 as ImageField, a8 as JoinField, a9 as JsonField, aa as MoneyField, ab as MultiSelectField, ac as NumberField, ad as ObjectField, ae as RadioField, af as RelationshipField, ag as RichTextField, ah as RowField, ai as SelectField, aj as TextField, ak as TextareaField, al as TimeField, am as UrlField } from './app-x7J5BIqK.js';
2
+ export { an as AIAction, ao as AIActionStatus, ap as AIActionType, aq as AIAuditActionType, ar as AIAuditRecord, as as AIChunk, at as AIMessage, au as AIPIIPattern, av as AIRateLimitResult, aw as AIRateLimitStore, ax as AIThread, ay as AIToolContext, az as AIToolDefinition, aA as AI_ACTIONS_COLLECTION, aB as AI_AUDIT_COLLECTION, aC as AI_CHUNKS_COLLECTION, aD as AI_MESSAGES_COLLECTION, aE as AI_THREADS_COLLECTION, aF as AccessConfig, aG as AccessFunction, aH as AccessFunctionArgs, aI as AccessResult, aJ as AccessRule, aK as ActionConfig, aL as ActionConfigBase, aM as ActionConfigWithHandler, aN as ActionConfigWithMutation, aO as ActionContext, aP as ActionType, aQ as AdminAuthAccessResolution, aR as AdminAuthClaimMapping, aS as AdminAuthMember, aT as AdminAuthProvider, aU as AdminAuthProviderMembersConfig, aV as AdminAuthProvisioningMode, aW as AdminAuthResolveAccessArgs, aX as AdminAuthResolvedIdentity, aY as AdminConfig, aZ as AdminDashboardComponentSlots, a_ as AdminIconName, a$ as AggregateArgs, b0 as AggregateCastType, b1 as AggregateCollectionResult, b2 as AggregateInput, b3 as AggregateOperation, b4 as AggregateResult, b5 as BaseAdminAuthProvider, b6 as BaseFieldAdmin, b7 as BlockVariant, b8 as BlocksField, b9 as BooleanFieldAdmin, ba as BooleanFormat, bb as CURRENT_NAV_PREFERENCES_VERSION, bc as CalendarViewConfig, bd as CardsViewConfig, be as CharacterLimitFieldAdmin, bf as CharacterLimitFieldConfig, bg as CollectionAfterChangeHook, bh as CollectionAfterDeleteHook, bi as CollectionAfterReadHook, bj as CollectionAfterReadHookEntry, bk as CollectionAfterTransitionHook, bl as CollectionBeforeChangeHook, bm as CollectionBeforeChangeHookEntry, bn as CollectionBeforeCommitHook, bo as CollectionBeforeDeleteHook, bp as CollectionBeforeReadHook, bq as CollectionBeforeReadHookEntry, br as CollectionBeforeTransitionHook, bs as CollectionIndex, bt as CollectionListComponentSlots, bu as CollectionRAGConfig, bv as CollectionSchemaResult, bw as CollectionSummaryResult, bx as CollectionViewComponentSlots, by as CompiledNavGroup, bz as CountOperation, bA as CustomAdminAuthProvider, bB as DEFAULT_USER_NAV_PREFERENCES, bC as DateFieldAdmin, bD as DateFormat, bE as DefaultValueContext, bF as DefineActionOptions, bG as DefineCalendarViewOptions, bH as DefineCardsViewOptions, bI as DefineGanttViewOptions, bJ as DefineKanbanViewOptions, bK as DefineTableViewOptions, bL as DefineViewBaseOptions, bM as DefineViewOptions, bN as DetailSpan, bO as DisplayTone, bP as DisplayVariant, bQ as DistinctCountOperation, bR as DistinctValuesOperation, bS as DynamicOptionItem, bT as DynamicOptionsConfig, bU as DynamicOptionsResolver, bV as DynamicOptionsResolverArgs, bW as DyrectedAIContext, bX as DyrectedLoggerConfig, bY as DyrectedObservabilityConfig, bZ as EmailFieldAdmin, b_ as FieldAdminHooks, b$ as FieldAdminOnChangeHook, c0 as FieldAdminOnChangeHookArgs, c1 as FieldAdminOptionsHook, c2 as FieldAdminOptionsHookArgs, c3 as FieldAdminOptionsHookResult, c4 as FieldAfterReadHook, c5 as FieldAfterReadHookArgs, c6 as FieldBase, c7 as FieldBeforeChangeHook, c8 as FieldBeforeChangeHookArgs, c9 as FieldHook, ca as FieldHooks, cb as FileData, cc as GanttViewConfig, cd as GetDocumentResult, ce as GlobalAfterChangeHook, cf as GlobalAfterReadHook, cg as GlobalAfterReadHookEntry, ch as GlobalBeforeChangeHook, ci as GlobalBeforeChangeHookEntry, cj as GlobalBeforeReadHook, ck as GlobalBeforeReadHookEntry, cl as GlobalRAGConfig, cm as GlobalSchemaResult, cn as GlobalSummaryResult, co as HeadingLevel, cp as HookFunction, cq as IconFieldAdmin, cr as ImageService, cs as ImageTransformOptions, ct as InferAggregateResult, cu as JoinFieldAdmin, cv as JsonFieldAdmin, cw as JsonFormat, cx as KanbanViewConfig, cy as LIFECYCLE_EVENT_NAMES, cz as LifecycleEventHandler, cA as LinkFormat, cB as MetricColor, cC as MoneyFieldAdmin, cD as MoneyFieldConfig, cE as MultiSelectFieldAdmin, cF as NamedAccessPolicy, cG as NavBadgeConfig, cH as NavGroup, cI as NumberFieldAdmin, cJ as NumberFormat, cK as NumberLimitFieldAdmin, cL as NumberLimitFieldConfig, cM as NumericOperation, cN as NumericUpdateOperator, cO as OIDCAdminAuthProvider, cP as OptionFormat, cQ as PaginatedResult, cR as PinnedNavItemRef, cS as PublicAdminAuthProvider, cT as QueryCollectionResult, cU as RAGSearchResult, cV as RadioFieldAdmin, cW as RateLimitConfig, cX as ReadonlyDatabaseAdapter, cY as RichTextFeature, cZ as RichTextFieldConfig, c_ as SelectFieldAdmin, c$ as SqlWhereResult, d0 as StorageAdapter, d1 as TableViewConfig, d2 as TaskContext, d3 as TaskLogger, d4 as TaskRunStatus, d5 as TextFieldAdmin, d6 as TextFormat, d7 as TextareaFieldAdmin, d8 as TrustProxyConfig, d9 as TypedField, da as UploadConfig, db as UrlFieldAdmin, dc as UrlLinkValue, dd as ViewActionFeatures, de as ViewComponentSlots, df as ViewConfigBase, dg as ViewLayout, dh as ViewMetric, di as ViewSubMetric, dj as WhereClause, dk as WhereOperator, dl as WhereOperatorName, dm as WordLimitFieldAdmin, dn as WordLimitFieldConfig, dp as WorkflowMetadata, dq as WorkflowOnTransitionContext, dr as WorkflowOnTransitionHook, ds as WorkflowRole, dt as WorkflowState, du as WorkflowTransitionContext, dv as coerceBooleanWhere, dw as defineAction, dx as defineCalendarView, dy as defineCardsView, dz as defineGanttView, dA as defineKanbanView, dB as defineTableView, dC as defineView, dD as defineWorkspace, dE as isAICollection, dF as parseMongoWhere, dG as parseSqlWhere } from './app-x7J5BIqK.js';
3
3
  import jexl from 'jexl';
4
4
  import { Context } from 'hono';
5
5
  export { z } from 'zod';
@@ -13,7 +13,7 @@ import '@opentelemetry/exporter-prometheus';
13
13
  type Prettify<T> = {
14
14
  [K in keyof T]: T[K];
15
15
  };
16
- type FieldValueType<F extends Field> = F["type"] extends "text" | "textarea" | "email" | "url" | "icon" | "date" | "datetime" | "time" | "select" | "radio" ? string : F["type"] extends "number" ? number : F["type"] extends "boolean" ? boolean : F["type"] extends "multiSelect" ? string[] : F["type"] extends "relationship" ? F extends {
16
+ type FieldValueType<F extends Field> = F["type"] extends "text" | "textarea" | "email" | "url" | "icon" | "date" | "datetime" | "time" | "select" | "radio" ? string : F["type"] extends "number" | "money" ? number : F["type"] extends "boolean" ? boolean : F["type"] extends "multiSelect" ? string[] : F["type"] extends "relationship" ? F extends {
17
17
  hasMany: true;
18
18
  } ? string[] : string : F["type"] extends "image" ? F extends {
19
19
  hasMany: true;
@@ -639,6 +639,8 @@ declare function saveWorkflowDraft(args: {
639
639
  originalDoc: BaseDocument;
640
640
  data: Record<string, unknown>;
641
641
  user?: AuthenticatedUser;
642
+ /** Runs inside the write transaction, after the draft is saved. */
643
+ beforeCommit?: (tx: DatabaseAdapter, doc: BaseDocument) => Promise<void>;
642
644
  }): Promise<{
643
645
  doc: BaseDocument;
644
646
  event: LifecycleEvent;
@@ -648,6 +650,8 @@ declare function createWorkflowDocument(args: {
648
650
  collection: CollectionConfig;
649
651
  data: Record<string, unknown>;
650
652
  user?: AuthenticatedUser;
653
+ /** Runs inside the write transaction, after the document is created. */
654
+ beforeCommit?: (tx: DatabaseAdapter, doc: BaseDocument) => Promise<void>;
651
655
  }): Promise<{
652
656
  doc: BaseDocument;
653
657
  event: LifecycleEvent;
@@ -659,10 +663,74 @@ declare function transitionWorkflow(args: {
659
663
  transitionName: string;
660
664
  expectedRevision?: number;
661
665
  comment?: string;
666
+ input?: Record<string, unknown>;
662
667
  user?: AuthenticatedUser;
663
668
  req: HookRequestContext;
664
669
  }): Promise<BaseDocument>;
665
670
 
671
+ declare const TASK_LOCKS_COLLECTION = "__task_locks";
672
+ /** Internal collection holding one lock row per task. Created on demand by the runner. */
673
+ declare const TASK_LOCKS_COLLECTION_CONFIG: CollectionConfig;
674
+ interface CronSchedule {
675
+ minutes: Set<number>;
676
+ hours: Set<number>;
677
+ daysOfMonth: Set<number>;
678
+ months: Set<number>;
679
+ daysOfWeek: Set<number>;
680
+ /** Standard cron semantics: when both day fields are restricted, either may match. */
681
+ dayFieldsBothRestricted: boolean;
682
+ }
683
+ /** Parses a five-field cron expression. Throws a descriptive error when it is invalid. */
684
+ declare function parseCron(expression: string): CronSchedule;
685
+ /** The first cron slot strictly after `after`, in UTC. */
686
+ declare function nextCronRun(expression: string | CronSchedule, after: Date): Date;
687
+ /**
688
+ * Defines a background task. Validates the name, cron expression and lock
689
+ * timeout immediately, so a typo fails at startup rather than at 3am.
690
+ *
691
+ * @example
692
+ * ```ts
693
+ * export const ledgerDrift = defineTask({
694
+ * name: "wallet:ledger-drift",
695
+ * cron: "*\/15 * * * *",
696
+ * lockTimeout: 300,
697
+ * async run({ db, logger }) {
698
+ * const drifts = await checkLedgerDrift(db);
699
+ * if (drifts.length) logger.error({ drifts }, "Ledger drift detected");
700
+ * },
701
+ * });
702
+ * ```
703
+ */
704
+ declare function defineTask<const T extends TaskConfig>(task: T): T;
705
+ interface TaskRunner {
706
+ /**
707
+ * Runs one task now, ignoring its schedule. Returns `skipped` with reason
708
+ * `"locked"` when another instance is already running it.
709
+ */
710
+ runTask(name: string): Promise<TaskRunResult>;
711
+ /**
712
+ * Runs every scheduled task that is due. Safe to call from any number of
713
+ * instances or from a platform cron: each due slot runs exactly once.
714
+ */
715
+ runDue(now?: Date): Promise<TaskRunResult[]>;
716
+ /** Starts polling for due tasks. Returns immediately and never blocks startup. */
717
+ start(options?: {
718
+ intervalMs?: number;
719
+ }): void;
720
+ /** Stops polling and waits for any run in progress to settle. */
721
+ stop(): Promise<void>;
722
+ }
723
+ /**
724
+ * Creates the runner for the tasks in `config.tasks`. Coordination between
725
+ * instances uses a lock row per task in the database, taken with a single
726
+ * conditional update, so it works across processes and on every adapter.
727
+ *
728
+ * Core does not start it for you: a timer is unreliable on serverless, so the
729
+ * host chooses. Call `start()` on a long-lived Node server, or call `runDue()`
730
+ * from a platform cron.
731
+ */
732
+ declare function createTaskRunner(config: DyrectedConfig): TaskRunner;
733
+
666
734
  /**
667
735
  * Normalizes a DetailItem (which may be a shorthand string) into a standard DetailItem object.
668
736
  *
@@ -1393,6 +1461,28 @@ declare function generateDocumentId(collectionOrSlug?: string | {
1393
1461
  idGenerator?: (slug: string) => string;
1394
1462
  }): string;
1395
1463
 
1464
+ /**
1465
+ * Builds the physical name of an index, for example `uniq_collection_wallets_currency`.
1466
+ *
1467
+ * MySQL rejects names over 64 characters and Postgres silently truncates at 63, which can
1468
+ * collide or, on MySQL, leave a unique constraint uncreated. Names that would be too long are
1469
+ * shortened to `<prefix>_<hash>_<last field>`, where the hash is derived from the full name so
1470
+ * the result stays stable and unique per table and field set.
1471
+ */
1472
+ declare function resolveIndexName(prefix: "uniq" | "idx", table: string, fields: string[]): string;
1473
+
1474
+ /** Key used for the group whose value is null or missing. */
1475
+ declare const UNASSIGNED_GROUP_KEY = "__unassigned__";
1476
+ /**
1477
+ * Turns the raw value of a `groupBy` column into the string key used in aggregate results.
1478
+ *
1479
+ * Databases hand the same logical value back in different shapes: a boolean is `true`, `1` or
1480
+ * `'1'`; a decimal column returns `'1.0000'`; a timestamp is a `Date` or a space-separated string.
1481
+ * Normalizing by the field's declared type keeps the keys identical on every adapter, so callers
1482
+ * can look up `groups["true"]`, `groups["1"]` or an ISO date whichever database they run on.
1483
+ */
1484
+ declare function normalizeGroupKey(raw: unknown, fieldType?: string): string;
1485
+
1396
1486
  interface ReconciledNavTree extends CompiledNavTree {
1397
1487
  pinnedItems: CompiledNavItem[];
1398
1488
  }
@@ -1449,6 +1539,13 @@ declare function compileNavigation(config: DyrectedConfig<any> | {
1449
1539
  * Filter compiled navigation based on user access rules.
1450
1540
  */
1451
1541
  declare function pruneNavigationForUser(tree: CompiledNavTree, user?: any): CompiledNavTree;
1542
+ /**
1543
+ * Resolves all operational views associated with a collection, combining:
1544
+ * 1. Views declared directly on the collection (`collection.views`)
1545
+ * 2. Views targeting this collection via `admin.navigation` (including `addToCollection`,
1546
+ * explicit collection navigation items, and views inside standalone operational workspaces).
1547
+ */
1548
+ declare function resolveAllCollectionViews(collection: CollectionConfig, config?: Partial<DyrectedConfig> | null): ViewConfig[];
1452
1549
 
1453
1550
  type TopLevelFieldName<TFields extends readonly Field[]> = Extract<TFields[number], {
1454
1551
  name: string;
@@ -1770,6 +1867,10 @@ declare const defineRichTextField: <const T extends Omit<RichTextField, "type">>
1770
1867
  declare const defineNumberField: <const T extends Omit<NumberField, "type">>(field: T) => T & {
1771
1868
  type: "number";
1772
1869
  };
1870
+ /** Define a `money` field stored as integer minor units. */
1871
+ declare const defineMoneyField: <const T extends Omit<MoneyField, "type">>(field: T) => T & {
1872
+ type: "money";
1873
+ };
1773
1874
  /** Define a `boolean` field. */
1774
1875
  declare const defineBooleanField: <const T extends Omit<BooleanField, "type">>(field: T) => T & {
1775
1876
  type: "boolean";
@@ -1946,4 +2047,4 @@ declare function defineTab<const T extends readonly Field[]>(args: {
1946
2047
  fields: T;
1947
2048
  }): T;
1948
2049
 
1949
- export { AIConfig, type AIErrorCode, AIPIIConfig, type AccessConditions, AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BASE62_ALPHABET, BUILTIN_JEXL_HELPERS, BaseDocument, Block, BooleanField, CROCKFORD_BASE32, CollectionConfig, CompiledNavItem, CompiledNavTree, ComputedHandler, type ConfigDiagnostic, ConfigValidationError, ConflictError, DateField, DateTimeField, type DeclarativeAccessSurface, type DeclarativeAccessValidationIssue, type DeclarativeAdminSurface, type DeclarativeAdminValidationIssue, DeclarativeHookExpression, type DeclarativeHookSurface, type DeclarativeHookValidationIssue, type DeclarativePreviewSurface, type DeclarativePreviewValidationIssue, DefineWorkspaceOptions, DetailAction, DetailActionOptions, DetailComputed, DetailComputedOptions, DetailCustom, DetailCustomOptions, DetailDivider, DetailDividerOptions, DetailField, DetailGrid, DetailGridOptions, DetailItem, DetailRepeat, DetailRepeatOptions, DetailSchema, DetailSection, DetailSectionOptions, DetailTab, DetailTabOptions, DetailTabs, DetailTabsOptions, DetailText, DetailTextOptions, DisplayFieldOptions, DuplicateKeyError, DyrectedAIError, DyrectedConfig, DyrectedError, EmailField, type ExprFunction, type ExtractCollectionSlugs, Field, FieldConditionBuilder, FieldType, ForbiddenError, type GenerateIdOptions, GlobalConfig, HookRequestContext, IconField, IdStrategy, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, LifecycleEvent, LifecycleEventName, MatchBuilder, MultiSelectField, NANOID_ALPHABET, NON_NEGOTIABLE_CREDENTIAL_FIELDS, NotFoundError, NumberField, ObjectField, PII_REGEX_PATTERNS, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RESERVED_NAVIGATION_SLUGS, RadioField, type ReconcileNavigationOptions, type ReconciledNavTree, RelationshipField, RichTextField, RowField, type SanitizeDocForAIOptions, SelectField, type SortClause, type SortDirection, type SqlSortDialect, type SystemDocFields, TextField, TextareaField, TimeField, type UploadDocFields, UrlField, UserNavigationPreferences, ValidationError, WORKFLOW_HISTORY_COLLECTION, type WhenFunction, WorkflowConfig, WorkflowTransition, abs, addDays, asCollection, assertValidAdminConditionsInConfig, assertValidDeclarativeAccessInConfig, assertValidDeclarativeHookExpression, assertValidDeclarativeHookResult, assertValidDeclarativeHooksInConfig, assertValidNavigationSlugs, assertValidPreviewUrlsInConfig, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, capitalize, ceil, clamp, coalesce, collectAdminConditionValidationIssues, collectConfigDiagnostics, collectDeclarativeAccessValidationIssues, collectDeclarativeHookValidationIssues, collectPreviewUrlValidationIssues, compact, compileNavigation, count, createLifecycleEvent, createWorkflowDocument, defaultValue, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRowField, defineSelectField, defineTab, defineTextField, defineTextareaField, defineTimeField, defineUrlField, diffDays, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, displayAction, displayComputed, displayCustom, displayCustomComponent, displayDivider, displayField, displayGrid, displayRepeat, displaySection, displayTab, displayTabs, displayText, endsWith, evaluateDetailComputed, evaluateJexl, evaluateJexlSync, executeFieldAfterRead, executeFieldBeforeChange, expr, first, floor, formatConfigDiagnostics, formatDate, formatJexlValue, generateDefaultDetailSchema, generateDocumentId, generateId, generateOpenApi, get, getAdminAuthCollection, getAdminRoleForCollection, getAllowedSitesForUser, getPublicAdminAuthConfig, includes, initializeWorkflowDocument, isConfigValidationError, isDetailItemVisible, isEmpty, isFuture, isPast, isSiteAuthorized, isUserAdmin, join, last, length, lower, maskEmail, maskPhone, maskTextPII, materializeWorkflowDocument, max, min, nanoid, normalizeConfig, normalizeDetailItem, now, numericFieldNames, parseSort, pow, prefixedId, pruneNavigationForUser, publishedStateName, publishingWorkflow, readingTime, reconcileNavigation, registerJexlHelpers, replace, resolveAdminAuthCollection, resolveAuthorizedSiteId, resolvePrefix, round, runCollectionHooks, sanitizeDocForAI, saveWorkflowDraft, simplePublishingWorkflow, slugify, sqrt, startsWith, sum, today, transitionWorkflow, trim, truncate, ulid, unique, upper, uuid, validateAdminConditionExpression, validateDeclarativeAccessExpression, validateDeclarativeHookExpression, validatePreviewUrlExpression, when, wordCount, workflowCapabilities };
2050
+ export { AIConfig, type AIErrorCode, AIPIIConfig, type AccessConditions, AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BASE62_ALPHABET, BUILTIN_JEXL_HELPERS, BaseDocument, Block, BooleanField, CROCKFORD_BASE32, CollectionConfig, CompiledNavItem, CompiledNavTree, ComputedHandler, type ConfigDiagnostic, ConfigValidationError, ConflictError, DatabaseAdapter, DateField, DateTimeField, type DeclarativeAccessSurface, type DeclarativeAccessValidationIssue, type DeclarativeAdminSurface, type DeclarativeAdminValidationIssue, DeclarativeHookExpression, type DeclarativeHookSurface, type DeclarativeHookValidationIssue, type DeclarativePreviewSurface, type DeclarativePreviewValidationIssue, DefineWorkspaceOptions, DetailAction, DetailActionOptions, DetailComputed, DetailComputedOptions, DetailCustom, DetailCustomOptions, DetailDivider, DetailDividerOptions, DetailField, DetailGrid, DetailGridOptions, DetailItem, DetailRepeat, DetailRepeatOptions, DetailSchema, DetailSection, DetailSectionOptions, DetailTab, DetailTabOptions, DetailTabs, DetailTabsOptions, DetailText, DetailTextOptions, DisplayFieldOptions, DuplicateKeyError, DyrectedAIError, DyrectedConfig, DyrectedError, EmailField, type ExprFunction, type ExtractCollectionSlugs, Field, FieldConditionBuilder, FieldType, ForbiddenError, type GenerateIdOptions, GlobalConfig, HookRequestContext, IconField, IdStrategy, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, LifecycleEvent, LifecycleEventName, MatchBuilder, MoneyField, MultiSelectField, NANOID_ALPHABET, NON_NEGOTIABLE_CREDENTIAL_FIELDS, NotFoundError, NumberField, ObjectField, PII_REGEX_PATTERNS, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RESERVED_NAVIGATION_SLUGS, RadioField, type ReconcileNavigationOptions, type ReconciledNavTree, RelationshipField, RichTextField, RowField, type SanitizeDocForAIOptions, SelectField, type SortClause, type SortDirection, type SqlSortDialect, type SystemDocFields, TASK_LOCKS_COLLECTION, TASK_LOCKS_COLLECTION_CONFIG, TaskConfig, TaskRunResult, type TaskRunner, TextField, TextareaField, TimeField, UNASSIGNED_GROUP_KEY, type UploadDocFields, UrlField, UserNavigationPreferences, ValidationError, ViewConfig, WORKFLOW_HISTORY_COLLECTION, type WhenFunction, WorkflowConfig, WorkflowTransition, abs, addDays, asCollection, assertValidAdminConditionsInConfig, assertValidDeclarativeAccessInConfig, assertValidDeclarativeHookExpression, assertValidDeclarativeHookResult, assertValidDeclarativeHooksInConfig, assertValidNavigationSlugs, assertValidPreviewUrlsInConfig, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, capitalize, ceil, clamp, coalesce, collectAdminConditionValidationIssues, collectConfigDiagnostics, collectDeclarativeAccessValidationIssues, collectDeclarativeHookValidationIssues, collectPreviewUrlValidationIssues, compact, compileNavigation, count, createLifecycleEvent, createTaskRunner, createWorkflowDocument, defaultValue, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMoneyField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRowField, defineSelectField, defineTab, defineTask, defineTextField, defineTextareaField, defineTimeField, defineUrlField, diffDays, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, displayAction, displayComputed, displayCustom, displayCustomComponent, displayDivider, displayField, displayGrid, displayRepeat, displaySection, displayTab, displayTabs, displayText, endsWith, evaluateDetailComputed, evaluateJexl, evaluateJexlSync, executeFieldAfterRead, executeFieldBeforeChange, expr, first, floor, formatConfigDiagnostics, formatDate, formatJexlValue, generateDefaultDetailSchema, generateDocumentId, generateId, generateOpenApi, get, getAdminAuthCollection, getAdminRoleForCollection, getAllowedSitesForUser, getPublicAdminAuthConfig, includes, initializeWorkflowDocument, isConfigValidationError, isDetailItemVisible, isEmpty, isFuture, isPast, isSiteAuthorized, isUserAdmin, join, last, length, lower, maskEmail, maskPhone, maskTextPII, materializeWorkflowDocument, max, min, nanoid, nextCronRun, normalizeConfig, normalizeDetailItem, normalizeGroupKey, now, numericFieldNames, parseCron, parseSort, pow, prefixedId, pruneNavigationForUser, publishedStateName, publishingWorkflow, readingTime, reconcileNavigation, registerJexlHelpers, replace, resolveAdminAuthCollection, resolveAllCollectionViews, resolveAuthorizedSiteId, resolveIndexName, resolvePrefix, round, runCollectionHooks, sanitizeDocForAI, saveWorkflowDraft, simplePublishingWorkflow, slugify, sqrt, startsWith, sum, today, transitionWorkflow, trim, truncate, ulid, unique, upper, uuid, validateAdminConditionExpression, validateDeclarativeAccessExpression, validateDeclarativeHookExpression, validatePreviewUrlExpression, when, wordCount, workflowCapabilities };