@objectstack/service-ai 4.0.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.
@@ -0,0 +1,3406 @@
1
+ import { AIToolDefinition, AIToolCall, AIToolResult, IAIService, IAIConversationService, LLMAdapter, Logger, AIMessage, AIRequestOptions, AIResult, AIStreamEvent, ChatWithToolsOptions, AIConversation, IDataEngine, IMetadataService } from '@objectstack/spec/contracts';
2
+ export { LLMAdapter } from '@objectstack/spec/contracts';
3
+ import { Plugin, PluginContext } from '@objectstack/core';
4
+ import { Agent } from '@objectstack/spec';
5
+ import { z } from 'zod';
6
+ import * as _objectstack_spec_data from '@objectstack/spec/data';
7
+
8
+ /**
9
+ * Handler function for a registered tool.
10
+ *
11
+ * Receives parsed arguments and returns the tool output as a string.
12
+ */
13
+ type ToolHandler = (args: Record<string, unknown>) => Promise<string> | string;
14
+ /**
15
+ * ToolRegistry — Central registry for AI-callable tools.
16
+ *
17
+ * Plugins register tools (metadata helpers, data queries, business actions)
18
+ * during the `ai:ready` hook. The AI service resolves tool calls against
19
+ * this registry and feeds the results back to the LLM.
20
+ */
21
+ declare class ToolRegistry {
22
+ private readonly definitions;
23
+ private readonly handlers;
24
+ /**
25
+ * Register a tool with its definition and handler.
26
+ * @param definition - Tool definition (name, description, parameters schema)
27
+ * @param handler - Async function that executes the tool
28
+ */
29
+ register(definition: AIToolDefinition, handler: ToolHandler): void;
30
+ /**
31
+ * Unregister a tool by name.
32
+ */
33
+ unregister(name: string): void;
34
+ /**
35
+ * Check whether a tool is registered.
36
+ */
37
+ has(name: string): boolean;
38
+ /**
39
+ * Get the definition for a registered tool.
40
+ */
41
+ getDefinition(name: string): AIToolDefinition | undefined;
42
+ /**
43
+ * Return all registered tool definitions.
44
+ */
45
+ getAll(): AIToolDefinition[];
46
+ /** Number of registered tools. */
47
+ get size(): number;
48
+ /** All registered tool names. */
49
+ names(): string[];
50
+ /**
51
+ * Execute a tool call and return the result.
52
+ */
53
+ execute(toolCall: AIToolCall): Promise<AIToolResult>;
54
+ /**
55
+ * Execute multiple tool calls in parallel.
56
+ */
57
+ executeAll(toolCalls: AIToolCall[]): Promise<AIToolResult[]>;
58
+ /**
59
+ * Clear all registered tools.
60
+ */
61
+ clear(): void;
62
+ }
63
+
64
+ /**
65
+ * Configuration for AIService.
66
+ */
67
+ interface AIServiceConfig {
68
+ /** LLM adapter to delegate calls to (defaults to MemoryLLMAdapter). */
69
+ adapter?: LLMAdapter;
70
+ /** Logger instance. */
71
+ logger?: Logger;
72
+ /** Pre-registered tools. */
73
+ toolRegistry?: ToolRegistry;
74
+ /** Conversation service (defaults to InMemoryConversationService). */
75
+ conversationService?: IAIConversationService;
76
+ }
77
+ /**
78
+ * AIService — Unified AI capability service.
79
+ *
80
+ * Implements {@link IAIService} by delegating to a pluggable {@link LLMAdapter}
81
+ * and managing tools and conversations through dedicated sub-components:
82
+ *
83
+ * | Component | Responsibility |
84
+ * |:---|:---|
85
+ * | {@link LLMAdapter} | LLM provider abstraction (chat, complete, stream, embed) |
86
+ * | {@link ToolRegistry} | Tool definition storage & execution |
87
+ * | {@link IAIConversationService} | Conversation CRUD & message persistence |
88
+ *
89
+ * The service is registered as `'ai'` in the kernel service registry by
90
+ * the {@link AIServicePlugin}.
91
+ */
92
+ declare class AIService implements IAIService {
93
+ private readonly adapter;
94
+ private readonly logger;
95
+ readonly toolRegistry: ToolRegistry;
96
+ readonly conversationService: IAIConversationService;
97
+ constructor(config?: AIServiceConfig);
98
+ /** The name of the active LLM adapter. */
99
+ get adapterName(): string;
100
+ chat(messages: AIMessage[], options?: AIRequestOptions): Promise<AIResult>;
101
+ complete(prompt: string, options?: AIRequestOptions): Promise<AIResult>;
102
+ streamChat(messages: AIMessage[], options?: AIRequestOptions): AsyncIterable<AIStreamEvent>;
103
+ embed(input: string | string[], model?: string): Promise<number[][]>;
104
+ listModels(): Promise<string[]>;
105
+ /** Default maximum iterations for the tool call loop. */
106
+ static readonly DEFAULT_MAX_ITERATIONS = 10;
107
+ /**
108
+ * Chat with automatic tool call resolution.
109
+ *
110
+ * 1. Merges registered tool definitions into `options.tools`.
111
+ * 2. Calls the LLM adapter.
112
+ * 3. If the response contains `toolCalls`, executes them via the
113
+ * {@link ToolRegistry}, appends tool results as `role: 'tool'`
114
+ * messages, and loops back to step 2.
115
+ * 4. Repeats until the model produces a final text response or the
116
+ * maximum number of iterations (`maxIterations`) is reached.
117
+ */
118
+ chatWithTools(messages: AIMessage[], options?: ChatWithToolsOptions): Promise<AIResult>;
119
+ }
120
+
121
+ /**
122
+ * Configuration options for the AIServicePlugin.
123
+ */
124
+ interface AIServicePluginOptions {
125
+ /** LLM adapter to use (defaults to MemoryLLMAdapter). */
126
+ adapter?: LLMAdapter;
127
+ /** Enable debug logging. */
128
+ debug?: boolean;
129
+ /** Explicit conversation service override. When set, auto-detection is skipped. */
130
+ conversationService?: IAIConversationService;
131
+ }
132
+ /**
133
+ * AIServicePlugin — Kernel plugin for the unified AI capability service.
134
+ *
135
+ * Lifecycle:
136
+ * 1. **init** — Creates {@link AIService}, registers as `'ai'` service.
137
+ * If an existing AI service is already registered, it is replaced.
138
+ * 2. **start** — Triggers `'ai:ready'` hook so other plugins can register
139
+ * tools or extend the service. Registers REST/SSE routes.
140
+ * 3. **destroy** — Cleans up references.
141
+ *
142
+ * @example
143
+ * ```ts
144
+ * import { LiteKernel } from '@objectstack/core';
145
+ * import { AIServicePlugin } from '@objectstack/service-ai';
146
+ *
147
+ * const kernel = new LiteKernel();
148
+ * kernel.use(new AIServicePlugin());
149
+ * await kernel.bootstrap();
150
+ *
151
+ * const ai = kernel.getService<IAIService>('ai');
152
+ * const result = await ai.chat([{ role: 'user', content: 'Hello' }]);
153
+ * ```
154
+ */
155
+ declare class AIServicePlugin implements Plugin {
156
+ name: string;
157
+ version: string;
158
+ type: "standard";
159
+ dependencies: string[];
160
+ private service?;
161
+ private readonly options;
162
+ constructor(options?: AIServicePluginOptions);
163
+ init(ctx: PluginContext): Promise<void>;
164
+ start(ctx: PluginContext): Promise<void>;
165
+ destroy(): Promise<void>;
166
+ }
167
+
168
+ /**
169
+ * MemoryLLMAdapter — deterministic in-memory adapter for testing & development.
170
+ *
171
+ * Always echoes back the last user message prefixed with "[memory] ".
172
+ * Useful for unit tests, CI pipelines, and local dev without an LLM key.
173
+ */
174
+ declare class MemoryLLMAdapter implements LLMAdapter {
175
+ readonly name = "memory";
176
+ chat(messages: AIMessage[], options?: AIRequestOptions): Promise<AIResult>;
177
+ complete(prompt: string, options?: AIRequestOptions): Promise<AIResult>;
178
+ streamChat(messages: AIMessage[], _options?: AIRequestOptions): AsyncIterable<AIStreamEvent>;
179
+ embed(input: string | string[]): Promise<number[][]>;
180
+ listModels(): Promise<string[]>;
181
+ }
182
+
183
+ /**
184
+ * InMemoryConversationService — Reference implementation of IAIConversationService.
185
+ *
186
+ * Stores conversations in a simple Map. Suitable for development, testing,
187
+ * and single-process deployments. Production environments should replace
188
+ * this with a persistent implementation (e.g., backed by ObjectQL/SQL).
189
+ */
190
+ declare class InMemoryConversationService implements IAIConversationService {
191
+ private readonly store;
192
+ private counter;
193
+ create(options?: {
194
+ title?: string;
195
+ agentId?: string;
196
+ userId?: string;
197
+ metadata?: Record<string, unknown>;
198
+ }): Promise<AIConversation>;
199
+ get(conversationId: string): Promise<AIConversation | null>;
200
+ list(options?: {
201
+ userId?: string;
202
+ agentId?: string;
203
+ limit?: number;
204
+ cursor?: string;
205
+ }): Promise<AIConversation[]>;
206
+ addMessage(conversationId: string, message: AIMessage): Promise<AIConversation>;
207
+ delete(conversationId: string): Promise<void>;
208
+ /** Total number of stored conversations. */
209
+ get size(): number;
210
+ /** Clear all conversations. */
211
+ clear(): void;
212
+ }
213
+
214
+ /**
215
+ * ObjectQLConversationService — Persistent implementation of IAIConversationService.
216
+ *
217
+ * Delegates all storage to an {@link IDataEngine} instance, using the
218
+ * `ai_conversations` and `ai_messages` objects. This decouples the service
219
+ * from any specific database driver (Turso, Postgres, SQLite, etc.).
220
+ *
221
+ * Production environments should use this implementation to ensure
222
+ * conversation history survives service restarts.
223
+ */
224
+ declare class ObjectQLConversationService implements IAIConversationService {
225
+ private readonly engine;
226
+ constructor(engine: IDataEngine);
227
+ create(options?: {
228
+ title?: string;
229
+ agentId?: string;
230
+ userId?: string;
231
+ metadata?: Record<string, unknown>;
232
+ }): Promise<AIConversation>;
233
+ get(conversationId: string): Promise<AIConversation | null>;
234
+ list(options?: {
235
+ userId?: string;
236
+ agentId?: string;
237
+ limit?: number;
238
+ cursor?: string;
239
+ }): Promise<AIConversation[]>;
240
+ addMessage(conversationId: string, message: AIMessage): Promise<AIConversation>;
241
+ delete(conversationId: string): Promise<void>;
242
+ /**
243
+ * Safely parse a JSON string, returning `undefined` on failure.
244
+ */
245
+ private safeParse;
246
+ /**
247
+ * Map a database row + message rows to an AIConversation.
248
+ */
249
+ private toConversation;
250
+ /**
251
+ * Map a database row to an AIMessage.
252
+ */
253
+ private toMessage;
254
+ }
255
+
256
+ /**
257
+ * Services required by the built-in data tools.
258
+ *
259
+ * These are provided by the kernel at `ai:ready` time and closed over
260
+ * by the handler functions so they stay framework-agnostic.
261
+ */
262
+ interface DataToolContext {
263
+ /** ObjectQL data engine for record-level operations. */
264
+ dataEngine: IDataEngine;
265
+ /** Metadata service for schema/object introspection. */
266
+ metadataService: IMetadataService;
267
+ }
268
+ /** All built-in data tool definitions. */
269
+ declare const DATA_TOOL_DEFINITIONS: AIToolDefinition[];
270
+ /**
271
+ * Register all built-in data tools on the given {@link ToolRegistry}.
272
+ *
273
+ * Typically called from the `ai:ready` hook after both the data engine
274
+ * and metadata service are available.
275
+ *
276
+ * @example
277
+ * ```ts
278
+ * ctx.hook('ai:ready', async (aiService) => {
279
+ * const dataEngine = ctx.getService<IDataEngine>('data');
280
+ * const metadataService = ctx.getService<IMetadataService>('metadata');
281
+ * registerDataTools(aiService.toolRegistry, { dataEngine, metadataService });
282
+ * });
283
+ * ```
284
+ */
285
+ declare function registerDataTools(registry: ToolRegistry, context: DataToolContext): void;
286
+
287
+ /**
288
+ * Context passed alongside a user message when chatting with an agent.
289
+ *
290
+ * UI clients set these fields to tell the agent which object, record,
291
+ * or view the user is currently looking at so it can provide contextual
292
+ * answers without additional tool calls.
293
+ */
294
+ interface AgentChatContext {
295
+ /** Current object the user is viewing (e.g. "account") */
296
+ objectName?: string;
297
+ /** Currently selected record ID */
298
+ recordId?: string;
299
+ /** Current view name */
300
+ viewName?: string;
301
+ }
302
+ /**
303
+ * AgentRuntime — Resolves an agent definition into runnable chat parameters.
304
+ *
305
+ * Responsibilities:
306
+ * 1. Load & validate agent metadata from the metadata service.
307
+ * 2. Build the system prompt from agent `instructions` + UI context.
308
+ * 3. Derive {@link AIRequestOptions} from agent `model` and `tools`.
309
+ * 4. Map agent tool references to concrete {@link AIToolDefinition}s
310
+ * registered in the {@link ToolRegistry}.
311
+ */
312
+ declare class AgentRuntime {
313
+ private readonly metadataService;
314
+ constructor(metadataService: IMetadataService);
315
+ /**
316
+ * Load and validate an agent definition by name.
317
+ *
318
+ * The raw metadata is validated through {@link AgentSchema} to ensure
319
+ * required fields (`instructions`, `name`, `role`, etc.) are present
320
+ * and well-typed. Returns `undefined` when the agent does not exist
321
+ * or validation fails.
322
+ */
323
+ loadAgent(agentName: string): Promise<Agent | undefined>;
324
+ /**
325
+ * Build the system message(s) that should be prepended to the
326
+ * conversation when chatting with the given agent.
327
+ */
328
+ buildSystemMessages(agent: Agent, context?: AgentChatContext): AIMessage[];
329
+ /**
330
+ * Derive {@link AIRequestOptions} from an agent definition.
331
+ *
332
+ * Tool references declared in `agent.tools` are resolved by name against
333
+ * `availableTools` (i.e. the full set of ToolRegistry definitions).
334
+ * Any unresolved references (tools the agent declares but that are not
335
+ * registered) are silently skipped — this is intentional so that agents
336
+ * can be defined before all tools are available.
337
+ *
338
+ * @param agent - The agent definition to derive options from
339
+ * @param availableTools - All tool definitions currently registered in the ToolRegistry
340
+ * @returns Request options with model config and resolved tool definitions
341
+ */
342
+ buildRequestOptions(agent: Agent, availableTools: AIToolDefinition[]): AIRequestOptions;
343
+ }
344
+
345
+ /**
346
+ * Built-in `data_chat` agent definition.
347
+ *
348
+ * This agent powers the Airtable-style data conversation Chatbot.
349
+ * It is registered automatically by the AI service plugin when a
350
+ * data engine is available.
351
+ *
352
+ * @example
353
+ * ```
354
+ * POST /api/v1/ai/agents/data_chat/chat
355
+ * {
356
+ * "messages": [{ "role": "user", "content": "Show me all active accounts" }],
357
+ * "context": { "objectName": "account" }
358
+ * }
359
+ * ```
360
+ */
361
+ declare const DATA_CHAT_AGENT: Agent;
362
+
363
+ /**
364
+ * XState-inspired State Machine Protocol
365
+ * Used to define strict business logic constraints and lifecycle management.
366
+ * Prevent AI "hallucinations" by enforcing valid valid transitions.
367
+ */
368
+ /**
369
+ * References a named action (side effect)
370
+ * Can be a script, a webhook, or a field update.
371
+ */
372
+ declare const ActionRefSchema: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
373
+ type: z.ZodString;
374
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
375
+ }, z.core.$strip>]>;
376
+ /**
377
+ * State Transition Definition
378
+ * "When EVENT happens, if GUARD is true, go to TARGET and run ACTIONS"
379
+ */
380
+ declare const TransitionSchema: z.ZodObject<{
381
+ target: z.ZodOptional<z.ZodString>;
382
+ cond: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
383
+ type: z.ZodString;
384
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
385
+ }, z.core.$strip>]>>;
386
+ actions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
387
+ type: z.ZodString;
388
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
389
+ }, z.core.$strip>]>>>;
390
+ description: z.ZodOptional<z.ZodString>;
391
+ }, z.core.$strip>;
392
+ type ActionRef = z.infer<typeof ActionRefSchema>;
393
+ type Transition = z.infer<typeof TransitionSchema>;
394
+ type StateNodeConfig = {
395
+ type?: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
396
+ entry?: ActionRef[];
397
+ exit?: ActionRef[];
398
+ on?: Record<string, string | Transition | Transition[]>;
399
+ always?: Transition[];
400
+ initial?: string;
401
+ states?: Record<string, StateNodeConfig>;
402
+ meta?: {
403
+ label?: string;
404
+ description?: string;
405
+ color?: string;
406
+ aiInstructions?: string;
407
+ };
408
+ };
409
+
410
+ /**
411
+ * ai_conversations — AI Conversation Object
412
+ *
413
+ * Stores conversation metadata for persistent AI conversation management.
414
+ * Messages are stored separately in `ai_messages` to support efficient
415
+ * querying and pagination.
416
+ *
417
+ * @namespace ai
418
+ */
419
+ declare const AiConversationObject: Omit<{
420
+ name: string;
421
+ active: boolean;
422
+ isSystem: boolean;
423
+ abstract: boolean;
424
+ datasource: string;
425
+ fields: Record<string, {
426
+ type: "number" | "boolean" | "file" | "json" | "text" | "avatar" | "vector" | "date" | "tags" | "lookup" | "url" | "textarea" | "email" | "phone" | "password" | "markdown" | "html" | "richtext" | "currency" | "percent" | "datetime" | "time" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "master_detail" | "tree" | "image" | "video" | "audio" | "formula" | "summary" | "autonumber" | "location" | "address" | "code" | "color" | "rating" | "slider" | "signature" | "qrcode" | "progress";
427
+ required: boolean;
428
+ searchable: boolean;
429
+ multiple: boolean;
430
+ unique: boolean;
431
+ deleteBehavior: "set_null" | "cascade" | "restrict";
432
+ auditTrail: boolean;
433
+ hidden: boolean;
434
+ readonly: boolean;
435
+ sortable: boolean;
436
+ index: boolean;
437
+ externalId: boolean;
438
+ name?: string | undefined;
439
+ label?: string | undefined;
440
+ description?: string | undefined;
441
+ format?: string | undefined;
442
+ columnName?: string | undefined;
443
+ defaultValue?: unknown;
444
+ maxLength?: number | undefined;
445
+ minLength?: number | undefined;
446
+ precision?: number | undefined;
447
+ scale?: number | undefined;
448
+ min?: number | undefined;
449
+ max?: number | undefined;
450
+ options?: {
451
+ label: string;
452
+ value: string;
453
+ color?: string | undefined;
454
+ default?: boolean | undefined;
455
+ }[] | undefined;
456
+ reference?: string | undefined;
457
+ referenceFilters?: string[] | undefined;
458
+ writeRequiresMasterRead?: boolean | undefined;
459
+ expression?: string | undefined;
460
+ summaryOperations?: {
461
+ object: string;
462
+ field: string;
463
+ function: "count" | "sum" | "avg" | "min" | "max";
464
+ } | undefined;
465
+ language?: string | undefined;
466
+ theme?: string | undefined;
467
+ lineNumbers?: boolean | undefined;
468
+ maxRating?: number | undefined;
469
+ allowHalf?: boolean | undefined;
470
+ displayMap?: boolean | undefined;
471
+ allowGeocoding?: boolean | undefined;
472
+ addressFormat?: "us" | "uk" | "international" | undefined;
473
+ colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
474
+ allowAlpha?: boolean | undefined;
475
+ presetColors?: string[] | undefined;
476
+ step?: number | undefined;
477
+ showValue?: boolean | undefined;
478
+ marks?: Record<string, string> | undefined;
479
+ barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
480
+ qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
481
+ displayValue?: boolean | undefined;
482
+ allowScanning?: boolean | undefined;
483
+ currencyConfig?: {
484
+ precision: number;
485
+ currencyMode: "dynamic" | "fixed";
486
+ defaultCurrency: string;
487
+ } | undefined;
488
+ vectorConfig?: {
489
+ dimensions: number;
490
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
491
+ normalized: boolean;
492
+ indexed: boolean;
493
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
494
+ } | undefined;
495
+ fileAttachmentConfig?: {
496
+ virusScan: boolean;
497
+ virusScanOnUpload: boolean;
498
+ quarantineOnThreat: boolean;
499
+ allowMultiple: boolean;
500
+ allowReplace: boolean;
501
+ allowDelete: boolean;
502
+ requireUpload: boolean;
503
+ extractMetadata: boolean;
504
+ extractText: boolean;
505
+ versioningEnabled: boolean;
506
+ publicRead: boolean;
507
+ presignedUrlExpiry: number;
508
+ minSize?: number | undefined;
509
+ maxSize?: number | undefined;
510
+ allowedTypes?: string[] | undefined;
511
+ blockedTypes?: string[] | undefined;
512
+ allowedMimeTypes?: string[] | undefined;
513
+ blockedMimeTypes?: string[] | undefined;
514
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
515
+ storageProvider?: string | undefined;
516
+ storageBucket?: string | undefined;
517
+ storagePrefix?: string | undefined;
518
+ imageValidation?: {
519
+ generateThumbnails: boolean;
520
+ preserveMetadata: boolean;
521
+ autoRotate: boolean;
522
+ minWidth?: number | undefined;
523
+ maxWidth?: number | undefined;
524
+ minHeight?: number | undefined;
525
+ maxHeight?: number | undefined;
526
+ aspectRatio?: string | undefined;
527
+ thumbnailSizes?: {
528
+ name: string;
529
+ width: number;
530
+ height: number;
531
+ crop: boolean;
532
+ }[] | undefined;
533
+ } | undefined;
534
+ maxVersions?: number | undefined;
535
+ } | undefined;
536
+ encryptionConfig?: {
537
+ enabled: boolean;
538
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
539
+ keyManagement: {
540
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
541
+ keyId?: string | undefined;
542
+ rotationPolicy?: {
543
+ enabled: boolean;
544
+ frequencyDays: number;
545
+ retainOldVersions: number;
546
+ autoRotate: boolean;
547
+ } | undefined;
548
+ };
549
+ scope: "database" | "field" | "record" | "table";
550
+ deterministicEncryption: boolean;
551
+ searchableEncryption: boolean;
552
+ } | undefined;
553
+ maskingRule?: {
554
+ field: string;
555
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
556
+ preserveFormat: boolean;
557
+ preserveLength: boolean;
558
+ pattern?: string | undefined;
559
+ roles?: string[] | undefined;
560
+ exemptRoles?: string[] | undefined;
561
+ } | undefined;
562
+ dependencies?: string[] | undefined;
563
+ cached?: {
564
+ enabled: boolean;
565
+ ttl: number;
566
+ invalidateOn: string[];
567
+ } | undefined;
568
+ dataQuality?: {
569
+ uniqueness: boolean;
570
+ completeness: number;
571
+ accuracy?: {
572
+ source: string;
573
+ threshold: number;
574
+ } | undefined;
575
+ } | undefined;
576
+ group?: string | undefined;
577
+ conditionalRequired?: string | undefined;
578
+ inlineHelpText?: string | undefined;
579
+ trackFeedHistory?: boolean | undefined;
580
+ caseSensitive?: boolean | undefined;
581
+ autonumberFormat?: string | undefined;
582
+ }>;
583
+ label?: string | undefined;
584
+ pluralLabel?: string | undefined;
585
+ description?: string | undefined;
586
+ icon?: string | undefined;
587
+ namespace?: string | undefined;
588
+ tags?: string[] | undefined;
589
+ tableName?: string | undefined;
590
+ indexes?: {
591
+ fields: string[];
592
+ type: "hash" | "btree" | "gin" | "gist" | "fulltext";
593
+ unique: boolean;
594
+ name?: string | undefined;
595
+ partial?: string | undefined;
596
+ }[] | undefined;
597
+ tenancy?: {
598
+ enabled: boolean;
599
+ strategy: "shared" | "isolated" | "hybrid";
600
+ tenantField: string;
601
+ crossTenantAccess: boolean;
602
+ } | undefined;
603
+ softDelete?: {
604
+ enabled: boolean;
605
+ field: string;
606
+ cascadeDelete: boolean;
607
+ } | undefined;
608
+ versioning?: {
609
+ enabled: boolean;
610
+ strategy: "snapshot" | "delta" | "event-sourcing";
611
+ versionField: string;
612
+ retentionDays?: number | undefined;
613
+ } | undefined;
614
+ partitioning?: {
615
+ enabled: boolean;
616
+ strategy: "hash" | "range" | "list";
617
+ key: string;
618
+ interval?: string | undefined;
619
+ } | undefined;
620
+ cdc?: {
621
+ enabled: boolean;
622
+ events: ("update" | "delete" | "insert")[];
623
+ destination: string;
624
+ } | undefined;
625
+ validations?: _objectstack_spec_data.BaseValidationRuleShape[] | undefined;
626
+ stateMachines?: Record<string, {
627
+ id: string;
628
+ initial: string;
629
+ states: Record<string, StateNodeConfig>;
630
+ description?: string | undefined;
631
+ contextSchema?: Record<string, unknown> | undefined;
632
+ on?: Record<string, string | {
633
+ target?: string | undefined;
634
+ cond?: string | {
635
+ type: string;
636
+ params?: Record<string, unknown> | undefined;
637
+ } | undefined;
638
+ actions?: (string | {
639
+ type: string;
640
+ params?: Record<string, unknown> | undefined;
641
+ })[] | undefined;
642
+ description?: string | undefined;
643
+ } | {
644
+ target?: string | undefined;
645
+ cond?: string | {
646
+ type: string;
647
+ params?: Record<string, unknown> | undefined;
648
+ } | undefined;
649
+ actions?: (string | {
650
+ type: string;
651
+ params?: Record<string, unknown> | undefined;
652
+ })[] | undefined;
653
+ description?: string | undefined;
654
+ }[]> | undefined;
655
+ }> | undefined;
656
+ displayNameField?: string | undefined;
657
+ recordName?: {
658
+ type: "text" | "autonumber";
659
+ displayFormat?: string | undefined;
660
+ startNumber?: number | undefined;
661
+ } | undefined;
662
+ titleFormat?: string | undefined;
663
+ compactLayout?: string[] | undefined;
664
+ search?: {
665
+ fields: string[];
666
+ displayFields?: string[] | undefined;
667
+ filters?: string[] | undefined;
668
+ } | undefined;
669
+ enable?: {
670
+ trackHistory: boolean;
671
+ searchable: boolean;
672
+ apiEnabled: boolean;
673
+ files: boolean;
674
+ feeds: boolean;
675
+ activities: boolean;
676
+ trash: boolean;
677
+ mru: boolean;
678
+ clone: boolean;
679
+ apiMethods?: ("search" | "upsert" | "list" | "update" | "delete" | "history" | "get" | "create" | "bulk" | "aggregate" | "restore" | "purge" | "import" | "export")[] | undefined;
680
+ } | undefined;
681
+ recordTypes?: string[] | undefined;
682
+ sharingModel?: "private" | "full" | "read" | "read_write" | undefined;
683
+ keyPrefix?: string | undefined;
684
+ actions?: {
685
+ name: string;
686
+ label: string | {
687
+ key: string;
688
+ defaultValue?: string | undefined;
689
+ params?: Record<string, string | number | boolean> | undefined;
690
+ };
691
+ type: "url" | "script" | "modal" | "flow" | "api";
692
+ refreshAfter: boolean;
693
+ objectName?: string | undefined;
694
+ icon?: string | undefined;
695
+ locations?: ("list_toolbar" | "list_item" | "record_header" | "record_more" | "record_related" | "global_nav")[] | undefined;
696
+ component?: "action:button" | "action:icon" | "action:menu" | "action:group" | undefined;
697
+ target?: string | undefined;
698
+ execute?: string | undefined;
699
+ params?: {
700
+ name: string;
701
+ label: string | {
702
+ key: string;
703
+ defaultValue?: string | undefined;
704
+ params?: Record<string, string | number | boolean> | undefined;
705
+ };
706
+ type: "number" | "boolean" | "date" | "lookup" | "file" | "url" | "json" | "text" | "textarea" | "email" | "phone" | "password" | "markdown" | "html" | "richtext" | "currency" | "percent" | "datetime" | "time" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "master_detail" | "tree" | "image" | "avatar" | "video" | "audio" | "formula" | "summary" | "autonumber" | "location" | "address" | "code" | "color" | "rating" | "slider" | "signature" | "qrcode" | "progress" | "tags" | "vector";
707
+ required: boolean;
708
+ options?: {
709
+ label: string | {
710
+ key: string;
711
+ defaultValue?: string | undefined;
712
+ params?: Record<string, string | number | boolean> | undefined;
713
+ };
714
+ value: string;
715
+ }[] | undefined;
716
+ }[] | undefined;
717
+ variant?: "link" | "primary" | "secondary" | "danger" | "ghost" | undefined;
718
+ confirmText?: string | {
719
+ key: string;
720
+ defaultValue?: string | undefined;
721
+ params?: Record<string, string | number | boolean> | undefined;
722
+ } | undefined;
723
+ successMessage?: string | {
724
+ key: string;
725
+ defaultValue?: string | undefined;
726
+ params?: Record<string, string | number | boolean> | undefined;
727
+ } | undefined;
728
+ visible?: string | undefined;
729
+ disabled?: string | boolean | undefined;
730
+ shortcut?: string | undefined;
731
+ bulkEnabled?: boolean | undefined;
732
+ timeout?: number | undefined;
733
+ aria?: {
734
+ ariaLabel?: string | {
735
+ key: string;
736
+ defaultValue?: string | undefined;
737
+ params?: Record<string, string | number | boolean> | undefined;
738
+ } | undefined;
739
+ ariaDescribedBy?: string | undefined;
740
+ role?: string | undefined;
741
+ } | undefined;
742
+ }[] | undefined;
743
+ }, "fields"> & Pick<{
744
+ readonly namespace: "ai";
745
+ readonly name: "conversations";
746
+ readonly label: "AI Conversation";
747
+ readonly pluralLabel: "AI Conversations";
748
+ readonly icon: "message-square";
749
+ readonly isSystem: true;
750
+ readonly description: "Persistent AI conversation metadata";
751
+ readonly fields: {
752
+ readonly id: {
753
+ readonly format?: string | undefined;
754
+ readonly expression?: string | undefined;
755
+ readonly readonly?: boolean | undefined;
756
+ readonly defaultValue?: unknown;
757
+ readonly min?: number | undefined;
758
+ readonly max?: number | undefined;
759
+ readonly name?: string | undefined;
760
+ readonly encryptionConfig?: {
761
+ enabled: boolean;
762
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
763
+ keyManagement: {
764
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
765
+ keyId?: string | undefined;
766
+ rotationPolicy?: {
767
+ enabled: boolean;
768
+ frequencyDays: number;
769
+ retainOldVersions: number;
770
+ autoRotate: boolean;
771
+ } | undefined;
772
+ };
773
+ scope: "table" | "record" | "field" | "database";
774
+ deterministicEncryption: boolean;
775
+ searchableEncryption: boolean;
776
+ } | undefined;
777
+ readonly label?: string | undefined;
778
+ readonly precision?: number | undefined;
779
+ readonly description?: string | undefined;
780
+ readonly columnName?: string | undefined;
781
+ readonly required?: boolean | undefined;
782
+ readonly searchable?: boolean | undefined;
783
+ readonly multiple?: boolean | undefined;
784
+ readonly unique?: boolean | undefined;
785
+ readonly maxLength?: number | undefined;
786
+ readonly minLength?: number | undefined;
787
+ readonly scale?: number | undefined;
788
+ readonly options?: {
789
+ label: string;
790
+ value: string;
791
+ color?: string | undefined;
792
+ default?: boolean | undefined;
793
+ }[] | undefined;
794
+ readonly reference?: string | undefined;
795
+ readonly referenceFilters?: string[] | undefined;
796
+ readonly writeRequiresMasterRead?: boolean | undefined;
797
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
798
+ readonly summaryOperations?: {
799
+ object: string;
800
+ field: string;
801
+ function: "count" | "sum" | "avg" | "min" | "max";
802
+ } | undefined;
803
+ readonly language?: string | undefined;
804
+ readonly theme?: string | undefined;
805
+ readonly lineNumbers?: boolean | undefined;
806
+ readonly maxRating?: number | undefined;
807
+ readonly allowHalf?: boolean | undefined;
808
+ readonly displayMap?: boolean | undefined;
809
+ readonly allowGeocoding?: boolean | undefined;
810
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
811
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
812
+ readonly allowAlpha?: boolean | undefined;
813
+ readonly presetColors?: string[] | undefined;
814
+ readonly step?: number | undefined;
815
+ readonly showValue?: boolean | undefined;
816
+ readonly marks?: Record<string, string> | undefined;
817
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
818
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
819
+ readonly displayValue?: boolean | undefined;
820
+ readonly allowScanning?: boolean | undefined;
821
+ readonly currencyConfig?: {
822
+ precision: number;
823
+ currencyMode: "dynamic" | "fixed";
824
+ defaultCurrency: string;
825
+ } | undefined;
826
+ readonly vectorConfig?: {
827
+ dimensions: number;
828
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
829
+ normalized: boolean;
830
+ indexed: boolean;
831
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
832
+ } | undefined;
833
+ readonly fileAttachmentConfig?: {
834
+ virusScan: boolean;
835
+ virusScanOnUpload: boolean;
836
+ quarantineOnThreat: boolean;
837
+ allowMultiple: boolean;
838
+ allowReplace: boolean;
839
+ allowDelete: boolean;
840
+ requireUpload: boolean;
841
+ extractMetadata: boolean;
842
+ extractText: boolean;
843
+ versioningEnabled: boolean;
844
+ publicRead: boolean;
845
+ presignedUrlExpiry: number;
846
+ minSize?: number | undefined;
847
+ maxSize?: number | undefined;
848
+ allowedTypes?: string[] | undefined;
849
+ blockedTypes?: string[] | undefined;
850
+ allowedMimeTypes?: string[] | undefined;
851
+ blockedMimeTypes?: string[] | undefined;
852
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
853
+ storageProvider?: string | undefined;
854
+ storageBucket?: string | undefined;
855
+ storagePrefix?: string | undefined;
856
+ imageValidation?: {
857
+ generateThumbnails: boolean;
858
+ preserveMetadata: boolean;
859
+ autoRotate: boolean;
860
+ minWidth?: number | undefined;
861
+ maxWidth?: number | undefined;
862
+ minHeight?: number | undefined;
863
+ maxHeight?: number | undefined;
864
+ aspectRatio?: string | undefined;
865
+ thumbnailSizes?: {
866
+ name: string;
867
+ width: number;
868
+ height: number;
869
+ crop: boolean;
870
+ }[] | undefined;
871
+ } | undefined;
872
+ maxVersions?: number | undefined;
873
+ } | undefined;
874
+ readonly maskingRule?: {
875
+ field: string;
876
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
877
+ preserveFormat: boolean;
878
+ preserveLength: boolean;
879
+ pattern?: string | undefined;
880
+ roles?: string[] | undefined;
881
+ exemptRoles?: string[] | undefined;
882
+ } | undefined;
883
+ readonly auditTrail?: boolean | undefined;
884
+ readonly dependencies?: string[] | undefined;
885
+ readonly cached?: {
886
+ enabled: boolean;
887
+ ttl: number;
888
+ invalidateOn: string[];
889
+ } | undefined;
890
+ readonly dataQuality?: {
891
+ uniqueness: boolean;
892
+ completeness: number;
893
+ accuracy?: {
894
+ source: string;
895
+ threshold: number;
896
+ } | undefined;
897
+ } | undefined;
898
+ readonly group?: string | undefined;
899
+ readonly conditionalRequired?: string | undefined;
900
+ readonly hidden?: boolean | undefined;
901
+ readonly sortable?: boolean | undefined;
902
+ readonly inlineHelpText?: string | undefined;
903
+ readonly trackFeedHistory?: boolean | undefined;
904
+ readonly caseSensitive?: boolean | undefined;
905
+ readonly autonumberFormat?: string | undefined;
906
+ readonly index?: boolean | undefined;
907
+ readonly externalId?: boolean | undefined;
908
+ readonly type: "text";
909
+ };
910
+ readonly title: {
911
+ readonly format?: string | undefined;
912
+ readonly expression?: string | undefined;
913
+ readonly readonly?: boolean | undefined;
914
+ readonly defaultValue?: unknown;
915
+ readonly min?: number | undefined;
916
+ readonly max?: number | undefined;
917
+ readonly name?: string | undefined;
918
+ readonly encryptionConfig?: {
919
+ enabled: boolean;
920
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
921
+ keyManagement: {
922
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
923
+ keyId?: string | undefined;
924
+ rotationPolicy?: {
925
+ enabled: boolean;
926
+ frequencyDays: number;
927
+ retainOldVersions: number;
928
+ autoRotate: boolean;
929
+ } | undefined;
930
+ };
931
+ scope: "table" | "record" | "field" | "database";
932
+ deterministicEncryption: boolean;
933
+ searchableEncryption: boolean;
934
+ } | undefined;
935
+ readonly label?: string | undefined;
936
+ readonly precision?: number | undefined;
937
+ readonly description?: string | undefined;
938
+ readonly columnName?: string | undefined;
939
+ readonly required?: boolean | undefined;
940
+ readonly searchable?: boolean | undefined;
941
+ readonly multiple?: boolean | undefined;
942
+ readonly unique?: boolean | undefined;
943
+ readonly maxLength?: number | undefined;
944
+ readonly minLength?: number | undefined;
945
+ readonly scale?: number | undefined;
946
+ readonly options?: {
947
+ label: string;
948
+ value: string;
949
+ color?: string | undefined;
950
+ default?: boolean | undefined;
951
+ }[] | undefined;
952
+ readonly reference?: string | undefined;
953
+ readonly referenceFilters?: string[] | undefined;
954
+ readonly writeRequiresMasterRead?: boolean | undefined;
955
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
956
+ readonly summaryOperations?: {
957
+ object: string;
958
+ field: string;
959
+ function: "count" | "sum" | "avg" | "min" | "max";
960
+ } | undefined;
961
+ readonly language?: string | undefined;
962
+ readonly theme?: string | undefined;
963
+ readonly lineNumbers?: boolean | undefined;
964
+ readonly maxRating?: number | undefined;
965
+ readonly allowHalf?: boolean | undefined;
966
+ readonly displayMap?: boolean | undefined;
967
+ readonly allowGeocoding?: boolean | undefined;
968
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
969
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
970
+ readonly allowAlpha?: boolean | undefined;
971
+ readonly presetColors?: string[] | undefined;
972
+ readonly step?: number | undefined;
973
+ readonly showValue?: boolean | undefined;
974
+ readonly marks?: Record<string, string> | undefined;
975
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
976
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
977
+ readonly displayValue?: boolean | undefined;
978
+ readonly allowScanning?: boolean | undefined;
979
+ readonly currencyConfig?: {
980
+ precision: number;
981
+ currencyMode: "dynamic" | "fixed";
982
+ defaultCurrency: string;
983
+ } | undefined;
984
+ readonly vectorConfig?: {
985
+ dimensions: number;
986
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
987
+ normalized: boolean;
988
+ indexed: boolean;
989
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
990
+ } | undefined;
991
+ readonly fileAttachmentConfig?: {
992
+ virusScan: boolean;
993
+ virusScanOnUpload: boolean;
994
+ quarantineOnThreat: boolean;
995
+ allowMultiple: boolean;
996
+ allowReplace: boolean;
997
+ allowDelete: boolean;
998
+ requireUpload: boolean;
999
+ extractMetadata: boolean;
1000
+ extractText: boolean;
1001
+ versioningEnabled: boolean;
1002
+ publicRead: boolean;
1003
+ presignedUrlExpiry: number;
1004
+ minSize?: number | undefined;
1005
+ maxSize?: number | undefined;
1006
+ allowedTypes?: string[] | undefined;
1007
+ blockedTypes?: string[] | undefined;
1008
+ allowedMimeTypes?: string[] | undefined;
1009
+ blockedMimeTypes?: string[] | undefined;
1010
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
1011
+ storageProvider?: string | undefined;
1012
+ storageBucket?: string | undefined;
1013
+ storagePrefix?: string | undefined;
1014
+ imageValidation?: {
1015
+ generateThumbnails: boolean;
1016
+ preserveMetadata: boolean;
1017
+ autoRotate: boolean;
1018
+ minWidth?: number | undefined;
1019
+ maxWidth?: number | undefined;
1020
+ minHeight?: number | undefined;
1021
+ maxHeight?: number | undefined;
1022
+ aspectRatio?: string | undefined;
1023
+ thumbnailSizes?: {
1024
+ name: string;
1025
+ width: number;
1026
+ height: number;
1027
+ crop: boolean;
1028
+ }[] | undefined;
1029
+ } | undefined;
1030
+ maxVersions?: number | undefined;
1031
+ } | undefined;
1032
+ readonly maskingRule?: {
1033
+ field: string;
1034
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
1035
+ preserveFormat: boolean;
1036
+ preserveLength: boolean;
1037
+ pattern?: string | undefined;
1038
+ roles?: string[] | undefined;
1039
+ exemptRoles?: string[] | undefined;
1040
+ } | undefined;
1041
+ readonly auditTrail?: boolean | undefined;
1042
+ readonly dependencies?: string[] | undefined;
1043
+ readonly cached?: {
1044
+ enabled: boolean;
1045
+ ttl: number;
1046
+ invalidateOn: string[];
1047
+ } | undefined;
1048
+ readonly dataQuality?: {
1049
+ uniqueness: boolean;
1050
+ completeness: number;
1051
+ accuracy?: {
1052
+ source: string;
1053
+ threshold: number;
1054
+ } | undefined;
1055
+ } | undefined;
1056
+ readonly group?: string | undefined;
1057
+ readonly conditionalRequired?: string | undefined;
1058
+ readonly hidden?: boolean | undefined;
1059
+ readonly sortable?: boolean | undefined;
1060
+ readonly inlineHelpText?: string | undefined;
1061
+ readonly trackFeedHistory?: boolean | undefined;
1062
+ readonly caseSensitive?: boolean | undefined;
1063
+ readonly autonumberFormat?: string | undefined;
1064
+ readonly index?: boolean | undefined;
1065
+ readonly externalId?: boolean | undefined;
1066
+ readonly type: "text";
1067
+ };
1068
+ readonly agent_id: {
1069
+ readonly format?: string | undefined;
1070
+ readonly expression?: string | undefined;
1071
+ readonly readonly?: boolean | undefined;
1072
+ readonly defaultValue?: unknown;
1073
+ readonly min?: number | undefined;
1074
+ readonly max?: number | undefined;
1075
+ readonly name?: string | undefined;
1076
+ readonly encryptionConfig?: {
1077
+ enabled: boolean;
1078
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
1079
+ keyManagement: {
1080
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
1081
+ keyId?: string | undefined;
1082
+ rotationPolicy?: {
1083
+ enabled: boolean;
1084
+ frequencyDays: number;
1085
+ retainOldVersions: number;
1086
+ autoRotate: boolean;
1087
+ } | undefined;
1088
+ };
1089
+ scope: "table" | "record" | "field" | "database";
1090
+ deterministicEncryption: boolean;
1091
+ searchableEncryption: boolean;
1092
+ } | undefined;
1093
+ readonly label?: string | undefined;
1094
+ readonly precision?: number | undefined;
1095
+ readonly description?: string | undefined;
1096
+ readonly columnName?: string | undefined;
1097
+ readonly required?: boolean | undefined;
1098
+ readonly searchable?: boolean | undefined;
1099
+ readonly multiple?: boolean | undefined;
1100
+ readonly unique?: boolean | undefined;
1101
+ readonly maxLength?: number | undefined;
1102
+ readonly minLength?: number | undefined;
1103
+ readonly scale?: number | undefined;
1104
+ readonly options?: {
1105
+ label: string;
1106
+ value: string;
1107
+ color?: string | undefined;
1108
+ default?: boolean | undefined;
1109
+ }[] | undefined;
1110
+ readonly reference?: string | undefined;
1111
+ readonly referenceFilters?: string[] | undefined;
1112
+ readonly writeRequiresMasterRead?: boolean | undefined;
1113
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
1114
+ readonly summaryOperations?: {
1115
+ object: string;
1116
+ field: string;
1117
+ function: "count" | "sum" | "avg" | "min" | "max";
1118
+ } | undefined;
1119
+ readonly language?: string | undefined;
1120
+ readonly theme?: string | undefined;
1121
+ readonly lineNumbers?: boolean | undefined;
1122
+ readonly maxRating?: number | undefined;
1123
+ readonly allowHalf?: boolean | undefined;
1124
+ readonly displayMap?: boolean | undefined;
1125
+ readonly allowGeocoding?: boolean | undefined;
1126
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
1127
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
1128
+ readonly allowAlpha?: boolean | undefined;
1129
+ readonly presetColors?: string[] | undefined;
1130
+ readonly step?: number | undefined;
1131
+ readonly showValue?: boolean | undefined;
1132
+ readonly marks?: Record<string, string> | undefined;
1133
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
1134
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
1135
+ readonly displayValue?: boolean | undefined;
1136
+ readonly allowScanning?: boolean | undefined;
1137
+ readonly currencyConfig?: {
1138
+ precision: number;
1139
+ currencyMode: "dynamic" | "fixed";
1140
+ defaultCurrency: string;
1141
+ } | undefined;
1142
+ readonly vectorConfig?: {
1143
+ dimensions: number;
1144
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
1145
+ normalized: boolean;
1146
+ indexed: boolean;
1147
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
1148
+ } | undefined;
1149
+ readonly fileAttachmentConfig?: {
1150
+ virusScan: boolean;
1151
+ virusScanOnUpload: boolean;
1152
+ quarantineOnThreat: boolean;
1153
+ allowMultiple: boolean;
1154
+ allowReplace: boolean;
1155
+ allowDelete: boolean;
1156
+ requireUpload: boolean;
1157
+ extractMetadata: boolean;
1158
+ extractText: boolean;
1159
+ versioningEnabled: boolean;
1160
+ publicRead: boolean;
1161
+ presignedUrlExpiry: number;
1162
+ minSize?: number | undefined;
1163
+ maxSize?: number | undefined;
1164
+ allowedTypes?: string[] | undefined;
1165
+ blockedTypes?: string[] | undefined;
1166
+ allowedMimeTypes?: string[] | undefined;
1167
+ blockedMimeTypes?: string[] | undefined;
1168
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
1169
+ storageProvider?: string | undefined;
1170
+ storageBucket?: string | undefined;
1171
+ storagePrefix?: string | undefined;
1172
+ imageValidation?: {
1173
+ generateThumbnails: boolean;
1174
+ preserveMetadata: boolean;
1175
+ autoRotate: boolean;
1176
+ minWidth?: number | undefined;
1177
+ maxWidth?: number | undefined;
1178
+ minHeight?: number | undefined;
1179
+ maxHeight?: number | undefined;
1180
+ aspectRatio?: string | undefined;
1181
+ thumbnailSizes?: {
1182
+ name: string;
1183
+ width: number;
1184
+ height: number;
1185
+ crop: boolean;
1186
+ }[] | undefined;
1187
+ } | undefined;
1188
+ maxVersions?: number | undefined;
1189
+ } | undefined;
1190
+ readonly maskingRule?: {
1191
+ field: string;
1192
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
1193
+ preserveFormat: boolean;
1194
+ preserveLength: boolean;
1195
+ pattern?: string | undefined;
1196
+ roles?: string[] | undefined;
1197
+ exemptRoles?: string[] | undefined;
1198
+ } | undefined;
1199
+ readonly auditTrail?: boolean | undefined;
1200
+ readonly dependencies?: string[] | undefined;
1201
+ readonly cached?: {
1202
+ enabled: boolean;
1203
+ ttl: number;
1204
+ invalidateOn: string[];
1205
+ } | undefined;
1206
+ readonly dataQuality?: {
1207
+ uniqueness: boolean;
1208
+ completeness: number;
1209
+ accuracy?: {
1210
+ source: string;
1211
+ threshold: number;
1212
+ } | undefined;
1213
+ } | undefined;
1214
+ readonly group?: string | undefined;
1215
+ readonly conditionalRequired?: string | undefined;
1216
+ readonly hidden?: boolean | undefined;
1217
+ readonly sortable?: boolean | undefined;
1218
+ readonly inlineHelpText?: string | undefined;
1219
+ readonly trackFeedHistory?: boolean | undefined;
1220
+ readonly caseSensitive?: boolean | undefined;
1221
+ readonly autonumberFormat?: string | undefined;
1222
+ readonly index?: boolean | undefined;
1223
+ readonly externalId?: boolean | undefined;
1224
+ readonly type: "text";
1225
+ };
1226
+ readonly user_id: {
1227
+ readonly format?: string | undefined;
1228
+ readonly expression?: string | undefined;
1229
+ readonly readonly?: boolean | undefined;
1230
+ readonly defaultValue?: unknown;
1231
+ readonly min?: number | undefined;
1232
+ readonly max?: number | undefined;
1233
+ readonly name?: string | undefined;
1234
+ readonly encryptionConfig?: {
1235
+ enabled: boolean;
1236
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
1237
+ keyManagement: {
1238
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
1239
+ keyId?: string | undefined;
1240
+ rotationPolicy?: {
1241
+ enabled: boolean;
1242
+ frequencyDays: number;
1243
+ retainOldVersions: number;
1244
+ autoRotate: boolean;
1245
+ } | undefined;
1246
+ };
1247
+ scope: "table" | "record" | "field" | "database";
1248
+ deterministicEncryption: boolean;
1249
+ searchableEncryption: boolean;
1250
+ } | undefined;
1251
+ readonly label?: string | undefined;
1252
+ readonly precision?: number | undefined;
1253
+ readonly description?: string | undefined;
1254
+ readonly columnName?: string | undefined;
1255
+ readonly required?: boolean | undefined;
1256
+ readonly searchable?: boolean | undefined;
1257
+ readonly multiple?: boolean | undefined;
1258
+ readonly unique?: boolean | undefined;
1259
+ readonly maxLength?: number | undefined;
1260
+ readonly minLength?: number | undefined;
1261
+ readonly scale?: number | undefined;
1262
+ readonly options?: {
1263
+ label: string;
1264
+ value: string;
1265
+ color?: string | undefined;
1266
+ default?: boolean | undefined;
1267
+ }[] | undefined;
1268
+ readonly reference?: string | undefined;
1269
+ readonly referenceFilters?: string[] | undefined;
1270
+ readonly writeRequiresMasterRead?: boolean | undefined;
1271
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
1272
+ readonly summaryOperations?: {
1273
+ object: string;
1274
+ field: string;
1275
+ function: "count" | "sum" | "avg" | "min" | "max";
1276
+ } | undefined;
1277
+ readonly language?: string | undefined;
1278
+ readonly theme?: string | undefined;
1279
+ readonly lineNumbers?: boolean | undefined;
1280
+ readonly maxRating?: number | undefined;
1281
+ readonly allowHalf?: boolean | undefined;
1282
+ readonly displayMap?: boolean | undefined;
1283
+ readonly allowGeocoding?: boolean | undefined;
1284
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
1285
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
1286
+ readonly allowAlpha?: boolean | undefined;
1287
+ readonly presetColors?: string[] | undefined;
1288
+ readonly step?: number | undefined;
1289
+ readonly showValue?: boolean | undefined;
1290
+ readonly marks?: Record<string, string> | undefined;
1291
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
1292
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
1293
+ readonly displayValue?: boolean | undefined;
1294
+ readonly allowScanning?: boolean | undefined;
1295
+ readonly currencyConfig?: {
1296
+ precision: number;
1297
+ currencyMode: "dynamic" | "fixed";
1298
+ defaultCurrency: string;
1299
+ } | undefined;
1300
+ readonly vectorConfig?: {
1301
+ dimensions: number;
1302
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
1303
+ normalized: boolean;
1304
+ indexed: boolean;
1305
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
1306
+ } | undefined;
1307
+ readonly fileAttachmentConfig?: {
1308
+ virusScan: boolean;
1309
+ virusScanOnUpload: boolean;
1310
+ quarantineOnThreat: boolean;
1311
+ allowMultiple: boolean;
1312
+ allowReplace: boolean;
1313
+ allowDelete: boolean;
1314
+ requireUpload: boolean;
1315
+ extractMetadata: boolean;
1316
+ extractText: boolean;
1317
+ versioningEnabled: boolean;
1318
+ publicRead: boolean;
1319
+ presignedUrlExpiry: number;
1320
+ minSize?: number | undefined;
1321
+ maxSize?: number | undefined;
1322
+ allowedTypes?: string[] | undefined;
1323
+ blockedTypes?: string[] | undefined;
1324
+ allowedMimeTypes?: string[] | undefined;
1325
+ blockedMimeTypes?: string[] | undefined;
1326
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
1327
+ storageProvider?: string | undefined;
1328
+ storageBucket?: string | undefined;
1329
+ storagePrefix?: string | undefined;
1330
+ imageValidation?: {
1331
+ generateThumbnails: boolean;
1332
+ preserveMetadata: boolean;
1333
+ autoRotate: boolean;
1334
+ minWidth?: number | undefined;
1335
+ maxWidth?: number | undefined;
1336
+ minHeight?: number | undefined;
1337
+ maxHeight?: number | undefined;
1338
+ aspectRatio?: string | undefined;
1339
+ thumbnailSizes?: {
1340
+ name: string;
1341
+ width: number;
1342
+ height: number;
1343
+ crop: boolean;
1344
+ }[] | undefined;
1345
+ } | undefined;
1346
+ maxVersions?: number | undefined;
1347
+ } | undefined;
1348
+ readonly maskingRule?: {
1349
+ field: string;
1350
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
1351
+ preserveFormat: boolean;
1352
+ preserveLength: boolean;
1353
+ pattern?: string | undefined;
1354
+ roles?: string[] | undefined;
1355
+ exemptRoles?: string[] | undefined;
1356
+ } | undefined;
1357
+ readonly auditTrail?: boolean | undefined;
1358
+ readonly dependencies?: string[] | undefined;
1359
+ readonly cached?: {
1360
+ enabled: boolean;
1361
+ ttl: number;
1362
+ invalidateOn: string[];
1363
+ } | undefined;
1364
+ readonly dataQuality?: {
1365
+ uniqueness: boolean;
1366
+ completeness: number;
1367
+ accuracy?: {
1368
+ source: string;
1369
+ threshold: number;
1370
+ } | undefined;
1371
+ } | undefined;
1372
+ readonly group?: string | undefined;
1373
+ readonly conditionalRequired?: string | undefined;
1374
+ readonly hidden?: boolean | undefined;
1375
+ readonly sortable?: boolean | undefined;
1376
+ readonly inlineHelpText?: string | undefined;
1377
+ readonly trackFeedHistory?: boolean | undefined;
1378
+ readonly caseSensitive?: boolean | undefined;
1379
+ readonly autonumberFormat?: string | undefined;
1380
+ readonly index?: boolean | undefined;
1381
+ readonly externalId?: boolean | undefined;
1382
+ readonly type: "text";
1383
+ };
1384
+ readonly metadata: {
1385
+ readonly format?: string | undefined;
1386
+ readonly expression?: string | undefined;
1387
+ readonly readonly?: boolean | undefined;
1388
+ readonly defaultValue?: unknown;
1389
+ readonly min?: number | undefined;
1390
+ readonly max?: number | undefined;
1391
+ readonly name?: string | undefined;
1392
+ readonly encryptionConfig?: {
1393
+ enabled: boolean;
1394
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
1395
+ keyManagement: {
1396
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
1397
+ keyId?: string | undefined;
1398
+ rotationPolicy?: {
1399
+ enabled: boolean;
1400
+ frequencyDays: number;
1401
+ retainOldVersions: number;
1402
+ autoRotate: boolean;
1403
+ } | undefined;
1404
+ };
1405
+ scope: "table" | "record" | "field" | "database";
1406
+ deterministicEncryption: boolean;
1407
+ searchableEncryption: boolean;
1408
+ } | undefined;
1409
+ readonly label?: string | undefined;
1410
+ readonly precision?: number | undefined;
1411
+ readonly description?: string | undefined;
1412
+ readonly columnName?: string | undefined;
1413
+ readonly required?: boolean | undefined;
1414
+ readonly searchable?: boolean | undefined;
1415
+ readonly multiple?: boolean | undefined;
1416
+ readonly unique?: boolean | undefined;
1417
+ readonly maxLength?: number | undefined;
1418
+ readonly minLength?: number | undefined;
1419
+ readonly scale?: number | undefined;
1420
+ readonly options?: {
1421
+ label: string;
1422
+ value: string;
1423
+ color?: string | undefined;
1424
+ default?: boolean | undefined;
1425
+ }[] | undefined;
1426
+ readonly reference?: string | undefined;
1427
+ readonly referenceFilters?: string[] | undefined;
1428
+ readonly writeRequiresMasterRead?: boolean | undefined;
1429
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
1430
+ readonly summaryOperations?: {
1431
+ object: string;
1432
+ field: string;
1433
+ function: "count" | "sum" | "avg" | "min" | "max";
1434
+ } | undefined;
1435
+ readonly language?: string | undefined;
1436
+ readonly theme?: string | undefined;
1437
+ readonly lineNumbers?: boolean | undefined;
1438
+ readonly maxRating?: number | undefined;
1439
+ readonly allowHalf?: boolean | undefined;
1440
+ readonly displayMap?: boolean | undefined;
1441
+ readonly allowGeocoding?: boolean | undefined;
1442
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
1443
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
1444
+ readonly allowAlpha?: boolean | undefined;
1445
+ readonly presetColors?: string[] | undefined;
1446
+ readonly step?: number | undefined;
1447
+ readonly showValue?: boolean | undefined;
1448
+ readonly marks?: Record<string, string> | undefined;
1449
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
1450
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
1451
+ readonly displayValue?: boolean | undefined;
1452
+ readonly allowScanning?: boolean | undefined;
1453
+ readonly currencyConfig?: {
1454
+ precision: number;
1455
+ currencyMode: "dynamic" | "fixed";
1456
+ defaultCurrency: string;
1457
+ } | undefined;
1458
+ readonly vectorConfig?: {
1459
+ dimensions: number;
1460
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
1461
+ normalized: boolean;
1462
+ indexed: boolean;
1463
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
1464
+ } | undefined;
1465
+ readonly fileAttachmentConfig?: {
1466
+ virusScan: boolean;
1467
+ virusScanOnUpload: boolean;
1468
+ quarantineOnThreat: boolean;
1469
+ allowMultiple: boolean;
1470
+ allowReplace: boolean;
1471
+ allowDelete: boolean;
1472
+ requireUpload: boolean;
1473
+ extractMetadata: boolean;
1474
+ extractText: boolean;
1475
+ versioningEnabled: boolean;
1476
+ publicRead: boolean;
1477
+ presignedUrlExpiry: number;
1478
+ minSize?: number | undefined;
1479
+ maxSize?: number | undefined;
1480
+ allowedTypes?: string[] | undefined;
1481
+ blockedTypes?: string[] | undefined;
1482
+ allowedMimeTypes?: string[] | undefined;
1483
+ blockedMimeTypes?: string[] | undefined;
1484
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
1485
+ storageProvider?: string | undefined;
1486
+ storageBucket?: string | undefined;
1487
+ storagePrefix?: string | undefined;
1488
+ imageValidation?: {
1489
+ generateThumbnails: boolean;
1490
+ preserveMetadata: boolean;
1491
+ autoRotate: boolean;
1492
+ minWidth?: number | undefined;
1493
+ maxWidth?: number | undefined;
1494
+ minHeight?: number | undefined;
1495
+ maxHeight?: number | undefined;
1496
+ aspectRatio?: string | undefined;
1497
+ thumbnailSizes?: {
1498
+ name: string;
1499
+ width: number;
1500
+ height: number;
1501
+ crop: boolean;
1502
+ }[] | undefined;
1503
+ } | undefined;
1504
+ maxVersions?: number | undefined;
1505
+ } | undefined;
1506
+ readonly maskingRule?: {
1507
+ field: string;
1508
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
1509
+ preserveFormat: boolean;
1510
+ preserveLength: boolean;
1511
+ pattern?: string | undefined;
1512
+ roles?: string[] | undefined;
1513
+ exemptRoles?: string[] | undefined;
1514
+ } | undefined;
1515
+ readonly auditTrail?: boolean | undefined;
1516
+ readonly dependencies?: string[] | undefined;
1517
+ readonly cached?: {
1518
+ enabled: boolean;
1519
+ ttl: number;
1520
+ invalidateOn: string[];
1521
+ } | undefined;
1522
+ readonly dataQuality?: {
1523
+ uniqueness: boolean;
1524
+ completeness: number;
1525
+ accuracy?: {
1526
+ source: string;
1527
+ threshold: number;
1528
+ } | undefined;
1529
+ } | undefined;
1530
+ readonly group?: string | undefined;
1531
+ readonly conditionalRequired?: string | undefined;
1532
+ readonly hidden?: boolean | undefined;
1533
+ readonly sortable?: boolean | undefined;
1534
+ readonly inlineHelpText?: string | undefined;
1535
+ readonly trackFeedHistory?: boolean | undefined;
1536
+ readonly caseSensitive?: boolean | undefined;
1537
+ readonly autonumberFormat?: string | undefined;
1538
+ readonly index?: boolean | undefined;
1539
+ readonly externalId?: boolean | undefined;
1540
+ readonly type: "textarea";
1541
+ };
1542
+ readonly created_at: {
1543
+ readonly format?: string | undefined;
1544
+ readonly expression?: string | undefined;
1545
+ readonly readonly?: boolean | undefined;
1546
+ readonly defaultValue?: unknown;
1547
+ readonly min?: number | undefined;
1548
+ readonly max?: number | undefined;
1549
+ readonly name?: string | undefined;
1550
+ readonly encryptionConfig?: {
1551
+ enabled: boolean;
1552
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
1553
+ keyManagement: {
1554
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
1555
+ keyId?: string | undefined;
1556
+ rotationPolicy?: {
1557
+ enabled: boolean;
1558
+ frequencyDays: number;
1559
+ retainOldVersions: number;
1560
+ autoRotate: boolean;
1561
+ } | undefined;
1562
+ };
1563
+ scope: "table" | "record" | "field" | "database";
1564
+ deterministicEncryption: boolean;
1565
+ searchableEncryption: boolean;
1566
+ } | undefined;
1567
+ readonly label?: string | undefined;
1568
+ readonly precision?: number | undefined;
1569
+ readonly description?: string | undefined;
1570
+ readonly columnName?: string | undefined;
1571
+ readonly required?: boolean | undefined;
1572
+ readonly searchable?: boolean | undefined;
1573
+ readonly multiple?: boolean | undefined;
1574
+ readonly unique?: boolean | undefined;
1575
+ readonly maxLength?: number | undefined;
1576
+ readonly minLength?: number | undefined;
1577
+ readonly scale?: number | undefined;
1578
+ readonly options?: {
1579
+ label: string;
1580
+ value: string;
1581
+ color?: string | undefined;
1582
+ default?: boolean | undefined;
1583
+ }[] | undefined;
1584
+ readonly reference?: string | undefined;
1585
+ readonly referenceFilters?: string[] | undefined;
1586
+ readonly writeRequiresMasterRead?: boolean | undefined;
1587
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
1588
+ readonly summaryOperations?: {
1589
+ object: string;
1590
+ field: string;
1591
+ function: "count" | "sum" | "avg" | "min" | "max";
1592
+ } | undefined;
1593
+ readonly language?: string | undefined;
1594
+ readonly theme?: string | undefined;
1595
+ readonly lineNumbers?: boolean | undefined;
1596
+ readonly maxRating?: number | undefined;
1597
+ readonly allowHalf?: boolean | undefined;
1598
+ readonly displayMap?: boolean | undefined;
1599
+ readonly allowGeocoding?: boolean | undefined;
1600
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
1601
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
1602
+ readonly allowAlpha?: boolean | undefined;
1603
+ readonly presetColors?: string[] | undefined;
1604
+ readonly step?: number | undefined;
1605
+ readonly showValue?: boolean | undefined;
1606
+ readonly marks?: Record<string, string> | undefined;
1607
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
1608
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
1609
+ readonly displayValue?: boolean | undefined;
1610
+ readonly allowScanning?: boolean | undefined;
1611
+ readonly currencyConfig?: {
1612
+ precision: number;
1613
+ currencyMode: "dynamic" | "fixed";
1614
+ defaultCurrency: string;
1615
+ } | undefined;
1616
+ readonly vectorConfig?: {
1617
+ dimensions: number;
1618
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
1619
+ normalized: boolean;
1620
+ indexed: boolean;
1621
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
1622
+ } | undefined;
1623
+ readonly fileAttachmentConfig?: {
1624
+ virusScan: boolean;
1625
+ virusScanOnUpload: boolean;
1626
+ quarantineOnThreat: boolean;
1627
+ allowMultiple: boolean;
1628
+ allowReplace: boolean;
1629
+ allowDelete: boolean;
1630
+ requireUpload: boolean;
1631
+ extractMetadata: boolean;
1632
+ extractText: boolean;
1633
+ versioningEnabled: boolean;
1634
+ publicRead: boolean;
1635
+ presignedUrlExpiry: number;
1636
+ minSize?: number | undefined;
1637
+ maxSize?: number | undefined;
1638
+ allowedTypes?: string[] | undefined;
1639
+ blockedTypes?: string[] | undefined;
1640
+ allowedMimeTypes?: string[] | undefined;
1641
+ blockedMimeTypes?: string[] | undefined;
1642
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
1643
+ storageProvider?: string | undefined;
1644
+ storageBucket?: string | undefined;
1645
+ storagePrefix?: string | undefined;
1646
+ imageValidation?: {
1647
+ generateThumbnails: boolean;
1648
+ preserveMetadata: boolean;
1649
+ autoRotate: boolean;
1650
+ minWidth?: number | undefined;
1651
+ maxWidth?: number | undefined;
1652
+ minHeight?: number | undefined;
1653
+ maxHeight?: number | undefined;
1654
+ aspectRatio?: string | undefined;
1655
+ thumbnailSizes?: {
1656
+ name: string;
1657
+ width: number;
1658
+ height: number;
1659
+ crop: boolean;
1660
+ }[] | undefined;
1661
+ } | undefined;
1662
+ maxVersions?: number | undefined;
1663
+ } | undefined;
1664
+ readonly maskingRule?: {
1665
+ field: string;
1666
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
1667
+ preserveFormat: boolean;
1668
+ preserveLength: boolean;
1669
+ pattern?: string | undefined;
1670
+ roles?: string[] | undefined;
1671
+ exemptRoles?: string[] | undefined;
1672
+ } | undefined;
1673
+ readonly auditTrail?: boolean | undefined;
1674
+ readonly dependencies?: string[] | undefined;
1675
+ readonly cached?: {
1676
+ enabled: boolean;
1677
+ ttl: number;
1678
+ invalidateOn: string[];
1679
+ } | undefined;
1680
+ readonly dataQuality?: {
1681
+ uniqueness: boolean;
1682
+ completeness: number;
1683
+ accuracy?: {
1684
+ source: string;
1685
+ threshold: number;
1686
+ } | undefined;
1687
+ } | undefined;
1688
+ readonly group?: string | undefined;
1689
+ readonly conditionalRequired?: string | undefined;
1690
+ readonly hidden?: boolean | undefined;
1691
+ readonly sortable?: boolean | undefined;
1692
+ readonly inlineHelpText?: string | undefined;
1693
+ readonly trackFeedHistory?: boolean | undefined;
1694
+ readonly caseSensitive?: boolean | undefined;
1695
+ readonly autonumberFormat?: string | undefined;
1696
+ readonly index?: boolean | undefined;
1697
+ readonly externalId?: boolean | undefined;
1698
+ readonly type: "datetime";
1699
+ };
1700
+ readonly updated_at: {
1701
+ readonly format?: string | undefined;
1702
+ readonly expression?: string | undefined;
1703
+ readonly readonly?: boolean | undefined;
1704
+ readonly defaultValue?: unknown;
1705
+ readonly min?: number | undefined;
1706
+ readonly max?: number | undefined;
1707
+ readonly name?: string | undefined;
1708
+ readonly encryptionConfig?: {
1709
+ enabled: boolean;
1710
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
1711
+ keyManagement: {
1712
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
1713
+ keyId?: string | undefined;
1714
+ rotationPolicy?: {
1715
+ enabled: boolean;
1716
+ frequencyDays: number;
1717
+ retainOldVersions: number;
1718
+ autoRotate: boolean;
1719
+ } | undefined;
1720
+ };
1721
+ scope: "table" | "record" | "field" | "database";
1722
+ deterministicEncryption: boolean;
1723
+ searchableEncryption: boolean;
1724
+ } | undefined;
1725
+ readonly label?: string | undefined;
1726
+ readonly precision?: number | undefined;
1727
+ readonly description?: string | undefined;
1728
+ readonly columnName?: string | undefined;
1729
+ readonly required?: boolean | undefined;
1730
+ readonly searchable?: boolean | undefined;
1731
+ readonly multiple?: boolean | undefined;
1732
+ readonly unique?: boolean | undefined;
1733
+ readonly maxLength?: number | undefined;
1734
+ readonly minLength?: number | undefined;
1735
+ readonly scale?: number | undefined;
1736
+ readonly options?: {
1737
+ label: string;
1738
+ value: string;
1739
+ color?: string | undefined;
1740
+ default?: boolean | undefined;
1741
+ }[] | undefined;
1742
+ readonly reference?: string | undefined;
1743
+ readonly referenceFilters?: string[] | undefined;
1744
+ readonly writeRequiresMasterRead?: boolean | undefined;
1745
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
1746
+ readonly summaryOperations?: {
1747
+ object: string;
1748
+ field: string;
1749
+ function: "count" | "sum" | "avg" | "min" | "max";
1750
+ } | undefined;
1751
+ readonly language?: string | undefined;
1752
+ readonly theme?: string | undefined;
1753
+ readonly lineNumbers?: boolean | undefined;
1754
+ readonly maxRating?: number | undefined;
1755
+ readonly allowHalf?: boolean | undefined;
1756
+ readonly displayMap?: boolean | undefined;
1757
+ readonly allowGeocoding?: boolean | undefined;
1758
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
1759
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
1760
+ readonly allowAlpha?: boolean | undefined;
1761
+ readonly presetColors?: string[] | undefined;
1762
+ readonly step?: number | undefined;
1763
+ readonly showValue?: boolean | undefined;
1764
+ readonly marks?: Record<string, string> | undefined;
1765
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
1766
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
1767
+ readonly displayValue?: boolean | undefined;
1768
+ readonly allowScanning?: boolean | undefined;
1769
+ readonly currencyConfig?: {
1770
+ precision: number;
1771
+ currencyMode: "dynamic" | "fixed";
1772
+ defaultCurrency: string;
1773
+ } | undefined;
1774
+ readonly vectorConfig?: {
1775
+ dimensions: number;
1776
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
1777
+ normalized: boolean;
1778
+ indexed: boolean;
1779
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
1780
+ } | undefined;
1781
+ readonly fileAttachmentConfig?: {
1782
+ virusScan: boolean;
1783
+ virusScanOnUpload: boolean;
1784
+ quarantineOnThreat: boolean;
1785
+ allowMultiple: boolean;
1786
+ allowReplace: boolean;
1787
+ allowDelete: boolean;
1788
+ requireUpload: boolean;
1789
+ extractMetadata: boolean;
1790
+ extractText: boolean;
1791
+ versioningEnabled: boolean;
1792
+ publicRead: boolean;
1793
+ presignedUrlExpiry: number;
1794
+ minSize?: number | undefined;
1795
+ maxSize?: number | undefined;
1796
+ allowedTypes?: string[] | undefined;
1797
+ blockedTypes?: string[] | undefined;
1798
+ allowedMimeTypes?: string[] | undefined;
1799
+ blockedMimeTypes?: string[] | undefined;
1800
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
1801
+ storageProvider?: string | undefined;
1802
+ storageBucket?: string | undefined;
1803
+ storagePrefix?: string | undefined;
1804
+ imageValidation?: {
1805
+ generateThumbnails: boolean;
1806
+ preserveMetadata: boolean;
1807
+ autoRotate: boolean;
1808
+ minWidth?: number | undefined;
1809
+ maxWidth?: number | undefined;
1810
+ minHeight?: number | undefined;
1811
+ maxHeight?: number | undefined;
1812
+ aspectRatio?: string | undefined;
1813
+ thumbnailSizes?: {
1814
+ name: string;
1815
+ width: number;
1816
+ height: number;
1817
+ crop: boolean;
1818
+ }[] | undefined;
1819
+ } | undefined;
1820
+ maxVersions?: number | undefined;
1821
+ } | undefined;
1822
+ readonly maskingRule?: {
1823
+ field: string;
1824
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
1825
+ preserveFormat: boolean;
1826
+ preserveLength: boolean;
1827
+ pattern?: string | undefined;
1828
+ roles?: string[] | undefined;
1829
+ exemptRoles?: string[] | undefined;
1830
+ } | undefined;
1831
+ readonly auditTrail?: boolean | undefined;
1832
+ readonly dependencies?: string[] | undefined;
1833
+ readonly cached?: {
1834
+ enabled: boolean;
1835
+ ttl: number;
1836
+ invalidateOn: string[];
1837
+ } | undefined;
1838
+ readonly dataQuality?: {
1839
+ uniqueness: boolean;
1840
+ completeness: number;
1841
+ accuracy?: {
1842
+ source: string;
1843
+ threshold: number;
1844
+ } | undefined;
1845
+ } | undefined;
1846
+ readonly group?: string | undefined;
1847
+ readonly conditionalRequired?: string | undefined;
1848
+ readonly hidden?: boolean | undefined;
1849
+ readonly sortable?: boolean | undefined;
1850
+ readonly inlineHelpText?: string | undefined;
1851
+ readonly trackFeedHistory?: boolean | undefined;
1852
+ readonly caseSensitive?: boolean | undefined;
1853
+ readonly autonumberFormat?: string | undefined;
1854
+ readonly index?: boolean | undefined;
1855
+ readonly externalId?: boolean | undefined;
1856
+ readonly type: "datetime";
1857
+ };
1858
+ };
1859
+ readonly indexes: [{
1860
+ readonly fields: ["user_id"];
1861
+ }, {
1862
+ readonly fields: ["agent_id"];
1863
+ }, {
1864
+ readonly fields: ["created_at"];
1865
+ }];
1866
+ readonly enable: {
1867
+ readonly trackHistory: false;
1868
+ readonly searchable: false;
1869
+ readonly apiEnabled: true;
1870
+ readonly apiMethods: ["get", "list", "create", "update", "delete"];
1871
+ readonly trash: false;
1872
+ readonly mru: false;
1873
+ };
1874
+ }, "fields">;
1875
+
1876
+ /**
1877
+ * ai_messages — AI Message Object
1878
+ *
1879
+ * Stores individual messages within an AI conversation.
1880
+ * Each message belongs to a conversation via `conversation_id` foreign key.
1881
+ *
1882
+ * @namespace ai
1883
+ */
1884
+ declare const AiMessageObject: Omit<{
1885
+ name: string;
1886
+ active: boolean;
1887
+ isSystem: boolean;
1888
+ abstract: boolean;
1889
+ datasource: string;
1890
+ fields: Record<string, {
1891
+ type: "number" | "boolean" | "file" | "json" | "text" | "avatar" | "vector" | "date" | "tags" | "lookup" | "url" | "textarea" | "email" | "phone" | "password" | "markdown" | "html" | "richtext" | "currency" | "percent" | "datetime" | "time" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "master_detail" | "tree" | "image" | "video" | "audio" | "formula" | "summary" | "autonumber" | "location" | "address" | "code" | "color" | "rating" | "slider" | "signature" | "qrcode" | "progress";
1892
+ required: boolean;
1893
+ searchable: boolean;
1894
+ multiple: boolean;
1895
+ unique: boolean;
1896
+ deleteBehavior: "set_null" | "cascade" | "restrict";
1897
+ auditTrail: boolean;
1898
+ hidden: boolean;
1899
+ readonly: boolean;
1900
+ sortable: boolean;
1901
+ index: boolean;
1902
+ externalId: boolean;
1903
+ name?: string | undefined;
1904
+ label?: string | undefined;
1905
+ description?: string | undefined;
1906
+ format?: string | undefined;
1907
+ columnName?: string | undefined;
1908
+ defaultValue?: unknown;
1909
+ maxLength?: number | undefined;
1910
+ minLength?: number | undefined;
1911
+ precision?: number | undefined;
1912
+ scale?: number | undefined;
1913
+ min?: number | undefined;
1914
+ max?: number | undefined;
1915
+ options?: {
1916
+ label: string;
1917
+ value: string;
1918
+ color?: string | undefined;
1919
+ default?: boolean | undefined;
1920
+ }[] | undefined;
1921
+ reference?: string | undefined;
1922
+ referenceFilters?: string[] | undefined;
1923
+ writeRequiresMasterRead?: boolean | undefined;
1924
+ expression?: string | undefined;
1925
+ summaryOperations?: {
1926
+ object: string;
1927
+ field: string;
1928
+ function: "count" | "sum" | "avg" | "min" | "max";
1929
+ } | undefined;
1930
+ language?: string | undefined;
1931
+ theme?: string | undefined;
1932
+ lineNumbers?: boolean | undefined;
1933
+ maxRating?: number | undefined;
1934
+ allowHalf?: boolean | undefined;
1935
+ displayMap?: boolean | undefined;
1936
+ allowGeocoding?: boolean | undefined;
1937
+ addressFormat?: "us" | "uk" | "international" | undefined;
1938
+ colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
1939
+ allowAlpha?: boolean | undefined;
1940
+ presetColors?: string[] | undefined;
1941
+ step?: number | undefined;
1942
+ showValue?: boolean | undefined;
1943
+ marks?: Record<string, string> | undefined;
1944
+ barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
1945
+ qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
1946
+ displayValue?: boolean | undefined;
1947
+ allowScanning?: boolean | undefined;
1948
+ currencyConfig?: {
1949
+ precision: number;
1950
+ currencyMode: "dynamic" | "fixed";
1951
+ defaultCurrency: string;
1952
+ } | undefined;
1953
+ vectorConfig?: {
1954
+ dimensions: number;
1955
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
1956
+ normalized: boolean;
1957
+ indexed: boolean;
1958
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
1959
+ } | undefined;
1960
+ fileAttachmentConfig?: {
1961
+ virusScan: boolean;
1962
+ virusScanOnUpload: boolean;
1963
+ quarantineOnThreat: boolean;
1964
+ allowMultiple: boolean;
1965
+ allowReplace: boolean;
1966
+ allowDelete: boolean;
1967
+ requireUpload: boolean;
1968
+ extractMetadata: boolean;
1969
+ extractText: boolean;
1970
+ versioningEnabled: boolean;
1971
+ publicRead: boolean;
1972
+ presignedUrlExpiry: number;
1973
+ minSize?: number | undefined;
1974
+ maxSize?: number | undefined;
1975
+ allowedTypes?: string[] | undefined;
1976
+ blockedTypes?: string[] | undefined;
1977
+ allowedMimeTypes?: string[] | undefined;
1978
+ blockedMimeTypes?: string[] | undefined;
1979
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
1980
+ storageProvider?: string | undefined;
1981
+ storageBucket?: string | undefined;
1982
+ storagePrefix?: string | undefined;
1983
+ imageValidation?: {
1984
+ generateThumbnails: boolean;
1985
+ preserveMetadata: boolean;
1986
+ autoRotate: boolean;
1987
+ minWidth?: number | undefined;
1988
+ maxWidth?: number | undefined;
1989
+ minHeight?: number | undefined;
1990
+ maxHeight?: number | undefined;
1991
+ aspectRatio?: string | undefined;
1992
+ thumbnailSizes?: {
1993
+ name: string;
1994
+ width: number;
1995
+ height: number;
1996
+ crop: boolean;
1997
+ }[] | undefined;
1998
+ } | undefined;
1999
+ maxVersions?: number | undefined;
2000
+ } | undefined;
2001
+ encryptionConfig?: {
2002
+ enabled: boolean;
2003
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2004
+ keyManagement: {
2005
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2006
+ keyId?: string | undefined;
2007
+ rotationPolicy?: {
2008
+ enabled: boolean;
2009
+ frequencyDays: number;
2010
+ retainOldVersions: number;
2011
+ autoRotate: boolean;
2012
+ } | undefined;
2013
+ };
2014
+ scope: "database" | "field" | "record" | "table";
2015
+ deterministicEncryption: boolean;
2016
+ searchableEncryption: boolean;
2017
+ } | undefined;
2018
+ maskingRule?: {
2019
+ field: string;
2020
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
2021
+ preserveFormat: boolean;
2022
+ preserveLength: boolean;
2023
+ pattern?: string | undefined;
2024
+ roles?: string[] | undefined;
2025
+ exemptRoles?: string[] | undefined;
2026
+ } | undefined;
2027
+ dependencies?: string[] | undefined;
2028
+ cached?: {
2029
+ enabled: boolean;
2030
+ ttl: number;
2031
+ invalidateOn: string[];
2032
+ } | undefined;
2033
+ dataQuality?: {
2034
+ uniqueness: boolean;
2035
+ completeness: number;
2036
+ accuracy?: {
2037
+ source: string;
2038
+ threshold: number;
2039
+ } | undefined;
2040
+ } | undefined;
2041
+ group?: string | undefined;
2042
+ conditionalRequired?: string | undefined;
2043
+ inlineHelpText?: string | undefined;
2044
+ trackFeedHistory?: boolean | undefined;
2045
+ caseSensitive?: boolean | undefined;
2046
+ autonumberFormat?: string | undefined;
2047
+ }>;
2048
+ label?: string | undefined;
2049
+ pluralLabel?: string | undefined;
2050
+ description?: string | undefined;
2051
+ icon?: string | undefined;
2052
+ namespace?: string | undefined;
2053
+ tags?: string[] | undefined;
2054
+ tableName?: string | undefined;
2055
+ indexes?: {
2056
+ fields: string[];
2057
+ type: "hash" | "btree" | "gin" | "gist" | "fulltext";
2058
+ unique: boolean;
2059
+ name?: string | undefined;
2060
+ partial?: string | undefined;
2061
+ }[] | undefined;
2062
+ tenancy?: {
2063
+ enabled: boolean;
2064
+ strategy: "shared" | "isolated" | "hybrid";
2065
+ tenantField: string;
2066
+ crossTenantAccess: boolean;
2067
+ } | undefined;
2068
+ softDelete?: {
2069
+ enabled: boolean;
2070
+ field: string;
2071
+ cascadeDelete: boolean;
2072
+ } | undefined;
2073
+ versioning?: {
2074
+ enabled: boolean;
2075
+ strategy: "snapshot" | "delta" | "event-sourcing";
2076
+ versionField: string;
2077
+ retentionDays?: number | undefined;
2078
+ } | undefined;
2079
+ partitioning?: {
2080
+ enabled: boolean;
2081
+ strategy: "hash" | "range" | "list";
2082
+ key: string;
2083
+ interval?: string | undefined;
2084
+ } | undefined;
2085
+ cdc?: {
2086
+ enabled: boolean;
2087
+ events: ("update" | "delete" | "insert")[];
2088
+ destination: string;
2089
+ } | undefined;
2090
+ validations?: _objectstack_spec_data.BaseValidationRuleShape[] | undefined;
2091
+ stateMachines?: Record<string, {
2092
+ id: string;
2093
+ initial: string;
2094
+ states: Record<string, StateNodeConfig>;
2095
+ description?: string | undefined;
2096
+ contextSchema?: Record<string, unknown> | undefined;
2097
+ on?: Record<string, string | {
2098
+ target?: string | undefined;
2099
+ cond?: string | {
2100
+ type: string;
2101
+ params?: Record<string, unknown> | undefined;
2102
+ } | undefined;
2103
+ actions?: (string | {
2104
+ type: string;
2105
+ params?: Record<string, unknown> | undefined;
2106
+ })[] | undefined;
2107
+ description?: string | undefined;
2108
+ } | {
2109
+ target?: string | undefined;
2110
+ cond?: string | {
2111
+ type: string;
2112
+ params?: Record<string, unknown> | undefined;
2113
+ } | undefined;
2114
+ actions?: (string | {
2115
+ type: string;
2116
+ params?: Record<string, unknown> | undefined;
2117
+ })[] | undefined;
2118
+ description?: string | undefined;
2119
+ }[]> | undefined;
2120
+ }> | undefined;
2121
+ displayNameField?: string | undefined;
2122
+ recordName?: {
2123
+ type: "text" | "autonumber";
2124
+ displayFormat?: string | undefined;
2125
+ startNumber?: number | undefined;
2126
+ } | undefined;
2127
+ titleFormat?: string | undefined;
2128
+ compactLayout?: string[] | undefined;
2129
+ search?: {
2130
+ fields: string[];
2131
+ displayFields?: string[] | undefined;
2132
+ filters?: string[] | undefined;
2133
+ } | undefined;
2134
+ enable?: {
2135
+ trackHistory: boolean;
2136
+ searchable: boolean;
2137
+ apiEnabled: boolean;
2138
+ files: boolean;
2139
+ feeds: boolean;
2140
+ activities: boolean;
2141
+ trash: boolean;
2142
+ mru: boolean;
2143
+ clone: boolean;
2144
+ apiMethods?: ("search" | "upsert" | "list" | "update" | "delete" | "history" | "get" | "create" | "bulk" | "aggregate" | "restore" | "purge" | "import" | "export")[] | undefined;
2145
+ } | undefined;
2146
+ recordTypes?: string[] | undefined;
2147
+ sharingModel?: "private" | "full" | "read" | "read_write" | undefined;
2148
+ keyPrefix?: string | undefined;
2149
+ actions?: {
2150
+ name: string;
2151
+ label: string | {
2152
+ key: string;
2153
+ defaultValue?: string | undefined;
2154
+ params?: Record<string, string | number | boolean> | undefined;
2155
+ };
2156
+ type: "url" | "script" | "modal" | "flow" | "api";
2157
+ refreshAfter: boolean;
2158
+ objectName?: string | undefined;
2159
+ icon?: string | undefined;
2160
+ locations?: ("list_toolbar" | "list_item" | "record_header" | "record_more" | "record_related" | "global_nav")[] | undefined;
2161
+ component?: "action:button" | "action:icon" | "action:menu" | "action:group" | undefined;
2162
+ target?: string | undefined;
2163
+ execute?: string | undefined;
2164
+ params?: {
2165
+ name: string;
2166
+ label: string | {
2167
+ key: string;
2168
+ defaultValue?: string | undefined;
2169
+ params?: Record<string, string | number | boolean> | undefined;
2170
+ };
2171
+ type: "number" | "boolean" | "date" | "lookup" | "file" | "url" | "json" | "text" | "textarea" | "email" | "phone" | "password" | "markdown" | "html" | "richtext" | "currency" | "percent" | "datetime" | "time" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "master_detail" | "tree" | "image" | "avatar" | "video" | "audio" | "formula" | "summary" | "autonumber" | "location" | "address" | "code" | "color" | "rating" | "slider" | "signature" | "qrcode" | "progress" | "tags" | "vector";
2172
+ required: boolean;
2173
+ options?: {
2174
+ label: string | {
2175
+ key: string;
2176
+ defaultValue?: string | undefined;
2177
+ params?: Record<string, string | number | boolean> | undefined;
2178
+ };
2179
+ value: string;
2180
+ }[] | undefined;
2181
+ }[] | undefined;
2182
+ variant?: "link" | "primary" | "secondary" | "danger" | "ghost" | undefined;
2183
+ confirmText?: string | {
2184
+ key: string;
2185
+ defaultValue?: string | undefined;
2186
+ params?: Record<string, string | number | boolean> | undefined;
2187
+ } | undefined;
2188
+ successMessage?: string | {
2189
+ key: string;
2190
+ defaultValue?: string | undefined;
2191
+ params?: Record<string, string | number | boolean> | undefined;
2192
+ } | undefined;
2193
+ visible?: string | undefined;
2194
+ disabled?: string | boolean | undefined;
2195
+ shortcut?: string | undefined;
2196
+ bulkEnabled?: boolean | undefined;
2197
+ timeout?: number | undefined;
2198
+ aria?: {
2199
+ ariaLabel?: string | {
2200
+ key: string;
2201
+ defaultValue?: string | undefined;
2202
+ params?: Record<string, string | number | boolean> | undefined;
2203
+ } | undefined;
2204
+ ariaDescribedBy?: string | undefined;
2205
+ role?: string | undefined;
2206
+ } | undefined;
2207
+ }[] | undefined;
2208
+ }, "fields"> & Pick<{
2209
+ readonly namespace: "ai";
2210
+ readonly name: "messages";
2211
+ readonly label: "AI Message";
2212
+ readonly pluralLabel: "AI Messages";
2213
+ readonly icon: "message-circle";
2214
+ readonly isSystem: true;
2215
+ readonly description: "Individual messages within AI conversations";
2216
+ readonly fields: {
2217
+ readonly id: {
2218
+ readonly format?: string | undefined;
2219
+ readonly expression?: string | undefined;
2220
+ readonly readonly?: boolean | undefined;
2221
+ readonly defaultValue?: unknown;
2222
+ readonly min?: number | undefined;
2223
+ readonly max?: number | undefined;
2224
+ readonly name?: string | undefined;
2225
+ readonly encryptionConfig?: {
2226
+ enabled: boolean;
2227
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2228
+ keyManagement: {
2229
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2230
+ keyId?: string | undefined;
2231
+ rotationPolicy?: {
2232
+ enabled: boolean;
2233
+ frequencyDays: number;
2234
+ retainOldVersions: number;
2235
+ autoRotate: boolean;
2236
+ } | undefined;
2237
+ };
2238
+ scope: "table" | "record" | "field" | "database";
2239
+ deterministicEncryption: boolean;
2240
+ searchableEncryption: boolean;
2241
+ } | undefined;
2242
+ readonly label?: string | undefined;
2243
+ readonly precision?: number | undefined;
2244
+ readonly description?: string | undefined;
2245
+ readonly columnName?: string | undefined;
2246
+ readonly required?: boolean | undefined;
2247
+ readonly searchable?: boolean | undefined;
2248
+ readonly multiple?: boolean | undefined;
2249
+ readonly unique?: boolean | undefined;
2250
+ readonly maxLength?: number | undefined;
2251
+ readonly minLength?: number | undefined;
2252
+ readonly scale?: number | undefined;
2253
+ readonly options?: {
2254
+ label: string;
2255
+ value: string;
2256
+ color?: string | undefined;
2257
+ default?: boolean | undefined;
2258
+ }[] | undefined;
2259
+ readonly reference?: string | undefined;
2260
+ readonly referenceFilters?: string[] | undefined;
2261
+ readonly writeRequiresMasterRead?: boolean | undefined;
2262
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
2263
+ readonly summaryOperations?: {
2264
+ object: string;
2265
+ field: string;
2266
+ function: "count" | "sum" | "avg" | "min" | "max";
2267
+ } | undefined;
2268
+ readonly language?: string | undefined;
2269
+ readonly theme?: string | undefined;
2270
+ readonly lineNumbers?: boolean | undefined;
2271
+ readonly maxRating?: number | undefined;
2272
+ readonly allowHalf?: boolean | undefined;
2273
+ readonly displayMap?: boolean | undefined;
2274
+ readonly allowGeocoding?: boolean | undefined;
2275
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
2276
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
2277
+ readonly allowAlpha?: boolean | undefined;
2278
+ readonly presetColors?: string[] | undefined;
2279
+ readonly step?: number | undefined;
2280
+ readonly showValue?: boolean | undefined;
2281
+ readonly marks?: Record<string, string> | undefined;
2282
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
2283
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
2284
+ readonly displayValue?: boolean | undefined;
2285
+ readonly allowScanning?: boolean | undefined;
2286
+ readonly currencyConfig?: {
2287
+ precision: number;
2288
+ currencyMode: "dynamic" | "fixed";
2289
+ defaultCurrency: string;
2290
+ } | undefined;
2291
+ readonly vectorConfig?: {
2292
+ dimensions: number;
2293
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
2294
+ normalized: boolean;
2295
+ indexed: boolean;
2296
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
2297
+ } | undefined;
2298
+ readonly fileAttachmentConfig?: {
2299
+ virusScan: boolean;
2300
+ virusScanOnUpload: boolean;
2301
+ quarantineOnThreat: boolean;
2302
+ allowMultiple: boolean;
2303
+ allowReplace: boolean;
2304
+ allowDelete: boolean;
2305
+ requireUpload: boolean;
2306
+ extractMetadata: boolean;
2307
+ extractText: boolean;
2308
+ versioningEnabled: boolean;
2309
+ publicRead: boolean;
2310
+ presignedUrlExpiry: number;
2311
+ minSize?: number | undefined;
2312
+ maxSize?: number | undefined;
2313
+ allowedTypes?: string[] | undefined;
2314
+ blockedTypes?: string[] | undefined;
2315
+ allowedMimeTypes?: string[] | undefined;
2316
+ blockedMimeTypes?: string[] | undefined;
2317
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
2318
+ storageProvider?: string | undefined;
2319
+ storageBucket?: string | undefined;
2320
+ storagePrefix?: string | undefined;
2321
+ imageValidation?: {
2322
+ generateThumbnails: boolean;
2323
+ preserveMetadata: boolean;
2324
+ autoRotate: boolean;
2325
+ minWidth?: number | undefined;
2326
+ maxWidth?: number | undefined;
2327
+ minHeight?: number | undefined;
2328
+ maxHeight?: number | undefined;
2329
+ aspectRatio?: string | undefined;
2330
+ thumbnailSizes?: {
2331
+ name: string;
2332
+ width: number;
2333
+ height: number;
2334
+ crop: boolean;
2335
+ }[] | undefined;
2336
+ } | undefined;
2337
+ maxVersions?: number | undefined;
2338
+ } | undefined;
2339
+ readonly maskingRule?: {
2340
+ field: string;
2341
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
2342
+ preserveFormat: boolean;
2343
+ preserveLength: boolean;
2344
+ pattern?: string | undefined;
2345
+ roles?: string[] | undefined;
2346
+ exemptRoles?: string[] | undefined;
2347
+ } | undefined;
2348
+ readonly auditTrail?: boolean | undefined;
2349
+ readonly dependencies?: string[] | undefined;
2350
+ readonly cached?: {
2351
+ enabled: boolean;
2352
+ ttl: number;
2353
+ invalidateOn: string[];
2354
+ } | undefined;
2355
+ readonly dataQuality?: {
2356
+ uniqueness: boolean;
2357
+ completeness: number;
2358
+ accuracy?: {
2359
+ source: string;
2360
+ threshold: number;
2361
+ } | undefined;
2362
+ } | undefined;
2363
+ readonly group?: string | undefined;
2364
+ readonly conditionalRequired?: string | undefined;
2365
+ readonly hidden?: boolean | undefined;
2366
+ readonly sortable?: boolean | undefined;
2367
+ readonly inlineHelpText?: string | undefined;
2368
+ readonly trackFeedHistory?: boolean | undefined;
2369
+ readonly caseSensitive?: boolean | undefined;
2370
+ readonly autonumberFormat?: string | undefined;
2371
+ readonly index?: boolean | undefined;
2372
+ readonly externalId?: boolean | undefined;
2373
+ readonly type: "text";
2374
+ };
2375
+ readonly conversation_id: {
2376
+ readonly format?: string | undefined;
2377
+ readonly expression?: string | undefined;
2378
+ readonly readonly?: boolean | undefined;
2379
+ readonly defaultValue?: unknown;
2380
+ readonly min?: number | undefined;
2381
+ readonly max?: number | undefined;
2382
+ readonly name?: string | undefined;
2383
+ readonly encryptionConfig?: {
2384
+ enabled: boolean;
2385
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2386
+ keyManagement: {
2387
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2388
+ keyId?: string | undefined;
2389
+ rotationPolicy?: {
2390
+ enabled: boolean;
2391
+ frequencyDays: number;
2392
+ retainOldVersions: number;
2393
+ autoRotate: boolean;
2394
+ } | undefined;
2395
+ };
2396
+ scope: "table" | "record" | "field" | "database";
2397
+ deterministicEncryption: boolean;
2398
+ searchableEncryption: boolean;
2399
+ } | undefined;
2400
+ readonly label?: string | undefined;
2401
+ readonly precision?: number | undefined;
2402
+ readonly description?: string | undefined;
2403
+ readonly columnName?: string | undefined;
2404
+ readonly required?: boolean | undefined;
2405
+ readonly searchable?: boolean | undefined;
2406
+ readonly multiple?: boolean | undefined;
2407
+ readonly unique?: boolean | undefined;
2408
+ readonly maxLength?: number | undefined;
2409
+ readonly minLength?: number | undefined;
2410
+ readonly scale?: number | undefined;
2411
+ readonly options?: {
2412
+ label: string;
2413
+ value: string;
2414
+ color?: string | undefined;
2415
+ default?: boolean | undefined;
2416
+ }[] | undefined;
2417
+ readonly reference?: string | undefined;
2418
+ readonly referenceFilters?: string[] | undefined;
2419
+ readonly writeRequiresMasterRead?: boolean | undefined;
2420
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
2421
+ readonly summaryOperations?: {
2422
+ object: string;
2423
+ field: string;
2424
+ function: "count" | "sum" | "avg" | "min" | "max";
2425
+ } | undefined;
2426
+ readonly language?: string | undefined;
2427
+ readonly theme?: string | undefined;
2428
+ readonly lineNumbers?: boolean | undefined;
2429
+ readonly maxRating?: number | undefined;
2430
+ readonly allowHalf?: boolean | undefined;
2431
+ readonly displayMap?: boolean | undefined;
2432
+ readonly allowGeocoding?: boolean | undefined;
2433
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
2434
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
2435
+ readonly allowAlpha?: boolean | undefined;
2436
+ readonly presetColors?: string[] | undefined;
2437
+ readonly step?: number | undefined;
2438
+ readonly showValue?: boolean | undefined;
2439
+ readonly marks?: Record<string, string> | undefined;
2440
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
2441
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
2442
+ readonly displayValue?: boolean | undefined;
2443
+ readonly allowScanning?: boolean | undefined;
2444
+ readonly currencyConfig?: {
2445
+ precision: number;
2446
+ currencyMode: "dynamic" | "fixed";
2447
+ defaultCurrency: string;
2448
+ } | undefined;
2449
+ readonly vectorConfig?: {
2450
+ dimensions: number;
2451
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
2452
+ normalized: boolean;
2453
+ indexed: boolean;
2454
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
2455
+ } | undefined;
2456
+ readonly fileAttachmentConfig?: {
2457
+ virusScan: boolean;
2458
+ virusScanOnUpload: boolean;
2459
+ quarantineOnThreat: boolean;
2460
+ allowMultiple: boolean;
2461
+ allowReplace: boolean;
2462
+ allowDelete: boolean;
2463
+ requireUpload: boolean;
2464
+ extractMetadata: boolean;
2465
+ extractText: boolean;
2466
+ versioningEnabled: boolean;
2467
+ publicRead: boolean;
2468
+ presignedUrlExpiry: number;
2469
+ minSize?: number | undefined;
2470
+ maxSize?: number | undefined;
2471
+ allowedTypes?: string[] | undefined;
2472
+ blockedTypes?: string[] | undefined;
2473
+ allowedMimeTypes?: string[] | undefined;
2474
+ blockedMimeTypes?: string[] | undefined;
2475
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
2476
+ storageProvider?: string | undefined;
2477
+ storageBucket?: string | undefined;
2478
+ storagePrefix?: string | undefined;
2479
+ imageValidation?: {
2480
+ generateThumbnails: boolean;
2481
+ preserveMetadata: boolean;
2482
+ autoRotate: boolean;
2483
+ minWidth?: number | undefined;
2484
+ maxWidth?: number | undefined;
2485
+ minHeight?: number | undefined;
2486
+ maxHeight?: number | undefined;
2487
+ aspectRatio?: string | undefined;
2488
+ thumbnailSizes?: {
2489
+ name: string;
2490
+ width: number;
2491
+ height: number;
2492
+ crop: boolean;
2493
+ }[] | undefined;
2494
+ } | undefined;
2495
+ maxVersions?: number | undefined;
2496
+ } | undefined;
2497
+ readonly maskingRule?: {
2498
+ field: string;
2499
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
2500
+ preserveFormat: boolean;
2501
+ preserveLength: boolean;
2502
+ pattern?: string | undefined;
2503
+ roles?: string[] | undefined;
2504
+ exemptRoles?: string[] | undefined;
2505
+ } | undefined;
2506
+ readonly auditTrail?: boolean | undefined;
2507
+ readonly dependencies?: string[] | undefined;
2508
+ readonly cached?: {
2509
+ enabled: boolean;
2510
+ ttl: number;
2511
+ invalidateOn: string[];
2512
+ } | undefined;
2513
+ readonly dataQuality?: {
2514
+ uniqueness: boolean;
2515
+ completeness: number;
2516
+ accuracy?: {
2517
+ source: string;
2518
+ threshold: number;
2519
+ } | undefined;
2520
+ } | undefined;
2521
+ readonly group?: string | undefined;
2522
+ readonly conditionalRequired?: string | undefined;
2523
+ readonly hidden?: boolean | undefined;
2524
+ readonly sortable?: boolean | undefined;
2525
+ readonly inlineHelpText?: string | undefined;
2526
+ readonly trackFeedHistory?: boolean | undefined;
2527
+ readonly caseSensitive?: boolean | undefined;
2528
+ readonly autonumberFormat?: string | undefined;
2529
+ readonly index?: boolean | undefined;
2530
+ readonly externalId?: boolean | undefined;
2531
+ readonly type: "text";
2532
+ };
2533
+ readonly role: {
2534
+ readonly format?: string | undefined;
2535
+ readonly expression?: string | undefined;
2536
+ readonly readonly?: boolean | undefined;
2537
+ readonly defaultValue?: unknown;
2538
+ readonly min?: number | undefined;
2539
+ readonly max?: number | undefined;
2540
+ readonly name?: string | undefined;
2541
+ readonly encryptionConfig?: {
2542
+ enabled: boolean;
2543
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2544
+ keyManagement: {
2545
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2546
+ keyId?: string | undefined;
2547
+ rotationPolicy?: {
2548
+ enabled: boolean;
2549
+ frequencyDays: number;
2550
+ retainOldVersions: number;
2551
+ autoRotate: boolean;
2552
+ } | undefined;
2553
+ };
2554
+ scope: "table" | "record" | "field" | "database";
2555
+ deterministicEncryption: boolean;
2556
+ searchableEncryption: boolean;
2557
+ } | undefined;
2558
+ readonly label?: string | undefined;
2559
+ readonly precision?: number | undefined;
2560
+ readonly description?: string | undefined;
2561
+ readonly columnName?: string | undefined;
2562
+ readonly required?: boolean | undefined;
2563
+ readonly searchable?: boolean | undefined;
2564
+ readonly multiple?: boolean | undefined;
2565
+ readonly unique?: boolean | undefined;
2566
+ readonly maxLength?: number | undefined;
2567
+ readonly minLength?: number | undefined;
2568
+ readonly scale?: number | undefined;
2569
+ options: {
2570
+ label: string;
2571
+ value: string;
2572
+ color?: string | undefined;
2573
+ default?: boolean | undefined;
2574
+ }[];
2575
+ readonly reference?: string | undefined;
2576
+ readonly referenceFilters?: string[] | undefined;
2577
+ readonly writeRequiresMasterRead?: boolean | undefined;
2578
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
2579
+ readonly summaryOperations?: {
2580
+ object: string;
2581
+ field: string;
2582
+ function: "count" | "sum" | "avg" | "min" | "max";
2583
+ } | undefined;
2584
+ readonly language?: string | undefined;
2585
+ readonly theme?: string | undefined;
2586
+ readonly lineNumbers?: boolean | undefined;
2587
+ readonly maxRating?: number | undefined;
2588
+ readonly allowHalf?: boolean | undefined;
2589
+ readonly displayMap?: boolean | undefined;
2590
+ readonly allowGeocoding?: boolean | undefined;
2591
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
2592
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
2593
+ readonly allowAlpha?: boolean | undefined;
2594
+ readonly presetColors?: string[] | undefined;
2595
+ readonly step?: number | undefined;
2596
+ readonly showValue?: boolean | undefined;
2597
+ readonly marks?: Record<string, string> | undefined;
2598
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
2599
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
2600
+ readonly displayValue?: boolean | undefined;
2601
+ readonly allowScanning?: boolean | undefined;
2602
+ readonly currencyConfig?: {
2603
+ precision: number;
2604
+ currencyMode: "dynamic" | "fixed";
2605
+ defaultCurrency: string;
2606
+ } | undefined;
2607
+ readonly vectorConfig?: {
2608
+ dimensions: number;
2609
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
2610
+ normalized: boolean;
2611
+ indexed: boolean;
2612
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
2613
+ } | undefined;
2614
+ readonly fileAttachmentConfig?: {
2615
+ virusScan: boolean;
2616
+ virusScanOnUpload: boolean;
2617
+ quarantineOnThreat: boolean;
2618
+ allowMultiple: boolean;
2619
+ allowReplace: boolean;
2620
+ allowDelete: boolean;
2621
+ requireUpload: boolean;
2622
+ extractMetadata: boolean;
2623
+ extractText: boolean;
2624
+ versioningEnabled: boolean;
2625
+ publicRead: boolean;
2626
+ presignedUrlExpiry: number;
2627
+ minSize?: number | undefined;
2628
+ maxSize?: number | undefined;
2629
+ allowedTypes?: string[] | undefined;
2630
+ blockedTypes?: string[] | undefined;
2631
+ allowedMimeTypes?: string[] | undefined;
2632
+ blockedMimeTypes?: string[] | undefined;
2633
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
2634
+ storageProvider?: string | undefined;
2635
+ storageBucket?: string | undefined;
2636
+ storagePrefix?: string | undefined;
2637
+ imageValidation?: {
2638
+ generateThumbnails: boolean;
2639
+ preserveMetadata: boolean;
2640
+ autoRotate: boolean;
2641
+ minWidth?: number | undefined;
2642
+ maxWidth?: number | undefined;
2643
+ minHeight?: number | undefined;
2644
+ maxHeight?: number | undefined;
2645
+ aspectRatio?: string | undefined;
2646
+ thumbnailSizes?: {
2647
+ name: string;
2648
+ width: number;
2649
+ height: number;
2650
+ crop: boolean;
2651
+ }[] | undefined;
2652
+ } | undefined;
2653
+ maxVersions?: number | undefined;
2654
+ } | undefined;
2655
+ readonly maskingRule?: {
2656
+ field: string;
2657
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
2658
+ preserveFormat: boolean;
2659
+ preserveLength: boolean;
2660
+ pattern?: string | undefined;
2661
+ roles?: string[] | undefined;
2662
+ exemptRoles?: string[] | undefined;
2663
+ } | undefined;
2664
+ readonly auditTrail?: boolean | undefined;
2665
+ readonly dependencies?: string[] | undefined;
2666
+ readonly cached?: {
2667
+ enabled: boolean;
2668
+ ttl: number;
2669
+ invalidateOn: string[];
2670
+ } | undefined;
2671
+ readonly dataQuality?: {
2672
+ uniqueness: boolean;
2673
+ completeness: number;
2674
+ accuracy?: {
2675
+ source: string;
2676
+ threshold: number;
2677
+ } | undefined;
2678
+ } | undefined;
2679
+ readonly group?: string | undefined;
2680
+ readonly conditionalRequired?: string | undefined;
2681
+ readonly hidden?: boolean | undefined;
2682
+ readonly sortable?: boolean | undefined;
2683
+ readonly inlineHelpText?: string | undefined;
2684
+ readonly trackFeedHistory?: boolean | undefined;
2685
+ readonly caseSensitive?: boolean | undefined;
2686
+ readonly autonumberFormat?: string | undefined;
2687
+ readonly index?: boolean | undefined;
2688
+ readonly externalId?: boolean | undefined;
2689
+ readonly type: "select";
2690
+ };
2691
+ readonly content: {
2692
+ readonly format?: string | undefined;
2693
+ readonly expression?: string | undefined;
2694
+ readonly readonly?: boolean | undefined;
2695
+ readonly defaultValue?: unknown;
2696
+ readonly min?: number | undefined;
2697
+ readonly max?: number | undefined;
2698
+ readonly name?: string | undefined;
2699
+ readonly encryptionConfig?: {
2700
+ enabled: boolean;
2701
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2702
+ keyManagement: {
2703
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2704
+ keyId?: string | undefined;
2705
+ rotationPolicy?: {
2706
+ enabled: boolean;
2707
+ frequencyDays: number;
2708
+ retainOldVersions: number;
2709
+ autoRotate: boolean;
2710
+ } | undefined;
2711
+ };
2712
+ scope: "table" | "record" | "field" | "database";
2713
+ deterministicEncryption: boolean;
2714
+ searchableEncryption: boolean;
2715
+ } | undefined;
2716
+ readonly label?: string | undefined;
2717
+ readonly precision?: number | undefined;
2718
+ readonly description?: string | undefined;
2719
+ readonly columnName?: string | undefined;
2720
+ readonly required?: boolean | undefined;
2721
+ readonly searchable?: boolean | undefined;
2722
+ readonly multiple?: boolean | undefined;
2723
+ readonly unique?: boolean | undefined;
2724
+ readonly maxLength?: number | undefined;
2725
+ readonly minLength?: number | undefined;
2726
+ readonly scale?: number | undefined;
2727
+ readonly options?: {
2728
+ label: string;
2729
+ value: string;
2730
+ color?: string | undefined;
2731
+ default?: boolean | undefined;
2732
+ }[] | undefined;
2733
+ readonly reference?: string | undefined;
2734
+ readonly referenceFilters?: string[] | undefined;
2735
+ readonly writeRequiresMasterRead?: boolean | undefined;
2736
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
2737
+ readonly summaryOperations?: {
2738
+ object: string;
2739
+ field: string;
2740
+ function: "count" | "sum" | "avg" | "min" | "max";
2741
+ } | undefined;
2742
+ readonly language?: string | undefined;
2743
+ readonly theme?: string | undefined;
2744
+ readonly lineNumbers?: boolean | undefined;
2745
+ readonly maxRating?: number | undefined;
2746
+ readonly allowHalf?: boolean | undefined;
2747
+ readonly displayMap?: boolean | undefined;
2748
+ readonly allowGeocoding?: boolean | undefined;
2749
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
2750
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
2751
+ readonly allowAlpha?: boolean | undefined;
2752
+ readonly presetColors?: string[] | undefined;
2753
+ readonly step?: number | undefined;
2754
+ readonly showValue?: boolean | undefined;
2755
+ readonly marks?: Record<string, string> | undefined;
2756
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
2757
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
2758
+ readonly displayValue?: boolean | undefined;
2759
+ readonly allowScanning?: boolean | undefined;
2760
+ readonly currencyConfig?: {
2761
+ precision: number;
2762
+ currencyMode: "dynamic" | "fixed";
2763
+ defaultCurrency: string;
2764
+ } | undefined;
2765
+ readonly vectorConfig?: {
2766
+ dimensions: number;
2767
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
2768
+ normalized: boolean;
2769
+ indexed: boolean;
2770
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
2771
+ } | undefined;
2772
+ readonly fileAttachmentConfig?: {
2773
+ virusScan: boolean;
2774
+ virusScanOnUpload: boolean;
2775
+ quarantineOnThreat: boolean;
2776
+ allowMultiple: boolean;
2777
+ allowReplace: boolean;
2778
+ allowDelete: boolean;
2779
+ requireUpload: boolean;
2780
+ extractMetadata: boolean;
2781
+ extractText: boolean;
2782
+ versioningEnabled: boolean;
2783
+ publicRead: boolean;
2784
+ presignedUrlExpiry: number;
2785
+ minSize?: number | undefined;
2786
+ maxSize?: number | undefined;
2787
+ allowedTypes?: string[] | undefined;
2788
+ blockedTypes?: string[] | undefined;
2789
+ allowedMimeTypes?: string[] | undefined;
2790
+ blockedMimeTypes?: string[] | undefined;
2791
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
2792
+ storageProvider?: string | undefined;
2793
+ storageBucket?: string | undefined;
2794
+ storagePrefix?: string | undefined;
2795
+ imageValidation?: {
2796
+ generateThumbnails: boolean;
2797
+ preserveMetadata: boolean;
2798
+ autoRotate: boolean;
2799
+ minWidth?: number | undefined;
2800
+ maxWidth?: number | undefined;
2801
+ minHeight?: number | undefined;
2802
+ maxHeight?: number | undefined;
2803
+ aspectRatio?: string | undefined;
2804
+ thumbnailSizes?: {
2805
+ name: string;
2806
+ width: number;
2807
+ height: number;
2808
+ crop: boolean;
2809
+ }[] | undefined;
2810
+ } | undefined;
2811
+ maxVersions?: number | undefined;
2812
+ } | undefined;
2813
+ readonly maskingRule?: {
2814
+ field: string;
2815
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
2816
+ preserveFormat: boolean;
2817
+ preserveLength: boolean;
2818
+ pattern?: string | undefined;
2819
+ roles?: string[] | undefined;
2820
+ exemptRoles?: string[] | undefined;
2821
+ } | undefined;
2822
+ readonly auditTrail?: boolean | undefined;
2823
+ readonly dependencies?: string[] | undefined;
2824
+ readonly cached?: {
2825
+ enabled: boolean;
2826
+ ttl: number;
2827
+ invalidateOn: string[];
2828
+ } | undefined;
2829
+ readonly dataQuality?: {
2830
+ uniqueness: boolean;
2831
+ completeness: number;
2832
+ accuracy?: {
2833
+ source: string;
2834
+ threshold: number;
2835
+ } | undefined;
2836
+ } | undefined;
2837
+ readonly group?: string | undefined;
2838
+ readonly conditionalRequired?: string | undefined;
2839
+ readonly hidden?: boolean | undefined;
2840
+ readonly sortable?: boolean | undefined;
2841
+ readonly inlineHelpText?: string | undefined;
2842
+ readonly trackFeedHistory?: boolean | undefined;
2843
+ readonly caseSensitive?: boolean | undefined;
2844
+ readonly autonumberFormat?: string | undefined;
2845
+ readonly index?: boolean | undefined;
2846
+ readonly externalId?: boolean | undefined;
2847
+ readonly type: "textarea";
2848
+ };
2849
+ readonly tool_calls: {
2850
+ readonly format?: string | undefined;
2851
+ readonly expression?: string | undefined;
2852
+ readonly readonly?: boolean | undefined;
2853
+ readonly defaultValue?: unknown;
2854
+ readonly min?: number | undefined;
2855
+ readonly max?: number | undefined;
2856
+ readonly name?: string | undefined;
2857
+ readonly encryptionConfig?: {
2858
+ enabled: boolean;
2859
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
2860
+ keyManagement: {
2861
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
2862
+ keyId?: string | undefined;
2863
+ rotationPolicy?: {
2864
+ enabled: boolean;
2865
+ frequencyDays: number;
2866
+ retainOldVersions: number;
2867
+ autoRotate: boolean;
2868
+ } | undefined;
2869
+ };
2870
+ scope: "table" | "record" | "field" | "database";
2871
+ deterministicEncryption: boolean;
2872
+ searchableEncryption: boolean;
2873
+ } | undefined;
2874
+ readonly label?: string | undefined;
2875
+ readonly precision?: number | undefined;
2876
+ readonly description?: string | undefined;
2877
+ readonly columnName?: string | undefined;
2878
+ readonly required?: boolean | undefined;
2879
+ readonly searchable?: boolean | undefined;
2880
+ readonly multiple?: boolean | undefined;
2881
+ readonly unique?: boolean | undefined;
2882
+ readonly maxLength?: number | undefined;
2883
+ readonly minLength?: number | undefined;
2884
+ readonly scale?: number | undefined;
2885
+ readonly options?: {
2886
+ label: string;
2887
+ value: string;
2888
+ color?: string | undefined;
2889
+ default?: boolean | undefined;
2890
+ }[] | undefined;
2891
+ readonly reference?: string | undefined;
2892
+ readonly referenceFilters?: string[] | undefined;
2893
+ readonly writeRequiresMasterRead?: boolean | undefined;
2894
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
2895
+ readonly summaryOperations?: {
2896
+ object: string;
2897
+ field: string;
2898
+ function: "count" | "sum" | "avg" | "min" | "max";
2899
+ } | undefined;
2900
+ readonly language?: string | undefined;
2901
+ readonly theme?: string | undefined;
2902
+ readonly lineNumbers?: boolean | undefined;
2903
+ readonly maxRating?: number | undefined;
2904
+ readonly allowHalf?: boolean | undefined;
2905
+ readonly displayMap?: boolean | undefined;
2906
+ readonly allowGeocoding?: boolean | undefined;
2907
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
2908
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
2909
+ readonly allowAlpha?: boolean | undefined;
2910
+ readonly presetColors?: string[] | undefined;
2911
+ readonly step?: number | undefined;
2912
+ readonly showValue?: boolean | undefined;
2913
+ readonly marks?: Record<string, string> | undefined;
2914
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
2915
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
2916
+ readonly displayValue?: boolean | undefined;
2917
+ readonly allowScanning?: boolean | undefined;
2918
+ readonly currencyConfig?: {
2919
+ precision: number;
2920
+ currencyMode: "dynamic" | "fixed";
2921
+ defaultCurrency: string;
2922
+ } | undefined;
2923
+ readonly vectorConfig?: {
2924
+ dimensions: number;
2925
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
2926
+ normalized: boolean;
2927
+ indexed: boolean;
2928
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
2929
+ } | undefined;
2930
+ readonly fileAttachmentConfig?: {
2931
+ virusScan: boolean;
2932
+ virusScanOnUpload: boolean;
2933
+ quarantineOnThreat: boolean;
2934
+ allowMultiple: boolean;
2935
+ allowReplace: boolean;
2936
+ allowDelete: boolean;
2937
+ requireUpload: boolean;
2938
+ extractMetadata: boolean;
2939
+ extractText: boolean;
2940
+ versioningEnabled: boolean;
2941
+ publicRead: boolean;
2942
+ presignedUrlExpiry: number;
2943
+ minSize?: number | undefined;
2944
+ maxSize?: number | undefined;
2945
+ allowedTypes?: string[] | undefined;
2946
+ blockedTypes?: string[] | undefined;
2947
+ allowedMimeTypes?: string[] | undefined;
2948
+ blockedMimeTypes?: string[] | undefined;
2949
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
2950
+ storageProvider?: string | undefined;
2951
+ storageBucket?: string | undefined;
2952
+ storagePrefix?: string | undefined;
2953
+ imageValidation?: {
2954
+ generateThumbnails: boolean;
2955
+ preserveMetadata: boolean;
2956
+ autoRotate: boolean;
2957
+ minWidth?: number | undefined;
2958
+ maxWidth?: number | undefined;
2959
+ minHeight?: number | undefined;
2960
+ maxHeight?: number | undefined;
2961
+ aspectRatio?: string | undefined;
2962
+ thumbnailSizes?: {
2963
+ name: string;
2964
+ width: number;
2965
+ height: number;
2966
+ crop: boolean;
2967
+ }[] | undefined;
2968
+ } | undefined;
2969
+ maxVersions?: number | undefined;
2970
+ } | undefined;
2971
+ readonly maskingRule?: {
2972
+ field: string;
2973
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
2974
+ preserveFormat: boolean;
2975
+ preserveLength: boolean;
2976
+ pattern?: string | undefined;
2977
+ roles?: string[] | undefined;
2978
+ exemptRoles?: string[] | undefined;
2979
+ } | undefined;
2980
+ readonly auditTrail?: boolean | undefined;
2981
+ readonly dependencies?: string[] | undefined;
2982
+ readonly cached?: {
2983
+ enabled: boolean;
2984
+ ttl: number;
2985
+ invalidateOn: string[];
2986
+ } | undefined;
2987
+ readonly dataQuality?: {
2988
+ uniqueness: boolean;
2989
+ completeness: number;
2990
+ accuracy?: {
2991
+ source: string;
2992
+ threshold: number;
2993
+ } | undefined;
2994
+ } | undefined;
2995
+ readonly group?: string | undefined;
2996
+ readonly conditionalRequired?: string | undefined;
2997
+ readonly hidden?: boolean | undefined;
2998
+ readonly sortable?: boolean | undefined;
2999
+ readonly inlineHelpText?: string | undefined;
3000
+ readonly trackFeedHistory?: boolean | undefined;
3001
+ readonly caseSensitive?: boolean | undefined;
3002
+ readonly autonumberFormat?: string | undefined;
3003
+ readonly index?: boolean | undefined;
3004
+ readonly externalId?: boolean | undefined;
3005
+ readonly type: "textarea";
3006
+ };
3007
+ readonly tool_call_id: {
3008
+ readonly format?: string | undefined;
3009
+ readonly expression?: string | undefined;
3010
+ readonly readonly?: boolean | undefined;
3011
+ readonly defaultValue?: unknown;
3012
+ readonly min?: number | undefined;
3013
+ readonly max?: number | undefined;
3014
+ readonly name?: string | undefined;
3015
+ readonly encryptionConfig?: {
3016
+ enabled: boolean;
3017
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
3018
+ keyManagement: {
3019
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
3020
+ keyId?: string | undefined;
3021
+ rotationPolicy?: {
3022
+ enabled: boolean;
3023
+ frequencyDays: number;
3024
+ retainOldVersions: number;
3025
+ autoRotate: boolean;
3026
+ } | undefined;
3027
+ };
3028
+ scope: "table" | "record" | "field" | "database";
3029
+ deterministicEncryption: boolean;
3030
+ searchableEncryption: boolean;
3031
+ } | undefined;
3032
+ readonly label?: string | undefined;
3033
+ readonly precision?: number | undefined;
3034
+ readonly description?: string | undefined;
3035
+ readonly columnName?: string | undefined;
3036
+ readonly required?: boolean | undefined;
3037
+ readonly searchable?: boolean | undefined;
3038
+ readonly multiple?: boolean | undefined;
3039
+ readonly unique?: boolean | undefined;
3040
+ readonly maxLength?: number | undefined;
3041
+ readonly minLength?: number | undefined;
3042
+ readonly scale?: number | undefined;
3043
+ readonly options?: {
3044
+ label: string;
3045
+ value: string;
3046
+ color?: string | undefined;
3047
+ default?: boolean | undefined;
3048
+ }[] | undefined;
3049
+ readonly reference?: string | undefined;
3050
+ readonly referenceFilters?: string[] | undefined;
3051
+ readonly writeRequiresMasterRead?: boolean | undefined;
3052
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
3053
+ readonly summaryOperations?: {
3054
+ object: string;
3055
+ field: string;
3056
+ function: "count" | "sum" | "avg" | "min" | "max";
3057
+ } | undefined;
3058
+ readonly language?: string | undefined;
3059
+ readonly theme?: string | undefined;
3060
+ readonly lineNumbers?: boolean | undefined;
3061
+ readonly maxRating?: number | undefined;
3062
+ readonly allowHalf?: boolean | undefined;
3063
+ readonly displayMap?: boolean | undefined;
3064
+ readonly allowGeocoding?: boolean | undefined;
3065
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
3066
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
3067
+ readonly allowAlpha?: boolean | undefined;
3068
+ readonly presetColors?: string[] | undefined;
3069
+ readonly step?: number | undefined;
3070
+ readonly showValue?: boolean | undefined;
3071
+ readonly marks?: Record<string, string> | undefined;
3072
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
3073
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
3074
+ readonly displayValue?: boolean | undefined;
3075
+ readonly allowScanning?: boolean | undefined;
3076
+ readonly currencyConfig?: {
3077
+ precision: number;
3078
+ currencyMode: "dynamic" | "fixed";
3079
+ defaultCurrency: string;
3080
+ } | undefined;
3081
+ readonly vectorConfig?: {
3082
+ dimensions: number;
3083
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
3084
+ normalized: boolean;
3085
+ indexed: boolean;
3086
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
3087
+ } | undefined;
3088
+ readonly fileAttachmentConfig?: {
3089
+ virusScan: boolean;
3090
+ virusScanOnUpload: boolean;
3091
+ quarantineOnThreat: boolean;
3092
+ allowMultiple: boolean;
3093
+ allowReplace: boolean;
3094
+ allowDelete: boolean;
3095
+ requireUpload: boolean;
3096
+ extractMetadata: boolean;
3097
+ extractText: boolean;
3098
+ versioningEnabled: boolean;
3099
+ publicRead: boolean;
3100
+ presignedUrlExpiry: number;
3101
+ minSize?: number | undefined;
3102
+ maxSize?: number | undefined;
3103
+ allowedTypes?: string[] | undefined;
3104
+ blockedTypes?: string[] | undefined;
3105
+ allowedMimeTypes?: string[] | undefined;
3106
+ blockedMimeTypes?: string[] | undefined;
3107
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
3108
+ storageProvider?: string | undefined;
3109
+ storageBucket?: string | undefined;
3110
+ storagePrefix?: string | undefined;
3111
+ imageValidation?: {
3112
+ generateThumbnails: boolean;
3113
+ preserveMetadata: boolean;
3114
+ autoRotate: boolean;
3115
+ minWidth?: number | undefined;
3116
+ maxWidth?: number | undefined;
3117
+ minHeight?: number | undefined;
3118
+ maxHeight?: number | undefined;
3119
+ aspectRatio?: string | undefined;
3120
+ thumbnailSizes?: {
3121
+ name: string;
3122
+ width: number;
3123
+ height: number;
3124
+ crop: boolean;
3125
+ }[] | undefined;
3126
+ } | undefined;
3127
+ maxVersions?: number | undefined;
3128
+ } | undefined;
3129
+ readonly maskingRule?: {
3130
+ field: string;
3131
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
3132
+ preserveFormat: boolean;
3133
+ preserveLength: boolean;
3134
+ pattern?: string | undefined;
3135
+ roles?: string[] | undefined;
3136
+ exemptRoles?: string[] | undefined;
3137
+ } | undefined;
3138
+ readonly auditTrail?: boolean | undefined;
3139
+ readonly dependencies?: string[] | undefined;
3140
+ readonly cached?: {
3141
+ enabled: boolean;
3142
+ ttl: number;
3143
+ invalidateOn: string[];
3144
+ } | undefined;
3145
+ readonly dataQuality?: {
3146
+ uniqueness: boolean;
3147
+ completeness: number;
3148
+ accuracy?: {
3149
+ source: string;
3150
+ threshold: number;
3151
+ } | undefined;
3152
+ } | undefined;
3153
+ readonly group?: string | undefined;
3154
+ readonly conditionalRequired?: string | undefined;
3155
+ readonly hidden?: boolean | undefined;
3156
+ readonly sortable?: boolean | undefined;
3157
+ readonly inlineHelpText?: string | undefined;
3158
+ readonly trackFeedHistory?: boolean | undefined;
3159
+ readonly caseSensitive?: boolean | undefined;
3160
+ readonly autonumberFormat?: string | undefined;
3161
+ readonly index?: boolean | undefined;
3162
+ readonly externalId?: boolean | undefined;
3163
+ readonly type: "text";
3164
+ };
3165
+ readonly created_at: {
3166
+ readonly format?: string | undefined;
3167
+ readonly expression?: string | undefined;
3168
+ readonly readonly?: boolean | undefined;
3169
+ readonly defaultValue?: unknown;
3170
+ readonly min?: number | undefined;
3171
+ readonly max?: number | undefined;
3172
+ readonly name?: string | undefined;
3173
+ readonly encryptionConfig?: {
3174
+ enabled: boolean;
3175
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
3176
+ keyManagement: {
3177
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
3178
+ keyId?: string | undefined;
3179
+ rotationPolicy?: {
3180
+ enabled: boolean;
3181
+ frequencyDays: number;
3182
+ retainOldVersions: number;
3183
+ autoRotate: boolean;
3184
+ } | undefined;
3185
+ };
3186
+ scope: "table" | "record" | "field" | "database";
3187
+ deterministicEncryption: boolean;
3188
+ searchableEncryption: boolean;
3189
+ } | undefined;
3190
+ readonly label?: string | undefined;
3191
+ readonly precision?: number | undefined;
3192
+ readonly description?: string | undefined;
3193
+ readonly columnName?: string | undefined;
3194
+ readonly required?: boolean | undefined;
3195
+ readonly searchable?: boolean | undefined;
3196
+ readonly multiple?: boolean | undefined;
3197
+ readonly unique?: boolean | undefined;
3198
+ readonly maxLength?: number | undefined;
3199
+ readonly minLength?: number | undefined;
3200
+ readonly scale?: number | undefined;
3201
+ readonly options?: {
3202
+ label: string;
3203
+ value: string;
3204
+ color?: string | undefined;
3205
+ default?: boolean | undefined;
3206
+ }[] | undefined;
3207
+ readonly reference?: string | undefined;
3208
+ readonly referenceFilters?: string[] | undefined;
3209
+ readonly writeRequiresMasterRead?: boolean | undefined;
3210
+ readonly deleteBehavior?: "set_null" | "cascade" | "restrict" | undefined;
3211
+ readonly summaryOperations?: {
3212
+ object: string;
3213
+ field: string;
3214
+ function: "count" | "sum" | "avg" | "min" | "max";
3215
+ } | undefined;
3216
+ readonly language?: string | undefined;
3217
+ readonly theme?: string | undefined;
3218
+ readonly lineNumbers?: boolean | undefined;
3219
+ readonly maxRating?: number | undefined;
3220
+ readonly allowHalf?: boolean | undefined;
3221
+ readonly displayMap?: boolean | undefined;
3222
+ readonly allowGeocoding?: boolean | undefined;
3223
+ readonly addressFormat?: "us" | "uk" | "international" | undefined;
3224
+ readonly colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
3225
+ readonly allowAlpha?: boolean | undefined;
3226
+ readonly presetColors?: string[] | undefined;
3227
+ readonly step?: number | undefined;
3228
+ readonly showValue?: boolean | undefined;
3229
+ readonly marks?: Record<string, string> | undefined;
3230
+ readonly barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
3231
+ readonly qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
3232
+ readonly displayValue?: boolean | undefined;
3233
+ readonly allowScanning?: boolean | undefined;
3234
+ readonly currencyConfig?: {
3235
+ precision: number;
3236
+ currencyMode: "dynamic" | "fixed";
3237
+ defaultCurrency: string;
3238
+ } | undefined;
3239
+ readonly vectorConfig?: {
3240
+ dimensions: number;
3241
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
3242
+ normalized: boolean;
3243
+ indexed: boolean;
3244
+ indexType?: "hnsw" | "ivfflat" | "flat" | undefined;
3245
+ } | undefined;
3246
+ readonly fileAttachmentConfig?: {
3247
+ virusScan: boolean;
3248
+ virusScanOnUpload: boolean;
3249
+ quarantineOnThreat: boolean;
3250
+ allowMultiple: boolean;
3251
+ allowReplace: boolean;
3252
+ allowDelete: boolean;
3253
+ requireUpload: boolean;
3254
+ extractMetadata: boolean;
3255
+ extractText: boolean;
3256
+ versioningEnabled: boolean;
3257
+ publicRead: boolean;
3258
+ presignedUrlExpiry: number;
3259
+ minSize?: number | undefined;
3260
+ maxSize?: number | undefined;
3261
+ allowedTypes?: string[] | undefined;
3262
+ blockedTypes?: string[] | undefined;
3263
+ allowedMimeTypes?: string[] | undefined;
3264
+ blockedMimeTypes?: string[] | undefined;
3265
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
3266
+ storageProvider?: string | undefined;
3267
+ storageBucket?: string | undefined;
3268
+ storagePrefix?: string | undefined;
3269
+ imageValidation?: {
3270
+ generateThumbnails: boolean;
3271
+ preserveMetadata: boolean;
3272
+ autoRotate: boolean;
3273
+ minWidth?: number | undefined;
3274
+ maxWidth?: number | undefined;
3275
+ minHeight?: number | undefined;
3276
+ maxHeight?: number | undefined;
3277
+ aspectRatio?: string | undefined;
3278
+ thumbnailSizes?: {
3279
+ name: string;
3280
+ width: number;
3281
+ height: number;
3282
+ crop: boolean;
3283
+ }[] | undefined;
3284
+ } | undefined;
3285
+ maxVersions?: number | undefined;
3286
+ } | undefined;
3287
+ readonly maskingRule?: {
3288
+ field: string;
3289
+ strategy: "redact" | "partial" | "hash" | "tokenize" | "randomize" | "nullify" | "substitute";
3290
+ preserveFormat: boolean;
3291
+ preserveLength: boolean;
3292
+ pattern?: string | undefined;
3293
+ roles?: string[] | undefined;
3294
+ exemptRoles?: string[] | undefined;
3295
+ } | undefined;
3296
+ readonly auditTrail?: boolean | undefined;
3297
+ readonly dependencies?: string[] | undefined;
3298
+ readonly cached?: {
3299
+ enabled: boolean;
3300
+ ttl: number;
3301
+ invalidateOn: string[];
3302
+ } | undefined;
3303
+ readonly dataQuality?: {
3304
+ uniqueness: boolean;
3305
+ completeness: number;
3306
+ accuracy?: {
3307
+ source: string;
3308
+ threshold: number;
3309
+ } | undefined;
3310
+ } | undefined;
3311
+ readonly group?: string | undefined;
3312
+ readonly conditionalRequired?: string | undefined;
3313
+ readonly hidden?: boolean | undefined;
3314
+ readonly sortable?: boolean | undefined;
3315
+ readonly inlineHelpText?: string | undefined;
3316
+ readonly trackFeedHistory?: boolean | undefined;
3317
+ readonly caseSensitive?: boolean | undefined;
3318
+ readonly autonumberFormat?: string | undefined;
3319
+ readonly index?: boolean | undefined;
3320
+ readonly externalId?: boolean | undefined;
3321
+ readonly type: "datetime";
3322
+ };
3323
+ };
3324
+ readonly indexes: [{
3325
+ readonly fields: ["conversation_id"];
3326
+ }, {
3327
+ readonly fields: ["conversation_id", "created_at"];
3328
+ }];
3329
+ readonly enable: {
3330
+ readonly trackHistory: false;
3331
+ readonly searchable: false;
3332
+ readonly apiEnabled: true;
3333
+ readonly apiMethods: ["get", "list", "create"];
3334
+ readonly trash: false;
3335
+ readonly mru: false;
3336
+ };
3337
+ }, "fields">;
3338
+
3339
+ /**
3340
+ * Minimal HTTP handler abstraction so routes stay framework-agnostic.
3341
+ *
3342
+ * Consumers wire these handlers to their HTTP server of choice
3343
+ * (Hono, Express, Fastify, etc.) via the kernel's HTTP server service.
3344
+ */
3345
+ interface RouteDefinition {
3346
+ /** HTTP method */
3347
+ method: 'GET' | 'POST' | 'DELETE';
3348
+ /** Path pattern (e.g. '/api/v1/ai/chat') */
3349
+ path: string;
3350
+ /** Human-readable description */
3351
+ description: string;
3352
+ /**
3353
+ * Handler receives a plain request-like object and returns a response-like
3354
+ * object. SSE responses set `stream: true` and provide an async iterable.
3355
+ */
3356
+ handler: (req: RouteRequest) => Promise<RouteResponse>;
3357
+ }
3358
+ interface RouteRequest {
3359
+ /** Parsed JSON body (for POST requests) */
3360
+ body?: unknown;
3361
+ /** Route/query parameters */
3362
+ params?: Record<string, string>;
3363
+ /** Query string parameters */
3364
+ query?: Record<string, string>;
3365
+ }
3366
+ interface RouteResponse {
3367
+ /** HTTP status code */
3368
+ status: number;
3369
+ /** JSON-serializable body (for non-streaming responses) */
3370
+ body?: unknown;
3371
+ /** If true, `stream` provides SSE events */
3372
+ stream?: boolean;
3373
+ /** Async iterable of SSE events (when stream=true) */
3374
+ events?: AsyncIterable<unknown>;
3375
+ }
3376
+ /**
3377
+ * Build the standard AI REST/SSE routes.
3378
+ *
3379
+ * Depends on contracts ({@link IAIService} + {@link IAIConversationService})
3380
+ * rather than concrete implementations, so any compliant service pair can
3381
+ * be wired in.
3382
+ *
3383
+ * Routes:
3384
+ * | Method | Path | Description |
3385
+ * |:---|:---|:---|
3386
+ * | POST | /api/v1/ai/chat | Synchronous chat completion |
3387
+ * | POST | /api/v1/ai/chat/stream | SSE streaming chat completion |
3388
+ * | POST | /api/v1/ai/complete | Text completion |
3389
+ * | GET | /api/v1/ai/models | List available models |
3390
+ * | POST | /api/v1/ai/conversations | Create a conversation |
3391
+ * | GET | /api/v1/ai/conversations | List conversations |
3392
+ * | POST | /api/v1/ai/conversations/:id/messages | Add message to conversation |
3393
+ * | DELETE | /api/v1/ai/conversations/:id | Delete conversation |
3394
+ */
3395
+ declare function buildAIRoutes(aiService: IAIService, conversationService: IAIConversationService, logger: Logger): RouteDefinition[];
3396
+
3397
+ /**
3398
+ * Build agent-specific REST routes.
3399
+ *
3400
+ * | Method | Path | Description |
3401
+ * |:---|:---|:---|
3402
+ * | POST | /api/v1/ai/agents/:agentName/chat | Chat with a specific agent |
3403
+ */
3404
+ declare function buildAgentRoutes(aiService: AIService, agentRuntime: AgentRuntime, logger: Logger): RouteDefinition[];
3405
+
3406
+ export { AIService, type AIServiceConfig, AIServicePlugin, type AIServicePluginOptions, type AgentChatContext, AgentRuntime, AiConversationObject, AiMessageObject, DATA_CHAT_AGENT, DATA_TOOL_DEFINITIONS, type DataToolContext, InMemoryConversationService, MemoryLLMAdapter, ObjectQLConversationService, type RouteDefinition, type RouteRequest, type RouteResponse, type ToolHandler, ToolRegistry, buildAIRoutes, buildAgentRoutes, registerDataTools };