@objectstack/service-automation 7.5.0 → 7.7.0

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.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { ActionDescriptor, FlowNodeParsed, FlowParsed, ExecutionLog } from '@objectstack/spec/automation';
1
+ import { ActionDescriptor, FlowNodeParsed, FlowParsed, ExecutionLog, FlowRegionParsed } from '@objectstack/spec/automation';
2
2
  import { IAutomationService, Logger, AutomationContext, ScreenSpec, AutomationResult, ResumeSignal } from '@objectstack/spec/contracts';
3
3
  import { Connector } from '@objectstack/spec/integration';
4
+ import * as _objectstack_spec_data from '@objectstack/spec/data';
4
5
  import { Plugin, PluginContext } from '@objectstack/core';
5
6
 
6
7
  /**
@@ -155,7 +156,8 @@ interface ConnectorDescriptor {
155
156
  readonly actions: ConnectorActionDescriptor[];
156
157
  }
157
158
  /**
158
- * Internal execution step log entry.
159
+ * Execution step log entry. Part of a {@link SuspendedRun}'s persisted state, so
160
+ * it survives serialization to a durable {@link SuspendedRunStore}.
159
161
  */
160
162
  interface StepLogEntry {
161
163
  nodeId: string;
@@ -193,6 +195,52 @@ interface ExecutionLogEntry {
193
195
  output?: unknown;
194
196
  error?: string;
195
197
  }
198
+ /**
199
+ * A run paused at a node, awaiting {@link AutomationEngine.resume} (ADR-0019).
200
+ *
201
+ * Held in an in-memory hot cache and — when a {@link SuspendedRunStore} is
202
+ * configured — mirrored to durable storage so the pause survives a process
203
+ * restart. Every field is JSON-serializable (the engine's variable `Map` is
204
+ * snapshotted as a plain object) so the whole record round-trips through a
205
+ * store.
206
+ */
207
+ interface SuspendedRun {
208
+ runId: string;
209
+ flowName: string;
210
+ flowVersion?: number;
211
+ /** The node the run paused at; resume continues from its out-edges. */
212
+ nodeId: string;
213
+ /** Snapshot of the flow variable map at suspend time. */
214
+ variables: Record<string, unknown>;
215
+ steps: StepLogEntry[];
216
+ context: AutomationContext;
217
+ startedAt: string;
218
+ startTime: number;
219
+ correlation?: string;
220
+ /** Screen the run paused on (screen-flow runtime), for re-fetch + UI render. */
221
+ screen?: ScreenSpec;
222
+ }
223
+ /**
224
+ * Pluggable durable store for suspended runs (ADR-0019). The engine persists a
225
+ * {@link SuspendedRun} on suspend and deletes it on terminal completion; on
226
+ * {@link AutomationEngine.resume} of a run not in the in-memory cache (e.g.
227
+ * after a process restart) it rehydrates from here.
228
+ *
229
+ * The default is purely in-memory (no store); a host wires a DB-backed store
230
+ * (`ObjectStoreSuspendedRunStore`, on `sys_automation_run`) for production /
231
+ * serverless deployments where the process hibernates between suspend and
232
+ * resume.
233
+ */
234
+ interface SuspendedRunStore {
235
+ /** Persist (insert or replace) a suspended run. */
236
+ save(run: SuspendedRun): Promise<void>;
237
+ /** Load a suspended run by id, or `null` if not stored. */
238
+ load(runId: string): Promise<SuspendedRun | null>;
239
+ /** Remove a suspended run's durable record (idempotent). */
240
+ delete(runId: string): Promise<void>;
241
+ /** List all currently-stored suspended runs. */
242
+ list(): Promise<SuspendedRun[]>;
243
+ }
196
244
  declare class AutomationEngine implements IAutomationService {
197
245
  private flows;
198
246
  private flowEnabled;
@@ -211,12 +259,74 @@ declare class AutomationEngine implements IAutomationService {
211
259
  private executionLogs;
212
260
  private maxLogSize;
213
261
  private logger;
214
- private runCounter;
215
- /** Runs paused at a node, keyed by runId (ADR-0019). In-memory, see {@link SuspendedRun}. */
262
+ /**
263
+ * Runs paused at a node, keyed by runId (ADR-0019). In-memory hot cache
264
+ * mirrored to {@link store} when one is configured, so a pause survives a
265
+ * process restart. See {@link SuspendedRun}.
266
+ */
216
267
  private suspendedRuns;
217
- constructor(logger: Logger);
268
+ /**
269
+ * Optional durable backing for {@link suspendedRuns}. When set, suspended
270
+ * runs are persisted on suspend and rehydrated on resume after a restart;
271
+ * when absent, behaviour is purely in-memory (the historical default).
272
+ */
273
+ private store?;
274
+ /**
275
+ * Run ids currently mid-resume — an in-process idempotency guard so a
276
+ * duplicate `resume(runId)` can't re-enter and double-run side effects.
277
+ */
278
+ private resuming;
279
+ constructor(logger: Logger, store?: SuspendedRunStore);
280
+ /**
281
+ * Attach (or replace) the durable {@link SuspendedRunStore}. Used by the
282
+ * service plugin to upgrade the engine to DB-backed persistence once the
283
+ * ObjectQL engine is available (the engine is constructed earlier, during
284
+ * `init`, before services are wired).
285
+ */
286
+ setSuspendedRunStore(store: SuspendedRunStore): void;
287
+ /**
288
+ * Generate a process-unique run id. Includes a random component so ids do
289
+ * not collide with runs persisted by a previous process lifetime (a plain
290
+ * incrementing counter would reissue `run_1` after a restart, clashing with
291
+ * a still-suspended durable run).
292
+ */
293
+ private nextRunId;
294
+ /**
295
+ * Persist a suspended run to the in-memory cache and (best-effort) the
296
+ * durable store. A store failure is logged but does not fail the run — the
297
+ * in-memory copy still allows in-process resume; only cross-restart
298
+ * durability is lost.
299
+ */
300
+ private persistSuspendedRun;
301
+ /**
302
+ * Drop a suspended run from the in-memory cache and (best-effort) the
303
+ * durable store. Called once the run is claimed for resume or reaches a
304
+ * terminal state.
305
+ */
306
+ private forgetSuspendedRun;
218
307
  /** Register a node executor (called by plugins) */
219
308
  registerNodeExecutor(executor: NodeExecutor): void;
309
+ /**
310
+ * Register a **deprecated alias** of a canonical node type (ADR-0018 M3).
311
+ *
312
+ * The alias is a real registered executor, so old saved flows whose nodes
313
+ * use the alias type keep validating and running with no migration. At
314
+ * execute time it delegates to the canonical executor (resolved live, so the
315
+ * canonical may be registered before or after the alias), logging a one-time
316
+ * deprecation warning. Its published descriptor is flagged `deprecated` +
317
+ * `aliasOf` so the designer palette can hide or mark it while the canonical
318
+ * type is the one offered for new authoring.
319
+ *
320
+ * This is how ADR-0018 collapses the five outbound verbs onto `http` /
321
+ * `notify`: `http_request` / `http_call` / `webhook` become aliases of
322
+ * `http`.
323
+ */
324
+ registerNodeAlias(alias: string, canonicalType: string, meta?: {
325
+ name?: string;
326
+ category?: ActionDescriptor['category'];
327
+ paradigms?: ActionDescriptor['paradigms'];
328
+ needsOutbox?: boolean;
329
+ }): void;
220
330
  /** Unregister a node executor (hot-unplug) */
221
331
  unregisterNodeExecutor(type: string): void;
222
332
  /** Register a trigger (called by plugins) */
@@ -313,6 +423,11 @@ declare class AutomationEngine implements IAutomationService {
313
423
  /**
314
424
  * List the runs currently suspended awaiting {@link resume} (ADR-0019).
315
425
  * Backs operability surfaces such as a "pending approvals" view.
426
+ *
427
+ * Synchronous — reads the in-memory cache only, so after a process restart
428
+ * runs that suspended in a prior lifetime are not listed here even though
429
+ * they remain durably stored and resumable by id. Use
430
+ * {@link listSuspendedRunsDurable} to include those.
316
431
  */
317
432
  listSuspendedRuns(): Array<{
318
433
  runId: string;
@@ -320,6 +435,18 @@ declare class AutomationEngine implements IAutomationService {
320
435
  nodeId: string;
321
436
  correlation?: string;
322
437
  }>;
438
+ /**
439
+ * Like {@link listSuspendedRuns} but includes runs held only in the durable
440
+ * {@link SuspendedRunStore} (e.g. suspended before a restart). The in-memory
441
+ * cache takes precedence on id collisions. Falls back to the in-memory list
442
+ * when no store is configured.
443
+ */
444
+ listSuspendedRunsDurable(): Promise<Array<{
445
+ runId: string;
446
+ flowName: string;
447
+ nodeId: string;
448
+ correlation?: string;
449
+ }>>;
323
450
  /**
324
451
  * The screen a paused run is currently waiting on (screen-flow runtime), or
325
452
  * `null` if the run isn't suspended / didn't pause at a screen node. Lets a
@@ -336,6 +463,18 @@ declare class AutomationEngine implements IAutomationService {
336
463
  * error if such a node is actually executed.
337
464
  */
338
465
  private validateNodeTypes;
466
+ /**
467
+ * ADR-0032 §Decision 1a — parse-validate every predicate in the flow at
468
+ * registration. Predicates are bare CEL; this catches the #1491 class
469
+ * (`{record.x}` template braces in a condition → CEL parse error) and any
470
+ * other malformed predicate LOUDLY, with the offending location + source +
471
+ * a corrective hint, instead of letting it fail silently at run time.
472
+ *
473
+ * Only the *predicate* surfaces are checked here (start/node `config.condition`
474
+ * and `edge.condition`) — node string fields are templates (a different
475
+ * dialect) and are validated by the template engine, not as CEL.
476
+ */
477
+ private validateFlowExpressions;
339
478
  /**
340
479
  * Detect cycles in the flow graph (DAG validation).
341
480
  * Uses DFS with coloring (white/gray/black) to detect back edges.
@@ -366,6 +505,27 @@ declare class AutomationEngine implements IAutomationService {
366
505
  * no edge carries the label, traversal falls back to the normal edge set.
367
506
  */
368
507
  private traverseNext;
508
+ /**
509
+ * Execute a structured control-flow **region** (ADR-0031) — the nested
510
+ * body of a `loop` container (or, later, a `parallel` branch / `try_catch`
511
+ * region). The region is a self-contained single-entry/single-exit
512
+ * sub-graph carried in the container's `config`; it runs in the **enclosing
513
+ * variable scope** (the caller's `variables` map), so the iterator variable
514
+ * and any body mutations are visible to the surrounding flow — a region is
515
+ * NOT a separate `subflow` invocation.
516
+ *
517
+ * The region executes against a synthetic flow view of its own
518
+ * nodes/edges, so the main DAG traversal (`traverseNext`) is never aware of
519
+ * scope markers — keeping the shared traversal untouched.
520
+ *
521
+ * Body step logs are kept in a region-local array (not yet merged into the
522
+ * parent run log); surfacing per-iteration steps is a follow-up.
523
+ *
524
+ * Durable pause (`suspend`) inside a region is not supported in this
525
+ * iteration — it is converted into a clear error (mirrors the `subflow`
526
+ * nested-pause guard).
527
+ */
528
+ runRegion(region: FlowRegionParsed, variables: Map<string, unknown>, context: AutomationContext): Promise<void>;
369
529
  /**
370
530
  * Execute a promise with timeout using Promise.race.
371
531
  */
@@ -396,12 +556,3602 @@ declare class AutomationEngine implements IAutomationService {
396
556
  private executeWithoutRetry;
397
557
  }
398
558
 
559
+ /**
560
+ * In-memory {@link SuspendedRunStore}. Snapshots are JSON-cloned on the way in
561
+ * and out, matching the serialize/deserialize boundary of a DB-backed store —
562
+ * so a unit test can share one instance across two engine instances to simulate
563
+ * a process restart (suspend on engine A, resume on engine B).
564
+ */
565
+ declare class InMemorySuspendedRunStore implements SuspendedRunStore {
566
+ private readonly runs;
567
+ save(run: SuspendedRun): Promise<void>;
568
+ load(runId: string): Promise<SuspendedRun | null>;
569
+ delete(runId: string): Promise<void>;
570
+ list(): Promise<SuspendedRun[]>;
571
+ }
572
+ /**
573
+ * Minimal ObjectQL engine surface the {@link ObjectStoreSuspendedRunStore} uses.
574
+ * Matches the find/insert/update/delete shape exposed by the `objectql` service
575
+ * (and mirrors `ApprovalEngine` in plugin-approvals).
576
+ */
577
+ interface SuspendedRunStoreEngine {
578
+ find(object: string, options?: any): Promise<any[]>;
579
+ insert(object: string, data: any, options?: any): Promise<any>;
580
+ update(object: string, data: any, options?: any): Promise<any>;
581
+ delete?(object: string, options?: any): Promise<any>;
582
+ }
583
+ interface MinimalLogger {
584
+ warn?: Logger['warn'];
585
+ debug?: Logger['debug'];
586
+ }
587
+ /**
588
+ * Durable {@link SuspendedRunStore} backed by the `sys_automation_run` object.
589
+ *
590
+ * Persists the resumable run state (`variables` / `steps` / `context` / `screen`)
591
+ * JSON-serialized, so the engine's `Map`-based variable context round-trips. The
592
+ * row is keyed by `runId` and removed on terminal completion; only live pauses
593
+ * are stored. All access uses a system context — these are infrastructure rows,
594
+ * not tenant data subject to RLS (the tenant is captured in `organization_id`
595
+ * for scoping/observability).
596
+ */
597
+ declare class ObjectStoreSuspendedRunStore implements SuspendedRunStore {
598
+ private readonly engine;
599
+ private readonly logger?;
600
+ constructor(engine: SuspendedRunStoreEngine, logger?: MinimalLogger | undefined);
601
+ save(run: SuspendedRun): Promise<void>;
602
+ load(runId: string): Promise<SuspendedRun | null>;
603
+ delete(runId: string): Promise<void>;
604
+ list(): Promise<SuspendedRun[]>;
605
+ /** Flatten a run into a `sys_automation_run` row (state columns JSON-encoded). */
606
+ private serialize;
607
+ /** Rebuild a run from a `sys_automation_run` row. */
608
+ private deserialize;
609
+ }
610
+
611
+ /**
612
+ * sys_automation_run — Durable state of a **suspended** automation flow run.
613
+ *
614
+ * ADR-0019: a flow that reaches a long-lived pause node (an `approval` node,
615
+ * `wait`, `screen`, …) suspends. Without persistence the continuation lives
616
+ * only in the engine's in-memory map, so a process restart (e.g. a hibernating
617
+ * Cloudflare Worker) loses the run and `resume(runId)` fails even though the
618
+ * approval record survives. Persisting the run here makes the pause **durable**:
619
+ * the engine writes a row on suspend and deletes it on terminal completion, so a
620
+ * cold-booted kernel can rehydrate and continue.
621
+ *
622
+ * Lifecycle: one row per *currently* suspended run. The row is removed when the
623
+ * run resumes to completion or fails — only live pauses are stored. `id` is the
624
+ * `runId`; `correlation` ties back to the pausing node's external state (e.g.
625
+ * `sys_approval_request.id`, mirrored by `sys_approval_request.flow_run_id`).
626
+ *
627
+ * The resumable state (`variables` / `steps` / `context` / `screen`) is stored
628
+ * JSON-serialized — the engine works with a `Map`, which round-trips through
629
+ * these `*_json` columns.
630
+ *
631
+ * Writers: the automation engine's durable {@link SuspendedRunStore}.
632
+ * Readers: operability surfaces (a "pending/suspended runs" view), the engine on
633
+ * resume after a restart.
634
+ *
635
+ * @namespace sys
636
+ */
637
+ declare const SysAutomationRun: Omit<{
638
+ name: string;
639
+ active: boolean;
640
+ isSystem: boolean;
641
+ abstract: boolean;
642
+ datasource: string;
643
+ fields: Record<string, {
644
+ type: "number" | "boolean" | "date" | "lookup" | "datetime" | "json" | "url" | "secret" | "tags" | "code" | "record" | "file" | "signature" | "progress" | "currency" | "percent" | "password" | "email" | "time" | "text" | "textarea" | "phone" | "markdown" | "html" | "richtext" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "master_detail" | "tree" | "image" | "avatar" | "video" | "audio" | "formula" | "summary" | "autonumber" | "composite" | "repeater" | "location" | "address" | "color" | "rating" | "slider" | "qrcode" | "vector";
645
+ required: boolean;
646
+ searchable: boolean;
647
+ multiple: boolean;
648
+ unique: boolean;
649
+ deleteBehavior: "set_null" | "cascade" | "restrict";
650
+ auditTrail: boolean;
651
+ hidden: boolean;
652
+ readonly: boolean;
653
+ sortable: boolean;
654
+ index: boolean;
655
+ externalId: boolean;
656
+ name?: string | undefined;
657
+ label?: string | undefined;
658
+ description?: string | undefined;
659
+ format?: string | undefined;
660
+ columnName?: string | undefined;
661
+ defaultValue?: unknown;
662
+ maxLength?: number | undefined;
663
+ minLength?: number | undefined;
664
+ precision?: number | undefined;
665
+ scale?: number | undefined;
666
+ min?: number | undefined;
667
+ max?: number | undefined;
668
+ options?: {
669
+ label: string;
670
+ value: string;
671
+ color?: string | undefined;
672
+ default?: boolean | undefined;
673
+ }[] | undefined;
674
+ reference?: string | undefined;
675
+ referenceFilters?: string[] | undefined;
676
+ writeRequiresMasterRead?: boolean | undefined;
677
+ expression?: {
678
+ dialect: "cel" | "js" | "cron" | "template";
679
+ source?: string | undefined;
680
+ ast?: unknown;
681
+ meta?: {
682
+ rationale?: string | undefined;
683
+ generatedBy?: string | undefined;
684
+ } | undefined;
685
+ } | {
686
+ dialect: "cel" | "js" | "cron" | "template";
687
+ source?: string | undefined;
688
+ ast?: unknown;
689
+ meta?: {
690
+ rationale?: string | undefined;
691
+ generatedBy?: string | undefined;
692
+ } | undefined;
693
+ } | undefined;
694
+ summaryOperations?: {
695
+ object: string;
696
+ field: string;
697
+ function: "min" | "max" | "count" | "sum" | "avg";
698
+ } | undefined;
699
+ language?: string | undefined;
700
+ theme?: string | undefined;
701
+ lineNumbers?: boolean | undefined;
702
+ maxRating?: number | undefined;
703
+ allowHalf?: boolean | undefined;
704
+ displayMap?: boolean | undefined;
705
+ allowGeocoding?: boolean | undefined;
706
+ addressFormat?: "us" | "uk" | "international" | undefined;
707
+ colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
708
+ allowAlpha?: boolean | undefined;
709
+ presetColors?: string[] | undefined;
710
+ step?: number | undefined;
711
+ showValue?: boolean | undefined;
712
+ marks?: Record<string, string> | undefined;
713
+ barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
714
+ qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
715
+ displayValue?: boolean | undefined;
716
+ allowScanning?: boolean | undefined;
717
+ currencyConfig?: {
718
+ precision: number;
719
+ currencyMode: "fixed" | "dynamic";
720
+ defaultCurrency: string;
721
+ } | undefined;
722
+ vectorConfig?: {
723
+ dimensions: number;
724
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
725
+ normalized: boolean;
726
+ indexed: boolean;
727
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
728
+ } | undefined;
729
+ fileAttachmentConfig?: {
730
+ virusScan: boolean;
731
+ virusScanOnUpload: boolean;
732
+ quarantineOnThreat: boolean;
733
+ allowMultiple: boolean;
734
+ allowReplace: boolean;
735
+ allowDelete: boolean;
736
+ requireUpload: boolean;
737
+ extractMetadata: boolean;
738
+ extractText: boolean;
739
+ versioningEnabled: boolean;
740
+ publicRead: boolean;
741
+ presignedUrlExpiry: number;
742
+ minSize?: number | undefined;
743
+ maxSize?: number | undefined;
744
+ allowedTypes?: string[] | undefined;
745
+ blockedTypes?: string[] | undefined;
746
+ allowedMimeTypes?: string[] | undefined;
747
+ blockedMimeTypes?: string[] | undefined;
748
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
749
+ storageProvider?: string | undefined;
750
+ storageBucket?: string | undefined;
751
+ storagePrefix?: string | undefined;
752
+ imageValidation?: {
753
+ generateThumbnails: boolean;
754
+ preserveMetadata: boolean;
755
+ autoRotate: boolean;
756
+ minWidth?: number | undefined;
757
+ maxWidth?: number | undefined;
758
+ minHeight?: number | undefined;
759
+ maxHeight?: number | undefined;
760
+ aspectRatio?: string | undefined;
761
+ thumbnailSizes?: {
762
+ name: string;
763
+ width: number;
764
+ height: number;
765
+ crop: boolean;
766
+ }[] | undefined;
767
+ } | undefined;
768
+ maxVersions?: number | undefined;
769
+ } | undefined;
770
+ encryptionConfig?: {
771
+ enabled: boolean;
772
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
773
+ keyManagement: {
774
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
775
+ keyId?: string | undefined;
776
+ rotationPolicy?: {
777
+ enabled: boolean;
778
+ frequencyDays: number;
779
+ retainOldVersions: number;
780
+ autoRotate: boolean;
781
+ } | undefined;
782
+ };
783
+ scope: "database" | "table" | "record" | "field";
784
+ deterministicEncryption: boolean;
785
+ searchableEncryption: boolean;
786
+ } | undefined;
787
+ maskingRule?: {
788
+ field: string;
789
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
790
+ preserveFormat: boolean;
791
+ preserveLength: boolean;
792
+ pattern?: string | undefined;
793
+ roles?: string[] | undefined;
794
+ exemptRoles?: string[] | undefined;
795
+ } | undefined;
796
+ dependencies?: string[] | undefined;
797
+ cached?: {
798
+ enabled: boolean;
799
+ ttl: number;
800
+ invalidateOn: string[];
801
+ } | undefined;
802
+ dataQuality?: {
803
+ uniqueness: boolean;
804
+ completeness: number;
805
+ accuracy?: {
806
+ source: string;
807
+ threshold: number;
808
+ } | undefined;
809
+ } | undefined;
810
+ group?: string | undefined;
811
+ conditionalRequired?: {
812
+ dialect: "cel" | "js" | "cron" | "template";
813
+ source?: string | undefined;
814
+ ast?: unknown;
815
+ meta?: {
816
+ rationale?: string | undefined;
817
+ generatedBy?: string | undefined;
818
+ } | undefined;
819
+ } | {
820
+ dialect: "cel" | "js" | "cron" | "template";
821
+ source?: string | undefined;
822
+ ast?: unknown;
823
+ meta?: {
824
+ rationale?: string | undefined;
825
+ generatedBy?: string | undefined;
826
+ } | undefined;
827
+ } | undefined;
828
+ system?: boolean | undefined;
829
+ inlineHelpText?: string | undefined;
830
+ trackFeedHistory?: boolean | undefined;
831
+ caseSensitive?: boolean | undefined;
832
+ autonumberFormat?: string | undefined;
833
+ }>;
834
+ _lock?: "full" | "none" | "no-overlay" | "no-delete" | undefined;
835
+ _lockReason?: string | undefined;
836
+ _lockSource?: "artifact" | "package" | "env-forced" | undefined;
837
+ _provenance?: "package" | "env-forced" | "org" | undefined;
838
+ _packageId?: string | undefined;
839
+ _packageVersion?: string | undefined;
840
+ _lockDocsUrl?: string | undefined;
841
+ label?: string | undefined;
842
+ pluralLabel?: string | undefined;
843
+ description?: string | undefined;
844
+ icon?: string | undefined;
845
+ tags?: string[] | undefined;
846
+ managedBy?: "config" | "system" | "platform" | "append-only" | "better-auth" | undefined;
847
+ userActions?: {
848
+ create?: boolean | undefined;
849
+ import?: boolean | undefined;
850
+ edit?: boolean | undefined;
851
+ delete?: boolean | undefined;
852
+ exportCsv?: boolean | undefined;
853
+ } | undefined;
854
+ systemFields?: false | {
855
+ tenant?: boolean | undefined;
856
+ owner?: boolean | undefined;
857
+ audit?: boolean | undefined;
858
+ } | undefined;
859
+ external?: {
860
+ writable: boolean;
861
+ remoteName?: string | undefined;
862
+ remoteSchema?: string | undefined;
863
+ columnMap?: Record<string, string> | undefined;
864
+ introspectedAt?: string | undefined;
865
+ ignoreColumns?: string[] | undefined;
866
+ } | undefined;
867
+ indexes?: {
868
+ fields: string[];
869
+ type: "hash" | "btree" | "gin" | "gist" | "fulltext";
870
+ unique: boolean;
871
+ name?: string | undefined;
872
+ partial?: string | undefined;
873
+ }[] | undefined;
874
+ fieldGroups?: {
875
+ key: string;
876
+ label: string;
877
+ defaultExpanded: boolean;
878
+ icon?: string | undefined;
879
+ description?: string | undefined;
880
+ visibleOn?: {
881
+ dialect: "cel" | "js" | "cron" | "template";
882
+ source?: string | undefined;
883
+ ast?: unknown;
884
+ meta?: {
885
+ rationale?: string | undefined;
886
+ generatedBy?: string | undefined;
887
+ } | undefined;
888
+ } | {
889
+ dialect: "cel" | "js" | "cron" | "template";
890
+ source?: string | undefined;
891
+ ast?: unknown;
892
+ meta?: {
893
+ rationale?: string | undefined;
894
+ generatedBy?: string | undefined;
895
+ } | undefined;
896
+ } | undefined;
897
+ }[] | undefined;
898
+ tenancy?: {
899
+ enabled: boolean;
900
+ strategy: "hybrid" | "shared" | "isolated";
901
+ tenantField: string;
902
+ crossTenantAccess: boolean;
903
+ } | undefined;
904
+ softDelete?: {
905
+ enabled: boolean;
906
+ field: string;
907
+ cascadeDelete: boolean;
908
+ } | undefined;
909
+ versioning?: {
910
+ enabled: boolean;
911
+ strategy: "snapshot" | "delta" | "event-sourcing";
912
+ versionField: string;
913
+ retentionDays?: number | undefined;
914
+ } | undefined;
915
+ partitioning?: {
916
+ enabled: boolean;
917
+ strategy: "hash" | "list" | "range";
918
+ key: string;
919
+ interval?: string | undefined;
920
+ } | undefined;
921
+ cdc?: {
922
+ enabled: boolean;
923
+ events: ("delete" | "update" | "insert")[];
924
+ destination: string;
925
+ } | undefined;
926
+ validations?: _objectstack_spec_data.BaseValidationRuleShape[] | undefined;
927
+ displayNameField?: string | undefined;
928
+ recordName?: {
929
+ type: "text" | "autonumber";
930
+ displayFormat?: string | undefined;
931
+ startNumber?: number | undefined;
932
+ } | undefined;
933
+ titleFormat?: {
934
+ dialect: "cel" | "js" | "cron" | "template";
935
+ source?: string | undefined;
936
+ ast?: unknown;
937
+ meta?: {
938
+ rationale?: string | undefined;
939
+ generatedBy?: string | undefined;
940
+ } | undefined;
941
+ } | {
942
+ dialect: "cel" | "js" | "cron" | "template";
943
+ source?: string | undefined;
944
+ ast?: unknown;
945
+ meta?: {
946
+ rationale?: string | undefined;
947
+ generatedBy?: string | undefined;
948
+ } | undefined;
949
+ } | undefined;
950
+ compactLayout?: string[] | undefined;
951
+ listViews?: Record<string, {
952
+ type: "map" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "chart" | "grid";
953
+ columns: string[] | {
954
+ field: string;
955
+ label?: string | undefined;
956
+ width?: number | undefined;
957
+ align?: "left" | "center" | "right" | undefined;
958
+ hidden?: boolean | undefined;
959
+ sortable?: boolean | undefined;
960
+ resizable?: boolean | undefined;
961
+ wrap?: boolean | undefined;
962
+ type?: string | undefined;
963
+ pinned?: "left" | "right" | undefined;
964
+ summary?: "none" | "min" | "max" | "count" | "sum" | "avg" | "count_empty" | "count_filled" | "count_unique" | "percent_empty" | "percent_filled" | undefined;
965
+ link?: boolean | undefined;
966
+ action?: string | undefined;
967
+ }[];
968
+ name?: string | undefined;
969
+ label?: string | undefined;
970
+ data?: {
971
+ provider: "object";
972
+ object: string;
973
+ } | {
974
+ provider: "api";
975
+ read?: {
976
+ url: string;
977
+ method: "POST" | "PATCH" | "PUT" | "DELETE" | "GET";
978
+ headers?: Record<string, string> | undefined;
979
+ params?: Record<string, unknown> | undefined;
980
+ body?: unknown;
981
+ } | undefined;
982
+ write?: {
983
+ url: string;
984
+ method: "POST" | "PATCH" | "PUT" | "DELETE" | "GET";
985
+ headers?: Record<string, string> | undefined;
986
+ params?: Record<string, unknown> | undefined;
987
+ body?: unknown;
988
+ } | undefined;
989
+ } | {
990
+ provider: "value";
991
+ items: unknown[];
992
+ } | {
993
+ provider: "schema";
994
+ schemaId: string;
995
+ schema?: Record<string, unknown> | undefined;
996
+ } | undefined;
997
+ filter?: {
998
+ field: string;
999
+ operator: string;
1000
+ value?: string | number | boolean | (string | number)[] | null | undefined;
1001
+ }[] | undefined;
1002
+ sort?: string | {
1003
+ field: string;
1004
+ order: "asc" | "desc";
1005
+ }[] | undefined;
1006
+ searchableFields?: string[] | undefined;
1007
+ filterableFields?: string[] | undefined;
1008
+ resizable?: boolean | undefined;
1009
+ striped?: boolean | undefined;
1010
+ bordered?: boolean | undefined;
1011
+ compactToolbar?: boolean | undefined;
1012
+ selection?: {
1013
+ type: "none" | "multiple" | "single";
1014
+ } | undefined;
1015
+ navigation?: {
1016
+ mode: "none" | "split" | "page" | "drawer" | "modal" | "popover" | "new_window";
1017
+ preventNavigation: boolean;
1018
+ openNewTab: boolean;
1019
+ view?: string | undefined;
1020
+ width?: string | number | undefined;
1021
+ } | undefined;
1022
+ pagination?: {
1023
+ pageSize: number;
1024
+ pageSizeOptions?: number[] | undefined;
1025
+ } | undefined;
1026
+ kanban?: {
1027
+ groupByField: string;
1028
+ columns: string[];
1029
+ summarizeField?: string | undefined;
1030
+ } | undefined;
1031
+ calendar?: {
1032
+ startDateField: string;
1033
+ titleField: string;
1034
+ endDateField?: string | undefined;
1035
+ colorField?: string | undefined;
1036
+ } | undefined;
1037
+ gantt?: {
1038
+ startDateField: string;
1039
+ endDateField: string;
1040
+ titleField: string;
1041
+ progressField?: string | undefined;
1042
+ dependenciesField?: string | undefined;
1043
+ } | undefined;
1044
+ gallery?: {
1045
+ coverFit: "cover" | "contain";
1046
+ cardSize: "small" | "medium" | "large";
1047
+ coverField?: string | undefined;
1048
+ titleField?: string | undefined;
1049
+ visibleFields?: string[] | undefined;
1050
+ } | undefined;
1051
+ timeline?: {
1052
+ startDateField: string;
1053
+ titleField: string;
1054
+ scale: "hour" | "day" | "week" | "month" | "quarter" | "year";
1055
+ endDateField?: string | undefined;
1056
+ groupByField?: string | undefined;
1057
+ colorField?: string | undefined;
1058
+ } | undefined;
1059
+ chart?: {
1060
+ chartType: "bar" | "line" | "pie" | "area" | "scatter";
1061
+ xAxisField: string;
1062
+ yAxisFields: string[];
1063
+ aggregation?: "min" | "max" | "count" | "sum" | "avg" | undefined;
1064
+ groupByField?: string | undefined;
1065
+ } | undefined;
1066
+ description?: string | undefined;
1067
+ sharing?: {
1068
+ type: "personal" | "collaborative";
1069
+ lockedBy?: string | undefined;
1070
+ } | undefined;
1071
+ rowHeight?: "medium" | "short" | "compact" | "tall" | "extra_tall" | undefined;
1072
+ grouping?: {
1073
+ fields: {
1074
+ field: string;
1075
+ order: "asc" | "desc";
1076
+ collapsed: boolean;
1077
+ }[];
1078
+ } | undefined;
1079
+ rowColor?: {
1080
+ field: string;
1081
+ colors?: Record<string, string> | undefined;
1082
+ } | undefined;
1083
+ hiddenFields?: string[] | undefined;
1084
+ fieldOrder?: string[] | undefined;
1085
+ rowActions?: string[] | undefined;
1086
+ bulkActions?: string[] | undefined;
1087
+ bulkActionDefs?: Record<string, any>[] | undefined;
1088
+ virtualScroll?: boolean | undefined;
1089
+ conditionalFormatting?: {
1090
+ condition: {
1091
+ dialect: "cel" | "js" | "cron" | "template";
1092
+ source?: string | undefined;
1093
+ ast?: unknown;
1094
+ meta?: {
1095
+ rationale?: string | undefined;
1096
+ generatedBy?: string | undefined;
1097
+ } | undefined;
1098
+ } | {
1099
+ dialect: "cel" | "js" | "cron" | "template";
1100
+ source?: string | undefined;
1101
+ ast?: unknown;
1102
+ meta?: {
1103
+ rationale?: string | undefined;
1104
+ generatedBy?: string | undefined;
1105
+ } | undefined;
1106
+ };
1107
+ style: Record<string, string>;
1108
+ }[] | undefined;
1109
+ inlineEdit?: boolean | undefined;
1110
+ exportOptions?: ("json" | "csv" | "xlsx" | "pdf")[] | undefined;
1111
+ userActions?: {
1112
+ sort: boolean;
1113
+ search: boolean;
1114
+ filter: boolean;
1115
+ rowHeight: boolean;
1116
+ addRecordForm: boolean;
1117
+ buttons?: string[] | undefined;
1118
+ } | undefined;
1119
+ appearance?: {
1120
+ showDescription: boolean;
1121
+ allowedVisualizations?: ("map" | "kanban" | "calendar" | "gantt" | "gallery" | "timeline" | "grid")[] | undefined;
1122
+ } | undefined;
1123
+ tabs?: {
1124
+ name: string;
1125
+ pinned: boolean;
1126
+ isDefault: boolean;
1127
+ visible: boolean;
1128
+ label?: string | undefined;
1129
+ icon?: string | undefined;
1130
+ view?: string | undefined;
1131
+ filter?: {
1132
+ field: string;
1133
+ operator: string;
1134
+ value?: string | number | boolean | (string | number)[] | null | undefined;
1135
+ }[] | undefined;
1136
+ order?: number | undefined;
1137
+ }[] | undefined;
1138
+ addRecord?: {
1139
+ enabled: boolean;
1140
+ position: "top" | "bottom" | "both";
1141
+ mode: "modal" | "form" | "inline";
1142
+ formView?: string | undefined;
1143
+ } | undefined;
1144
+ showRecordCount?: boolean | undefined;
1145
+ allowPrinting?: boolean | undefined;
1146
+ emptyState?: {
1147
+ title?: string | undefined;
1148
+ message?: string | undefined;
1149
+ icon?: string | undefined;
1150
+ } | undefined;
1151
+ aria?: {
1152
+ ariaLabel?: string | undefined;
1153
+ ariaDescribedBy?: string | undefined;
1154
+ role?: string | undefined;
1155
+ } | undefined;
1156
+ responsive?: {
1157
+ breakpoint?: "md" | "xs" | "sm" | "lg" | "xl" | "2xl" | undefined;
1158
+ hiddenOn?: ("md" | "xs" | "sm" | "lg" | "xl" | "2xl")[] | undefined;
1159
+ columns?: {
1160
+ xs?: number | undefined;
1161
+ sm?: number | undefined;
1162
+ md?: number | undefined;
1163
+ lg?: number | undefined;
1164
+ xl?: number | undefined;
1165
+ '2xl'?: number | undefined;
1166
+ } | undefined;
1167
+ order?: {
1168
+ xs?: number | undefined;
1169
+ sm?: number | undefined;
1170
+ md?: number | undefined;
1171
+ lg?: number | undefined;
1172
+ xl?: number | undefined;
1173
+ '2xl'?: number | undefined;
1174
+ } | undefined;
1175
+ } | undefined;
1176
+ performance?: {
1177
+ lazyLoad?: boolean | undefined;
1178
+ virtualScroll?: {
1179
+ enabled: boolean;
1180
+ itemHeight?: number | undefined;
1181
+ overscan?: number | undefined;
1182
+ } | undefined;
1183
+ cacheStrategy?: "none" | "cache-first" | "network-first" | "stale-while-revalidate" | undefined;
1184
+ prefetch?: boolean | undefined;
1185
+ pageSize?: number | undefined;
1186
+ debounceMs?: number | undefined;
1187
+ } | undefined;
1188
+ }> | undefined;
1189
+ defaultDetailForm?: string | undefined;
1190
+ search?: {
1191
+ fields: string[];
1192
+ displayFields?: string[] | undefined;
1193
+ filters?: string[] | undefined;
1194
+ } | undefined;
1195
+ enable?: {
1196
+ trackHistory: boolean;
1197
+ searchable: boolean;
1198
+ apiEnabled: boolean;
1199
+ files: boolean;
1200
+ feeds: boolean;
1201
+ activities: boolean;
1202
+ trash: boolean;
1203
+ mru: boolean;
1204
+ clone: boolean;
1205
+ apiMethods?: ("upsert" | "import" | "export" | "delete" | "update" | "create" | "search" | "list" | "get" | "bulk" | "aggregate" | "history" | "restore" | "purge")[] | undefined;
1206
+ } | undefined;
1207
+ recordTypes?: string[] | undefined;
1208
+ sharingModel?: "full" | "read" | "private" | "read_write" | undefined;
1209
+ publicSharing?: {
1210
+ enabled: boolean;
1211
+ allowedAudiences?: ("email" | "public" | "link_only" | "signed_in")[] | undefined;
1212
+ allowedPermissions?: ("edit" | "view" | "comment")[] | undefined;
1213
+ maxExpiryDays?: number | undefined;
1214
+ redactFields?: string[] | undefined;
1215
+ eligibility?: string | undefined;
1216
+ } | undefined;
1217
+ keyPrefix?: string | undefined;
1218
+ detail?: {
1219
+ [x: string]: unknown;
1220
+ renderViaSchema?: boolean | undefined;
1221
+ hideReferenceRail?: boolean | undefined;
1222
+ hideRelatedTab?: boolean | undefined;
1223
+ } | undefined;
1224
+ actions?: {
1225
+ name: string;
1226
+ label: string;
1227
+ type: "url" | "flow" | "api" | "script" | "modal" | "form";
1228
+ refreshAfter: boolean;
1229
+ objectName?: string | undefined;
1230
+ icon?: string | undefined;
1231
+ locations?: ("list_toolbar" | "list_item" | "record_header" | "record_more" | "record_related" | "record_section" | "global_nav")[] | undefined;
1232
+ component?: "action:button" | "action:icon" | "action:menu" | "action:group" | undefined;
1233
+ target?: string | undefined;
1234
+ body?: {
1235
+ language: "expression";
1236
+ source: string;
1237
+ } | {
1238
+ language: "js";
1239
+ source: string;
1240
+ capabilities: ("api.read" | "api.write" | "crypto.uuid" | "crypto.hash" | "log")[];
1241
+ timeoutMs?: number | undefined;
1242
+ memoryMb?: number | undefined;
1243
+ } | undefined;
1244
+ execute?: string | undefined;
1245
+ params?: {
1246
+ required: boolean;
1247
+ name?: string | undefined;
1248
+ field?: string | undefined;
1249
+ objectOverride?: string | undefined;
1250
+ label?: string | undefined;
1251
+ type?: "number" | "boolean" | "date" | "record" | "file" | "code" | "datetime" | "signature" | "progress" | "url" | "currency" | "percent" | "password" | "secret" | "email" | "time" | "text" | "textarea" | "phone" | "markdown" | "html" | "richtext" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "lookup" | "master_detail" | "tree" | "image" | "avatar" | "video" | "audio" | "formula" | "summary" | "autonumber" | "composite" | "repeater" | "location" | "address" | "json" | "color" | "rating" | "slider" | "qrcode" | "tags" | "vector" | undefined;
1252
+ options?: {
1253
+ label: string;
1254
+ value: string;
1255
+ }[] | undefined;
1256
+ placeholder?: string | undefined;
1257
+ helpText?: string | undefined;
1258
+ defaultValue?: unknown;
1259
+ defaultFromRow?: boolean | undefined;
1260
+ }[] | undefined;
1261
+ variant?: "link" | "primary" | "secondary" | "danger" | "ghost" | undefined;
1262
+ confirmText?: string | undefined;
1263
+ successMessage?: string | undefined;
1264
+ resultDialog?: {
1265
+ title?: string | undefined;
1266
+ description?: string | undefined;
1267
+ acknowledge?: string | undefined;
1268
+ format?: "secret" | "text" | "json" | "qrcode" | "code-list" | undefined;
1269
+ fields?: {
1270
+ path: string;
1271
+ label?: string | undefined;
1272
+ format?: "secret" | "text" | "json" | "qrcode" | "code-list" | undefined;
1273
+ }[] | undefined;
1274
+ } | undefined;
1275
+ visible?: {
1276
+ dialect: "cel" | "js" | "cron" | "template";
1277
+ source?: string | undefined;
1278
+ ast?: unknown;
1279
+ meta?: {
1280
+ rationale?: string | undefined;
1281
+ generatedBy?: string | undefined;
1282
+ } | undefined;
1283
+ } | undefined;
1284
+ disabled?: boolean | {
1285
+ dialect: "cel" | "js" | "cron" | "template";
1286
+ source?: string | undefined;
1287
+ ast?: unknown;
1288
+ meta?: {
1289
+ rationale?: string | undefined;
1290
+ generatedBy?: string | undefined;
1291
+ } | undefined;
1292
+ } | undefined;
1293
+ shortcut?: string | undefined;
1294
+ bulkEnabled?: boolean | undefined;
1295
+ aiExposed?: boolean | undefined;
1296
+ recordIdParam?: string | undefined;
1297
+ recordIdField?: string | undefined;
1298
+ bodyShape?: "flat" | {
1299
+ wrap: string;
1300
+ } | undefined;
1301
+ method?: "POST" | "PATCH" | "PUT" | "DELETE" | undefined;
1302
+ bodyExtra?: Record<string, unknown> | undefined;
1303
+ mode?: "custom" | "delete" | "edit" | "create" | undefined;
1304
+ timeout?: number | undefined;
1305
+ aria?: {
1306
+ ariaLabel?: string | undefined;
1307
+ ariaDescribedBy?: string | undefined;
1308
+ role?: string | undefined;
1309
+ } | undefined;
1310
+ }[] | undefined;
1311
+ protection?: {
1312
+ lock: "full" | "none" | "no-overlay" | "no-delete";
1313
+ reason: string;
1314
+ docsUrl?: string | undefined;
1315
+ } | undefined;
1316
+ }, "fields"> & Pick<{
1317
+ readonly name: "sys_automation_run";
1318
+ readonly label: "Automation Run";
1319
+ readonly pluralLabel: "Automation Runs";
1320
+ readonly icon: "pause-circle";
1321
+ readonly isSystem: true;
1322
+ readonly managedBy: "system";
1323
+ readonly description: "Durable state of a suspended automation flow run (ADR-0019)";
1324
+ readonly displayNameField: "id";
1325
+ readonly titleFormat: "{flow_name} · {node_id}";
1326
+ readonly compactLayout: ["flow_name", "node_id", "status", "correlation", "started_at", "updated_at"];
1327
+ readonly fields: {
1328
+ readonly id: {
1329
+ readonly readonly?: boolean | undefined;
1330
+ readonly format?: string | undefined;
1331
+ readonly options?: {
1332
+ label: string;
1333
+ value: string;
1334
+ color?: string | undefined;
1335
+ default?: boolean | undefined;
1336
+ }[] | undefined;
1337
+ readonly description?: string | undefined;
1338
+ readonly label?: string | undefined;
1339
+ readonly name?: string | undefined;
1340
+ readonly precision?: number | undefined;
1341
+ readonly required?: boolean | undefined;
1342
+ readonly multiple?: boolean | undefined;
1343
+ readonly dependencies?: string[] | undefined;
1344
+ readonly theme?: string | undefined;
1345
+ readonly externalId?: boolean | undefined;
1346
+ readonly defaultValue?: unknown;
1347
+ readonly group?: string | undefined;
1348
+ readonly hidden?: boolean | undefined;
1349
+ readonly system?: boolean | undefined;
1350
+ readonly min?: number | undefined;
1351
+ readonly max?: number | undefined;
1352
+ readonly encryptionConfig?: {
1353
+ enabled: boolean;
1354
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
1355
+ keyManagement: {
1356
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
1357
+ keyId?: string | undefined;
1358
+ rotationPolicy?: {
1359
+ enabled: boolean;
1360
+ frequencyDays: number;
1361
+ retainOldVersions: number;
1362
+ autoRotate: boolean;
1363
+ } | undefined;
1364
+ };
1365
+ scope: "record" | "field" | "table" | "database";
1366
+ deterministicEncryption: boolean;
1367
+ searchableEncryption: boolean;
1368
+ } | undefined;
1369
+ readonly columnName?: string | undefined;
1370
+ readonly searchable?: boolean | undefined;
1371
+ readonly unique?: boolean | undefined;
1372
+ readonly maxLength?: number | undefined;
1373
+ readonly minLength?: number | undefined;
1374
+ readonly scale?: number | undefined;
1375
+ readonly reference?: string | undefined;
1376
+ readonly referenceFilters?: string[] | undefined;
1377
+ readonly writeRequiresMasterRead?: boolean | undefined;
1378
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
1379
+ readonly expression?: {
1380
+ dialect: "cel" | "js" | "cron" | "template";
1381
+ source?: string | undefined;
1382
+ ast?: unknown;
1383
+ meta?: {
1384
+ rationale?: string | undefined;
1385
+ generatedBy?: string | undefined;
1386
+ } | undefined;
1387
+ } | undefined;
1388
+ readonly summaryOperations?: {
1389
+ object: string;
1390
+ field: string;
1391
+ function: "min" | "max" | "count" | "sum" | "avg";
1392
+ } | undefined;
1393
+ readonly language?: string | undefined;
1394
+ readonly lineNumbers?: boolean | undefined;
1395
+ readonly maxRating?: number | undefined;
1396
+ readonly allowHalf?: boolean | undefined;
1397
+ readonly displayMap?: boolean | undefined;
1398
+ readonly allowGeocoding?: boolean | undefined;
1399
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
1400
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
1401
+ readonly allowAlpha?: boolean | undefined;
1402
+ readonly presetColors?: string[] | undefined;
1403
+ readonly step?: number | undefined;
1404
+ readonly showValue?: boolean | undefined;
1405
+ readonly marks?: Record<string, string> | undefined;
1406
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
1407
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
1408
+ readonly displayValue?: boolean | undefined;
1409
+ readonly allowScanning?: boolean | undefined;
1410
+ readonly currencyConfig?: {
1411
+ precision: number;
1412
+ currencyMode: "fixed" | "dynamic";
1413
+ defaultCurrency: string;
1414
+ } | undefined;
1415
+ readonly vectorConfig?: {
1416
+ dimensions: number;
1417
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
1418
+ normalized: boolean;
1419
+ indexed: boolean;
1420
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
1421
+ } | undefined;
1422
+ readonly fileAttachmentConfig?: {
1423
+ virusScan: boolean;
1424
+ virusScanOnUpload: boolean;
1425
+ quarantineOnThreat: boolean;
1426
+ allowMultiple: boolean;
1427
+ allowReplace: boolean;
1428
+ allowDelete: boolean;
1429
+ requireUpload: boolean;
1430
+ extractMetadata: boolean;
1431
+ extractText: boolean;
1432
+ versioningEnabled: boolean;
1433
+ publicRead: boolean;
1434
+ presignedUrlExpiry: number;
1435
+ minSize?: number | undefined;
1436
+ maxSize?: number | undefined;
1437
+ allowedTypes?: string[] | undefined;
1438
+ blockedTypes?: string[] | undefined;
1439
+ allowedMimeTypes?: string[] | undefined;
1440
+ blockedMimeTypes?: string[] | undefined;
1441
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
1442
+ storageProvider?: string | undefined;
1443
+ storageBucket?: string | undefined;
1444
+ storagePrefix?: string | undefined;
1445
+ imageValidation?: {
1446
+ generateThumbnails: boolean;
1447
+ preserveMetadata: boolean;
1448
+ autoRotate: boolean;
1449
+ minWidth?: number | undefined;
1450
+ maxWidth?: number | undefined;
1451
+ minHeight?: number | undefined;
1452
+ maxHeight?: number | undefined;
1453
+ aspectRatio?: string | undefined;
1454
+ thumbnailSizes?: {
1455
+ name: string;
1456
+ width: number;
1457
+ height: number;
1458
+ crop: boolean;
1459
+ }[] | undefined;
1460
+ } | undefined;
1461
+ maxVersions?: number | undefined;
1462
+ } | undefined;
1463
+ readonly maskingRule?: {
1464
+ field: string;
1465
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
1466
+ preserveFormat: boolean;
1467
+ preserveLength: boolean;
1468
+ pattern?: string | undefined;
1469
+ roles?: string[] | undefined;
1470
+ exemptRoles?: string[] | undefined;
1471
+ } | undefined;
1472
+ readonly auditTrail?: boolean | undefined;
1473
+ readonly cached?: {
1474
+ enabled: boolean;
1475
+ ttl: number;
1476
+ invalidateOn: string[];
1477
+ } | undefined;
1478
+ readonly dataQuality?: {
1479
+ uniqueness: boolean;
1480
+ completeness: number;
1481
+ accuracy?: {
1482
+ source: string;
1483
+ threshold: number;
1484
+ } | undefined;
1485
+ } | undefined;
1486
+ readonly conditionalRequired?: {
1487
+ dialect: "cel" | "js" | "cron" | "template";
1488
+ source?: string | undefined;
1489
+ ast?: unknown;
1490
+ meta?: {
1491
+ rationale?: string | undefined;
1492
+ generatedBy?: string | undefined;
1493
+ } | undefined;
1494
+ } | undefined;
1495
+ readonly sortable?: boolean | undefined;
1496
+ readonly inlineHelpText?: string | undefined;
1497
+ readonly trackFeedHistory?: boolean | undefined;
1498
+ readonly caseSensitive?: boolean | undefined;
1499
+ readonly autonumberFormat?: string | undefined;
1500
+ readonly index?: boolean | undefined;
1501
+ readonly type: "text";
1502
+ };
1503
+ readonly organization_id: {
1504
+ readonly readonly?: boolean | undefined;
1505
+ readonly format?: string | undefined;
1506
+ readonly options?: {
1507
+ label: string;
1508
+ value: string;
1509
+ color?: string | undefined;
1510
+ default?: boolean | undefined;
1511
+ }[] | undefined;
1512
+ readonly description?: string | undefined;
1513
+ readonly label?: string | undefined;
1514
+ readonly name?: string | undefined;
1515
+ readonly precision?: number | undefined;
1516
+ readonly required?: boolean | undefined;
1517
+ readonly multiple?: boolean | undefined;
1518
+ readonly dependencies?: string[] | undefined;
1519
+ readonly theme?: string | undefined;
1520
+ readonly externalId?: boolean | undefined;
1521
+ readonly defaultValue?: unknown;
1522
+ readonly group?: string | undefined;
1523
+ readonly hidden?: boolean | undefined;
1524
+ readonly system?: boolean | undefined;
1525
+ readonly min?: number | undefined;
1526
+ readonly max?: number | undefined;
1527
+ readonly encryptionConfig?: {
1528
+ enabled: boolean;
1529
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
1530
+ keyManagement: {
1531
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
1532
+ keyId?: string | undefined;
1533
+ rotationPolicy?: {
1534
+ enabled: boolean;
1535
+ frequencyDays: number;
1536
+ retainOldVersions: number;
1537
+ autoRotate: boolean;
1538
+ } | undefined;
1539
+ };
1540
+ scope: "record" | "field" | "table" | "database";
1541
+ deterministicEncryption: boolean;
1542
+ searchableEncryption: boolean;
1543
+ } | undefined;
1544
+ readonly columnName?: string | undefined;
1545
+ readonly searchable?: boolean | undefined;
1546
+ readonly unique?: boolean | undefined;
1547
+ readonly maxLength?: number | undefined;
1548
+ readonly minLength?: number | undefined;
1549
+ readonly scale?: number | undefined;
1550
+ reference: string;
1551
+ readonly referenceFilters?: string[] | undefined;
1552
+ readonly writeRequiresMasterRead?: boolean | undefined;
1553
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
1554
+ readonly expression?: {
1555
+ dialect: "cel" | "js" | "cron" | "template";
1556
+ source?: string | undefined;
1557
+ ast?: unknown;
1558
+ meta?: {
1559
+ rationale?: string | undefined;
1560
+ generatedBy?: string | undefined;
1561
+ } | undefined;
1562
+ } | undefined;
1563
+ readonly summaryOperations?: {
1564
+ object: string;
1565
+ field: string;
1566
+ function: "min" | "max" | "count" | "sum" | "avg";
1567
+ } | undefined;
1568
+ readonly language?: string | undefined;
1569
+ readonly lineNumbers?: boolean | undefined;
1570
+ readonly maxRating?: number | undefined;
1571
+ readonly allowHalf?: boolean | undefined;
1572
+ readonly displayMap?: boolean | undefined;
1573
+ readonly allowGeocoding?: boolean | undefined;
1574
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
1575
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
1576
+ readonly allowAlpha?: boolean | undefined;
1577
+ readonly presetColors?: string[] | undefined;
1578
+ readonly step?: number | undefined;
1579
+ readonly showValue?: boolean | undefined;
1580
+ readonly marks?: Record<string, string> | undefined;
1581
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
1582
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
1583
+ readonly displayValue?: boolean | undefined;
1584
+ readonly allowScanning?: boolean | undefined;
1585
+ readonly currencyConfig?: {
1586
+ precision: number;
1587
+ currencyMode: "fixed" | "dynamic";
1588
+ defaultCurrency: string;
1589
+ } | undefined;
1590
+ readonly vectorConfig?: {
1591
+ dimensions: number;
1592
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
1593
+ normalized: boolean;
1594
+ indexed: boolean;
1595
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
1596
+ } | undefined;
1597
+ readonly fileAttachmentConfig?: {
1598
+ virusScan: boolean;
1599
+ virusScanOnUpload: boolean;
1600
+ quarantineOnThreat: boolean;
1601
+ allowMultiple: boolean;
1602
+ allowReplace: boolean;
1603
+ allowDelete: boolean;
1604
+ requireUpload: boolean;
1605
+ extractMetadata: boolean;
1606
+ extractText: boolean;
1607
+ versioningEnabled: boolean;
1608
+ publicRead: boolean;
1609
+ presignedUrlExpiry: number;
1610
+ minSize?: number | undefined;
1611
+ maxSize?: number | undefined;
1612
+ allowedTypes?: string[] | undefined;
1613
+ blockedTypes?: string[] | undefined;
1614
+ allowedMimeTypes?: string[] | undefined;
1615
+ blockedMimeTypes?: string[] | undefined;
1616
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
1617
+ storageProvider?: string | undefined;
1618
+ storageBucket?: string | undefined;
1619
+ storagePrefix?: string | undefined;
1620
+ imageValidation?: {
1621
+ generateThumbnails: boolean;
1622
+ preserveMetadata: boolean;
1623
+ autoRotate: boolean;
1624
+ minWidth?: number | undefined;
1625
+ maxWidth?: number | undefined;
1626
+ minHeight?: number | undefined;
1627
+ maxHeight?: number | undefined;
1628
+ aspectRatio?: string | undefined;
1629
+ thumbnailSizes?: {
1630
+ name: string;
1631
+ width: number;
1632
+ height: number;
1633
+ crop: boolean;
1634
+ }[] | undefined;
1635
+ } | undefined;
1636
+ maxVersions?: number | undefined;
1637
+ } | undefined;
1638
+ readonly maskingRule?: {
1639
+ field: string;
1640
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
1641
+ preserveFormat: boolean;
1642
+ preserveLength: boolean;
1643
+ pattern?: string | undefined;
1644
+ roles?: string[] | undefined;
1645
+ exemptRoles?: string[] | undefined;
1646
+ } | undefined;
1647
+ readonly auditTrail?: boolean | undefined;
1648
+ readonly cached?: {
1649
+ enabled: boolean;
1650
+ ttl: number;
1651
+ invalidateOn: string[];
1652
+ } | undefined;
1653
+ readonly dataQuality?: {
1654
+ uniqueness: boolean;
1655
+ completeness: number;
1656
+ accuracy?: {
1657
+ source: string;
1658
+ threshold: number;
1659
+ } | undefined;
1660
+ } | undefined;
1661
+ readonly conditionalRequired?: {
1662
+ dialect: "cel" | "js" | "cron" | "template";
1663
+ source?: string | undefined;
1664
+ ast?: unknown;
1665
+ meta?: {
1666
+ rationale?: string | undefined;
1667
+ generatedBy?: string | undefined;
1668
+ } | undefined;
1669
+ } | undefined;
1670
+ readonly sortable?: boolean | undefined;
1671
+ readonly inlineHelpText?: string | undefined;
1672
+ readonly trackFeedHistory?: boolean | undefined;
1673
+ readonly caseSensitive?: boolean | undefined;
1674
+ readonly autonumberFormat?: string | undefined;
1675
+ readonly index?: boolean | undefined;
1676
+ readonly type: "lookup";
1677
+ };
1678
+ readonly flow_name: {
1679
+ readonly readonly?: boolean | undefined;
1680
+ readonly format?: string | undefined;
1681
+ readonly options?: {
1682
+ label: string;
1683
+ value: string;
1684
+ color?: string | undefined;
1685
+ default?: boolean | undefined;
1686
+ }[] | undefined;
1687
+ readonly description?: string | undefined;
1688
+ readonly label?: string | undefined;
1689
+ readonly name?: string | undefined;
1690
+ readonly precision?: number | undefined;
1691
+ readonly required?: boolean | undefined;
1692
+ readonly multiple?: boolean | undefined;
1693
+ readonly dependencies?: string[] | undefined;
1694
+ readonly theme?: string | undefined;
1695
+ readonly externalId?: boolean | undefined;
1696
+ readonly defaultValue?: unknown;
1697
+ readonly group?: string | undefined;
1698
+ readonly hidden?: boolean | undefined;
1699
+ readonly system?: boolean | undefined;
1700
+ readonly min?: number | undefined;
1701
+ readonly max?: number | undefined;
1702
+ readonly encryptionConfig?: {
1703
+ enabled: boolean;
1704
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
1705
+ keyManagement: {
1706
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
1707
+ keyId?: string | undefined;
1708
+ rotationPolicy?: {
1709
+ enabled: boolean;
1710
+ frequencyDays: number;
1711
+ retainOldVersions: number;
1712
+ autoRotate: boolean;
1713
+ } | undefined;
1714
+ };
1715
+ scope: "record" | "field" | "table" | "database";
1716
+ deterministicEncryption: boolean;
1717
+ searchableEncryption: boolean;
1718
+ } | undefined;
1719
+ readonly columnName?: string | undefined;
1720
+ readonly searchable?: boolean | undefined;
1721
+ readonly unique?: boolean | undefined;
1722
+ readonly maxLength?: number | undefined;
1723
+ readonly minLength?: number | undefined;
1724
+ readonly scale?: number | undefined;
1725
+ readonly reference?: string | undefined;
1726
+ readonly referenceFilters?: string[] | undefined;
1727
+ readonly writeRequiresMasterRead?: boolean | undefined;
1728
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
1729
+ readonly expression?: {
1730
+ dialect: "cel" | "js" | "cron" | "template";
1731
+ source?: string | undefined;
1732
+ ast?: unknown;
1733
+ meta?: {
1734
+ rationale?: string | undefined;
1735
+ generatedBy?: string | undefined;
1736
+ } | undefined;
1737
+ } | undefined;
1738
+ readonly summaryOperations?: {
1739
+ object: string;
1740
+ field: string;
1741
+ function: "min" | "max" | "count" | "sum" | "avg";
1742
+ } | undefined;
1743
+ readonly language?: string | undefined;
1744
+ readonly lineNumbers?: boolean | undefined;
1745
+ readonly maxRating?: number | undefined;
1746
+ readonly allowHalf?: boolean | undefined;
1747
+ readonly displayMap?: boolean | undefined;
1748
+ readonly allowGeocoding?: boolean | undefined;
1749
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
1750
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
1751
+ readonly allowAlpha?: boolean | undefined;
1752
+ readonly presetColors?: string[] | undefined;
1753
+ readonly step?: number | undefined;
1754
+ readonly showValue?: boolean | undefined;
1755
+ readonly marks?: Record<string, string> | undefined;
1756
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
1757
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
1758
+ readonly displayValue?: boolean | undefined;
1759
+ readonly allowScanning?: boolean | undefined;
1760
+ readonly currencyConfig?: {
1761
+ precision: number;
1762
+ currencyMode: "fixed" | "dynamic";
1763
+ defaultCurrency: string;
1764
+ } | undefined;
1765
+ readonly vectorConfig?: {
1766
+ dimensions: number;
1767
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
1768
+ normalized: boolean;
1769
+ indexed: boolean;
1770
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
1771
+ } | undefined;
1772
+ readonly fileAttachmentConfig?: {
1773
+ virusScan: boolean;
1774
+ virusScanOnUpload: boolean;
1775
+ quarantineOnThreat: boolean;
1776
+ allowMultiple: boolean;
1777
+ allowReplace: boolean;
1778
+ allowDelete: boolean;
1779
+ requireUpload: boolean;
1780
+ extractMetadata: boolean;
1781
+ extractText: boolean;
1782
+ versioningEnabled: boolean;
1783
+ publicRead: boolean;
1784
+ presignedUrlExpiry: number;
1785
+ minSize?: number | undefined;
1786
+ maxSize?: number | undefined;
1787
+ allowedTypes?: string[] | undefined;
1788
+ blockedTypes?: string[] | undefined;
1789
+ allowedMimeTypes?: string[] | undefined;
1790
+ blockedMimeTypes?: string[] | undefined;
1791
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
1792
+ storageProvider?: string | undefined;
1793
+ storageBucket?: string | undefined;
1794
+ storagePrefix?: string | undefined;
1795
+ imageValidation?: {
1796
+ generateThumbnails: boolean;
1797
+ preserveMetadata: boolean;
1798
+ autoRotate: boolean;
1799
+ minWidth?: number | undefined;
1800
+ maxWidth?: number | undefined;
1801
+ minHeight?: number | undefined;
1802
+ maxHeight?: number | undefined;
1803
+ aspectRatio?: string | undefined;
1804
+ thumbnailSizes?: {
1805
+ name: string;
1806
+ width: number;
1807
+ height: number;
1808
+ crop: boolean;
1809
+ }[] | undefined;
1810
+ } | undefined;
1811
+ maxVersions?: number | undefined;
1812
+ } | undefined;
1813
+ readonly maskingRule?: {
1814
+ field: string;
1815
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
1816
+ preserveFormat: boolean;
1817
+ preserveLength: boolean;
1818
+ pattern?: string | undefined;
1819
+ roles?: string[] | undefined;
1820
+ exemptRoles?: string[] | undefined;
1821
+ } | undefined;
1822
+ readonly auditTrail?: boolean | undefined;
1823
+ readonly cached?: {
1824
+ enabled: boolean;
1825
+ ttl: number;
1826
+ invalidateOn: string[];
1827
+ } | undefined;
1828
+ readonly dataQuality?: {
1829
+ uniqueness: boolean;
1830
+ completeness: number;
1831
+ accuracy?: {
1832
+ source: string;
1833
+ threshold: number;
1834
+ } | undefined;
1835
+ } | undefined;
1836
+ readonly conditionalRequired?: {
1837
+ dialect: "cel" | "js" | "cron" | "template";
1838
+ source?: string | undefined;
1839
+ ast?: unknown;
1840
+ meta?: {
1841
+ rationale?: string | undefined;
1842
+ generatedBy?: string | undefined;
1843
+ } | undefined;
1844
+ } | undefined;
1845
+ readonly sortable?: boolean | undefined;
1846
+ readonly inlineHelpText?: string | undefined;
1847
+ readonly trackFeedHistory?: boolean | undefined;
1848
+ readonly caseSensitive?: boolean | undefined;
1849
+ readonly autonumberFormat?: string | undefined;
1850
+ readonly index?: boolean | undefined;
1851
+ readonly type: "text";
1852
+ };
1853
+ readonly flow_version: {
1854
+ readonly readonly?: boolean | undefined;
1855
+ readonly format?: string | undefined;
1856
+ readonly options?: {
1857
+ label: string;
1858
+ value: string;
1859
+ color?: string | undefined;
1860
+ default?: boolean | undefined;
1861
+ }[] | undefined;
1862
+ readonly description?: string | undefined;
1863
+ readonly label?: string | undefined;
1864
+ readonly name?: string | undefined;
1865
+ readonly precision?: number | undefined;
1866
+ readonly required?: boolean | undefined;
1867
+ readonly multiple?: boolean | undefined;
1868
+ readonly dependencies?: string[] | undefined;
1869
+ readonly theme?: string | undefined;
1870
+ readonly externalId?: boolean | undefined;
1871
+ readonly defaultValue?: unknown;
1872
+ readonly group?: string | undefined;
1873
+ readonly hidden?: boolean | undefined;
1874
+ readonly system?: boolean | undefined;
1875
+ readonly min?: number | undefined;
1876
+ readonly max?: number | undefined;
1877
+ readonly encryptionConfig?: {
1878
+ enabled: boolean;
1879
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
1880
+ keyManagement: {
1881
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
1882
+ keyId?: string | undefined;
1883
+ rotationPolicy?: {
1884
+ enabled: boolean;
1885
+ frequencyDays: number;
1886
+ retainOldVersions: number;
1887
+ autoRotate: boolean;
1888
+ } | undefined;
1889
+ };
1890
+ scope: "record" | "field" | "table" | "database";
1891
+ deterministicEncryption: boolean;
1892
+ searchableEncryption: boolean;
1893
+ } | undefined;
1894
+ readonly columnName?: string | undefined;
1895
+ readonly searchable?: boolean | undefined;
1896
+ readonly unique?: boolean | undefined;
1897
+ readonly maxLength?: number | undefined;
1898
+ readonly minLength?: number | undefined;
1899
+ readonly scale?: number | undefined;
1900
+ readonly reference?: string | undefined;
1901
+ readonly referenceFilters?: string[] | undefined;
1902
+ readonly writeRequiresMasterRead?: boolean | undefined;
1903
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
1904
+ readonly expression?: {
1905
+ dialect: "cel" | "js" | "cron" | "template";
1906
+ source?: string | undefined;
1907
+ ast?: unknown;
1908
+ meta?: {
1909
+ rationale?: string | undefined;
1910
+ generatedBy?: string | undefined;
1911
+ } | undefined;
1912
+ } | undefined;
1913
+ readonly summaryOperations?: {
1914
+ object: string;
1915
+ field: string;
1916
+ function: "min" | "max" | "count" | "sum" | "avg";
1917
+ } | undefined;
1918
+ readonly language?: string | undefined;
1919
+ readonly lineNumbers?: boolean | undefined;
1920
+ readonly maxRating?: number | undefined;
1921
+ readonly allowHalf?: boolean | undefined;
1922
+ readonly displayMap?: boolean | undefined;
1923
+ readonly allowGeocoding?: boolean | undefined;
1924
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
1925
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
1926
+ readonly allowAlpha?: boolean | undefined;
1927
+ readonly presetColors?: string[] | undefined;
1928
+ readonly step?: number | undefined;
1929
+ readonly showValue?: boolean | undefined;
1930
+ readonly marks?: Record<string, string> | undefined;
1931
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
1932
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
1933
+ readonly displayValue?: boolean | undefined;
1934
+ readonly allowScanning?: boolean | undefined;
1935
+ readonly currencyConfig?: {
1936
+ precision: number;
1937
+ currencyMode: "fixed" | "dynamic";
1938
+ defaultCurrency: string;
1939
+ } | undefined;
1940
+ readonly vectorConfig?: {
1941
+ dimensions: number;
1942
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
1943
+ normalized: boolean;
1944
+ indexed: boolean;
1945
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
1946
+ } | undefined;
1947
+ readonly fileAttachmentConfig?: {
1948
+ virusScan: boolean;
1949
+ virusScanOnUpload: boolean;
1950
+ quarantineOnThreat: boolean;
1951
+ allowMultiple: boolean;
1952
+ allowReplace: boolean;
1953
+ allowDelete: boolean;
1954
+ requireUpload: boolean;
1955
+ extractMetadata: boolean;
1956
+ extractText: boolean;
1957
+ versioningEnabled: boolean;
1958
+ publicRead: boolean;
1959
+ presignedUrlExpiry: number;
1960
+ minSize?: number | undefined;
1961
+ maxSize?: number | undefined;
1962
+ allowedTypes?: string[] | undefined;
1963
+ blockedTypes?: string[] | undefined;
1964
+ allowedMimeTypes?: string[] | undefined;
1965
+ blockedMimeTypes?: string[] | undefined;
1966
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
1967
+ storageProvider?: string | undefined;
1968
+ storageBucket?: string | undefined;
1969
+ storagePrefix?: string | undefined;
1970
+ imageValidation?: {
1971
+ generateThumbnails: boolean;
1972
+ preserveMetadata: boolean;
1973
+ autoRotate: boolean;
1974
+ minWidth?: number | undefined;
1975
+ maxWidth?: number | undefined;
1976
+ minHeight?: number | undefined;
1977
+ maxHeight?: number | undefined;
1978
+ aspectRatio?: string | undefined;
1979
+ thumbnailSizes?: {
1980
+ name: string;
1981
+ width: number;
1982
+ height: number;
1983
+ crop: boolean;
1984
+ }[] | undefined;
1985
+ } | undefined;
1986
+ maxVersions?: number | undefined;
1987
+ } | undefined;
1988
+ readonly maskingRule?: {
1989
+ field: string;
1990
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
1991
+ preserveFormat: boolean;
1992
+ preserveLength: boolean;
1993
+ pattern?: string | undefined;
1994
+ roles?: string[] | undefined;
1995
+ exemptRoles?: string[] | undefined;
1996
+ } | undefined;
1997
+ readonly auditTrail?: boolean | undefined;
1998
+ readonly cached?: {
1999
+ enabled: boolean;
2000
+ ttl: number;
2001
+ invalidateOn: string[];
2002
+ } | undefined;
2003
+ readonly dataQuality?: {
2004
+ uniqueness: boolean;
2005
+ completeness: number;
2006
+ accuracy?: {
2007
+ source: string;
2008
+ threshold: number;
2009
+ } | undefined;
2010
+ } | undefined;
2011
+ readonly conditionalRequired?: {
2012
+ dialect: "cel" | "js" | "cron" | "template";
2013
+ source?: string | undefined;
2014
+ ast?: unknown;
2015
+ meta?: {
2016
+ rationale?: string | undefined;
2017
+ generatedBy?: string | undefined;
2018
+ } | undefined;
2019
+ } | undefined;
2020
+ readonly sortable?: boolean | undefined;
2021
+ readonly inlineHelpText?: string | undefined;
2022
+ readonly trackFeedHistory?: boolean | undefined;
2023
+ readonly caseSensitive?: boolean | undefined;
2024
+ readonly autonumberFormat?: string | undefined;
2025
+ readonly index?: boolean | undefined;
2026
+ readonly type: "number";
2027
+ };
2028
+ readonly node_id: {
2029
+ readonly readonly?: boolean | undefined;
2030
+ readonly format?: string | undefined;
2031
+ readonly options?: {
2032
+ label: string;
2033
+ value: string;
2034
+ color?: string | undefined;
2035
+ default?: boolean | undefined;
2036
+ }[] | undefined;
2037
+ readonly description?: string | undefined;
2038
+ readonly label?: string | undefined;
2039
+ readonly name?: string | undefined;
2040
+ readonly precision?: number | undefined;
2041
+ readonly required?: boolean | undefined;
2042
+ readonly multiple?: boolean | undefined;
2043
+ readonly dependencies?: string[] | undefined;
2044
+ readonly theme?: string | undefined;
2045
+ readonly externalId?: boolean | undefined;
2046
+ readonly defaultValue?: unknown;
2047
+ readonly group?: string | undefined;
2048
+ readonly hidden?: boolean | undefined;
2049
+ readonly system?: boolean | undefined;
2050
+ readonly min?: number | undefined;
2051
+ readonly max?: number | undefined;
2052
+ readonly encryptionConfig?: {
2053
+ enabled: boolean;
2054
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2055
+ keyManagement: {
2056
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2057
+ keyId?: string | undefined;
2058
+ rotationPolicy?: {
2059
+ enabled: boolean;
2060
+ frequencyDays: number;
2061
+ retainOldVersions: number;
2062
+ autoRotate: boolean;
2063
+ } | undefined;
2064
+ };
2065
+ scope: "record" | "field" | "table" | "database";
2066
+ deterministicEncryption: boolean;
2067
+ searchableEncryption: boolean;
2068
+ } | undefined;
2069
+ readonly columnName?: string | undefined;
2070
+ readonly searchable?: boolean | undefined;
2071
+ readonly unique?: boolean | undefined;
2072
+ readonly maxLength?: number | undefined;
2073
+ readonly minLength?: number | undefined;
2074
+ readonly scale?: number | undefined;
2075
+ readonly reference?: string | undefined;
2076
+ readonly referenceFilters?: string[] | undefined;
2077
+ readonly writeRequiresMasterRead?: boolean | undefined;
2078
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
2079
+ readonly expression?: {
2080
+ dialect: "cel" | "js" | "cron" | "template";
2081
+ source?: string | undefined;
2082
+ ast?: unknown;
2083
+ meta?: {
2084
+ rationale?: string | undefined;
2085
+ generatedBy?: string | undefined;
2086
+ } | undefined;
2087
+ } | undefined;
2088
+ readonly summaryOperations?: {
2089
+ object: string;
2090
+ field: string;
2091
+ function: "min" | "max" | "count" | "sum" | "avg";
2092
+ } | undefined;
2093
+ readonly language?: string | undefined;
2094
+ readonly lineNumbers?: boolean | undefined;
2095
+ readonly maxRating?: number | undefined;
2096
+ readonly allowHalf?: boolean | undefined;
2097
+ readonly displayMap?: boolean | undefined;
2098
+ readonly allowGeocoding?: boolean | undefined;
2099
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
2100
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
2101
+ readonly allowAlpha?: boolean | undefined;
2102
+ readonly presetColors?: string[] | undefined;
2103
+ readonly step?: number | undefined;
2104
+ readonly showValue?: boolean | undefined;
2105
+ readonly marks?: Record<string, string> | undefined;
2106
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
2107
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
2108
+ readonly displayValue?: boolean | undefined;
2109
+ readonly allowScanning?: boolean | undefined;
2110
+ readonly currencyConfig?: {
2111
+ precision: number;
2112
+ currencyMode: "fixed" | "dynamic";
2113
+ defaultCurrency: string;
2114
+ } | undefined;
2115
+ readonly vectorConfig?: {
2116
+ dimensions: number;
2117
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
2118
+ normalized: boolean;
2119
+ indexed: boolean;
2120
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
2121
+ } | undefined;
2122
+ readonly fileAttachmentConfig?: {
2123
+ virusScan: boolean;
2124
+ virusScanOnUpload: boolean;
2125
+ quarantineOnThreat: boolean;
2126
+ allowMultiple: boolean;
2127
+ allowReplace: boolean;
2128
+ allowDelete: boolean;
2129
+ requireUpload: boolean;
2130
+ extractMetadata: boolean;
2131
+ extractText: boolean;
2132
+ versioningEnabled: boolean;
2133
+ publicRead: boolean;
2134
+ presignedUrlExpiry: number;
2135
+ minSize?: number | undefined;
2136
+ maxSize?: number | undefined;
2137
+ allowedTypes?: string[] | undefined;
2138
+ blockedTypes?: string[] | undefined;
2139
+ allowedMimeTypes?: string[] | undefined;
2140
+ blockedMimeTypes?: string[] | undefined;
2141
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
2142
+ storageProvider?: string | undefined;
2143
+ storageBucket?: string | undefined;
2144
+ storagePrefix?: string | undefined;
2145
+ imageValidation?: {
2146
+ generateThumbnails: boolean;
2147
+ preserveMetadata: boolean;
2148
+ autoRotate: boolean;
2149
+ minWidth?: number | undefined;
2150
+ maxWidth?: number | undefined;
2151
+ minHeight?: number | undefined;
2152
+ maxHeight?: number | undefined;
2153
+ aspectRatio?: string | undefined;
2154
+ thumbnailSizes?: {
2155
+ name: string;
2156
+ width: number;
2157
+ height: number;
2158
+ crop: boolean;
2159
+ }[] | undefined;
2160
+ } | undefined;
2161
+ maxVersions?: number | undefined;
2162
+ } | undefined;
2163
+ readonly maskingRule?: {
2164
+ field: string;
2165
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
2166
+ preserveFormat: boolean;
2167
+ preserveLength: boolean;
2168
+ pattern?: string | undefined;
2169
+ roles?: string[] | undefined;
2170
+ exemptRoles?: string[] | undefined;
2171
+ } | undefined;
2172
+ readonly auditTrail?: boolean | undefined;
2173
+ readonly cached?: {
2174
+ enabled: boolean;
2175
+ ttl: number;
2176
+ invalidateOn: string[];
2177
+ } | undefined;
2178
+ readonly dataQuality?: {
2179
+ uniqueness: boolean;
2180
+ completeness: number;
2181
+ accuracy?: {
2182
+ source: string;
2183
+ threshold: number;
2184
+ } | undefined;
2185
+ } | undefined;
2186
+ readonly conditionalRequired?: {
2187
+ dialect: "cel" | "js" | "cron" | "template";
2188
+ source?: string | undefined;
2189
+ ast?: unknown;
2190
+ meta?: {
2191
+ rationale?: string | undefined;
2192
+ generatedBy?: string | undefined;
2193
+ } | undefined;
2194
+ } | undefined;
2195
+ readonly sortable?: boolean | undefined;
2196
+ readonly inlineHelpText?: string | undefined;
2197
+ readonly trackFeedHistory?: boolean | undefined;
2198
+ readonly caseSensitive?: boolean | undefined;
2199
+ readonly autonumberFormat?: string | undefined;
2200
+ readonly index?: boolean | undefined;
2201
+ readonly type: "text";
2202
+ };
2203
+ readonly status: {
2204
+ readonly readonly?: boolean | undefined;
2205
+ readonly format?: string | undefined;
2206
+ options: {
2207
+ label: string;
2208
+ value: string;
2209
+ color?: string | undefined;
2210
+ default?: boolean | undefined;
2211
+ }[];
2212
+ readonly description?: string | undefined;
2213
+ readonly label?: string | undefined;
2214
+ readonly name?: string | undefined;
2215
+ readonly precision?: number | undefined;
2216
+ readonly required?: boolean | undefined;
2217
+ readonly multiple?: boolean | undefined;
2218
+ readonly dependencies?: string[] | undefined;
2219
+ readonly theme?: string | undefined;
2220
+ readonly externalId?: boolean | undefined;
2221
+ readonly defaultValue?: unknown;
2222
+ readonly group?: string | undefined;
2223
+ readonly hidden?: boolean | undefined;
2224
+ readonly system?: boolean | undefined;
2225
+ readonly min?: number | undefined;
2226
+ readonly max?: number | undefined;
2227
+ readonly encryptionConfig?: {
2228
+ enabled: boolean;
2229
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2230
+ keyManagement: {
2231
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2232
+ keyId?: string | undefined;
2233
+ rotationPolicy?: {
2234
+ enabled: boolean;
2235
+ frequencyDays: number;
2236
+ retainOldVersions: number;
2237
+ autoRotate: boolean;
2238
+ } | undefined;
2239
+ };
2240
+ scope: "record" | "field" | "table" | "database";
2241
+ deterministicEncryption: boolean;
2242
+ searchableEncryption: boolean;
2243
+ } | undefined;
2244
+ readonly columnName?: string | undefined;
2245
+ readonly searchable?: boolean | undefined;
2246
+ readonly unique?: boolean | undefined;
2247
+ readonly maxLength?: number | undefined;
2248
+ readonly minLength?: number | undefined;
2249
+ readonly scale?: number | undefined;
2250
+ readonly reference?: string | undefined;
2251
+ readonly referenceFilters?: string[] | undefined;
2252
+ readonly writeRequiresMasterRead?: boolean | undefined;
2253
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
2254
+ readonly expression?: {
2255
+ dialect: "cel" | "js" | "cron" | "template";
2256
+ source?: string | undefined;
2257
+ ast?: unknown;
2258
+ meta?: {
2259
+ rationale?: string | undefined;
2260
+ generatedBy?: string | undefined;
2261
+ } | undefined;
2262
+ } | undefined;
2263
+ readonly summaryOperations?: {
2264
+ object: string;
2265
+ field: string;
2266
+ function: "min" | "max" | "count" | "sum" | "avg";
2267
+ } | undefined;
2268
+ readonly language?: string | undefined;
2269
+ readonly lineNumbers?: boolean | undefined;
2270
+ readonly maxRating?: number | undefined;
2271
+ readonly allowHalf?: boolean | undefined;
2272
+ readonly displayMap?: boolean | undefined;
2273
+ readonly allowGeocoding?: boolean | undefined;
2274
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
2275
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
2276
+ readonly allowAlpha?: boolean | undefined;
2277
+ readonly presetColors?: string[] | undefined;
2278
+ readonly step?: number | undefined;
2279
+ readonly showValue?: boolean | undefined;
2280
+ readonly marks?: Record<string, string> | undefined;
2281
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
2282
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
2283
+ readonly displayValue?: boolean | undefined;
2284
+ readonly allowScanning?: boolean | undefined;
2285
+ readonly currencyConfig?: {
2286
+ precision: number;
2287
+ currencyMode: "fixed" | "dynamic";
2288
+ defaultCurrency: string;
2289
+ } | undefined;
2290
+ readonly vectorConfig?: {
2291
+ dimensions: number;
2292
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
2293
+ normalized: boolean;
2294
+ indexed: boolean;
2295
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
2296
+ } | undefined;
2297
+ readonly fileAttachmentConfig?: {
2298
+ virusScan: boolean;
2299
+ virusScanOnUpload: boolean;
2300
+ quarantineOnThreat: boolean;
2301
+ allowMultiple: boolean;
2302
+ allowReplace: boolean;
2303
+ allowDelete: boolean;
2304
+ requireUpload: boolean;
2305
+ extractMetadata: boolean;
2306
+ extractText: boolean;
2307
+ versioningEnabled: boolean;
2308
+ publicRead: boolean;
2309
+ presignedUrlExpiry: number;
2310
+ minSize?: number | undefined;
2311
+ maxSize?: number | undefined;
2312
+ allowedTypes?: string[] | undefined;
2313
+ blockedTypes?: string[] | undefined;
2314
+ allowedMimeTypes?: string[] | undefined;
2315
+ blockedMimeTypes?: string[] | undefined;
2316
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
2317
+ storageProvider?: string | undefined;
2318
+ storageBucket?: string | undefined;
2319
+ storagePrefix?: string | undefined;
2320
+ imageValidation?: {
2321
+ generateThumbnails: boolean;
2322
+ preserveMetadata: boolean;
2323
+ autoRotate: boolean;
2324
+ minWidth?: number | undefined;
2325
+ maxWidth?: number | undefined;
2326
+ minHeight?: number | undefined;
2327
+ maxHeight?: number | undefined;
2328
+ aspectRatio?: string | undefined;
2329
+ thumbnailSizes?: {
2330
+ name: string;
2331
+ width: number;
2332
+ height: number;
2333
+ crop: boolean;
2334
+ }[] | undefined;
2335
+ } | undefined;
2336
+ maxVersions?: number | undefined;
2337
+ } | undefined;
2338
+ readonly maskingRule?: {
2339
+ field: string;
2340
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
2341
+ preserveFormat: boolean;
2342
+ preserveLength: boolean;
2343
+ pattern?: string | undefined;
2344
+ roles?: string[] | undefined;
2345
+ exemptRoles?: string[] | undefined;
2346
+ } | undefined;
2347
+ readonly auditTrail?: boolean | undefined;
2348
+ readonly cached?: {
2349
+ enabled: boolean;
2350
+ ttl: number;
2351
+ invalidateOn: string[];
2352
+ } | undefined;
2353
+ readonly dataQuality?: {
2354
+ uniqueness: boolean;
2355
+ completeness: number;
2356
+ accuracy?: {
2357
+ source: string;
2358
+ threshold: number;
2359
+ } | undefined;
2360
+ } | undefined;
2361
+ readonly conditionalRequired?: {
2362
+ dialect: "cel" | "js" | "cron" | "template";
2363
+ source?: string | undefined;
2364
+ ast?: unknown;
2365
+ meta?: {
2366
+ rationale?: string | undefined;
2367
+ generatedBy?: string | undefined;
2368
+ } | undefined;
2369
+ } | undefined;
2370
+ readonly sortable?: boolean | undefined;
2371
+ readonly inlineHelpText?: string | undefined;
2372
+ readonly trackFeedHistory?: boolean | undefined;
2373
+ readonly caseSensitive?: boolean | undefined;
2374
+ readonly autonumberFormat?: string | undefined;
2375
+ readonly index?: boolean | undefined;
2376
+ readonly type: "select";
2377
+ };
2378
+ readonly correlation: {
2379
+ readonly readonly?: boolean | undefined;
2380
+ readonly format?: string | undefined;
2381
+ readonly options?: {
2382
+ label: string;
2383
+ value: string;
2384
+ color?: string | undefined;
2385
+ default?: boolean | undefined;
2386
+ }[] | undefined;
2387
+ readonly description?: string | undefined;
2388
+ readonly label?: string | undefined;
2389
+ readonly name?: string | undefined;
2390
+ readonly precision?: number | undefined;
2391
+ readonly required?: boolean | undefined;
2392
+ readonly multiple?: boolean | undefined;
2393
+ readonly dependencies?: string[] | undefined;
2394
+ readonly theme?: string | undefined;
2395
+ readonly externalId?: boolean | undefined;
2396
+ readonly defaultValue?: unknown;
2397
+ readonly group?: string | undefined;
2398
+ readonly hidden?: boolean | undefined;
2399
+ readonly system?: boolean | undefined;
2400
+ readonly min?: number | undefined;
2401
+ readonly max?: number | undefined;
2402
+ readonly encryptionConfig?: {
2403
+ enabled: boolean;
2404
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2405
+ keyManagement: {
2406
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2407
+ keyId?: string | undefined;
2408
+ rotationPolicy?: {
2409
+ enabled: boolean;
2410
+ frequencyDays: number;
2411
+ retainOldVersions: number;
2412
+ autoRotate: boolean;
2413
+ } | undefined;
2414
+ };
2415
+ scope: "record" | "field" | "table" | "database";
2416
+ deterministicEncryption: boolean;
2417
+ searchableEncryption: boolean;
2418
+ } | undefined;
2419
+ readonly columnName?: string | undefined;
2420
+ readonly searchable?: boolean | undefined;
2421
+ readonly unique?: boolean | undefined;
2422
+ readonly maxLength?: number | undefined;
2423
+ readonly minLength?: number | undefined;
2424
+ readonly scale?: number | undefined;
2425
+ readonly reference?: string | undefined;
2426
+ readonly referenceFilters?: string[] | undefined;
2427
+ readonly writeRequiresMasterRead?: boolean | undefined;
2428
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
2429
+ readonly expression?: {
2430
+ dialect: "cel" | "js" | "cron" | "template";
2431
+ source?: string | undefined;
2432
+ ast?: unknown;
2433
+ meta?: {
2434
+ rationale?: string | undefined;
2435
+ generatedBy?: string | undefined;
2436
+ } | undefined;
2437
+ } | undefined;
2438
+ readonly summaryOperations?: {
2439
+ object: string;
2440
+ field: string;
2441
+ function: "min" | "max" | "count" | "sum" | "avg";
2442
+ } | undefined;
2443
+ readonly language?: string | undefined;
2444
+ readonly lineNumbers?: boolean | undefined;
2445
+ readonly maxRating?: number | undefined;
2446
+ readonly allowHalf?: boolean | undefined;
2447
+ readonly displayMap?: boolean | undefined;
2448
+ readonly allowGeocoding?: boolean | undefined;
2449
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
2450
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
2451
+ readonly allowAlpha?: boolean | undefined;
2452
+ readonly presetColors?: string[] | undefined;
2453
+ readonly step?: number | undefined;
2454
+ readonly showValue?: boolean | undefined;
2455
+ readonly marks?: Record<string, string> | undefined;
2456
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
2457
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
2458
+ readonly displayValue?: boolean | undefined;
2459
+ readonly allowScanning?: boolean | undefined;
2460
+ readonly currencyConfig?: {
2461
+ precision: number;
2462
+ currencyMode: "fixed" | "dynamic";
2463
+ defaultCurrency: string;
2464
+ } | undefined;
2465
+ readonly vectorConfig?: {
2466
+ dimensions: number;
2467
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
2468
+ normalized: boolean;
2469
+ indexed: boolean;
2470
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
2471
+ } | undefined;
2472
+ readonly fileAttachmentConfig?: {
2473
+ virusScan: boolean;
2474
+ virusScanOnUpload: boolean;
2475
+ quarantineOnThreat: boolean;
2476
+ allowMultiple: boolean;
2477
+ allowReplace: boolean;
2478
+ allowDelete: boolean;
2479
+ requireUpload: boolean;
2480
+ extractMetadata: boolean;
2481
+ extractText: boolean;
2482
+ versioningEnabled: boolean;
2483
+ publicRead: boolean;
2484
+ presignedUrlExpiry: number;
2485
+ minSize?: number | undefined;
2486
+ maxSize?: number | undefined;
2487
+ allowedTypes?: string[] | undefined;
2488
+ blockedTypes?: string[] | undefined;
2489
+ allowedMimeTypes?: string[] | undefined;
2490
+ blockedMimeTypes?: string[] | undefined;
2491
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
2492
+ storageProvider?: string | undefined;
2493
+ storageBucket?: string | undefined;
2494
+ storagePrefix?: string | undefined;
2495
+ imageValidation?: {
2496
+ generateThumbnails: boolean;
2497
+ preserveMetadata: boolean;
2498
+ autoRotate: boolean;
2499
+ minWidth?: number | undefined;
2500
+ maxWidth?: number | undefined;
2501
+ minHeight?: number | undefined;
2502
+ maxHeight?: number | undefined;
2503
+ aspectRatio?: string | undefined;
2504
+ thumbnailSizes?: {
2505
+ name: string;
2506
+ width: number;
2507
+ height: number;
2508
+ crop: boolean;
2509
+ }[] | undefined;
2510
+ } | undefined;
2511
+ maxVersions?: number | undefined;
2512
+ } | undefined;
2513
+ readonly maskingRule?: {
2514
+ field: string;
2515
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
2516
+ preserveFormat: boolean;
2517
+ preserveLength: boolean;
2518
+ pattern?: string | undefined;
2519
+ roles?: string[] | undefined;
2520
+ exemptRoles?: string[] | undefined;
2521
+ } | undefined;
2522
+ readonly auditTrail?: boolean | undefined;
2523
+ readonly cached?: {
2524
+ enabled: boolean;
2525
+ ttl: number;
2526
+ invalidateOn: string[];
2527
+ } | undefined;
2528
+ readonly dataQuality?: {
2529
+ uniqueness: boolean;
2530
+ completeness: number;
2531
+ accuracy?: {
2532
+ source: string;
2533
+ threshold: number;
2534
+ } | undefined;
2535
+ } | undefined;
2536
+ readonly conditionalRequired?: {
2537
+ dialect: "cel" | "js" | "cron" | "template";
2538
+ source?: string | undefined;
2539
+ ast?: unknown;
2540
+ meta?: {
2541
+ rationale?: string | undefined;
2542
+ generatedBy?: string | undefined;
2543
+ } | undefined;
2544
+ } | undefined;
2545
+ readonly sortable?: boolean | undefined;
2546
+ readonly inlineHelpText?: string | undefined;
2547
+ readonly trackFeedHistory?: boolean | undefined;
2548
+ readonly caseSensitive?: boolean | undefined;
2549
+ readonly autonumberFormat?: string | undefined;
2550
+ readonly index?: boolean | undefined;
2551
+ readonly type: "text";
2552
+ };
2553
+ readonly user_id: {
2554
+ readonly readonly?: boolean | undefined;
2555
+ readonly format?: string | undefined;
2556
+ readonly options?: {
2557
+ label: string;
2558
+ value: string;
2559
+ color?: string | undefined;
2560
+ default?: boolean | undefined;
2561
+ }[] | undefined;
2562
+ readonly description?: string | undefined;
2563
+ readonly label?: string | undefined;
2564
+ readonly name?: string | undefined;
2565
+ readonly precision?: number | undefined;
2566
+ readonly required?: boolean | undefined;
2567
+ readonly multiple?: boolean | undefined;
2568
+ readonly dependencies?: string[] | undefined;
2569
+ readonly theme?: string | undefined;
2570
+ readonly externalId?: boolean | undefined;
2571
+ readonly defaultValue?: unknown;
2572
+ readonly group?: string | undefined;
2573
+ readonly hidden?: boolean | undefined;
2574
+ readonly system?: boolean | undefined;
2575
+ readonly min?: number | undefined;
2576
+ readonly max?: number | undefined;
2577
+ readonly encryptionConfig?: {
2578
+ enabled: boolean;
2579
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2580
+ keyManagement: {
2581
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2582
+ keyId?: string | undefined;
2583
+ rotationPolicy?: {
2584
+ enabled: boolean;
2585
+ frequencyDays: number;
2586
+ retainOldVersions: number;
2587
+ autoRotate: boolean;
2588
+ } | undefined;
2589
+ };
2590
+ scope: "record" | "field" | "table" | "database";
2591
+ deterministicEncryption: boolean;
2592
+ searchableEncryption: boolean;
2593
+ } | undefined;
2594
+ readonly columnName?: string | undefined;
2595
+ readonly searchable?: boolean | undefined;
2596
+ readonly unique?: boolean | undefined;
2597
+ readonly maxLength?: number | undefined;
2598
+ readonly minLength?: number | undefined;
2599
+ readonly scale?: number | undefined;
2600
+ readonly reference?: string | undefined;
2601
+ readonly referenceFilters?: string[] | undefined;
2602
+ readonly writeRequiresMasterRead?: boolean | undefined;
2603
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
2604
+ readonly expression?: {
2605
+ dialect: "cel" | "js" | "cron" | "template";
2606
+ source?: string | undefined;
2607
+ ast?: unknown;
2608
+ meta?: {
2609
+ rationale?: string | undefined;
2610
+ generatedBy?: string | undefined;
2611
+ } | undefined;
2612
+ } | undefined;
2613
+ readonly summaryOperations?: {
2614
+ object: string;
2615
+ field: string;
2616
+ function: "min" | "max" | "count" | "sum" | "avg";
2617
+ } | undefined;
2618
+ readonly language?: string | undefined;
2619
+ readonly lineNumbers?: boolean | undefined;
2620
+ readonly maxRating?: number | undefined;
2621
+ readonly allowHalf?: boolean | undefined;
2622
+ readonly displayMap?: boolean | undefined;
2623
+ readonly allowGeocoding?: boolean | undefined;
2624
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
2625
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
2626
+ readonly allowAlpha?: boolean | undefined;
2627
+ readonly presetColors?: string[] | undefined;
2628
+ readonly step?: number | undefined;
2629
+ readonly showValue?: boolean | undefined;
2630
+ readonly marks?: Record<string, string> | undefined;
2631
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
2632
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
2633
+ readonly displayValue?: boolean | undefined;
2634
+ readonly allowScanning?: boolean | undefined;
2635
+ readonly currencyConfig?: {
2636
+ precision: number;
2637
+ currencyMode: "fixed" | "dynamic";
2638
+ defaultCurrency: string;
2639
+ } | undefined;
2640
+ readonly vectorConfig?: {
2641
+ dimensions: number;
2642
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
2643
+ normalized: boolean;
2644
+ indexed: boolean;
2645
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
2646
+ } | undefined;
2647
+ readonly fileAttachmentConfig?: {
2648
+ virusScan: boolean;
2649
+ virusScanOnUpload: boolean;
2650
+ quarantineOnThreat: boolean;
2651
+ allowMultiple: boolean;
2652
+ allowReplace: boolean;
2653
+ allowDelete: boolean;
2654
+ requireUpload: boolean;
2655
+ extractMetadata: boolean;
2656
+ extractText: boolean;
2657
+ versioningEnabled: boolean;
2658
+ publicRead: boolean;
2659
+ presignedUrlExpiry: number;
2660
+ minSize?: number | undefined;
2661
+ maxSize?: number | undefined;
2662
+ allowedTypes?: string[] | undefined;
2663
+ blockedTypes?: string[] | undefined;
2664
+ allowedMimeTypes?: string[] | undefined;
2665
+ blockedMimeTypes?: string[] | undefined;
2666
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
2667
+ storageProvider?: string | undefined;
2668
+ storageBucket?: string | undefined;
2669
+ storagePrefix?: string | undefined;
2670
+ imageValidation?: {
2671
+ generateThumbnails: boolean;
2672
+ preserveMetadata: boolean;
2673
+ autoRotate: boolean;
2674
+ minWidth?: number | undefined;
2675
+ maxWidth?: number | undefined;
2676
+ minHeight?: number | undefined;
2677
+ maxHeight?: number | undefined;
2678
+ aspectRatio?: string | undefined;
2679
+ thumbnailSizes?: {
2680
+ name: string;
2681
+ width: number;
2682
+ height: number;
2683
+ crop: boolean;
2684
+ }[] | undefined;
2685
+ } | undefined;
2686
+ maxVersions?: number | undefined;
2687
+ } | undefined;
2688
+ readonly maskingRule?: {
2689
+ field: string;
2690
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
2691
+ preserveFormat: boolean;
2692
+ preserveLength: boolean;
2693
+ pattern?: string | undefined;
2694
+ roles?: string[] | undefined;
2695
+ exemptRoles?: string[] | undefined;
2696
+ } | undefined;
2697
+ readonly auditTrail?: boolean | undefined;
2698
+ readonly cached?: {
2699
+ enabled: boolean;
2700
+ ttl: number;
2701
+ invalidateOn: string[];
2702
+ } | undefined;
2703
+ readonly dataQuality?: {
2704
+ uniqueness: boolean;
2705
+ completeness: number;
2706
+ accuracy?: {
2707
+ source: string;
2708
+ threshold: number;
2709
+ } | undefined;
2710
+ } | undefined;
2711
+ readonly conditionalRequired?: {
2712
+ dialect: "cel" | "js" | "cron" | "template";
2713
+ source?: string | undefined;
2714
+ ast?: unknown;
2715
+ meta?: {
2716
+ rationale?: string | undefined;
2717
+ generatedBy?: string | undefined;
2718
+ } | undefined;
2719
+ } | undefined;
2720
+ readonly sortable?: boolean | undefined;
2721
+ readonly inlineHelpText?: string | undefined;
2722
+ readonly trackFeedHistory?: boolean | undefined;
2723
+ readonly caseSensitive?: boolean | undefined;
2724
+ readonly autonumberFormat?: string | undefined;
2725
+ readonly index?: boolean | undefined;
2726
+ readonly type: "text";
2727
+ };
2728
+ readonly variables_json: {
2729
+ readonly readonly?: boolean | undefined;
2730
+ readonly format?: string | undefined;
2731
+ readonly options?: {
2732
+ label: string;
2733
+ value: string;
2734
+ color?: string | undefined;
2735
+ default?: boolean | undefined;
2736
+ }[] | undefined;
2737
+ readonly description?: string | undefined;
2738
+ readonly label?: string | undefined;
2739
+ readonly name?: string | undefined;
2740
+ readonly precision?: number | undefined;
2741
+ readonly required?: boolean | undefined;
2742
+ readonly multiple?: boolean | undefined;
2743
+ readonly dependencies?: string[] | undefined;
2744
+ readonly theme?: string | undefined;
2745
+ readonly externalId?: boolean | undefined;
2746
+ readonly defaultValue?: unknown;
2747
+ readonly group?: string | undefined;
2748
+ readonly hidden?: boolean | undefined;
2749
+ readonly system?: boolean | undefined;
2750
+ readonly min?: number | undefined;
2751
+ readonly max?: number | undefined;
2752
+ readonly encryptionConfig?: {
2753
+ enabled: boolean;
2754
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2755
+ keyManagement: {
2756
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2757
+ keyId?: string | undefined;
2758
+ rotationPolicy?: {
2759
+ enabled: boolean;
2760
+ frequencyDays: number;
2761
+ retainOldVersions: number;
2762
+ autoRotate: boolean;
2763
+ } | undefined;
2764
+ };
2765
+ scope: "record" | "field" | "table" | "database";
2766
+ deterministicEncryption: boolean;
2767
+ searchableEncryption: boolean;
2768
+ } | undefined;
2769
+ readonly columnName?: string | undefined;
2770
+ readonly searchable?: boolean | undefined;
2771
+ readonly unique?: boolean | undefined;
2772
+ readonly maxLength?: number | undefined;
2773
+ readonly minLength?: number | undefined;
2774
+ readonly scale?: number | undefined;
2775
+ readonly reference?: string | undefined;
2776
+ readonly referenceFilters?: string[] | undefined;
2777
+ readonly writeRequiresMasterRead?: boolean | undefined;
2778
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
2779
+ readonly expression?: {
2780
+ dialect: "cel" | "js" | "cron" | "template";
2781
+ source?: string | undefined;
2782
+ ast?: unknown;
2783
+ meta?: {
2784
+ rationale?: string | undefined;
2785
+ generatedBy?: string | undefined;
2786
+ } | undefined;
2787
+ } | undefined;
2788
+ readonly summaryOperations?: {
2789
+ object: string;
2790
+ field: string;
2791
+ function: "min" | "max" | "count" | "sum" | "avg";
2792
+ } | undefined;
2793
+ readonly language?: string | undefined;
2794
+ readonly lineNumbers?: boolean | undefined;
2795
+ readonly maxRating?: number | undefined;
2796
+ readonly allowHalf?: boolean | undefined;
2797
+ readonly displayMap?: boolean | undefined;
2798
+ readonly allowGeocoding?: boolean | undefined;
2799
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
2800
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
2801
+ readonly allowAlpha?: boolean | undefined;
2802
+ readonly presetColors?: string[] | undefined;
2803
+ readonly step?: number | undefined;
2804
+ readonly showValue?: boolean | undefined;
2805
+ readonly marks?: Record<string, string> | undefined;
2806
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
2807
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
2808
+ readonly displayValue?: boolean | undefined;
2809
+ readonly allowScanning?: boolean | undefined;
2810
+ readonly currencyConfig?: {
2811
+ precision: number;
2812
+ currencyMode: "fixed" | "dynamic";
2813
+ defaultCurrency: string;
2814
+ } | undefined;
2815
+ readonly vectorConfig?: {
2816
+ dimensions: number;
2817
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
2818
+ normalized: boolean;
2819
+ indexed: boolean;
2820
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
2821
+ } | undefined;
2822
+ readonly fileAttachmentConfig?: {
2823
+ virusScan: boolean;
2824
+ virusScanOnUpload: boolean;
2825
+ quarantineOnThreat: boolean;
2826
+ allowMultiple: boolean;
2827
+ allowReplace: boolean;
2828
+ allowDelete: boolean;
2829
+ requireUpload: boolean;
2830
+ extractMetadata: boolean;
2831
+ extractText: boolean;
2832
+ versioningEnabled: boolean;
2833
+ publicRead: boolean;
2834
+ presignedUrlExpiry: number;
2835
+ minSize?: number | undefined;
2836
+ maxSize?: number | undefined;
2837
+ allowedTypes?: string[] | undefined;
2838
+ blockedTypes?: string[] | undefined;
2839
+ allowedMimeTypes?: string[] | undefined;
2840
+ blockedMimeTypes?: string[] | undefined;
2841
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
2842
+ storageProvider?: string | undefined;
2843
+ storageBucket?: string | undefined;
2844
+ storagePrefix?: string | undefined;
2845
+ imageValidation?: {
2846
+ generateThumbnails: boolean;
2847
+ preserveMetadata: boolean;
2848
+ autoRotate: boolean;
2849
+ minWidth?: number | undefined;
2850
+ maxWidth?: number | undefined;
2851
+ minHeight?: number | undefined;
2852
+ maxHeight?: number | undefined;
2853
+ aspectRatio?: string | undefined;
2854
+ thumbnailSizes?: {
2855
+ name: string;
2856
+ width: number;
2857
+ height: number;
2858
+ crop: boolean;
2859
+ }[] | undefined;
2860
+ } | undefined;
2861
+ maxVersions?: number | undefined;
2862
+ } | undefined;
2863
+ readonly maskingRule?: {
2864
+ field: string;
2865
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
2866
+ preserveFormat: boolean;
2867
+ preserveLength: boolean;
2868
+ pattern?: string | undefined;
2869
+ roles?: string[] | undefined;
2870
+ exemptRoles?: string[] | undefined;
2871
+ } | undefined;
2872
+ readonly auditTrail?: boolean | undefined;
2873
+ readonly cached?: {
2874
+ enabled: boolean;
2875
+ ttl: number;
2876
+ invalidateOn: string[];
2877
+ } | undefined;
2878
+ readonly dataQuality?: {
2879
+ uniqueness: boolean;
2880
+ completeness: number;
2881
+ accuracy?: {
2882
+ source: string;
2883
+ threshold: number;
2884
+ } | undefined;
2885
+ } | undefined;
2886
+ readonly conditionalRequired?: {
2887
+ dialect: "cel" | "js" | "cron" | "template";
2888
+ source?: string | undefined;
2889
+ ast?: unknown;
2890
+ meta?: {
2891
+ rationale?: string | undefined;
2892
+ generatedBy?: string | undefined;
2893
+ } | undefined;
2894
+ } | undefined;
2895
+ readonly sortable?: boolean | undefined;
2896
+ readonly inlineHelpText?: string | undefined;
2897
+ readonly trackFeedHistory?: boolean | undefined;
2898
+ readonly caseSensitive?: boolean | undefined;
2899
+ readonly autonumberFormat?: string | undefined;
2900
+ readonly index?: boolean | undefined;
2901
+ readonly type: "textarea";
2902
+ };
2903
+ readonly steps_json: {
2904
+ readonly readonly?: boolean | undefined;
2905
+ readonly format?: string | undefined;
2906
+ readonly options?: {
2907
+ label: string;
2908
+ value: string;
2909
+ color?: string | undefined;
2910
+ default?: boolean | undefined;
2911
+ }[] | undefined;
2912
+ readonly description?: string | undefined;
2913
+ readonly label?: string | undefined;
2914
+ readonly name?: string | undefined;
2915
+ readonly precision?: number | undefined;
2916
+ readonly required?: boolean | undefined;
2917
+ readonly multiple?: boolean | undefined;
2918
+ readonly dependencies?: string[] | undefined;
2919
+ readonly theme?: string | undefined;
2920
+ readonly externalId?: boolean | undefined;
2921
+ readonly defaultValue?: unknown;
2922
+ readonly group?: string | undefined;
2923
+ readonly hidden?: boolean | undefined;
2924
+ readonly system?: boolean | undefined;
2925
+ readonly min?: number | undefined;
2926
+ readonly max?: number | undefined;
2927
+ readonly encryptionConfig?: {
2928
+ enabled: boolean;
2929
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2930
+ keyManagement: {
2931
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2932
+ keyId?: string | undefined;
2933
+ rotationPolicy?: {
2934
+ enabled: boolean;
2935
+ frequencyDays: number;
2936
+ retainOldVersions: number;
2937
+ autoRotate: boolean;
2938
+ } | undefined;
2939
+ };
2940
+ scope: "record" | "field" | "table" | "database";
2941
+ deterministicEncryption: boolean;
2942
+ searchableEncryption: boolean;
2943
+ } | undefined;
2944
+ readonly columnName?: string | undefined;
2945
+ readonly searchable?: boolean | undefined;
2946
+ readonly unique?: boolean | undefined;
2947
+ readonly maxLength?: number | undefined;
2948
+ readonly minLength?: number | undefined;
2949
+ readonly scale?: number | undefined;
2950
+ readonly reference?: string | undefined;
2951
+ readonly referenceFilters?: string[] | undefined;
2952
+ readonly writeRequiresMasterRead?: boolean | undefined;
2953
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
2954
+ readonly expression?: {
2955
+ dialect: "cel" | "js" | "cron" | "template";
2956
+ source?: string | undefined;
2957
+ ast?: unknown;
2958
+ meta?: {
2959
+ rationale?: string | undefined;
2960
+ generatedBy?: string | undefined;
2961
+ } | undefined;
2962
+ } | undefined;
2963
+ readonly summaryOperations?: {
2964
+ object: string;
2965
+ field: string;
2966
+ function: "min" | "max" | "count" | "sum" | "avg";
2967
+ } | undefined;
2968
+ readonly language?: string | undefined;
2969
+ readonly lineNumbers?: boolean | undefined;
2970
+ readonly maxRating?: number | undefined;
2971
+ readonly allowHalf?: boolean | undefined;
2972
+ readonly displayMap?: boolean | undefined;
2973
+ readonly allowGeocoding?: boolean | undefined;
2974
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
2975
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
2976
+ readonly allowAlpha?: boolean | undefined;
2977
+ readonly presetColors?: string[] | undefined;
2978
+ readonly step?: number | undefined;
2979
+ readonly showValue?: boolean | undefined;
2980
+ readonly marks?: Record<string, string> | undefined;
2981
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
2982
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
2983
+ readonly displayValue?: boolean | undefined;
2984
+ readonly allowScanning?: boolean | undefined;
2985
+ readonly currencyConfig?: {
2986
+ precision: number;
2987
+ currencyMode: "fixed" | "dynamic";
2988
+ defaultCurrency: string;
2989
+ } | undefined;
2990
+ readonly vectorConfig?: {
2991
+ dimensions: number;
2992
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
2993
+ normalized: boolean;
2994
+ indexed: boolean;
2995
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
2996
+ } | undefined;
2997
+ readonly fileAttachmentConfig?: {
2998
+ virusScan: boolean;
2999
+ virusScanOnUpload: boolean;
3000
+ quarantineOnThreat: boolean;
3001
+ allowMultiple: boolean;
3002
+ allowReplace: boolean;
3003
+ allowDelete: boolean;
3004
+ requireUpload: boolean;
3005
+ extractMetadata: boolean;
3006
+ extractText: boolean;
3007
+ versioningEnabled: boolean;
3008
+ publicRead: boolean;
3009
+ presignedUrlExpiry: number;
3010
+ minSize?: number | undefined;
3011
+ maxSize?: number | undefined;
3012
+ allowedTypes?: string[] | undefined;
3013
+ blockedTypes?: string[] | undefined;
3014
+ allowedMimeTypes?: string[] | undefined;
3015
+ blockedMimeTypes?: string[] | undefined;
3016
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
3017
+ storageProvider?: string | undefined;
3018
+ storageBucket?: string | undefined;
3019
+ storagePrefix?: string | undefined;
3020
+ imageValidation?: {
3021
+ generateThumbnails: boolean;
3022
+ preserveMetadata: boolean;
3023
+ autoRotate: boolean;
3024
+ minWidth?: number | undefined;
3025
+ maxWidth?: number | undefined;
3026
+ minHeight?: number | undefined;
3027
+ maxHeight?: number | undefined;
3028
+ aspectRatio?: string | undefined;
3029
+ thumbnailSizes?: {
3030
+ name: string;
3031
+ width: number;
3032
+ height: number;
3033
+ crop: boolean;
3034
+ }[] | undefined;
3035
+ } | undefined;
3036
+ maxVersions?: number | undefined;
3037
+ } | undefined;
3038
+ readonly maskingRule?: {
3039
+ field: string;
3040
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
3041
+ preserveFormat: boolean;
3042
+ preserveLength: boolean;
3043
+ pattern?: string | undefined;
3044
+ roles?: string[] | undefined;
3045
+ exemptRoles?: string[] | undefined;
3046
+ } | undefined;
3047
+ readonly auditTrail?: boolean | undefined;
3048
+ readonly cached?: {
3049
+ enabled: boolean;
3050
+ ttl: number;
3051
+ invalidateOn: string[];
3052
+ } | undefined;
3053
+ readonly dataQuality?: {
3054
+ uniqueness: boolean;
3055
+ completeness: number;
3056
+ accuracy?: {
3057
+ source: string;
3058
+ threshold: number;
3059
+ } | undefined;
3060
+ } | undefined;
3061
+ readonly conditionalRequired?: {
3062
+ dialect: "cel" | "js" | "cron" | "template";
3063
+ source?: string | undefined;
3064
+ ast?: unknown;
3065
+ meta?: {
3066
+ rationale?: string | undefined;
3067
+ generatedBy?: string | undefined;
3068
+ } | undefined;
3069
+ } | undefined;
3070
+ readonly sortable?: boolean | undefined;
3071
+ readonly inlineHelpText?: string | undefined;
3072
+ readonly trackFeedHistory?: boolean | undefined;
3073
+ readonly caseSensitive?: boolean | undefined;
3074
+ readonly autonumberFormat?: string | undefined;
3075
+ readonly index?: boolean | undefined;
3076
+ readonly type: "textarea";
3077
+ };
3078
+ readonly context_json: {
3079
+ readonly readonly?: boolean | undefined;
3080
+ readonly format?: string | undefined;
3081
+ readonly options?: {
3082
+ label: string;
3083
+ value: string;
3084
+ color?: string | undefined;
3085
+ default?: boolean | undefined;
3086
+ }[] | undefined;
3087
+ readonly description?: string | undefined;
3088
+ readonly label?: string | undefined;
3089
+ readonly name?: string | undefined;
3090
+ readonly precision?: number | undefined;
3091
+ readonly required?: boolean | undefined;
3092
+ readonly multiple?: boolean | undefined;
3093
+ readonly dependencies?: string[] | undefined;
3094
+ readonly theme?: string | undefined;
3095
+ readonly externalId?: boolean | undefined;
3096
+ readonly defaultValue?: unknown;
3097
+ readonly group?: string | undefined;
3098
+ readonly hidden?: boolean | undefined;
3099
+ readonly system?: boolean | undefined;
3100
+ readonly min?: number | undefined;
3101
+ readonly max?: number | undefined;
3102
+ readonly encryptionConfig?: {
3103
+ enabled: boolean;
3104
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
3105
+ keyManagement: {
3106
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
3107
+ keyId?: string | undefined;
3108
+ rotationPolicy?: {
3109
+ enabled: boolean;
3110
+ frequencyDays: number;
3111
+ retainOldVersions: number;
3112
+ autoRotate: boolean;
3113
+ } | undefined;
3114
+ };
3115
+ scope: "record" | "field" | "table" | "database";
3116
+ deterministicEncryption: boolean;
3117
+ searchableEncryption: boolean;
3118
+ } | undefined;
3119
+ readonly columnName?: string | undefined;
3120
+ readonly searchable?: boolean | undefined;
3121
+ readonly unique?: boolean | undefined;
3122
+ readonly maxLength?: number | undefined;
3123
+ readonly minLength?: number | undefined;
3124
+ readonly scale?: number | undefined;
3125
+ readonly reference?: string | undefined;
3126
+ readonly referenceFilters?: string[] | undefined;
3127
+ readonly writeRequiresMasterRead?: boolean | undefined;
3128
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
3129
+ readonly expression?: {
3130
+ dialect: "cel" | "js" | "cron" | "template";
3131
+ source?: string | undefined;
3132
+ ast?: unknown;
3133
+ meta?: {
3134
+ rationale?: string | undefined;
3135
+ generatedBy?: string | undefined;
3136
+ } | undefined;
3137
+ } | undefined;
3138
+ readonly summaryOperations?: {
3139
+ object: string;
3140
+ field: string;
3141
+ function: "min" | "max" | "count" | "sum" | "avg";
3142
+ } | undefined;
3143
+ readonly language?: string | undefined;
3144
+ readonly lineNumbers?: boolean | undefined;
3145
+ readonly maxRating?: number | undefined;
3146
+ readonly allowHalf?: boolean | undefined;
3147
+ readonly displayMap?: boolean | undefined;
3148
+ readonly allowGeocoding?: boolean | undefined;
3149
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
3150
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
3151
+ readonly allowAlpha?: boolean | undefined;
3152
+ readonly presetColors?: string[] | undefined;
3153
+ readonly step?: number | undefined;
3154
+ readonly showValue?: boolean | undefined;
3155
+ readonly marks?: Record<string, string> | undefined;
3156
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
3157
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
3158
+ readonly displayValue?: boolean | undefined;
3159
+ readonly allowScanning?: boolean | undefined;
3160
+ readonly currencyConfig?: {
3161
+ precision: number;
3162
+ currencyMode: "fixed" | "dynamic";
3163
+ defaultCurrency: string;
3164
+ } | undefined;
3165
+ readonly vectorConfig?: {
3166
+ dimensions: number;
3167
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
3168
+ normalized: boolean;
3169
+ indexed: boolean;
3170
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
3171
+ } | undefined;
3172
+ readonly fileAttachmentConfig?: {
3173
+ virusScan: boolean;
3174
+ virusScanOnUpload: boolean;
3175
+ quarantineOnThreat: boolean;
3176
+ allowMultiple: boolean;
3177
+ allowReplace: boolean;
3178
+ allowDelete: boolean;
3179
+ requireUpload: boolean;
3180
+ extractMetadata: boolean;
3181
+ extractText: boolean;
3182
+ versioningEnabled: boolean;
3183
+ publicRead: boolean;
3184
+ presignedUrlExpiry: number;
3185
+ minSize?: number | undefined;
3186
+ maxSize?: number | undefined;
3187
+ allowedTypes?: string[] | undefined;
3188
+ blockedTypes?: string[] | undefined;
3189
+ allowedMimeTypes?: string[] | undefined;
3190
+ blockedMimeTypes?: string[] | undefined;
3191
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
3192
+ storageProvider?: string | undefined;
3193
+ storageBucket?: string | undefined;
3194
+ storagePrefix?: string | undefined;
3195
+ imageValidation?: {
3196
+ generateThumbnails: boolean;
3197
+ preserveMetadata: boolean;
3198
+ autoRotate: boolean;
3199
+ minWidth?: number | undefined;
3200
+ maxWidth?: number | undefined;
3201
+ minHeight?: number | undefined;
3202
+ maxHeight?: number | undefined;
3203
+ aspectRatio?: string | undefined;
3204
+ thumbnailSizes?: {
3205
+ name: string;
3206
+ width: number;
3207
+ height: number;
3208
+ crop: boolean;
3209
+ }[] | undefined;
3210
+ } | undefined;
3211
+ maxVersions?: number | undefined;
3212
+ } | undefined;
3213
+ readonly maskingRule?: {
3214
+ field: string;
3215
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
3216
+ preserveFormat: boolean;
3217
+ preserveLength: boolean;
3218
+ pattern?: string | undefined;
3219
+ roles?: string[] | undefined;
3220
+ exemptRoles?: string[] | undefined;
3221
+ } | undefined;
3222
+ readonly auditTrail?: boolean | undefined;
3223
+ readonly cached?: {
3224
+ enabled: boolean;
3225
+ ttl: number;
3226
+ invalidateOn: string[];
3227
+ } | undefined;
3228
+ readonly dataQuality?: {
3229
+ uniqueness: boolean;
3230
+ completeness: number;
3231
+ accuracy?: {
3232
+ source: string;
3233
+ threshold: number;
3234
+ } | undefined;
3235
+ } | undefined;
3236
+ readonly conditionalRequired?: {
3237
+ dialect: "cel" | "js" | "cron" | "template";
3238
+ source?: string | undefined;
3239
+ ast?: unknown;
3240
+ meta?: {
3241
+ rationale?: string | undefined;
3242
+ generatedBy?: string | undefined;
3243
+ } | undefined;
3244
+ } | undefined;
3245
+ readonly sortable?: boolean | undefined;
3246
+ readonly inlineHelpText?: string | undefined;
3247
+ readonly trackFeedHistory?: boolean | undefined;
3248
+ readonly caseSensitive?: boolean | undefined;
3249
+ readonly autonumberFormat?: string | undefined;
3250
+ readonly index?: boolean | undefined;
3251
+ readonly type: "textarea";
3252
+ };
3253
+ readonly screen_json: {
3254
+ readonly readonly?: boolean | undefined;
3255
+ readonly format?: string | undefined;
3256
+ readonly options?: {
3257
+ label: string;
3258
+ value: string;
3259
+ color?: string | undefined;
3260
+ default?: boolean | undefined;
3261
+ }[] | undefined;
3262
+ readonly description?: string | undefined;
3263
+ readonly label?: string | undefined;
3264
+ readonly name?: string | undefined;
3265
+ readonly precision?: number | undefined;
3266
+ readonly required?: boolean | undefined;
3267
+ readonly multiple?: boolean | undefined;
3268
+ readonly dependencies?: string[] | undefined;
3269
+ readonly theme?: string | undefined;
3270
+ readonly externalId?: boolean | undefined;
3271
+ readonly defaultValue?: unknown;
3272
+ readonly group?: string | undefined;
3273
+ readonly hidden?: boolean | undefined;
3274
+ readonly system?: boolean | undefined;
3275
+ readonly min?: number | undefined;
3276
+ readonly max?: number | undefined;
3277
+ readonly encryptionConfig?: {
3278
+ enabled: boolean;
3279
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
3280
+ keyManagement: {
3281
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
3282
+ keyId?: string | undefined;
3283
+ rotationPolicy?: {
3284
+ enabled: boolean;
3285
+ frequencyDays: number;
3286
+ retainOldVersions: number;
3287
+ autoRotate: boolean;
3288
+ } | undefined;
3289
+ };
3290
+ scope: "record" | "field" | "table" | "database";
3291
+ deterministicEncryption: boolean;
3292
+ searchableEncryption: boolean;
3293
+ } | undefined;
3294
+ readonly columnName?: string | undefined;
3295
+ readonly searchable?: boolean | undefined;
3296
+ readonly unique?: boolean | undefined;
3297
+ readonly maxLength?: number | undefined;
3298
+ readonly minLength?: number | undefined;
3299
+ readonly scale?: number | undefined;
3300
+ readonly reference?: string | undefined;
3301
+ readonly referenceFilters?: string[] | undefined;
3302
+ readonly writeRequiresMasterRead?: boolean | undefined;
3303
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
3304
+ readonly expression?: {
3305
+ dialect: "cel" | "js" | "cron" | "template";
3306
+ source?: string | undefined;
3307
+ ast?: unknown;
3308
+ meta?: {
3309
+ rationale?: string | undefined;
3310
+ generatedBy?: string | undefined;
3311
+ } | undefined;
3312
+ } | undefined;
3313
+ readonly summaryOperations?: {
3314
+ object: string;
3315
+ field: string;
3316
+ function: "min" | "max" | "count" | "sum" | "avg";
3317
+ } | undefined;
3318
+ readonly language?: string | undefined;
3319
+ readonly lineNumbers?: boolean | undefined;
3320
+ readonly maxRating?: number | undefined;
3321
+ readonly allowHalf?: boolean | undefined;
3322
+ readonly displayMap?: boolean | undefined;
3323
+ readonly allowGeocoding?: boolean | undefined;
3324
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
3325
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
3326
+ readonly allowAlpha?: boolean | undefined;
3327
+ readonly presetColors?: string[] | undefined;
3328
+ readonly step?: number | undefined;
3329
+ readonly showValue?: boolean | undefined;
3330
+ readonly marks?: Record<string, string> | undefined;
3331
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
3332
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
3333
+ readonly displayValue?: boolean | undefined;
3334
+ readonly allowScanning?: boolean | undefined;
3335
+ readonly currencyConfig?: {
3336
+ precision: number;
3337
+ currencyMode: "fixed" | "dynamic";
3338
+ defaultCurrency: string;
3339
+ } | undefined;
3340
+ readonly vectorConfig?: {
3341
+ dimensions: number;
3342
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
3343
+ normalized: boolean;
3344
+ indexed: boolean;
3345
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
3346
+ } | undefined;
3347
+ readonly fileAttachmentConfig?: {
3348
+ virusScan: boolean;
3349
+ virusScanOnUpload: boolean;
3350
+ quarantineOnThreat: boolean;
3351
+ allowMultiple: boolean;
3352
+ allowReplace: boolean;
3353
+ allowDelete: boolean;
3354
+ requireUpload: boolean;
3355
+ extractMetadata: boolean;
3356
+ extractText: boolean;
3357
+ versioningEnabled: boolean;
3358
+ publicRead: boolean;
3359
+ presignedUrlExpiry: number;
3360
+ minSize?: number | undefined;
3361
+ maxSize?: number | undefined;
3362
+ allowedTypes?: string[] | undefined;
3363
+ blockedTypes?: string[] | undefined;
3364
+ allowedMimeTypes?: string[] | undefined;
3365
+ blockedMimeTypes?: string[] | undefined;
3366
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
3367
+ storageProvider?: string | undefined;
3368
+ storageBucket?: string | undefined;
3369
+ storagePrefix?: string | undefined;
3370
+ imageValidation?: {
3371
+ generateThumbnails: boolean;
3372
+ preserveMetadata: boolean;
3373
+ autoRotate: boolean;
3374
+ minWidth?: number | undefined;
3375
+ maxWidth?: number | undefined;
3376
+ minHeight?: number | undefined;
3377
+ maxHeight?: number | undefined;
3378
+ aspectRatio?: string | undefined;
3379
+ thumbnailSizes?: {
3380
+ name: string;
3381
+ width: number;
3382
+ height: number;
3383
+ crop: boolean;
3384
+ }[] | undefined;
3385
+ } | undefined;
3386
+ maxVersions?: number | undefined;
3387
+ } | undefined;
3388
+ readonly maskingRule?: {
3389
+ field: string;
3390
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
3391
+ preserveFormat: boolean;
3392
+ preserveLength: boolean;
3393
+ pattern?: string | undefined;
3394
+ roles?: string[] | undefined;
3395
+ exemptRoles?: string[] | undefined;
3396
+ } | undefined;
3397
+ readonly auditTrail?: boolean | undefined;
3398
+ readonly cached?: {
3399
+ enabled: boolean;
3400
+ ttl: number;
3401
+ invalidateOn: string[];
3402
+ } | undefined;
3403
+ readonly dataQuality?: {
3404
+ uniqueness: boolean;
3405
+ completeness: number;
3406
+ accuracy?: {
3407
+ source: string;
3408
+ threshold: number;
3409
+ } | undefined;
3410
+ } | undefined;
3411
+ readonly conditionalRequired?: {
3412
+ dialect: "cel" | "js" | "cron" | "template";
3413
+ source?: string | undefined;
3414
+ ast?: unknown;
3415
+ meta?: {
3416
+ rationale?: string | undefined;
3417
+ generatedBy?: string | undefined;
3418
+ } | undefined;
3419
+ } | undefined;
3420
+ readonly sortable?: boolean | undefined;
3421
+ readonly inlineHelpText?: string | undefined;
3422
+ readonly trackFeedHistory?: boolean | undefined;
3423
+ readonly caseSensitive?: boolean | undefined;
3424
+ readonly autonumberFormat?: string | undefined;
3425
+ readonly index?: boolean | undefined;
3426
+ readonly type: "textarea";
3427
+ };
3428
+ readonly started_at: {
3429
+ readonly readonly?: boolean | undefined;
3430
+ readonly format?: string | undefined;
3431
+ readonly options?: {
3432
+ label: string;
3433
+ value: string;
3434
+ color?: string | undefined;
3435
+ default?: boolean | undefined;
3436
+ }[] | undefined;
3437
+ readonly description?: string | undefined;
3438
+ readonly label?: string | undefined;
3439
+ readonly name?: string | undefined;
3440
+ readonly precision?: number | undefined;
3441
+ readonly required?: boolean | undefined;
3442
+ readonly multiple?: boolean | undefined;
3443
+ readonly dependencies?: string[] | undefined;
3444
+ readonly theme?: string | undefined;
3445
+ readonly externalId?: boolean | undefined;
3446
+ readonly defaultValue?: unknown;
3447
+ readonly group?: string | undefined;
3448
+ readonly hidden?: boolean | undefined;
3449
+ readonly system?: boolean | undefined;
3450
+ readonly min?: number | undefined;
3451
+ readonly max?: number | undefined;
3452
+ readonly encryptionConfig?: {
3453
+ enabled: boolean;
3454
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
3455
+ keyManagement: {
3456
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
3457
+ keyId?: string | undefined;
3458
+ rotationPolicy?: {
3459
+ enabled: boolean;
3460
+ frequencyDays: number;
3461
+ retainOldVersions: number;
3462
+ autoRotate: boolean;
3463
+ } | undefined;
3464
+ };
3465
+ scope: "record" | "field" | "table" | "database";
3466
+ deterministicEncryption: boolean;
3467
+ searchableEncryption: boolean;
3468
+ } | undefined;
3469
+ readonly columnName?: string | undefined;
3470
+ readonly searchable?: boolean | undefined;
3471
+ readonly unique?: boolean | undefined;
3472
+ readonly maxLength?: number | undefined;
3473
+ readonly minLength?: number | undefined;
3474
+ readonly scale?: number | undefined;
3475
+ readonly reference?: string | undefined;
3476
+ readonly referenceFilters?: string[] | undefined;
3477
+ readonly writeRequiresMasterRead?: boolean | undefined;
3478
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
3479
+ readonly expression?: {
3480
+ dialect: "cel" | "js" | "cron" | "template";
3481
+ source?: string | undefined;
3482
+ ast?: unknown;
3483
+ meta?: {
3484
+ rationale?: string | undefined;
3485
+ generatedBy?: string | undefined;
3486
+ } | undefined;
3487
+ } | undefined;
3488
+ readonly summaryOperations?: {
3489
+ object: string;
3490
+ field: string;
3491
+ function: "min" | "max" | "count" | "sum" | "avg";
3492
+ } | undefined;
3493
+ readonly language?: string | undefined;
3494
+ readonly lineNumbers?: boolean | undefined;
3495
+ readonly maxRating?: number | undefined;
3496
+ readonly allowHalf?: boolean | undefined;
3497
+ readonly displayMap?: boolean | undefined;
3498
+ readonly allowGeocoding?: boolean | undefined;
3499
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
3500
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
3501
+ readonly allowAlpha?: boolean | undefined;
3502
+ readonly presetColors?: string[] | undefined;
3503
+ readonly step?: number | undefined;
3504
+ readonly showValue?: boolean | undefined;
3505
+ readonly marks?: Record<string, string> | undefined;
3506
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
3507
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
3508
+ readonly displayValue?: boolean | undefined;
3509
+ readonly allowScanning?: boolean | undefined;
3510
+ readonly currencyConfig?: {
3511
+ precision: number;
3512
+ currencyMode: "fixed" | "dynamic";
3513
+ defaultCurrency: string;
3514
+ } | undefined;
3515
+ readonly vectorConfig?: {
3516
+ dimensions: number;
3517
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
3518
+ normalized: boolean;
3519
+ indexed: boolean;
3520
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
3521
+ } | undefined;
3522
+ readonly fileAttachmentConfig?: {
3523
+ virusScan: boolean;
3524
+ virusScanOnUpload: boolean;
3525
+ quarantineOnThreat: boolean;
3526
+ allowMultiple: boolean;
3527
+ allowReplace: boolean;
3528
+ allowDelete: boolean;
3529
+ requireUpload: boolean;
3530
+ extractMetadata: boolean;
3531
+ extractText: boolean;
3532
+ versioningEnabled: boolean;
3533
+ publicRead: boolean;
3534
+ presignedUrlExpiry: number;
3535
+ minSize?: number | undefined;
3536
+ maxSize?: number | undefined;
3537
+ allowedTypes?: string[] | undefined;
3538
+ blockedTypes?: string[] | undefined;
3539
+ allowedMimeTypes?: string[] | undefined;
3540
+ blockedMimeTypes?: string[] | undefined;
3541
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
3542
+ storageProvider?: string | undefined;
3543
+ storageBucket?: string | undefined;
3544
+ storagePrefix?: string | undefined;
3545
+ imageValidation?: {
3546
+ generateThumbnails: boolean;
3547
+ preserveMetadata: boolean;
3548
+ autoRotate: boolean;
3549
+ minWidth?: number | undefined;
3550
+ maxWidth?: number | undefined;
3551
+ minHeight?: number | undefined;
3552
+ maxHeight?: number | undefined;
3553
+ aspectRatio?: string | undefined;
3554
+ thumbnailSizes?: {
3555
+ name: string;
3556
+ width: number;
3557
+ height: number;
3558
+ crop: boolean;
3559
+ }[] | undefined;
3560
+ } | undefined;
3561
+ maxVersions?: number | undefined;
3562
+ } | undefined;
3563
+ readonly maskingRule?: {
3564
+ field: string;
3565
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
3566
+ preserveFormat: boolean;
3567
+ preserveLength: boolean;
3568
+ pattern?: string | undefined;
3569
+ roles?: string[] | undefined;
3570
+ exemptRoles?: string[] | undefined;
3571
+ } | undefined;
3572
+ readonly auditTrail?: boolean | undefined;
3573
+ readonly cached?: {
3574
+ enabled: boolean;
3575
+ ttl: number;
3576
+ invalidateOn: string[];
3577
+ } | undefined;
3578
+ readonly dataQuality?: {
3579
+ uniqueness: boolean;
3580
+ completeness: number;
3581
+ accuracy?: {
3582
+ source: string;
3583
+ threshold: number;
3584
+ } | undefined;
3585
+ } | undefined;
3586
+ readonly conditionalRequired?: {
3587
+ dialect: "cel" | "js" | "cron" | "template";
3588
+ source?: string | undefined;
3589
+ ast?: unknown;
3590
+ meta?: {
3591
+ rationale?: string | undefined;
3592
+ generatedBy?: string | undefined;
3593
+ } | undefined;
3594
+ } | undefined;
3595
+ readonly sortable?: boolean | undefined;
3596
+ readonly inlineHelpText?: string | undefined;
3597
+ readonly trackFeedHistory?: boolean | undefined;
3598
+ readonly caseSensitive?: boolean | undefined;
3599
+ readonly autonumberFormat?: string | undefined;
3600
+ readonly index?: boolean | undefined;
3601
+ readonly type: "datetime";
3602
+ };
3603
+ readonly start_time: {
3604
+ readonly readonly?: boolean | undefined;
3605
+ readonly format?: string | undefined;
3606
+ readonly options?: {
3607
+ label: string;
3608
+ value: string;
3609
+ color?: string | undefined;
3610
+ default?: boolean | undefined;
3611
+ }[] | undefined;
3612
+ readonly description?: string | undefined;
3613
+ readonly label?: string | undefined;
3614
+ readonly name?: string | undefined;
3615
+ readonly precision?: number | undefined;
3616
+ readonly required?: boolean | undefined;
3617
+ readonly multiple?: boolean | undefined;
3618
+ readonly dependencies?: string[] | undefined;
3619
+ readonly theme?: string | undefined;
3620
+ readonly externalId?: boolean | undefined;
3621
+ readonly defaultValue?: unknown;
3622
+ readonly group?: string | undefined;
3623
+ readonly hidden?: boolean | undefined;
3624
+ readonly system?: boolean | undefined;
3625
+ readonly min?: number | undefined;
3626
+ readonly max?: number | undefined;
3627
+ readonly encryptionConfig?: {
3628
+ enabled: boolean;
3629
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
3630
+ keyManagement: {
3631
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
3632
+ keyId?: string | undefined;
3633
+ rotationPolicy?: {
3634
+ enabled: boolean;
3635
+ frequencyDays: number;
3636
+ retainOldVersions: number;
3637
+ autoRotate: boolean;
3638
+ } | undefined;
3639
+ };
3640
+ scope: "record" | "field" | "table" | "database";
3641
+ deterministicEncryption: boolean;
3642
+ searchableEncryption: boolean;
3643
+ } | undefined;
3644
+ readonly columnName?: string | undefined;
3645
+ readonly searchable?: boolean | undefined;
3646
+ readonly unique?: boolean | undefined;
3647
+ readonly maxLength?: number | undefined;
3648
+ readonly minLength?: number | undefined;
3649
+ readonly scale?: number | undefined;
3650
+ readonly reference?: string | undefined;
3651
+ readonly referenceFilters?: string[] | undefined;
3652
+ readonly writeRequiresMasterRead?: boolean | undefined;
3653
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
3654
+ readonly expression?: {
3655
+ dialect: "cel" | "js" | "cron" | "template";
3656
+ source?: string | undefined;
3657
+ ast?: unknown;
3658
+ meta?: {
3659
+ rationale?: string | undefined;
3660
+ generatedBy?: string | undefined;
3661
+ } | undefined;
3662
+ } | undefined;
3663
+ readonly summaryOperations?: {
3664
+ object: string;
3665
+ field: string;
3666
+ function: "min" | "max" | "count" | "sum" | "avg";
3667
+ } | undefined;
3668
+ readonly language?: string | undefined;
3669
+ readonly lineNumbers?: boolean | undefined;
3670
+ readonly maxRating?: number | undefined;
3671
+ readonly allowHalf?: boolean | undefined;
3672
+ readonly displayMap?: boolean | undefined;
3673
+ readonly allowGeocoding?: boolean | undefined;
3674
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
3675
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
3676
+ readonly allowAlpha?: boolean | undefined;
3677
+ readonly presetColors?: string[] | undefined;
3678
+ readonly step?: number | undefined;
3679
+ readonly showValue?: boolean | undefined;
3680
+ readonly marks?: Record<string, string> | undefined;
3681
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
3682
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
3683
+ readonly displayValue?: boolean | undefined;
3684
+ readonly allowScanning?: boolean | undefined;
3685
+ readonly currencyConfig?: {
3686
+ precision: number;
3687
+ currencyMode: "fixed" | "dynamic";
3688
+ defaultCurrency: string;
3689
+ } | undefined;
3690
+ readonly vectorConfig?: {
3691
+ dimensions: number;
3692
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
3693
+ normalized: boolean;
3694
+ indexed: boolean;
3695
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
3696
+ } | undefined;
3697
+ readonly fileAttachmentConfig?: {
3698
+ virusScan: boolean;
3699
+ virusScanOnUpload: boolean;
3700
+ quarantineOnThreat: boolean;
3701
+ allowMultiple: boolean;
3702
+ allowReplace: boolean;
3703
+ allowDelete: boolean;
3704
+ requireUpload: boolean;
3705
+ extractMetadata: boolean;
3706
+ extractText: boolean;
3707
+ versioningEnabled: boolean;
3708
+ publicRead: boolean;
3709
+ presignedUrlExpiry: number;
3710
+ minSize?: number | undefined;
3711
+ maxSize?: number | undefined;
3712
+ allowedTypes?: string[] | undefined;
3713
+ blockedTypes?: string[] | undefined;
3714
+ allowedMimeTypes?: string[] | undefined;
3715
+ blockedMimeTypes?: string[] | undefined;
3716
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
3717
+ storageProvider?: string | undefined;
3718
+ storageBucket?: string | undefined;
3719
+ storagePrefix?: string | undefined;
3720
+ imageValidation?: {
3721
+ generateThumbnails: boolean;
3722
+ preserveMetadata: boolean;
3723
+ autoRotate: boolean;
3724
+ minWidth?: number | undefined;
3725
+ maxWidth?: number | undefined;
3726
+ minHeight?: number | undefined;
3727
+ maxHeight?: number | undefined;
3728
+ aspectRatio?: string | undefined;
3729
+ thumbnailSizes?: {
3730
+ name: string;
3731
+ width: number;
3732
+ height: number;
3733
+ crop: boolean;
3734
+ }[] | undefined;
3735
+ } | undefined;
3736
+ maxVersions?: number | undefined;
3737
+ } | undefined;
3738
+ readonly maskingRule?: {
3739
+ field: string;
3740
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
3741
+ preserveFormat: boolean;
3742
+ preserveLength: boolean;
3743
+ pattern?: string | undefined;
3744
+ roles?: string[] | undefined;
3745
+ exemptRoles?: string[] | undefined;
3746
+ } | undefined;
3747
+ readonly auditTrail?: boolean | undefined;
3748
+ readonly cached?: {
3749
+ enabled: boolean;
3750
+ ttl: number;
3751
+ invalidateOn: string[];
3752
+ } | undefined;
3753
+ readonly dataQuality?: {
3754
+ uniqueness: boolean;
3755
+ completeness: number;
3756
+ accuracy?: {
3757
+ source: string;
3758
+ threshold: number;
3759
+ } | undefined;
3760
+ } | undefined;
3761
+ readonly conditionalRequired?: {
3762
+ dialect: "cel" | "js" | "cron" | "template";
3763
+ source?: string | undefined;
3764
+ ast?: unknown;
3765
+ meta?: {
3766
+ rationale?: string | undefined;
3767
+ generatedBy?: string | undefined;
3768
+ } | undefined;
3769
+ } | undefined;
3770
+ readonly sortable?: boolean | undefined;
3771
+ readonly inlineHelpText?: string | undefined;
3772
+ readonly trackFeedHistory?: boolean | undefined;
3773
+ readonly caseSensitive?: boolean | undefined;
3774
+ readonly autonumberFormat?: string | undefined;
3775
+ readonly index?: boolean | undefined;
3776
+ readonly type: "number";
3777
+ };
3778
+ readonly created_at: {
3779
+ readonly readonly?: boolean | undefined;
3780
+ readonly format?: string | undefined;
3781
+ readonly options?: {
3782
+ label: string;
3783
+ value: string;
3784
+ color?: string | undefined;
3785
+ default?: boolean | undefined;
3786
+ }[] | undefined;
3787
+ readonly description?: string | undefined;
3788
+ readonly label?: string | undefined;
3789
+ readonly name?: string | undefined;
3790
+ readonly precision?: number | undefined;
3791
+ readonly required?: boolean | undefined;
3792
+ readonly multiple?: boolean | undefined;
3793
+ readonly dependencies?: string[] | undefined;
3794
+ readonly theme?: string | undefined;
3795
+ readonly externalId?: boolean | undefined;
3796
+ readonly defaultValue?: unknown;
3797
+ readonly group?: string | undefined;
3798
+ readonly hidden?: boolean | undefined;
3799
+ readonly system?: boolean | undefined;
3800
+ readonly min?: number | undefined;
3801
+ readonly max?: number | undefined;
3802
+ readonly encryptionConfig?: {
3803
+ enabled: boolean;
3804
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
3805
+ keyManagement: {
3806
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
3807
+ keyId?: string | undefined;
3808
+ rotationPolicy?: {
3809
+ enabled: boolean;
3810
+ frequencyDays: number;
3811
+ retainOldVersions: number;
3812
+ autoRotate: boolean;
3813
+ } | undefined;
3814
+ };
3815
+ scope: "record" | "field" | "table" | "database";
3816
+ deterministicEncryption: boolean;
3817
+ searchableEncryption: boolean;
3818
+ } | undefined;
3819
+ readonly columnName?: string | undefined;
3820
+ readonly searchable?: boolean | undefined;
3821
+ readonly unique?: boolean | undefined;
3822
+ readonly maxLength?: number | undefined;
3823
+ readonly minLength?: number | undefined;
3824
+ readonly scale?: number | undefined;
3825
+ readonly reference?: string | undefined;
3826
+ readonly referenceFilters?: string[] | undefined;
3827
+ readonly writeRequiresMasterRead?: boolean | undefined;
3828
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
3829
+ readonly expression?: {
3830
+ dialect: "cel" | "js" | "cron" | "template";
3831
+ source?: string | undefined;
3832
+ ast?: unknown;
3833
+ meta?: {
3834
+ rationale?: string | undefined;
3835
+ generatedBy?: string | undefined;
3836
+ } | undefined;
3837
+ } | undefined;
3838
+ readonly summaryOperations?: {
3839
+ object: string;
3840
+ field: string;
3841
+ function: "min" | "max" | "count" | "sum" | "avg";
3842
+ } | undefined;
3843
+ readonly language?: string | undefined;
3844
+ readonly lineNumbers?: boolean | undefined;
3845
+ readonly maxRating?: number | undefined;
3846
+ readonly allowHalf?: boolean | undefined;
3847
+ readonly displayMap?: boolean | undefined;
3848
+ readonly allowGeocoding?: boolean | undefined;
3849
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
3850
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
3851
+ readonly allowAlpha?: boolean | undefined;
3852
+ readonly presetColors?: string[] | undefined;
3853
+ readonly step?: number | undefined;
3854
+ readonly showValue?: boolean | undefined;
3855
+ readonly marks?: Record<string, string> | undefined;
3856
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
3857
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
3858
+ readonly displayValue?: boolean | undefined;
3859
+ readonly allowScanning?: boolean | undefined;
3860
+ readonly currencyConfig?: {
3861
+ precision: number;
3862
+ currencyMode: "fixed" | "dynamic";
3863
+ defaultCurrency: string;
3864
+ } | undefined;
3865
+ readonly vectorConfig?: {
3866
+ dimensions: number;
3867
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
3868
+ normalized: boolean;
3869
+ indexed: boolean;
3870
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
3871
+ } | undefined;
3872
+ readonly fileAttachmentConfig?: {
3873
+ virusScan: boolean;
3874
+ virusScanOnUpload: boolean;
3875
+ quarantineOnThreat: boolean;
3876
+ allowMultiple: boolean;
3877
+ allowReplace: boolean;
3878
+ allowDelete: boolean;
3879
+ requireUpload: boolean;
3880
+ extractMetadata: boolean;
3881
+ extractText: boolean;
3882
+ versioningEnabled: boolean;
3883
+ publicRead: boolean;
3884
+ presignedUrlExpiry: number;
3885
+ minSize?: number | undefined;
3886
+ maxSize?: number | undefined;
3887
+ allowedTypes?: string[] | undefined;
3888
+ blockedTypes?: string[] | undefined;
3889
+ allowedMimeTypes?: string[] | undefined;
3890
+ blockedMimeTypes?: string[] | undefined;
3891
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
3892
+ storageProvider?: string | undefined;
3893
+ storageBucket?: string | undefined;
3894
+ storagePrefix?: string | undefined;
3895
+ imageValidation?: {
3896
+ generateThumbnails: boolean;
3897
+ preserveMetadata: boolean;
3898
+ autoRotate: boolean;
3899
+ minWidth?: number | undefined;
3900
+ maxWidth?: number | undefined;
3901
+ minHeight?: number | undefined;
3902
+ maxHeight?: number | undefined;
3903
+ aspectRatio?: string | undefined;
3904
+ thumbnailSizes?: {
3905
+ name: string;
3906
+ width: number;
3907
+ height: number;
3908
+ crop: boolean;
3909
+ }[] | undefined;
3910
+ } | undefined;
3911
+ maxVersions?: number | undefined;
3912
+ } | undefined;
3913
+ readonly maskingRule?: {
3914
+ field: string;
3915
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
3916
+ preserveFormat: boolean;
3917
+ preserveLength: boolean;
3918
+ pattern?: string | undefined;
3919
+ roles?: string[] | undefined;
3920
+ exemptRoles?: string[] | undefined;
3921
+ } | undefined;
3922
+ readonly auditTrail?: boolean | undefined;
3923
+ readonly cached?: {
3924
+ enabled: boolean;
3925
+ ttl: number;
3926
+ invalidateOn: string[];
3927
+ } | undefined;
3928
+ readonly dataQuality?: {
3929
+ uniqueness: boolean;
3930
+ completeness: number;
3931
+ accuracy?: {
3932
+ source: string;
3933
+ threshold: number;
3934
+ } | undefined;
3935
+ } | undefined;
3936
+ readonly conditionalRequired?: {
3937
+ dialect: "cel" | "js" | "cron" | "template";
3938
+ source?: string | undefined;
3939
+ ast?: unknown;
3940
+ meta?: {
3941
+ rationale?: string | undefined;
3942
+ generatedBy?: string | undefined;
3943
+ } | undefined;
3944
+ } | undefined;
3945
+ readonly sortable?: boolean | undefined;
3946
+ readonly inlineHelpText?: string | undefined;
3947
+ readonly trackFeedHistory?: boolean | undefined;
3948
+ readonly caseSensitive?: boolean | undefined;
3949
+ readonly autonumberFormat?: string | undefined;
3950
+ readonly index?: boolean | undefined;
3951
+ readonly type: "datetime";
3952
+ };
3953
+ readonly updated_at: {
3954
+ readonly readonly?: boolean | undefined;
3955
+ readonly format?: string | undefined;
3956
+ readonly options?: {
3957
+ label: string;
3958
+ value: string;
3959
+ color?: string | undefined;
3960
+ default?: boolean | undefined;
3961
+ }[] | undefined;
3962
+ readonly description?: string | undefined;
3963
+ readonly label?: string | undefined;
3964
+ readonly name?: string | undefined;
3965
+ readonly precision?: number | undefined;
3966
+ readonly required?: boolean | undefined;
3967
+ readonly multiple?: boolean | undefined;
3968
+ readonly dependencies?: string[] | undefined;
3969
+ readonly theme?: string | undefined;
3970
+ readonly externalId?: boolean | undefined;
3971
+ readonly defaultValue?: unknown;
3972
+ readonly group?: string | undefined;
3973
+ readonly hidden?: boolean | undefined;
3974
+ readonly system?: boolean | undefined;
3975
+ readonly min?: number | undefined;
3976
+ readonly max?: number | undefined;
3977
+ readonly encryptionConfig?: {
3978
+ enabled: boolean;
3979
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
3980
+ keyManagement: {
3981
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
3982
+ keyId?: string | undefined;
3983
+ rotationPolicy?: {
3984
+ enabled: boolean;
3985
+ frequencyDays: number;
3986
+ retainOldVersions: number;
3987
+ autoRotate: boolean;
3988
+ } | undefined;
3989
+ };
3990
+ scope: "record" | "field" | "table" | "database";
3991
+ deterministicEncryption: boolean;
3992
+ searchableEncryption: boolean;
3993
+ } | undefined;
3994
+ readonly columnName?: string | undefined;
3995
+ readonly searchable?: boolean | undefined;
3996
+ readonly unique?: boolean | undefined;
3997
+ readonly maxLength?: number | undefined;
3998
+ readonly minLength?: number | undefined;
3999
+ readonly scale?: number | undefined;
4000
+ readonly reference?: string | undefined;
4001
+ readonly referenceFilters?: string[] | undefined;
4002
+ readonly writeRequiresMasterRead?: boolean | undefined;
4003
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
4004
+ readonly expression?: {
4005
+ dialect: "cel" | "js" | "cron" | "template";
4006
+ source?: string | undefined;
4007
+ ast?: unknown;
4008
+ meta?: {
4009
+ rationale?: string | undefined;
4010
+ generatedBy?: string | undefined;
4011
+ } | undefined;
4012
+ } | undefined;
4013
+ readonly summaryOperations?: {
4014
+ object: string;
4015
+ field: string;
4016
+ function: "min" | "max" | "count" | "sum" | "avg";
4017
+ } | undefined;
4018
+ readonly language?: string | undefined;
4019
+ readonly lineNumbers?: boolean | undefined;
4020
+ readonly maxRating?: number | undefined;
4021
+ readonly allowHalf?: boolean | undefined;
4022
+ readonly displayMap?: boolean | undefined;
4023
+ readonly allowGeocoding?: boolean | undefined;
4024
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
4025
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
4026
+ readonly allowAlpha?: boolean | undefined;
4027
+ readonly presetColors?: string[] | undefined;
4028
+ readonly step?: number | undefined;
4029
+ readonly showValue?: boolean | undefined;
4030
+ readonly marks?: Record<string, string> | undefined;
4031
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
4032
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
4033
+ readonly displayValue?: boolean | undefined;
4034
+ readonly allowScanning?: boolean | undefined;
4035
+ readonly currencyConfig?: {
4036
+ precision: number;
4037
+ currencyMode: "fixed" | "dynamic";
4038
+ defaultCurrency: string;
4039
+ } | undefined;
4040
+ readonly vectorConfig?: {
4041
+ dimensions: number;
4042
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
4043
+ normalized: boolean;
4044
+ indexed: boolean;
4045
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
4046
+ } | undefined;
4047
+ readonly fileAttachmentConfig?: {
4048
+ virusScan: boolean;
4049
+ virusScanOnUpload: boolean;
4050
+ quarantineOnThreat: boolean;
4051
+ allowMultiple: boolean;
4052
+ allowReplace: boolean;
4053
+ allowDelete: boolean;
4054
+ requireUpload: boolean;
4055
+ extractMetadata: boolean;
4056
+ extractText: boolean;
4057
+ versioningEnabled: boolean;
4058
+ publicRead: boolean;
4059
+ presignedUrlExpiry: number;
4060
+ minSize?: number | undefined;
4061
+ maxSize?: number | undefined;
4062
+ allowedTypes?: string[] | undefined;
4063
+ blockedTypes?: string[] | undefined;
4064
+ allowedMimeTypes?: string[] | undefined;
4065
+ blockedMimeTypes?: string[] | undefined;
4066
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
4067
+ storageProvider?: string | undefined;
4068
+ storageBucket?: string | undefined;
4069
+ storagePrefix?: string | undefined;
4070
+ imageValidation?: {
4071
+ generateThumbnails: boolean;
4072
+ preserveMetadata: boolean;
4073
+ autoRotate: boolean;
4074
+ minWidth?: number | undefined;
4075
+ maxWidth?: number | undefined;
4076
+ minHeight?: number | undefined;
4077
+ maxHeight?: number | undefined;
4078
+ aspectRatio?: string | undefined;
4079
+ thumbnailSizes?: {
4080
+ name: string;
4081
+ width: number;
4082
+ height: number;
4083
+ crop: boolean;
4084
+ }[] | undefined;
4085
+ } | undefined;
4086
+ maxVersions?: number | undefined;
4087
+ } | undefined;
4088
+ readonly maskingRule?: {
4089
+ field: string;
4090
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
4091
+ preserveFormat: boolean;
4092
+ preserveLength: boolean;
4093
+ pattern?: string | undefined;
4094
+ roles?: string[] | undefined;
4095
+ exemptRoles?: string[] | undefined;
4096
+ } | undefined;
4097
+ readonly auditTrail?: boolean | undefined;
4098
+ readonly cached?: {
4099
+ enabled: boolean;
4100
+ ttl: number;
4101
+ invalidateOn: string[];
4102
+ } | undefined;
4103
+ readonly dataQuality?: {
4104
+ uniqueness: boolean;
4105
+ completeness: number;
4106
+ accuracy?: {
4107
+ source: string;
4108
+ threshold: number;
4109
+ } | undefined;
4110
+ } | undefined;
4111
+ readonly conditionalRequired?: {
4112
+ dialect: "cel" | "js" | "cron" | "template";
4113
+ source?: string | undefined;
4114
+ ast?: unknown;
4115
+ meta?: {
4116
+ rationale?: string | undefined;
4117
+ generatedBy?: string | undefined;
4118
+ } | undefined;
4119
+ } | undefined;
4120
+ readonly sortable?: boolean | undefined;
4121
+ readonly inlineHelpText?: string | undefined;
4122
+ readonly trackFeedHistory?: boolean | undefined;
4123
+ readonly caseSensitive?: boolean | undefined;
4124
+ readonly autonumberFormat?: string | undefined;
4125
+ readonly index?: boolean | undefined;
4126
+ readonly type: "datetime";
4127
+ };
4128
+ };
4129
+ readonly indexes: [{
4130
+ readonly fields: ["flow_name", "status"];
4131
+ }, {
4132
+ readonly fields: ["status", "updated_at"];
4133
+ }, {
4134
+ readonly fields: ["correlation"];
4135
+ }];
4136
+ }, "fields">;
4137
+
399
4138
  /**
400
4139
  * Configuration options for the AutomationServicePlugin.
401
4140
  */
402
4141
  interface AutomationServicePluginOptions {
403
4142
  /** Enable debug logging for flow execution */
404
4143
  debug?: boolean;
4144
+ /**
4145
+ * Durable suspended-run persistence (ADR-0019):
4146
+ * - `'auto'` (default): persist to `sys_automation_run` via the ObjectQL
4147
+ * engine when one is available, otherwise stay in-memory.
4148
+ * - `'memory'`: never persist — keep suspended runs in memory only (the
4149
+ * historical behaviour; suitable for tests / single-process dev).
4150
+ *
4151
+ * When persistence is on, a run paused at an approval / wait / screen node
4152
+ * survives a process restart and can be resumed after a cold boot.
4153
+ */
4154
+ suspendedRunStore?: 'auto' | 'memory';
405
4155
  }
406
4156
  /**
407
4157
  * AutomationServicePlugin — Core engine plugin
@@ -445,7 +4195,10 @@ declare class AutomationServicePlugin implements Plugin {
445
4195
  }
446
4196
 
447
4197
  /**
448
- * Logic built-in nodes — decision / assignment / loop.
4198
+ * Logic built-in nodes — decision / assignment.
4199
+ *
4200
+ * (The `loop` container is registered separately — see `loop-node.ts` — as a
4201
+ * structured iteration construct per ADR-0031.)
449
4202
  *
450
4203
  * Part of the automation engine's foundational vocabulary, so the core
451
4204
  * {@link AutomationServicePlugin} seeds them directly (ADR-0018). These are NOT
@@ -492,20 +4245,6 @@ declare function registerCrudNodes(engine: AutomationEngine, ctx: PluginContext)
492
4245
  */
493
4246
  declare function registerScreenNodes(engine: AutomationEngine, ctx: PluginContext): void;
494
4247
 
495
- /**
496
- * HTTP built-in node — `http_request` (foundational outbound I/O).
497
- *
498
- * Part of the platform baseline, so the core {@link AutomationServicePlugin}
499
- * seeds it directly (ADR-0018). Its generic-dispatch sibling `connector_action`
500
- * (see {@link ./connector-nodes.ts}) is now also baseline: where `http_request`
501
- * calls a raw URL, `connector_action` invokes a registered connector's action,
502
- * with concrete connectors contributed by plugins via `engine.registerConnector()`
503
- * (ADR-0018 §Addendum).
504
- *
505
- * ADR-0018 §M3 target: route `http_request` through the service-messaging
506
- * outbox (retry / idempotency / dead-letter) under the canonical `http` type.
507
- * Today it is a bare `fetch()`.
508
- */
509
4248
  declare function registerHttpNodes(engine: AutomationEngine, ctx: PluginContext): void;
510
4249
 
511
4250
  /**
@@ -534,7 +4273,10 @@ declare function registerConnectorNodes(engine: AutomationEngine, ctx: PluginCon
534
4273
  * descriptors with `source: 'builtin'`.
535
4274
  *
536
4275
  * Scope (built-in baseline):
537
- * - logic — decision / assignment / loop (engine core)
4276
+ * - logic — decision / assignment (engine core)
4277
+ * - logic — loop (structured iteration container, ADR-0031)
4278
+ * - logic — parallel (structured parallel block, implicit join, ADR-0031)
4279
+ * - logic — try_catch (structured try/catch/retry, ADR-0031)
538
4280
  * - data — get/create/update/delete_record (platform CRUD baseline)
539
4281
  * - human — screen / script (core flow capability)
540
4282
  * - io — http_request (foundational outbound I/O)
@@ -556,4 +4298,4 @@ declare function registerConnectorNodes(engine: AutomationEngine, ctx: PluginCon
556
4298
  */
557
4299
  declare function installBuiltinNodes(engine: AutomationEngine, ctx: PluginContext): void;
558
4300
 
559
- export { AutomationEngine, AutomationServicePlugin, type AutomationServicePluginOptions, type ConnectorActionContext, type ConnectorActionDescriptor, type ConnectorActionHandler, type ConnectorDescriptor, type FlowTrigger, type FlowTriggerBinding, type NodeExecutionResult, type NodeExecutor, type RegisteredConnector, installBuiltinNodes, registerConnectorNodes, registerCrudNodes, registerHttpNodes, registerLogicNodes, registerScreenNodes };
4301
+ export { AutomationEngine, AutomationServicePlugin, type AutomationServicePluginOptions, type ConnectorActionContext, type ConnectorActionDescriptor, type ConnectorActionHandler, type ConnectorDescriptor, type FlowTrigger, type FlowTriggerBinding, InMemorySuspendedRunStore, type NodeExecutionResult, type NodeExecutor, ObjectStoreSuspendedRunStore, type RegisteredConnector, type StepLogEntry, type SuspendedRun, type SuspendedRunStore, type SuspendedRunStoreEngine, SysAutomationRun, installBuiltinNodes, registerConnectorNodes, registerCrudNodes, registerHttpNodes, registerLogicNodes, registerScreenNodes };