@stndrds/schema 1.0.0-alpha.265 → 1.0.0-alpha.266
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/all--B2_3ksI.d.ts +465 -0
- package/dist/all-D5zeUllO.d.mts +465 -0
- package/dist/chunk-6ZDH3EJA.js +1261 -0
- package/dist/chunk-F6ATLCIR.mjs +1214 -0
- package/dist/{chunk-ZBQEMIAV.js → chunk-FDIAOFHS.js} +11 -8
- package/dist/{chunk-UXCJ3NI4.mjs → chunk-KDHDC7E6.mjs} +150 -9
- package/dist/{chunk-U36ZIBEM.mjs → chunk-O73ROMWQ.mjs} +15 -6
- package/dist/{chunk-QIWADKYA.mjs → chunk-POULKEJM.mjs} +11 -9
- package/dist/{chunk-EBGRZUIH.js → chunk-Q4SZAMJT.js} +5 -0
- package/dist/{chunk-NGGU6BSN.mjs → chunk-QMLO7V5E.mjs} +6 -6
- package/dist/{chunk-L4U5QEQL.js → chunk-QN2N3IJZ.js} +158 -8
- package/dist/{chunk-JUKLL5RJ.mjs → chunk-R5LAJCBU.mjs} +5 -2
- package/dist/{chunk-NI3HCSYH.js → chunk-V6Q7HCA7.js} +11 -11
- package/dist/{chunk-QAF3HNKQ.js → chunk-ZPFOKBIN.js} +16 -5
- package/dist/exceptions.d.mts +21 -8
- package/dist/exceptions.d.ts +21 -8
- package/dist/exceptions.js +42 -38
- package/dist/exceptions.mjs +1 -1
- package/dist/helpers-C1VVEAOO.d.mts +76 -0
- package/dist/helpers-vQ6kp8ET.d.ts +76 -0
- package/dist/index-Bq1KrQkR.d.ts +2413 -0
- package/dist/index-DtxtOBYT.d.mts +2413 -0
- package/dist/index.d.mts +1489 -2222
- package/dist/index.d.ts +1489 -2222
- package/dist/index.js +1274 -1038
- package/dist/index.mjs +894 -905
- package/dist/{helpers-eyrnPJEF.d.ts → objects-A1ED9af-.d.ts} +32 -77
- package/dist/{helpers-uKLet0kF.d.mts → objects-BCaBw2ef.d.mts} +32 -77
- package/dist/validation/all.d.mts +4 -2
- package/dist/validation/all.d.ts +4 -2
- package/dist/validation/all.js +88 -16
- package/dist/validation/all.mjs +9 -9
- package/dist/validation/complex/phone.js +2 -2
- package/dist/validation/complex/phone.mjs +1 -1
- package/dist/validation/config/index.d.mts +5 -18
- package/dist/validation/config/index.d.ts +5 -18
- package/dist/validation/config/index.js +34 -4
- package/dist/validation/config/index.mjs +7 -1
- package/dist/validation/object/index.d.mts +2 -2
- package/dist/validation/object/index.d.ts +2 -2
- package/dist/validation/object/index.js +19 -19
- package/dist/validation/object/index.mjs +7 -7
- package/dist/validation/primitives/text.js +2 -2
- package/dist/validation/primitives/text.mjs +1 -1
- package/package.json +2 -2
- package/dist/chunk-PGERPYDR.js +0 -2
- package/dist/chunk-SP3PNHYF.mjs +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,19 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S as SortRule, F as FilterState, V as ViewType, a as ViewConfig, C as ConfigOverrides, P as PermissionScope, A as Action, b as FilterOperator, c as SystemResource, d as ProviderName, M as ModelDefinition, e as AgentSchedule, f as AgentExecutionConfig, g as AgentApprovalPolicy, T as TriggerEventType, h as AgentTriggerBlueprint, i as AgentBlueprint, D as DetailViewConfig, j as DetailViewDefinition, k as SidePanelConfig, l as Field, m as AttributeGroupField, n as FieldGroup, R as RelationGroup, G as Group, o as TableTab, p as CreateMode, q as Tab, L as ListViewConfig, r as ListViewDefinition, s as ViewDefinition, t as ListViewTab, u as FilterValue, v as FilterRule, w as DynamicValue, x as RelativeDateValue } from './index-DtxtOBYT.mjs';
|
|
2
|
+
export { y as AIAvailableModel, z as AIBatchAnswerValue, B as AIBatchQuestion, E as AIBatchQuestionAnswer, H as AIBatchQuestionOption, I as AIBatchQuestionType, J as AIChatMessage, K as AIChatMessagePart, N as AIChatMessagePartType, O as AIChatNotification, Q as AICompactionSummary, U as AIMemoryEntry, W as AIMemoryType, X as AIMessageRole, Y as AIProviderMetrics, Z as AIQuestion, _ as AIQuestionAnswer, $ as AIQuestionOption, a0 as AIQuestionType, a1 as AISubagentStatus, a2 as AITodoItem, a3 as AITodoList, a4 as AITodoStatus, a5 as AIToolCall, a6 as AIToolCallStatus, a7 as AIUsageMetrics, a8 as ALL_ACTIONS, a9 as AccessLevel, aa as ActivityTab, ab as AddAttributeInput, ac as AdvancedFilterState, ad as AgentConfig, ae as AgentDashboard, af as AgentDefinition, ag as AgentEvent, ah as AgentMessageAttachment, ai as AgentMessagePart, aj as AgentMission, ak as AgentMissionArtifact, al as AgentMissionPage, am as AgentMissionPolicy, an as AgentMissionRubric, ao as AgentMissionRubricCriterion, ap as AgentMissionStatus, aq as AgentMissionVerification, ar as AgentMissionView, as as AgentRequiredPermission, at as AgentRun, au as AgentRunStatus, av as AgentSession, aw as AgentSessionMessage, ax as AgentSessionMode, ay as AgentSessionStatus, az as AgentTodoPlan, aA as AgentTodoPlanStatus, aB as AgentTodoPlanView, aC as AgentToolCall, aD as AgentTriggerDefinition, aE as AgentTriggerType, aF as ApprovalMode, aG as AssignRoleInput, aH as CompactionStrategy, aI as CreateCustomObjectInput, aJ as CreateDocument, aK as CreateDocumentLink, aL as CreateFile, aM as CreatePermissionInput, aN as CreateRoleInput, aO as CreateViewInput, aP as CriticConfig, aQ as CurrencyFilterValue, aR as CustomTab, aS as DEFAULT_APPROVAL_POLICY, aT as Document, aU as DocumentFile, aV as DocumentKind, aW as DocumentListOptions, aX as DocumentWithFiles, aY as DocumentWithSubCount, aZ as DocumentsTab, a_ as EdgeQuantifier, a$ as EffectivePermissions, b0 as EmailsTab, b1 as ExtendedFilterRule, b2 as File, b3 as FileOcrStatus, b4 as FilterCombinator, b5 as FilterGroup, b6 as FormDensity, b7 as FormSubmittedAgentEvent, b8 as FormTab, b9 as FormsTab, ba as HumanRequestNeed, bb as InverseSource, bc as ListViewLayout, bd as MAX_TODOS, be as MAX_TODO_DESCRIPTION_CHARS, bf as MAX_TODO_ID_CHARS, bg as MAX_TODO_RESULT_CHARS, bh as MentionEntityType, bi as MentionReference, bj as MentionedContext, bk as MentionedEntityContext, bl as NO_VALUE_OPERATORS, bm as NoValueOperator, bn as OPERATORS_BY_TYPE, bo as ObjectPermissions, bp as Permission, bq as PhoneFilterValue, br as QueryState, bs as ReasoningPartData, bt as RecordAgentEvent, bu as RecordDocuments, bv as RelationOption, bw as RelationOptionsResponse, bx as RelationSource, by as RetryPolicy, bz as RichtextTab, bA as Role, bB as SESSION_TERMINAL_STATUSES, bC as SessionApprovalMode, bD as SortDirection, bE as StorageProvider, bF as StreamEventCompactionEnd, bG as StreamEventCompactionFailed, bH as StreamEventCompactionStart, bI as StreamEventMessagePersisted, bJ as StreamEventMessageUpdated, bK as StreamEventMissionUpdate, bL as StreamEventTodoPlanUpdate, bM as StreamEventUsage, bN as SystemPermissions, bO as TODO_PLAN_STATUSES, bP as TODO_STATUSES, bQ as TabType, bR as TableSource, bS as TerminalSessionStatus, bT as TextPartData, bU as ThinkingPartData, bV as ToolImpact, bW as ToolPartData, bX as ToolPartErrorCode, bY as ToolPartState, bZ as UpdateDocument, b_ as UpdateFile, b$ as UpdateObjectInput, c0 as UpdateRoleInput, c1 as UpdateViewInput, c2 as UserRoleAssignment, c3 as ViewOverlay, c4 as accessLevelToActions, c5 as actionsToAccessLevel, c6 as agentDisplayName, c7 as getRollupFilterOperators, c8 as isDetailView, c9 as isFieldGroup, ca as isListView, cb as isNoValueOperator, cc as isRelationGroup, cd as isTerminalSessionStatus, ce as multiselectOptionWriteSchema, cf as parseAttributeConfig, cg as parseAttributeConfigForCreate, ch as parseAttributeConfigForUpdate, ci as selectOptionWriteSchema, cj as statusGroupSchema, ck as statusOptionWriteSchema } from './index-DtxtOBYT.mjs';
|
|
3
|
+
import { i as ComputedValueType, j as ComputedReturnType, f as AttributeType, k as ComputedOptionsSource, l as ComputedDependency, m as ComputedPlan, e as RollupAttribute, n as ComputedFormulaAstNode, A as Attribute, o as LocationGranularity, p as Location, F as FormulaAttribute, D as DateAttribute, q as DateRangeValue, r as DocumentAttribute, d as StatusAttribute, c as SelectAttribute, b as MultiselectAttribute, s as Phone, t as Currency, U as UserAttribute, T as TextAttribute, u as PropertySchema, g as CheckboxAttribute, C as CurrencyAttribute, v as TimeFormat, N as NumberAttribute, P as PhoneAttribute, O as Option, L as LocationAttribute, w as FormulaReturnType, R as RelationAttribute, B as BilateralConfig, S as SingleRelationAttribute, M as MultiRelationAttribute, x as RelationTarget, a as RichtextAttribute, y as RollupFunction, z as UserReferenceType } from './attributes-lBLiOIY3.mjs';
|
|
2
4
|
export { E as AttributeGroup, G as BaseAttribute, h as ComputedAttributeState, H as ComputedFieldKind, I as ComputedFormulaBinaryNode, J as ComputedFormulaBinaryOperator, K as ComputedFormulaCallNode, Q as ComputedFormulaLiteralNode, V as ComputedFormulaParseError, W as ComputedFormulaPathNode, X as ComputedStateStatus, Y as DateFormat, Z as DateValue, _ as NumberUnit, $ as OptionPropertyAttribute, a0 as PropertyAttribute, a1 as PropertyType, a2 as RELATION_TARGET_ANY, a3 as RichTextAttribute, a4 as StatusGroup, a5 as hasOptions, a6 as inferInverseCardinality, a7 as isAttributeSortable, a8 as isBilateralRelation, a9 as isUniversalRelation, aa as parseComputedFormula, ab as resolvePropertyDefinitions } from './attributes-lBLiOIY3.mjs';
|
|
3
|
-
import { IconName,
|
|
5
|
+
import { IconName, ColorId, CountryIso3, CurrencyCode } from '@stndrds/constants';
|
|
4
6
|
import { Uuid, TenantId } from './utils.mjs';
|
|
5
7
|
export { UserId, asTenantId, asUserId, deepEqual, generateId, indexBy } from './utils.mjs';
|
|
6
|
-
import { D as DocumentLayout, T as Timestamps, O as ObjectDefinition } from './
|
|
7
|
-
export {
|
|
8
|
+
import { a as ObjectRecord, D as DocumentLayout, T as Timestamps, R as ResourceVisibility, O as ObjectDefinition, L as ListViewTabVisibility } from './objects-BCaBw2ef.mjs';
|
|
9
|
+
export { b as DocumentLayoutVariant, F as FolderPreset, c as LIST_VIEW_TAB_VISIBILITIES, M as MAX_PRESET_DEPTH, d as ObjectAttribute, P as PresetNode, e as RESERVED_ATTRIBUTE_NAMES, f as RESERVED_OBJECT_NAMES, g as RESOURCE_VISIBILITIES, h as ReservedAttributeName, i as ReservedObjectName, S as SYSTEM_FIELD_NAMES, j as SystemFieldName } from './objects-BCaBw2ef.mjs';
|
|
8
10
|
import { M as MigrationDefinition } from './migrations-BXd2ZGfM.mjs';
|
|
9
11
|
export { B as BuiltInTransform, S as SchemaOperation } from './migrations-BXd2ZGfM.mjs';
|
|
10
|
-
|
|
12
|
+
import { ValidationError } from './exceptions.mjs';
|
|
13
|
+
export { AccessDeniedError, AttributeInUseError, AttributeNotFoundError, AttributeUsage, ChangeTypeNotSupportedError, ConcurrentModificationError, DestructiveSyncNotAllowedError, DuplicateError, ForbiddenError, MemoryNotFoundError, MigrationTimeoutError, NotFoundError, NotImplementedError, ObjectNotFoundError, ObjectReferencedError, OrphanSystemAttributeError, ProtectedResourceError, ProtectedRoleError, RecordNotFoundError, RecordReference, RecordReferencedError, RepositoryError, RepositoryOperation, RoleNotFoundError, SchemaError, SchemaErrorCode, SchemaPlanNotFoundError, SearchBackendError, StorageError, StorageOperation, SyncCascadeError, SyncConflictError, SyncError, SystemEntityImmutableError, ValidationErrorDetail, isAttributeInUseError, isNotFoundError, isObjectReferencedError, isProtectedResourceError, isRecordReferencedError, isSchemaError, isValidationError } from './exceptions.mjs';
|
|
11
14
|
import { StandardSchemaV1 } from '@standard-schema/spec';
|
|
12
15
|
export { StandardSchemaV1 } from '@standard-schema/spec';
|
|
13
|
-
import z from 'zod';
|
|
16
|
+
import z, { z as z$1 } from 'zod';
|
|
14
17
|
export { V as ValidationMessages } from './types-DNz3ITS-.mjs';
|
|
15
18
|
export { DEFAULT_VALIDATION_MESSAGES, formatZodErrors } from './validation/core/index.mjs';
|
|
16
|
-
export {
|
|
19
|
+
export { S as SCHEMA_LIMITS, c as colorIdSchema, d as detailTabSchema, a as detailViewConfigSchema, i as iconNameSchema, b as inverseSourceSchema, l as listViewConfigSchema, e as listViewTabSchema, p as parseViewConfig, r as relationSourceSchema, t as tableSourceSchema, v as viewConfigByTypeSchema, f as viewTypeSchema } from './all-D5zeUllO.mjs';
|
|
20
|
+
export { a as createFormAttributeValidator, r as rejectUnknownAttributesOrThrow, b as validateDraft, d as validateDraftOrThrow, e as validateObject, f as validateObjectOrThrow } from './helpers-C1VVEAOO.mjs';
|
|
21
|
+
export { createCheckboxValidator } from './validation/primitives/checkbox.mjs';
|
|
22
|
+
export { createDateValidator } from './validation/primitives/date.mjs';
|
|
23
|
+
export { createNumberValidator } from './validation/primitives/number.mjs';
|
|
24
|
+
export { createTextValidator } from './validation/primitives/text.mjs';
|
|
17
25
|
|
|
18
26
|
declare const COMPUTED_FUNCTION_NAMES: readonly ["if", "concat", "sum", "avg", "count", "min", "max", "earliest", "latest", "unique", "first", "percent_empty", "percent_not_empty", "count_empty", "count_not_empty", "count_unique"];
|
|
19
27
|
type ComputedFunctionName = (typeof COMPUTED_FUNCTION_NAMES)[number];
|
|
@@ -86,168 +94,6 @@ interface ComputedFunctionMetadata {
|
|
|
86
94
|
}
|
|
87
95
|
declare const COMPUTED_FUNCTION_METADATA: ComputedFunctionMetadata[];
|
|
88
96
|
|
|
89
|
-
/** Operators for text-based attributes */
|
|
90
|
-
type TextFilterOperator = "is" | "is_not" | "contains" | "not_contains" | "starts_with" | "ends_with" | "is_empty" | "is_not_empty";
|
|
91
|
-
/** Operators for number-based attributes */
|
|
92
|
-
type NumberFilterOperator = "eq" | "neq" | "lt" | "gt" | "lte" | "gte" | "is_empty" | "is_not_empty";
|
|
93
|
-
/** Operators for checkbox */
|
|
94
|
-
type CheckboxFilterOperator = "is_checked" | "is_not_checked";
|
|
95
|
-
/** Operators for date-based attributes */
|
|
96
|
-
type DateFilterOperator = "is" | "is_not" | "before" | "after" | "on_or_before" | "on_or_after" | "is_within" | "day_month_eq" | "is_empty" | "is_not_empty";
|
|
97
|
-
/** Operators for select-based attributes (supports single or multi-value filtering) */
|
|
98
|
-
type SelectFilterOperator = "is" | "is_not" | "any_of" | "none_of" | "is_empty" | "is_not_empty";
|
|
99
|
-
/** Operators for multiselect-based attributes */
|
|
100
|
-
type MultiselectFilterOperator = "contains" | "not_contains" | "is_empty" | "is_not_empty";
|
|
101
|
-
/**
|
|
102
|
-
* Operators for relation-based attributes (covers single, multi-value, and
|
|
103
|
-
* reference-shaped filtering — file, user, relation, document all share the
|
|
104
|
-
* same edge-backed operator set as of Phase 4.4).
|
|
105
|
-
*/
|
|
106
|
-
type RelationFilterOperator = "is" | "is_not" | "any_of" | "none_of" | "contains" | "not_contains" | "is_empty" | "is_not_empty";
|
|
107
|
-
/** All possible filter operators */
|
|
108
|
-
type FilterOperator = TextFilterOperator | NumberFilterOperator | CheckboxFilterOperator | DateFilterOperator | SelectFilterOperator | MultiselectFilterOperator | RelationFilterOperator;
|
|
109
|
-
/** Relative date value for "is_within" operator */
|
|
110
|
-
interface RelativeDateValue {
|
|
111
|
-
amount: number;
|
|
112
|
-
unit: "days" | "weeks" | "months" | "years";
|
|
113
|
-
direction: "past" | "future";
|
|
114
|
-
}
|
|
115
|
-
/** Currency filter value with amount and optional currency codes
|
|
116
|
-
* - code: undefined or [] = any currency
|
|
117
|
-
* - code: string[] = filter by specific currencies
|
|
118
|
-
*/
|
|
119
|
-
interface CurrencyFilterValue {
|
|
120
|
-
value: number | null;
|
|
121
|
-
code?: string[];
|
|
122
|
-
}
|
|
123
|
-
/** Phone filter value with number and optional country code */
|
|
124
|
-
interface PhoneFilterValue {
|
|
125
|
-
phoneNumber: string | null;
|
|
126
|
-
countryCode?: string;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* A filter value resolved at query time from the execution context.
|
|
130
|
-
* Stored verbatim in a view's filter; replaced with a concrete value by the
|
|
131
|
-
* runtime before reaching any query layer. Discriminated by the `dynamic` key —
|
|
132
|
-
* no static FilterValue carries it.
|
|
133
|
-
*/
|
|
134
|
-
type DynamicValue = {
|
|
135
|
-
dynamic: "actor";
|
|
136
|
-
ref: "current";
|
|
137
|
-
} | {
|
|
138
|
-
dynamic: "date";
|
|
139
|
-
anchor: "today";
|
|
140
|
-
} | {
|
|
141
|
-
dynamic: "date";
|
|
142
|
-
anchor: "now";
|
|
143
|
-
};
|
|
144
|
-
/** Filter value can be various types depending on the attribute */
|
|
145
|
-
type FilterValue = string | number | boolean | string[] | RelativeDateValue | CurrencyFilterValue | PhoneFilterValue | DynamicValue | null;
|
|
146
|
-
/** Existence quantifier for qualified edge rules. Maps to SQL EXISTS / NOT EXISTS. */
|
|
147
|
-
type EdgeQuantifier = "any" | "none";
|
|
148
|
-
/** A single filter rule */
|
|
149
|
-
interface FilterRule {
|
|
150
|
-
/** Root attribute name (scalar attribute, or a reference attribute when `property` is set). */
|
|
151
|
-
attribute: string;
|
|
152
|
-
/**
|
|
153
|
-
* If set, this rule filters on a qualified edge property.
|
|
154
|
-
* Requires `attribute` to be a reference attribute (today: `relation` or `document`) that has `.qualifyWith()`.
|
|
155
|
-
* The `operator` must be valid for the property's type, not the root attribute's type.
|
|
156
|
-
*/
|
|
157
|
-
property?: string;
|
|
158
|
-
/**
|
|
159
|
-
* Existence quantifier for qualified edge rules ("at least one" vs "none").
|
|
160
|
-
* Only valid when `property` is set. Maps to SQL EXISTS / NOT EXISTS.
|
|
161
|
-
* Defaults to the operator-derived polarity when omitted.
|
|
162
|
-
*/
|
|
163
|
-
quantifier?: EdgeQuantifier;
|
|
164
|
-
/** Filter operator */
|
|
165
|
-
operator: FilterOperator;
|
|
166
|
-
/** Filter value (null for operators like is_empty) */
|
|
167
|
-
value: FilterValue;
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Extended filter rule with optional attribute definition.
|
|
171
|
-
* When provided, enables smarter type-aware filtering (e.g., array operators for multiselect).
|
|
172
|
-
*/
|
|
173
|
-
interface ExtendedFilterRule extends FilterRule {
|
|
174
|
-
/** Full attribute definition for type-aware filtering */
|
|
175
|
-
attributeDef?: Attribute;
|
|
176
|
-
}
|
|
177
|
-
/** Combinator for filter rules */
|
|
178
|
-
type FilterCombinator = "and" | "or";
|
|
179
|
-
/** Complete filter state (simple mode) */
|
|
180
|
-
interface FilterState {
|
|
181
|
-
/** How to combine rules */
|
|
182
|
-
combinator: FilterCombinator;
|
|
183
|
-
/** List of filter rules */
|
|
184
|
-
rules: FilterRule[];
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* A filter group containing rules (used in advanced mode)
|
|
188
|
-
* Groups can be nested up to 2 levels deep
|
|
189
|
-
*/
|
|
190
|
-
interface FilterGroup {
|
|
191
|
-
/** Unique identifier for this group */
|
|
192
|
-
id: string;
|
|
193
|
-
/** How to combine rules within this group */
|
|
194
|
-
combinator: FilterCombinator;
|
|
195
|
-
/** List of filter rules in this group */
|
|
196
|
-
rules: FilterRule[];
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Advanced filter state with nested groups
|
|
200
|
-
* Structure: AdvancedFilterState -> FilterGroup[] -> FilterRule[]
|
|
201
|
-
* Maximum 2 levels of nesting
|
|
202
|
-
*/
|
|
203
|
-
interface AdvancedFilterState {
|
|
204
|
-
/** How to combine groups at the top level */
|
|
205
|
-
combinator: FilterCombinator;
|
|
206
|
-
/** List of filter groups */
|
|
207
|
-
groups: FilterGroup[];
|
|
208
|
-
}
|
|
209
|
-
/** Sort direction */
|
|
210
|
-
type SortDirection = "asc" | "desc";
|
|
211
|
-
/** A single sort rule */
|
|
212
|
-
interface SortRule {
|
|
213
|
-
/** Attribute name to sort by */
|
|
214
|
-
attribute: string;
|
|
215
|
-
/** Sort direction */
|
|
216
|
-
direction: SortDirection;
|
|
217
|
-
}
|
|
218
|
-
/** Complete query state with search, filters, sorts, and pagination */
|
|
219
|
-
interface QueryState {
|
|
220
|
-
/** Full-text search query */
|
|
221
|
-
search?: string;
|
|
222
|
-
/** Filter configuration (simple mode) */
|
|
223
|
-
filters?: FilterState;
|
|
224
|
-
/** Advanced filter configuration (grouped mode) */
|
|
225
|
-
advancedFilters?: AdvancedFilterState;
|
|
226
|
-
/** Sort configuration (multiple sorts supported) */
|
|
227
|
-
sorts?: SortRule[];
|
|
228
|
-
/** Pagination */
|
|
229
|
-
limit?: number;
|
|
230
|
-
offset?: number;
|
|
231
|
-
}
|
|
232
|
-
/** Mapping of attribute types to their valid operators (rollup excluded — use getRollupFilterOperators()) */
|
|
233
|
-
declare const OPERATORS_BY_TYPE: Record<Exclude<AttributeType, "rollup">, readonly FilterOperator[]>;
|
|
234
|
-
/** Check if an operator requires a value */
|
|
235
|
-
type NoValueOperator = "is_empty" | "is_not_empty" | "is_checked" | "is_not_checked";
|
|
236
|
-
/** Operators that don't require a value */
|
|
237
|
-
declare const NO_VALUE_OPERATORS: readonly NoValueOperator[];
|
|
238
|
-
/**
|
|
239
|
-
* Check if an operator requires a value
|
|
240
|
-
*/
|
|
241
|
-
declare function isNoValueOperator(operator: FilterOperator): operator is NoValueOperator;
|
|
242
|
-
/**
|
|
243
|
-
* Get the filter operators for a rollup attribute based on its aggregation function and target type.
|
|
244
|
-
*
|
|
245
|
-
* - earliest / latest → date operators
|
|
246
|
-
* - original → operators matching targetAttributeType (falls back to numeric if unknown)
|
|
247
|
-
* - all other functions → numeric operators (sum, avg, count, percent, etc.)
|
|
248
|
-
*/
|
|
249
|
-
declare function getRollupFilterOperators(attr: RollupAttribute): readonly FilterOperator[];
|
|
250
|
-
|
|
251
97
|
/**
|
|
252
98
|
* Generic list options for pagination and sorting
|
|
253
99
|
*/
|
|
@@ -273,8 +119,31 @@ interface ListOptions {
|
|
|
273
119
|
}
|
|
274
120
|
|
|
275
121
|
type CountMode = "none" | "estimated" | "exact";
|
|
276
|
-
|
|
122
|
+
/**
|
|
123
|
+
* Row cap for `countMode: "estimated"`.
|
|
124
|
+
*
|
|
125
|
+
* The list RPC stops counting here, so the mode has a bounded cost on any
|
|
126
|
+
* tenant. Below the cap the count happens to be exact; at the cap it means "at
|
|
127
|
+
* least this many", and `totalIsExact` is what tells the two apart.
|
|
128
|
+
*
|
|
129
|
+
* Mirrored in `list_filtered_object_records`; change both together.
|
|
130
|
+
*/
|
|
131
|
+
declare const ESTIMATED_COUNT_CAP = 10000;
|
|
132
|
+
/** Canonical continuation metadata shared by collection and search responses. */
|
|
133
|
+
interface ContinuationPage {
|
|
277
134
|
hasMore: boolean;
|
|
135
|
+
/** Raw backend continuation. Consumers must prefer this to offset arithmetic. */
|
|
136
|
+
nextOffset?: number;
|
|
137
|
+
/**
|
|
138
|
+
* False when the reported total is a lower bound rather than the real count —
|
|
139
|
+
* either because `countMode: "estimated"` stopped at
|
|
140
|
+
* {@link ESTIMATED_COUNT_CAP}, or because filtering left the backend unable to
|
|
141
|
+
* count what it did not fetch. Derive it from the response, never from the
|
|
142
|
+
* requested mode: asking for `"exact"` does not make an answer exact.
|
|
143
|
+
*/
|
|
144
|
+
totalIsExact?: boolean;
|
|
145
|
+
}
|
|
146
|
+
interface CollectionPage extends ContinuationPage {
|
|
278
147
|
total: number | null;
|
|
279
148
|
countMode: CountMode;
|
|
280
149
|
}
|
|
@@ -293,6 +162,8 @@ interface PageInfo {
|
|
|
293
162
|
hasMore: boolean;
|
|
294
163
|
total: number | null;
|
|
295
164
|
countMode: CountMode;
|
|
165
|
+
/** See {@link ContinuationPage.totalIsExact}. */
|
|
166
|
+
totalIsExact?: boolean;
|
|
296
167
|
}
|
|
297
168
|
/** Legacy/internal offset-based pagination response. */
|
|
298
169
|
interface PageResponse<T> {
|
|
@@ -306,426 +177,6 @@ interface PageOptions {
|
|
|
306
177
|
countMode?: CountMode;
|
|
307
178
|
}
|
|
308
179
|
|
|
309
|
-
/**
|
|
310
|
-
* Type of view - determines the config structure
|
|
311
|
-
*/
|
|
312
|
-
type ViewType = "detail" | "list";
|
|
313
|
-
/**
|
|
314
|
-
* Creation behavior when clicking the "+" button
|
|
315
|
-
* - `redirect`: Create the record then navigate to its detail page
|
|
316
|
-
* - `inline`: Insert an empty row in the table (no navigation)
|
|
317
|
-
* - `peek`: Create a draft immediately and open it in the record stack side panel
|
|
318
|
-
*/
|
|
319
|
-
type CreateMode = "redirect" | "inline" | "peek";
|
|
320
|
-
/**
|
|
321
|
-
* Inline attribute group configuration
|
|
322
|
-
* Groups multiple attributes into a single composite field with dropdown editing
|
|
323
|
-
*/
|
|
324
|
-
interface AttributeGroupField {
|
|
325
|
-
/** Unique identifier for the group */
|
|
326
|
-
id: string;
|
|
327
|
-
/** Display label for the composite field */
|
|
328
|
-
label: string;
|
|
329
|
-
/** Description shown in the dropdown */
|
|
330
|
-
description?: string;
|
|
331
|
-
/** Attribute names to include in this group */
|
|
332
|
-
attributes: string[];
|
|
333
|
-
/**
|
|
334
|
-
* Template for the display value
|
|
335
|
-
* Uses {attributeName} syntax for interpolation
|
|
336
|
-
* @example "{billing_street}, {billing_city} {billing_postal_code}"
|
|
337
|
-
*/
|
|
338
|
-
displayTemplate?: string;
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Field definition within a form group
|
|
342
|
-
* Can be either a single attribute or an inline attribute group
|
|
343
|
-
*/
|
|
344
|
-
interface Field {
|
|
345
|
-
/** Attribute name to display (for single attribute fields) */
|
|
346
|
-
attribute?: string;
|
|
347
|
-
/** Inline attribute group (groups multiple attributes into one composite field) */
|
|
348
|
-
attributeGroup?: AttributeGroupField;
|
|
349
|
-
/** Grid span (1-12 columns) */
|
|
350
|
-
span?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
351
|
-
/** Override label for this view (only for single attribute fields) */
|
|
352
|
-
label?: string;
|
|
353
|
-
/** Force read-only display */
|
|
354
|
-
readOnly?: boolean;
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Base properties shared by all group types
|
|
358
|
-
*/
|
|
359
|
-
interface BaseGroup {
|
|
360
|
-
id: string;
|
|
361
|
-
label: string;
|
|
362
|
-
description?: string;
|
|
363
|
-
collapsible?: boolean;
|
|
364
|
-
collapsed?: boolean;
|
|
365
|
-
order?: number;
|
|
366
|
-
}
|
|
367
|
-
/**
|
|
368
|
-
* Group of fields for organizing forms (default group type)
|
|
369
|
-
*/
|
|
370
|
-
interface FieldGroup extends BaseGroup {
|
|
371
|
-
/** Discriminant — optional for backward compatibility with existing data */
|
|
372
|
-
type?: "fields";
|
|
373
|
-
fields: Field[];
|
|
374
|
-
}
|
|
375
|
-
/**
|
|
376
|
-
* Group that displays related records for a relation attribute
|
|
377
|
-
*/
|
|
378
|
-
interface RelationGroup extends BaseGroup {
|
|
379
|
-
type: "relation";
|
|
380
|
-
/** Relation attribute name on the source object */
|
|
381
|
-
attribute: string;
|
|
382
|
-
/** Columns to display (auto-detected from target object if empty) */
|
|
383
|
-
columns?: string[];
|
|
384
|
-
/** Read-only mode */
|
|
385
|
-
readOnly?: boolean;
|
|
386
|
-
/** Allow creating new related records */
|
|
387
|
-
allowCreate?: boolean;
|
|
388
|
-
/**
|
|
389
|
-
* Two-level traversal — display records from the target's relation.
|
|
390
|
-
* When set, parent rows become grouping headers and the sub-rows
|
|
391
|
-
* (from `through.attribute`) are the primary display.
|
|
392
|
-
*
|
|
393
|
-
* @example attribute = "members", through.attribute = "companies"
|
|
394
|
-
* → displays companies of each member
|
|
395
|
-
*/
|
|
396
|
-
through?: {
|
|
397
|
-
/** Relation attribute on the first-level target object */
|
|
398
|
-
attribute: string;
|
|
399
|
-
};
|
|
400
|
-
}
|
|
401
|
-
/**
|
|
402
|
-
* Discriminated union of all group types
|
|
403
|
-
*/
|
|
404
|
-
type Group = FieldGroup | RelationGroup;
|
|
405
|
-
type TabType = "form" | "table" | "custom" | "activity" | "richtext" | "documents" | "forms" | "emails";
|
|
406
|
-
/**
|
|
407
|
-
* Base properties shared by all tab types
|
|
408
|
-
*/
|
|
409
|
-
interface BaseTab {
|
|
410
|
-
id: string;
|
|
411
|
-
name: string;
|
|
412
|
-
label: string;
|
|
413
|
-
icon?: IconName;
|
|
414
|
-
order?: number;
|
|
415
|
-
}
|
|
416
|
-
/**
|
|
417
|
-
* Form layout density
|
|
418
|
-
*/
|
|
419
|
-
type FormDensity = "compact" | "comfortable" | "spacious";
|
|
420
|
-
/**
|
|
421
|
-
* Form tab - displays attributes organized in groups
|
|
422
|
-
*/
|
|
423
|
-
interface FormTab extends BaseTab {
|
|
424
|
-
type: "form";
|
|
425
|
-
groups: Group[];
|
|
426
|
-
/** Number of grid columns (1, 2, or 3). Default: 2 */
|
|
427
|
-
formColumns?: 1 | 2 | 3;
|
|
428
|
-
/** Layout density. Default: "comfortable" */
|
|
429
|
-
density?: FormDensity;
|
|
430
|
-
}
|
|
431
|
-
/**
|
|
432
|
-
* Direct relation on the current object
|
|
433
|
-
*
|
|
434
|
-
* @example Contact.companies → shows Companies linked via the "companies" relation
|
|
435
|
-
*/
|
|
436
|
-
interface RelationSource {
|
|
437
|
-
type: "relation";
|
|
438
|
-
/** Relation attribute name on the current object */
|
|
439
|
-
attribute: string;
|
|
440
|
-
}
|
|
441
|
-
/**
|
|
442
|
-
* Inverse lookup — records from another object that point to us
|
|
443
|
-
*
|
|
444
|
-
* @example On Company, show Contacts where Contact.company = this Company
|
|
445
|
-
*/
|
|
446
|
-
interface InverseSource {
|
|
447
|
-
type: "inverse";
|
|
448
|
-
/** Object name that has the relation to us */
|
|
449
|
-
object: string;
|
|
450
|
-
/** Relation attribute name on the source object that points to us */
|
|
451
|
-
attribute: string;
|
|
452
|
-
}
|
|
453
|
-
/**
|
|
454
|
-
* Where table data comes from — either a direct relation or an inverse lookup
|
|
455
|
-
*/
|
|
456
|
-
type TableSource = RelationSource | InverseSource;
|
|
457
|
-
/**
|
|
458
|
-
* Table tab - displays related records in a table
|
|
459
|
-
*
|
|
460
|
-
* The `source` field determines where data comes from.
|
|
461
|
-
*
|
|
462
|
-
* @example Direct: source = { type: "relation", attribute: "members" }
|
|
463
|
-
* @example Inverse: source = { type: "inverse", object: "contacts", attribute: "company" }
|
|
464
|
-
*/
|
|
465
|
-
interface TableTab extends BaseTab {
|
|
466
|
-
type: "table";
|
|
467
|
-
/** Where the data comes from */
|
|
468
|
-
source: TableSource;
|
|
469
|
-
/** Columns to display (attribute names from the resolved target object) */
|
|
470
|
-
columns: string[];
|
|
471
|
-
/**
|
|
472
|
-
* Traverse a 2nd-level relation to display nested data.
|
|
473
|
-
* When active, `columns` stores the 2nd-level object's attribute names.
|
|
474
|
-
*
|
|
475
|
-
* @example source.attribute = "members", through.attribute = "companies"
|
|
476
|
-
* → displays companies of each member
|
|
477
|
-
*/
|
|
478
|
-
through?: {
|
|
479
|
-
/** Relation attribute on the first-level target object */
|
|
480
|
-
attribute: string;
|
|
481
|
-
/** Show _source and _target columns */
|
|
482
|
-
showSourceTarget?: boolean;
|
|
483
|
-
};
|
|
484
|
-
/** Allow creating new records */
|
|
485
|
-
allowCreate?: boolean;
|
|
486
|
-
/** Creation behavior when allowCreate is true. Default: "redirect" */
|
|
487
|
-
createMode?: CreateMode;
|
|
488
|
-
/** Allow inline editing */
|
|
489
|
-
allowEdit?: boolean;
|
|
490
|
-
/** Allow deleting records */
|
|
491
|
-
allowDelete?: boolean;
|
|
492
|
-
/** Default filters applied to the table */
|
|
493
|
-
filters?: FilterState;
|
|
494
|
-
/** Default sort rules */
|
|
495
|
-
sorts?: SortRule[];
|
|
496
|
-
}
|
|
497
|
-
/**
|
|
498
|
-
* Custom tab - renders a developer-defined component
|
|
499
|
-
*/
|
|
500
|
-
interface CustomTab extends BaseTab {
|
|
501
|
-
type: "custom";
|
|
502
|
-
/** Component identifier to render */
|
|
503
|
-
component: string;
|
|
504
|
-
/** Props to pass to the component */
|
|
505
|
-
props?: Record<string, unknown>;
|
|
506
|
-
}
|
|
507
|
-
/**
|
|
508
|
-
* Activity tab - displays activity feed for the current record
|
|
509
|
-
*/
|
|
510
|
-
interface ActivityTab extends BaseTab {
|
|
511
|
-
type: "activity";
|
|
512
|
-
limit?: number;
|
|
513
|
-
}
|
|
514
|
-
/**
|
|
515
|
-
* Richtext tab - displays a block editor for a richtext attribute
|
|
516
|
-
*/
|
|
517
|
-
interface RichtextTab extends BaseTab {
|
|
518
|
-
type: "richtext";
|
|
519
|
-
/** Richtext attribute to display in the BlockEditor */
|
|
520
|
-
attribute: string;
|
|
521
|
-
/** Optional text attribute for an editable title input above the editor */
|
|
522
|
-
titleAttribute?: string;
|
|
523
|
-
}
|
|
524
|
-
/**
|
|
525
|
-
* Documents tab - displays all documents attached to the record
|
|
526
|
-
*/
|
|
527
|
-
interface DocumentsTab extends BaseTab {
|
|
528
|
-
type: "documents";
|
|
529
|
-
allowUpload?: boolean;
|
|
530
|
-
allowRemove?: boolean;
|
|
531
|
-
hideAttachments?: boolean;
|
|
532
|
-
}
|
|
533
|
-
/**
|
|
534
|
-
* Forms tab - displays available forms for creating related records
|
|
535
|
-
*/
|
|
536
|
-
interface FormsTab extends BaseTab {
|
|
537
|
-
type: "forms";
|
|
538
|
-
/** Object name to filter forms by slot (derived from record context, but can be overridden) */
|
|
539
|
-
objectName?: string;
|
|
540
|
-
}
|
|
541
|
-
/**
|
|
542
|
-
* Emails tab - displays emails associated with the record at query time via the
|
|
543
|
-
* values of configured email-bearing text attributes. Config-only: no schema change.
|
|
544
|
-
*/
|
|
545
|
-
interface EmailsTab extends BaseTab {
|
|
546
|
-
type: "emails";
|
|
547
|
-
/** Names of text attributes whose values hold email addresses to match on. */
|
|
548
|
-
emailAttributeIds: string[];
|
|
549
|
-
}
|
|
550
|
-
/**
|
|
551
|
-
* Union of all tab types (for detail views)
|
|
552
|
-
*/
|
|
553
|
-
type Tab = FormTab | TableTab | CustomTab | ActivityTab | RichtextTab | DocumentsTab | FormsTab | EmailsTab;
|
|
554
|
-
/**
|
|
555
|
-
* List view layout mode
|
|
556
|
-
* - `table`: Table/grid layout
|
|
557
|
-
* - `kanban`: Kanban board layout (grouped by attribute)
|
|
558
|
-
*/
|
|
559
|
-
type ListViewLayout = "table" | "kanban";
|
|
560
|
-
/**
|
|
561
|
-
* Tab within a list view — each tab carries its own full display configuration.
|
|
562
|
-
*
|
|
563
|
-
* @example
|
|
564
|
-
* ```typescript
|
|
565
|
-
* const tabs: ListViewTab[] = [
|
|
566
|
-
* { id: "all", label: "All Contacts", default: true, layout: "table", columns: ["name", "email", "status"] },
|
|
567
|
-
* { id: "active", label: "Active", layout: "table", columns: ["name", "email"], filters: activeFilter },
|
|
568
|
-
* { id: "pipeline", label: "Pipeline", layout: "kanban", columns: ["name", "amount"], groupByAttribute: "stage" },
|
|
569
|
-
* ];
|
|
570
|
-
* ```
|
|
571
|
-
*/
|
|
572
|
-
interface ListViewTab {
|
|
573
|
-
/** Unique identifier */
|
|
574
|
-
id: string;
|
|
575
|
-
/** Display label */
|
|
576
|
-
label: string;
|
|
577
|
-
/** Icon */
|
|
578
|
-
icon?: IconName;
|
|
579
|
-
/** Default tab (shown on load) */
|
|
580
|
-
default?: boolean;
|
|
581
|
-
/** Layout mode */
|
|
582
|
-
layout: ListViewLayout;
|
|
583
|
-
/** Attribute names to display as columns */
|
|
584
|
-
columns: string[];
|
|
585
|
-
/** Column widths in pixels */
|
|
586
|
-
columnSizing?: Record<string, number>;
|
|
587
|
-
/** Filters applied to this tab */
|
|
588
|
-
filters?: FilterGroup;
|
|
589
|
-
/** Sort rules for this tab */
|
|
590
|
-
sorts?: SortRule[];
|
|
591
|
-
/** Attribute to group by (required when layout is "kanban") */
|
|
592
|
-
groupByAttribute?: string;
|
|
593
|
-
/** When true, the tab is read-only: no cell editing, no create, no delete */
|
|
594
|
-
readOnly?: boolean;
|
|
595
|
-
/** Creation behavior when clicking "+". Default: "redirect" */
|
|
596
|
-
createMode?: CreateMode;
|
|
597
|
-
/** User attribute to display on kanban cards (bottom-left) */
|
|
598
|
-
cardUserAttribute?: string;
|
|
599
|
-
/** Date attribute to display on kanban cards (bottom-right) */
|
|
600
|
-
cardDateAttribute?: string;
|
|
601
|
-
/** Order of kanban columns (by option value) - for kanban layout only */
|
|
602
|
-
kanbanColumnOrder?: string[];
|
|
603
|
-
/** Visibility of kanban columns (by option value) - for kanban layout only */
|
|
604
|
-
kanbanColumnVisibility?: Record<string, boolean>;
|
|
605
|
-
/** Pinned kanban columns (by option value) - for kanban layout only */
|
|
606
|
-
kanbanPinnedColumns?: string[];
|
|
607
|
-
}
|
|
608
|
-
/**
|
|
609
|
-
* Configuration for the side panel displayed alongside tab content.
|
|
610
|
-
* When present, a right-side panel shows the configured attributes as flat fields.
|
|
611
|
-
*/
|
|
612
|
-
interface SidePanelConfig {
|
|
613
|
-
/** Attribute names to display as flat fields in the panel */
|
|
614
|
-
attributes: string[];
|
|
615
|
-
/** Width in pixels. @default 320 */
|
|
616
|
-
width?: number;
|
|
617
|
-
}
|
|
618
|
-
/**
|
|
619
|
-
* Configuration for detail views (RecordEditView)
|
|
620
|
-
*/
|
|
621
|
-
interface DetailViewConfig {
|
|
622
|
-
/** Tabs in this view */
|
|
623
|
-
tabs: Tab[];
|
|
624
|
-
/** Optional side panel with flat attribute fields */
|
|
625
|
-
sidePanel?: SidePanelConfig;
|
|
626
|
-
}
|
|
627
|
-
/**
|
|
628
|
-
* Configuration for list views (RecordsView)
|
|
629
|
-
*
|
|
630
|
-
* Each tab carries its own full config (layout, columns, filters, sorts, groupBy).
|
|
631
|
-
* The view only holds shared base filters applied to ALL tabs.
|
|
632
|
-
*/
|
|
633
|
-
interface ListViewConfig {
|
|
634
|
-
/** Base filters applied to ALL tabs (scoping, tenant, etc.) */
|
|
635
|
-
defaultFilters?: FilterGroup;
|
|
636
|
-
/** Tabs — at least one required. Each carries its own full config. */
|
|
637
|
-
tabs: ListViewTab[];
|
|
638
|
-
}
|
|
639
|
-
/**
|
|
640
|
-
* Union of all view configs
|
|
641
|
-
*/
|
|
642
|
-
type ViewConfig = DetailViewConfig | ListViewConfig;
|
|
643
|
-
/**
|
|
644
|
-
* Base view properties shared by all view types
|
|
645
|
-
*/
|
|
646
|
-
interface BaseViewDefinition {
|
|
647
|
-
/** Unique identifier (UUID, assigned by database) */
|
|
648
|
-
id?: string;
|
|
649
|
-
/** Technical name (kebab-case) */
|
|
650
|
-
name: string;
|
|
651
|
-
/** Display label */
|
|
652
|
-
label: string;
|
|
653
|
-
/** Description */
|
|
654
|
-
description?: string;
|
|
655
|
-
/** Icon */
|
|
656
|
-
icon?: IconName;
|
|
657
|
-
/** Object this view belongs to (object name) */
|
|
658
|
-
object: string;
|
|
659
|
-
/** Default view for this object+type combination */
|
|
660
|
-
default?: boolean;
|
|
661
|
-
/** Extensible metadata */
|
|
662
|
-
metadata?: Record<string, unknown>;
|
|
663
|
-
}
|
|
664
|
-
/**
|
|
665
|
-
* Detail view definition
|
|
666
|
-
*/
|
|
667
|
-
interface DetailViewDefinition extends BaseViewDefinition {
|
|
668
|
-
type: "detail";
|
|
669
|
-
config: DetailViewConfig;
|
|
670
|
-
}
|
|
671
|
-
/**
|
|
672
|
-
* List view definition
|
|
673
|
-
*/
|
|
674
|
-
interface ListViewDefinition extends BaseViewDefinition {
|
|
675
|
-
type: "list";
|
|
676
|
-
config: ListViewConfig;
|
|
677
|
-
}
|
|
678
|
-
/**
|
|
679
|
-
* Unified view definition - discriminated union by type
|
|
680
|
-
*/
|
|
681
|
-
type ViewDefinition = DetailViewDefinition | ListViewDefinition;
|
|
682
|
-
/**
|
|
683
|
-
* Configuration overrides for user customizations
|
|
684
|
-
* Only stores the delta from the source view
|
|
685
|
-
*/
|
|
686
|
-
interface ConfigOverrides {
|
|
687
|
-
tabs?: ListViewTab[];
|
|
688
|
-
hiddenTabIds?: string[];
|
|
689
|
-
detailTabs?: Tab[];
|
|
690
|
-
hiddenDetailTabIds?: string[];
|
|
691
|
-
}
|
|
692
|
-
/**
|
|
693
|
-
* User customization overlay for a view
|
|
694
|
-
* Stored per user, merged at runtime with the source view
|
|
695
|
-
*/
|
|
696
|
-
interface ViewOverlay {
|
|
697
|
-
/** Unique identifier */
|
|
698
|
-
id: string;
|
|
699
|
-
/** View ID this overlay applies to (UUID or virtual ID) */
|
|
700
|
-
viewId: string;
|
|
701
|
-
/** User ID who owns this overlay */
|
|
702
|
-
userId: string;
|
|
703
|
-
/** Configuration overrides (delta only) */
|
|
704
|
-
configOverrides: ConfigOverrides;
|
|
705
|
-
/** User's default view for this object (stored in overlay) */
|
|
706
|
-
isUserDefault?: boolean;
|
|
707
|
-
/** Created timestamp */
|
|
708
|
-
createdAt: Date;
|
|
709
|
-
/** Updated timestamp */
|
|
710
|
-
updatedAt: Date;
|
|
711
|
-
}
|
|
712
|
-
/**
|
|
713
|
-
* Check if a view is a detail view
|
|
714
|
-
*/
|
|
715
|
-
declare function isDetailView(view: ViewDefinition): view is DetailViewDefinition;
|
|
716
|
-
/**
|
|
717
|
-
* Check if a view is a list view
|
|
718
|
-
*/
|
|
719
|
-
declare function isListView(view: ViewDefinition): view is ListViewDefinition;
|
|
720
|
-
/**
|
|
721
|
-
* Check if a group is a field group (default type)
|
|
722
|
-
*/
|
|
723
|
-
declare function isFieldGroup(group: Group): group is FieldGroup;
|
|
724
|
-
/**
|
|
725
|
-
* Check if a group is a relation group
|
|
726
|
-
*/
|
|
727
|
-
declare function isRelationGroup(group: Group): group is RelationGroup;
|
|
728
|
-
|
|
729
180
|
/**
|
|
730
181
|
* Object as stored in database (metadata)
|
|
731
182
|
*/
|
|
@@ -940,14 +391,30 @@ interface GlobalSearchResultItem {
|
|
|
940
391
|
/**
|
|
941
392
|
* Global search grouped result
|
|
942
393
|
*/
|
|
943
|
-
interface
|
|
394
|
+
interface AuthorizedSearchPage extends ContinuationPage {
|
|
395
|
+
total: number;
|
|
396
|
+
/**
|
|
397
|
+
* Whether `total` is the real filtered count or only a lower bound.
|
|
398
|
+
*
|
|
399
|
+
* Pinning this to `false` would make it a constant, and a constant carries no
|
|
400
|
+
* information — callers (the agent tools in particular) read it precisely to
|
|
401
|
+
* know whether they may state a count.
|
|
402
|
+
*/
|
|
403
|
+
totalIsExact: boolean;
|
|
404
|
+
}
|
|
405
|
+
interface AuthorizedRecordSearchResult extends AuthorizedSearchPage {
|
|
406
|
+
records: ObjectRecord[];
|
|
407
|
+
}
|
|
408
|
+
interface AuthorizedGlobalSearchResult extends AuthorizedSearchPage {
|
|
409
|
+
results: GlobalSearchResultItem[];
|
|
410
|
+
}
|
|
411
|
+
interface GlobalSearchGroupedResult extends AuthorizedSearchPage {
|
|
944
412
|
groups: Array<{
|
|
945
413
|
objectName: string;
|
|
946
414
|
objectLabel: string;
|
|
947
415
|
results: GlobalSearchResultItem[];
|
|
948
416
|
totalInGroup: number;
|
|
949
417
|
}>;
|
|
950
|
-
total: number;
|
|
951
418
|
}
|
|
952
419
|
/**
|
|
953
420
|
* File-specific list options
|
|
@@ -1235,274 +702,35 @@ interface AssignActorRoleInput {
|
|
|
1235
702
|
}
|
|
1236
703
|
|
|
1237
704
|
/**
|
|
1238
|
-
*
|
|
1239
|
-
*
|
|
1240
|
-
* - `system`: Controls access to platform resources (people, workspace, API keys, etc.)
|
|
705
|
+
* Legacy permission payload stored with an API key.
|
|
706
|
+
* Runtime authorization uses the API key actor's effective permissions.
|
|
1241
707
|
*/
|
|
1242
|
-
|
|
708
|
+
interface ApiKeyPermission {
|
|
709
|
+
scope: PermissionScope;
|
|
710
|
+
target: string;
|
|
711
|
+
actions: Action[];
|
|
712
|
+
}
|
|
713
|
+
interface ApiKey {
|
|
714
|
+
id: string;
|
|
715
|
+
tenantId: string;
|
|
716
|
+
userProfileId: string | null;
|
|
717
|
+
name: string;
|
|
718
|
+
prefix: string;
|
|
719
|
+
/** Legacy metadata; not the runtime authorization source of truth. */
|
|
720
|
+
permissions: ApiKeyPermission[];
|
|
721
|
+
expiresAt: string | null;
|
|
722
|
+
lastUsedAt: string | null;
|
|
723
|
+
revokedAt: string | null;
|
|
724
|
+
createdAt: string;
|
|
725
|
+
createdBy: string;
|
|
726
|
+
}
|
|
727
|
+
/** Returned only at creation time — the only time the plaintext secret is available. */
|
|
728
|
+
interface ApiKeyWithSecret extends ApiKey {
|
|
729
|
+
secret: string;
|
|
730
|
+
}
|
|
1243
731
|
/**
|
|
1244
|
-
*
|
|
1245
|
-
*
|
|
1246
|
-
* `observe` is intentionally excluded from `ALL_ACTIONS` ("full" preset) — it
|
|
1247
|
-
* is only meaningful for runnable resources (agent sessions) where it grants
|
|
1248
|
-
* read-only visibility on the run timeline without implying CRUD.
|
|
1249
|
-
*/
|
|
1250
|
-
type Action = "read" | "create" | "update" | "delete" | "manage" | "observe";
|
|
1251
|
-
/**
|
|
1252
|
-
* System resources that can be managed.
|
|
1253
|
-
* - `people`: User profiles, invitations, roles and permissions
|
|
1254
|
-
* - `workspace`: Tenant settings and workspace-level configuration
|
|
1255
|
-
* - `architect`: Architect settings, templates, and configurations
|
|
1256
|
-
*/
|
|
1257
|
-
type SystemResource = "people" | "workspace" | "architect" | "feature-flags" | "files" | "views" | "forms" | "documents" | "audit" | "api-keys" | "connectors" | "env-vars" | "session";
|
|
1258
|
-
/**
|
|
1259
|
-
* Preset access levels for simplified permission configuration.
|
|
1260
|
-
* - `full`: All CRUD actions
|
|
1261
|
-
* - `read-only`: Only read action
|
|
1262
|
-
* - `none`: No actions
|
|
1263
|
-
* - `custom`: Manual selection of individual actions
|
|
1264
|
-
*/
|
|
1265
|
-
type AccessLevel = "full" | "read-only" | "none" | "custom";
|
|
1266
|
-
declare const ALL_ACTIONS: Action[];
|
|
1267
|
-
/**
|
|
1268
|
-
* Derive an AccessLevel from a list of actions.
|
|
1269
|
-
*/
|
|
1270
|
-
declare function actionsToAccessLevel(actions: Action[]): AccessLevel;
|
|
1271
|
-
/**
|
|
1272
|
-
* Convert an AccessLevel preset to its corresponding actions.
|
|
1273
|
-
*/
|
|
1274
|
-
declare function accessLevelToActions(level: Exclude<AccessLevel, "custom">): Action[];
|
|
1275
|
-
/**
|
|
1276
|
-
* Role definition - Groups permissions together.
|
|
1277
|
-
*
|
|
1278
|
-
* Roles are tenant-scoped and can be system-defined (immutable) or custom.
|
|
1279
|
-
*
|
|
1280
|
-
* @example
|
|
1281
|
-
* ```typescript
|
|
1282
|
-
* const ownerRole: Role = {
|
|
1283
|
-
* id: "role-123",
|
|
1284
|
-
* tenantId: "tenant-456",
|
|
1285
|
-
* name: "owner",
|
|
1286
|
-
* label: "Owner",
|
|
1287
|
-
* description: "Full access to all platform features and data",
|
|
1288
|
-
* system: true,
|
|
1289
|
-
* createdAt: new Date(),
|
|
1290
|
-
* updatedAt: new Date(),
|
|
1291
|
-
* };
|
|
1292
|
-
* ```
|
|
1293
|
-
*/
|
|
1294
|
-
interface Role extends Timestamps {
|
|
1295
|
-
id: Uuid;
|
|
1296
|
-
tenantId: Uuid;
|
|
1297
|
-
/**
|
|
1298
|
-
* Technical name (unique per tenant, used in code).
|
|
1299
|
-
* Examples: "owner", "member", "sales_manager"
|
|
1300
|
-
*/
|
|
1301
|
-
name: string;
|
|
1302
|
-
/**
|
|
1303
|
-
* Display name shown in UI.
|
|
1304
|
-
*/
|
|
1305
|
-
label: string;
|
|
1306
|
-
/**
|
|
1307
|
-
* Optional description of the role's purpose.
|
|
1308
|
-
*/
|
|
1309
|
-
description?: string;
|
|
1310
|
-
/**
|
|
1311
|
-
* If true, this role cannot be modified or deleted.
|
|
1312
|
-
* Used for built-in roles like "owner".
|
|
1313
|
-
*/
|
|
1314
|
-
system: boolean;
|
|
1315
|
-
}
|
|
1316
|
-
/**
|
|
1317
|
-
* Permission definition - Grants specific actions on a target.
|
|
1318
|
-
*
|
|
1319
|
-
* A permission belongs to a role and defines what actions are allowed
|
|
1320
|
-
* on a specific target (object or system resource).
|
|
1321
|
-
*
|
|
1322
|
-
* @example
|
|
1323
|
-
* ```typescript
|
|
1324
|
-
* // Allow read and update on companies object
|
|
1325
|
-
* const permission: Permission = {
|
|
1326
|
-
* id: "perm-123",
|
|
1327
|
-
* roleId: "role-456",
|
|
1328
|
-
* scope: "object",
|
|
1329
|
-
* target: "companies",
|
|
1330
|
-
* actions: ["read", "update"],
|
|
1331
|
-
* createdAt: new Date(),
|
|
1332
|
-
* };
|
|
1333
|
-
*
|
|
1334
|
-
* // Wildcard permission for all objects
|
|
1335
|
-
* const wildcardPerm: Permission = {
|
|
1336
|
-
* id: "perm-789",
|
|
1337
|
-
* roleId: "role-456",
|
|
1338
|
-
* scope: "object",
|
|
1339
|
-
* target: "*",
|
|
1340
|
-
* actions: ["read", "create", "update", "delete"],
|
|
1341
|
-
* createdAt: new Date(),
|
|
1342
|
-
* };
|
|
1343
|
-
* ```
|
|
1344
|
-
*/
|
|
1345
|
-
interface Permission {
|
|
1346
|
-
id: Uuid;
|
|
1347
|
-
roleId: Uuid;
|
|
1348
|
-
/**
|
|
1349
|
-
* Scope of this permission.
|
|
1350
|
-
*/
|
|
1351
|
-
scope: PermissionScope;
|
|
1352
|
-
/**
|
|
1353
|
-
* Target of the permission.
|
|
1354
|
-
* - For `object` scope: object name (e.g., "companies") or "*" for all
|
|
1355
|
-
* - For `system` scope: system resource (e.g., "people", "workspace") or "*" for all
|
|
1356
|
-
*/
|
|
1357
|
-
target: string;
|
|
1358
|
-
/**
|
|
1359
|
-
* Actions allowed on the target.
|
|
1360
|
-
*/
|
|
1361
|
-
actions: Action[];
|
|
1362
|
-
createdAt: Date;
|
|
1363
|
-
}
|
|
1364
|
-
/**
|
|
1365
|
-
* Links a user profile to a role within a tenant.
|
|
1366
|
-
*
|
|
1367
|
-
* A user can have multiple roles, and their permissions are additive (union).
|
|
1368
|
-
*
|
|
1369
|
-
* Note: `userProfileId` references UserProfile.id from the user_profiles table,
|
|
1370
|
-
* NOT the auth provider ID (authId). This keeps permissions tied to the
|
|
1371
|
-
* application's user management, not the authentication layer.
|
|
1372
|
-
*/
|
|
1373
|
-
interface UserRoleAssignment {
|
|
1374
|
-
id: Uuid;
|
|
1375
|
-
/**
|
|
1376
|
-
* User profile ID (UserProfile.id from user_profiles table).
|
|
1377
|
-
* This links to the application's user management system,
|
|
1378
|
-
* not the auth provider's user ID.
|
|
1379
|
-
*/
|
|
1380
|
-
userProfileId: Uuid;
|
|
1381
|
-
roleId: Uuid;
|
|
1382
|
-
tenantId: Uuid;
|
|
1383
|
-
/**
|
|
1384
|
-
* When the role was assigned.
|
|
1385
|
-
*/
|
|
1386
|
-
assignedAt: Date;
|
|
1387
|
-
/**
|
|
1388
|
-
* Actor ID of who assigned this role (for audit trail).
|
|
1389
|
-
*/
|
|
1390
|
-
assignedBy?: Uuid;
|
|
1391
|
-
}
|
|
1392
|
-
/**
|
|
1393
|
-
* Computed permissions for a user.
|
|
1394
|
-
*
|
|
1395
|
-
* This is the merged result of all roles assigned to a user.
|
|
1396
|
-
* Returned by the API for permission checks.
|
|
1397
|
-
*/
|
|
1398
|
-
interface EffectivePermissions {
|
|
1399
|
-
/**
|
|
1400
|
-
* Object-level permissions.
|
|
1401
|
-
* Key is the object name, value is array of allowed actions.
|
|
1402
|
-
* Special key "*" means permission applies to all objects.
|
|
1403
|
-
*/
|
|
1404
|
-
objectPermissions: Record<string, Action[]>;
|
|
1405
|
-
/**
|
|
1406
|
-
* System-level permissions.
|
|
1407
|
-
* Key is the system resource (people, workspace), value is array of allowed actions.
|
|
1408
|
-
* Special key "*" means permission applies to all system resources.
|
|
1409
|
-
*/
|
|
1410
|
-
systemPermissions: Record<string, Action[]>;
|
|
1411
|
-
}
|
|
1412
|
-
/**
|
|
1413
|
-
* Permissions for a specific object.
|
|
1414
|
-
* Convenience type for frontend use.
|
|
1415
|
-
*/
|
|
1416
|
-
interface ObjectPermissions {
|
|
1417
|
-
canRead: boolean;
|
|
1418
|
-
canCreate: boolean;
|
|
1419
|
-
canUpdate: boolean;
|
|
1420
|
-
canDelete: boolean;
|
|
1421
|
-
canManage: boolean;
|
|
1422
|
-
}
|
|
1423
|
-
/**
|
|
1424
|
-
* Permissions for a specific system resource.
|
|
1425
|
-
* Convenience type for frontend use.
|
|
1426
|
-
*/
|
|
1427
|
-
interface SystemPermissions {
|
|
1428
|
-
canRead: boolean;
|
|
1429
|
-
canCreate: boolean;
|
|
1430
|
-
canUpdate: boolean;
|
|
1431
|
-
canDelete: boolean;
|
|
1432
|
-
canManage: boolean;
|
|
1433
|
-
}
|
|
1434
|
-
/**
|
|
1435
|
-
* Input for creating a new role.
|
|
1436
|
-
* TenantId is automatically set from TenantContext.
|
|
1437
|
-
*/
|
|
1438
|
-
interface CreateRoleInput {
|
|
1439
|
-
name: string;
|
|
1440
|
-
label: string;
|
|
1441
|
-
description?: string;
|
|
1442
|
-
/** Framework-owned default roles are system:true (immutable, auto-assignable). Custom roles default false. */
|
|
1443
|
-
system?: boolean;
|
|
1444
|
-
}
|
|
1445
|
-
/**
|
|
1446
|
-
* Input for updating an existing role.
|
|
1447
|
-
*/
|
|
1448
|
-
interface UpdateRoleInput {
|
|
1449
|
-
label?: string;
|
|
1450
|
-
description?: string;
|
|
1451
|
-
}
|
|
1452
|
-
/**
|
|
1453
|
-
* Input for creating a permission.
|
|
1454
|
-
*/
|
|
1455
|
-
interface CreatePermissionInput {
|
|
1456
|
-
scope: PermissionScope;
|
|
1457
|
-
target: string;
|
|
1458
|
-
/**
|
|
1459
|
-
* Actions allowed on the target.
|
|
1460
|
-
*/
|
|
1461
|
-
actions: Action[];
|
|
1462
|
-
}
|
|
1463
|
-
/**
|
|
1464
|
-
* Input for assigning a role to a user.
|
|
1465
|
-
*/
|
|
1466
|
-
interface AssignRoleInput {
|
|
1467
|
-
/**
|
|
1468
|
-
* User profile ID (UserProfile.id).
|
|
1469
|
-
*/
|
|
1470
|
-
userProfileId: Uuid;
|
|
1471
|
-
roleId: Uuid;
|
|
1472
|
-
tenantId: Uuid;
|
|
1473
|
-
assignedBy?: Uuid;
|
|
1474
|
-
}
|
|
1475
|
-
|
|
1476
|
-
/**
|
|
1477
|
-
* Legacy permission payload stored with an API key.
|
|
1478
|
-
* Runtime authorization uses the API key actor's effective permissions.
|
|
1479
|
-
*/
|
|
1480
|
-
interface ApiKeyPermission {
|
|
1481
|
-
scope: PermissionScope;
|
|
1482
|
-
target: string;
|
|
1483
|
-
actions: Action[];
|
|
1484
|
-
}
|
|
1485
|
-
interface ApiKey {
|
|
1486
|
-
id: string;
|
|
1487
|
-
tenantId: string;
|
|
1488
|
-
userProfileId: string | null;
|
|
1489
|
-
name: string;
|
|
1490
|
-
prefix: string;
|
|
1491
|
-
/** Legacy metadata; not the runtime authorization source of truth. */
|
|
1492
|
-
permissions: ApiKeyPermission[];
|
|
1493
|
-
expiresAt: string | null;
|
|
1494
|
-
lastUsedAt: string | null;
|
|
1495
|
-
revokedAt: string | null;
|
|
1496
|
-
createdAt: string;
|
|
1497
|
-
createdBy: string;
|
|
1498
|
-
}
|
|
1499
|
-
/** Returned only at creation time — the only time the plaintext secret is available. */
|
|
1500
|
-
interface ApiKeyWithSecret extends ApiKey {
|
|
1501
|
-
secret: string;
|
|
1502
|
-
}
|
|
1503
|
-
/**
|
|
1504
|
-
* Returned by validateKey — provides everything downstream needs.
|
|
1505
|
-
* Permissions come from actor-native effective permissions.
|
|
732
|
+
* Returned by validateKey — provides everything downstream needs.
|
|
733
|
+
* Permissions come from actor-native effective permissions.
|
|
1506
734
|
*/
|
|
1507
735
|
interface ApiKeyAuthContext {
|
|
1508
736
|
tenantId: string;
|
|
@@ -1550,54 +778,6 @@ interface EnvVarEntry {
|
|
|
1550
778
|
updatedAt: string;
|
|
1551
779
|
}
|
|
1552
780
|
|
|
1553
|
-
/**
|
|
1554
|
-
* Type of mentionable entity
|
|
1555
|
-
*/
|
|
1556
|
-
type MentionEntityType = "user" | "record" | (string & {});
|
|
1557
|
-
/**
|
|
1558
|
-
* A mention reference stored with a message
|
|
1559
|
-
*/
|
|
1560
|
-
interface MentionReference {
|
|
1561
|
-
/** Unique ID for this mention instance */
|
|
1562
|
-
id: string;
|
|
1563
|
-
/** Entity type (user, record, or custom) */
|
|
1564
|
-
type: MentionEntityType;
|
|
1565
|
-
/** Entity ID (user ID or record ID) */
|
|
1566
|
-
entityId: string;
|
|
1567
|
-
/** Display label at time of mention (cached for display even if entity is deleted) */
|
|
1568
|
-
label: string;
|
|
1569
|
-
/** Object name for records, undefined for users */
|
|
1570
|
-
objectName?: string;
|
|
1571
|
-
/** Start position in the message text */
|
|
1572
|
-
startIndex: number;
|
|
1573
|
-
/** End position in the message text */
|
|
1574
|
-
endIndex: number;
|
|
1575
|
-
}
|
|
1576
|
-
/**
|
|
1577
|
-
* Context data for a mentioned entity (sent to AI)
|
|
1578
|
-
*/
|
|
1579
|
-
interface MentionedEntityContext {
|
|
1580
|
-
/** Entity type */
|
|
1581
|
-
type: MentionEntityType;
|
|
1582
|
-
/** Entity ID */
|
|
1583
|
-
entityId: string;
|
|
1584
|
-
/** Display label */
|
|
1585
|
-
label: string;
|
|
1586
|
-
/** Object name for records */
|
|
1587
|
-
objectName?: string;
|
|
1588
|
-
/** Additional context data (record values, user details, etc.) */
|
|
1589
|
-
data?: Record<string, unknown>;
|
|
1590
|
-
}
|
|
1591
|
-
/**
|
|
1592
|
-
* Full mention context for AI
|
|
1593
|
-
*/
|
|
1594
|
-
interface MentionedContext {
|
|
1595
|
-
/** All mentioned entities with their context data */
|
|
1596
|
-
entities: MentionedEntityContext[];
|
|
1597
|
-
/** Summary text for AI system prompt */
|
|
1598
|
-
summary: string;
|
|
1599
|
-
}
|
|
1600
|
-
|
|
1601
781
|
declare const NOTIFICATION_KINDS: readonly ["fyi", "task", "question", "handoff", "system"];
|
|
1602
782
|
type NotificationKind = (typeof NOTIFICATION_KINDS)[number];
|
|
1603
783
|
declare const NOTIFICATION_PRIORITIES: readonly ["low", "normal", "high", "urgent"];
|
|
@@ -1719,1173 +899,167 @@ declare const IDENTITY_PROPERTIES: readonly ["name", "type"];
|
|
|
1719
899
|
* Behavior properties - Protected for system attributes
|
|
1720
900
|
* These affect business logic and data integrity.
|
|
1721
901
|
*/
|
|
1722
|
-
declare const BEHAVIOR_PROPERTIES: readonly ["required", "hidden", "archived", "deprecated", "defaultValue", "config", "order", "unique"];
|
|
1723
|
-
/**
|
|
1724
|
-
* Presentation properties - Always modifiable
|
|
1725
|
-
* These only affect display, not logic.
|
|
1726
|
-
*/
|
|
1727
|
-
declare const PRESENTATION_PROPERTIES: readonly ["label", "description", "placeholder", "icon"];
|
|
1728
|
-
|
|
1729
|
-
/**
|
|
1730
|
-
* Type of resource that can be audited
|
|
1731
|
-
*/
|
|
1732
|
-
declare const AUDIT_RESOURCE_TYPES: readonly ["record", "object", "attribute", "user", "role", "settings", "file"];
|
|
1733
|
-
type AuditResourceType = (typeof AUDIT_RESOURCE_TYPES)[number];
|
|
1734
|
-
/**
|
|
1735
|
-
* Actions that can be audited
|
|
1736
|
-
*/
|
|
1737
|
-
declare const AUDIT_ACTIONS: readonly ["record.created", "record.updated", "record.deleted", "record.restored", "record.purged", "object.created", "object.updated", "object.deleted", "attribute.created", "attribute.updated", "attribute.deleted", "user.created", "user.invited", "user.updated", "user.deleted", "user.login", "user.logout", "role.created", "role.updated", "role.deleted", "role.assigned", "role.revoked", "settings.updated", "file.uploaded", "file.updated", "file.deleted"];
|
|
1738
|
-
type AuditAction = (typeof AUDIT_ACTIONS)[number];
|
|
1739
|
-
/**
|
|
1740
|
-
* Actor type - who performed the action
|
|
1741
|
-
*/
|
|
1742
|
-
type AuditActorType = ActorType;
|
|
1743
|
-
/**
|
|
1744
|
-
* Detail of a change on a field
|
|
1745
|
-
*/
|
|
1746
|
-
interface AuditChange {
|
|
1747
|
-
/** Field name that was changed */
|
|
1748
|
-
field: string;
|
|
1749
|
-
/** Previous value (undefined for new fields) */
|
|
1750
|
-
oldValue: unknown;
|
|
1751
|
-
/** New value (undefined for deleted fields) */
|
|
1752
|
-
newValue: unknown;
|
|
1753
|
-
/** Resolved label for oldValue when the field is a relation. */
|
|
1754
|
-
oldLabel?: string;
|
|
1755
|
-
/** Resolved label for newValue when the field is a relation. */
|
|
1756
|
-
newLabel?: string;
|
|
1757
|
-
/** Resolved labels for oldValue array, aligned by index. */
|
|
1758
|
-
oldLabels?: string[];
|
|
1759
|
-
/** Resolved labels for newValue array, aligned by index. */
|
|
1760
|
-
newLabels?: string[];
|
|
1761
|
-
}
|
|
1762
|
-
/**
|
|
1763
|
-
* Audit log entry - immutable record of an action
|
|
1764
|
-
*/
|
|
1765
|
-
interface AuditLogEntry {
|
|
1766
|
-
id: Uuid;
|
|
1767
|
-
tenantId: Uuid;
|
|
1768
|
-
/** actors.id of the actor (null for system actions) */
|
|
1769
|
-
actorId?: string;
|
|
1770
|
-
/** Denormalized email for search (in case user is deleted) */
|
|
1771
|
-
actorEmail?: string;
|
|
1772
|
-
/** Type of actor */
|
|
1773
|
-
actorType: AuditActorType;
|
|
1774
|
-
/** Direct parent actor in a delegation chain (e.g. user who launched the agent). */
|
|
1775
|
-
triggeredByActorId?: string;
|
|
1776
|
-
/** Root human actor at the top of a delegation chain. Null in pure-autonomous runs. */
|
|
1777
|
-
rootActorId?: string;
|
|
1778
|
-
action: AuditAction;
|
|
1779
|
-
resourceType: AuditResourceType;
|
|
1780
|
-
resourceId: Uuid;
|
|
1781
|
-
/** Human-readable label (record name, object label, etc.) */
|
|
1782
|
-
resourceLabel?: string;
|
|
1783
|
-
/** Object technical name (e.g., "companies", "contacts") */
|
|
1784
|
-
objectName?: string;
|
|
1785
|
-
/** Object UUID */
|
|
1786
|
-
objectId?: Uuid;
|
|
1787
|
-
changes?: AuditChange[];
|
|
1788
|
-
/** Extra context (IP, user-agent, requestId, etc.) */
|
|
1789
|
-
metadata?: Record<string, unknown>;
|
|
1790
|
-
createdAt: Date;
|
|
1791
|
-
}
|
|
1792
|
-
/**
|
|
1793
|
-
* Input for creating an audit log entry.
|
|
1794
|
-
* Tenant ID is automatically set from execution context.
|
|
1795
|
-
*/
|
|
1796
|
-
interface CreateAuditLogInput {
|
|
1797
|
-
/** actors.id of the actor (null for system actions) */
|
|
1798
|
-
actorId?: string;
|
|
1799
|
-
/** Denormalized actor email for display purposes. */
|
|
1800
|
-
actorEmail?: string;
|
|
1801
|
-
actorType?: AuditActorType;
|
|
1802
|
-
action: AuditAction;
|
|
1803
|
-
resourceType: AuditResourceType;
|
|
1804
|
-
resourceId: string;
|
|
1805
|
-
resourceLabel?: string;
|
|
1806
|
-
objectName?: string;
|
|
1807
|
-
objectId?: string;
|
|
1808
|
-
changes?: AuditChange[];
|
|
1809
|
-
metadata?: Record<string, unknown>;
|
|
1810
|
-
/** Direct parent in a delegation chain (e.g. user who launched the agent). */
|
|
1811
|
-
triggeredByActorId?: string;
|
|
1812
|
-
/** Root human actor at the top of a delegation chain. */
|
|
1813
|
-
rootActorId?: string;
|
|
1814
|
-
}
|
|
1815
|
-
/**
|
|
1816
|
-
* Valid column names for sorting audit log entries.
|
|
1817
|
-
* Maps to snake_case database column names used in Supabase queries.
|
|
1818
|
-
*/
|
|
1819
|
-
type AuditSortField = "created_at" | "action" | "resource_type" | "actor_id" | "actor_email" | "object_name";
|
|
1820
|
-
/**
|
|
1821
|
-
* Options for listing audit logs
|
|
1822
|
-
*/
|
|
1823
|
-
interface AuditListOptions {
|
|
1824
|
-
limit?: number;
|
|
1825
|
-
offset?: number;
|
|
1826
|
-
action?: AuditAction | AuditAction[];
|
|
1827
|
-
resourceType?: AuditResourceType | AuditResourceType[];
|
|
1828
|
-
objectName?: string;
|
|
1829
|
-
actorId?: string;
|
|
1830
|
-
from?: Date;
|
|
1831
|
-
to?: Date;
|
|
1832
|
-
sorts?: Array<{
|
|
1833
|
-
field: AuditSortField;
|
|
1834
|
-
direction: "asc" | "desc";
|
|
1835
|
-
}>;
|
|
1836
|
-
}
|
|
1837
|
-
/**
|
|
1838
|
-
* Options for AuditService
|
|
1839
|
-
*/
|
|
1840
|
-
interface AuditServiceOptions {
|
|
1841
|
-
/**
|
|
1842
|
-
* If true, audit logging is async (fire-and-forget).
|
|
1843
|
-
* Better performance but logs might be lost on crash.
|
|
1844
|
-
* @default false
|
|
1845
|
-
*/
|
|
1846
|
-
async?: boolean;
|
|
1847
|
-
/**
|
|
1848
|
-
* Batch size for async mode.
|
|
1849
|
-
* Logs are buffered and flushed when batch is full or after flushIntervalMs.
|
|
1850
|
-
* @default 10
|
|
1851
|
-
*/
|
|
1852
|
-
batchSize?: number;
|
|
1853
|
-
/**
|
|
1854
|
-
* Flush interval in ms for async mode.
|
|
1855
|
-
* @default 1000
|
|
1856
|
-
*/
|
|
1857
|
-
flushIntervalMs?: number;
|
|
1858
|
-
}
|
|
1859
|
-
/**
|
|
1860
|
-
* A single field-level history entry, derived from an audit log change.
|
|
1861
|
-
* Client-safe — no tenant or internal IDs.
|
|
1862
|
-
*/
|
|
1863
|
-
interface FieldHistoryEntry {
|
|
1864
|
-
id: string;
|
|
1865
|
-
field: string;
|
|
1866
|
-
oldValue: unknown;
|
|
1867
|
-
newValue: unknown;
|
|
1868
|
-
oldLabel?: string;
|
|
1869
|
-
newLabel?: string;
|
|
1870
|
-
oldLabels?: string[];
|
|
1871
|
-
newLabels?: string[];
|
|
1872
|
-
actorEmail?: string;
|
|
1873
|
-
createdAt: Date;
|
|
1874
|
-
}
|
|
1875
|
-
|
|
1876
|
-
type DocumentKind = "file" | "folder";
|
|
1877
|
-
interface Document extends Timestamps {
|
|
1878
|
-
id: Uuid;
|
|
1879
|
-
tenantId: Uuid;
|
|
1880
|
-
title: string;
|
|
1881
|
-
kind: DocumentKind;
|
|
1882
|
-
parentId?: Uuid | null;
|
|
1883
|
-
description?: string;
|
|
1884
|
-
contentHash?: string;
|
|
1885
|
-
createdBy?: Uuid;
|
|
1886
|
-
updatedBy?: Uuid;
|
|
1887
|
-
deletedAt?: Date | null;
|
|
1888
|
-
/**
|
|
1889
|
-
* Fractional ordering position within `(tenantId, parentId)`. Lower values
|
|
1890
|
-
* sort first. New rows default to `max(siblings) + 1024` so reorderings can
|
|
1891
|
-
* insert between neighbours without renumbering. The server may rebalance
|
|
1892
|
-
* positions in the background to keep the spacing bounded.
|
|
1893
|
-
*/
|
|
1894
|
-
position: number;
|
|
1895
|
-
}
|
|
1896
|
-
interface DocumentWithSubCount extends Document {
|
|
1897
|
-
subCount: number | null;
|
|
1898
|
-
}
|
|
1899
|
-
/** OCR processing lifecycle for a single file within a document pack. */
|
|
1900
|
-
type FileOcrStatus = "pending" | "processing" | "completed" | "failed";
|
|
1901
|
-
/**
|
|
1902
|
-
* A single anonymous file belonging to a document pack.
|
|
1903
|
-
* Unlike the slot-based model, files carry no slot name — order within the
|
|
1904
|
-
* pack is `position` only, and `name` is provenance (originalName), never a
|
|
1905
|
-
* label rendered in the UI.
|
|
1906
|
-
*/
|
|
1907
|
-
interface DocumentFile {
|
|
1908
|
-
id: Uuid;
|
|
1909
|
-
documentId: Uuid;
|
|
1910
|
-
position: number;
|
|
1911
|
-
/** Provenance only (originalName) — never rendered as a label. */
|
|
1912
|
-
name: string;
|
|
1913
|
-
mimeType: string;
|
|
1914
|
-
size: number;
|
|
1915
|
-
ocrStatus: FileOcrStatus | null;
|
|
1916
|
-
ocrText: string | null;
|
|
1917
|
-
ocrConfidence: number | null;
|
|
1918
|
-
processedAt: Date | null;
|
|
1919
|
-
}
|
|
1920
|
-
type DocumentWithFiles = Document & {
|
|
1921
|
-
files: DocumentFile[];
|
|
1922
|
-
};
|
|
1923
|
-
interface CreateDocument {
|
|
1924
|
-
title: string;
|
|
1925
|
-
kind?: DocumentKind;
|
|
1926
|
-
parentId?: Uuid | null;
|
|
1927
|
-
description?: string;
|
|
1928
|
-
position?: number;
|
|
1929
|
-
}
|
|
1930
|
-
/**
|
|
1931
|
-
* Reference to a record attribute that should atomically attach a freshly
|
|
1932
|
-
* created Document. Passed alongside `CreateDocument` to make creation
|
|
1933
|
-
* link-aware end-to-end (client → REST → service → repo).
|
|
1934
|
-
*
|
|
1935
|
-
* The server requires this — orphan Documents are not creatable through the
|
|
1936
|
-
* REST API.
|
|
1937
|
-
*/
|
|
1938
|
-
interface CreateDocumentLink {
|
|
1939
|
-
objectName: string;
|
|
1940
|
-
sourceRecordId: string;
|
|
1941
|
-
attributeName: string;
|
|
1942
|
-
}
|
|
1943
|
-
interface UpdateDocument {
|
|
1944
|
-
title?: string;
|
|
1945
|
-
parentId?: Uuid | null;
|
|
1946
|
-
position?: number;
|
|
1947
|
-
}
|
|
1948
|
-
interface DocumentListOptions {
|
|
1949
|
-
limit?: number;
|
|
1950
|
-
offset?: number;
|
|
1951
|
-
}
|
|
1952
|
-
interface RecordDocuments {
|
|
1953
|
-
/** Documents grouped by attribute name (includes system 'attachments' attribute) */
|
|
1954
|
-
byAttribute: Record<string, DocumentWithFiles[]>;
|
|
1955
|
-
}
|
|
1956
|
-
|
|
1957
|
-
/**
|
|
1958
|
-
* Storage provider type
|
|
1959
|
-
*/
|
|
1960
|
-
type StorageProvider = "s3" | "gcs" | "azure" | "local" | "cloudflare-r2" | string;
|
|
1961
|
-
/**
|
|
1962
|
-
* File - Represents uploaded file metadata and storage info
|
|
1963
|
-
*
|
|
1964
|
-
* ARCHITECTURE:
|
|
1965
|
-
* - Fixed table (no custom attributes)
|
|
1966
|
-
* - Manages file storage metadata
|
|
1967
|
-
* - uploadedBy links to user_profiles table
|
|
1968
|
-
* - Supports soft delete via deletedAt
|
|
1969
|
-
*
|
|
1970
|
-
* @example
|
|
1971
|
-
* ```typescript
|
|
1972
|
-
* const file: File = {
|
|
1973
|
-
* id: "file-123",
|
|
1974
|
-
* tenantId: "tenant-456",
|
|
1975
|
-
* name: "contract-2025.pdf",
|
|
1976
|
-
* originalName: "Contract Acme Corp 2025.pdf",
|
|
1977
|
-
* mimeType: "application/pdf",
|
|
1978
|
-
* size: 2458624,
|
|
1979
|
-
* storageProvider: "s3",
|
|
1980
|
-
* storagePath: "tenants/456/files/2025/11/contract-2025.pdf",
|
|
1981
|
-
* storageBucket: "my-app-files",
|
|
1982
|
-
* url: "https://cdn.example.com/files/file-123",
|
|
1983
|
-
* uploadedBy: "profile-789",
|
|
1984
|
-
* folderPath: "/contracts/2025",
|
|
1985
|
-
* createdAt: new Date(),
|
|
1986
|
-
* updatedAt: new Date(),
|
|
1987
|
-
* };
|
|
1988
|
-
* ```
|
|
1989
|
-
*/
|
|
1990
|
-
interface File extends Timestamps {
|
|
1991
|
-
id: Uuid;
|
|
1992
|
-
tenantId: Uuid;
|
|
1993
|
-
/**
|
|
1994
|
-
* File name (sanitized for storage)
|
|
1995
|
-
*/
|
|
1996
|
-
name: string;
|
|
1997
|
-
/**
|
|
1998
|
-
* Original file name (as uploaded by user)
|
|
1999
|
-
*/
|
|
2000
|
-
originalName: string;
|
|
2001
|
-
/**
|
|
2002
|
-
* MIME type (e.g., "application/pdf", "image/jpeg")
|
|
2003
|
-
*/
|
|
2004
|
-
mimeType: MimeType | string;
|
|
2005
|
-
/**
|
|
2006
|
-
* File size in bytes
|
|
2007
|
-
*/
|
|
2008
|
-
size: number;
|
|
2009
|
-
/**
|
|
2010
|
-
* Storage provider (s3, gcs, azure, local, etc.)
|
|
2011
|
-
*/
|
|
2012
|
-
storageProvider: StorageProvider;
|
|
2013
|
-
/**
|
|
2014
|
-
* Path in the storage bucket
|
|
2015
|
-
*/
|
|
2016
|
-
storagePath: string;
|
|
2017
|
-
/**
|
|
2018
|
-
* Storage bucket name (if applicable)
|
|
2019
|
-
*/
|
|
2020
|
-
storageBucket?: string;
|
|
2021
|
-
/**
|
|
2022
|
-
* Public or signed URL to access the file
|
|
2023
|
-
*/
|
|
2024
|
-
url: string;
|
|
2025
|
-
/**
|
|
2026
|
-
* User who uploaded the file (FK to user_profiles)
|
|
2027
|
-
* Optional for system-generated files or anonymous uploads.
|
|
2028
|
-
*/
|
|
2029
|
-
uploadedBy?: Uuid;
|
|
2030
|
-
/**
|
|
2031
|
-
* Folder path for organization (e.g., "/contracts/2025")
|
|
2032
|
-
*/
|
|
2033
|
-
folderPath?: string;
|
|
2034
|
-
/**
|
|
2035
|
-
* Soft delete timestamp (null = not deleted)
|
|
2036
|
-
*/
|
|
2037
|
-
deletedAt?: Date;
|
|
2038
|
-
/**
|
|
2039
|
-
* Document this file belongs to, when the file is a member of a document
|
|
2040
|
-
* pack. NULL for files that aren't part of a document (e.g. freshly
|
|
2041
|
-
* uploaded blobs not yet attached to a pack).
|
|
2042
|
-
*/
|
|
2043
|
-
documentId?: Uuid | null;
|
|
2044
|
-
/**
|
|
2045
|
-
* Append-only position within the owning document pack (plain integer,
|
|
2046
|
-
* `max(position) + 1`). Packs are NOT reorderable (spec §2).
|
|
2047
|
-
*/
|
|
2048
|
-
position?: number | null;
|
|
2049
|
-
/**
|
|
2050
|
-
* OCR processing status for this file, when applicable.
|
|
2051
|
-
*/
|
|
2052
|
-
ocrStatus?: FileOcrStatus | null;
|
|
2053
|
-
/**
|
|
2054
|
-
* Extracted OCR text, when processing has completed.
|
|
2055
|
-
*/
|
|
2056
|
-
ocrText?: string | null;
|
|
2057
|
-
/**
|
|
2058
|
-
* OCR confidence score, when processing has completed.
|
|
2059
|
-
*/
|
|
2060
|
-
ocrConfidence?: number | null;
|
|
2061
|
-
/**
|
|
2062
|
-
* Timestamp of the last OCR processing attempt.
|
|
2063
|
-
*/
|
|
2064
|
-
processedAt?: Date | null;
|
|
2065
|
-
}
|
|
2066
|
-
/**
|
|
2067
|
-
* Data required to create a new file record
|
|
2068
|
-
*/
|
|
2069
|
-
/**
|
|
2070
|
-
* Data for creating a new file.
|
|
2071
|
-
* Tenant ID is automatically set from execution context.
|
|
2072
|
-
*/
|
|
2073
|
-
interface CreateFile {
|
|
2074
|
-
name: string;
|
|
2075
|
-
originalName: string;
|
|
2076
|
-
mimeType: MimeType | string;
|
|
2077
|
-
size: number;
|
|
2078
|
-
storageProvider: StorageProvider;
|
|
2079
|
-
storagePath: string;
|
|
2080
|
-
storageBucket?: string;
|
|
2081
|
-
url: string;
|
|
2082
|
-
uploadedBy?: Uuid;
|
|
2083
|
-
folderPath?: string;
|
|
2084
|
-
documentId?: Uuid | null;
|
|
2085
|
-
position?: number | null;
|
|
2086
|
-
ocrStatus?: FileOcrStatus | null;
|
|
2087
|
-
ocrText?: string | null;
|
|
2088
|
-
ocrConfidence?: number | null;
|
|
2089
|
-
processedAt?: Date | null;
|
|
2090
|
-
}
|
|
2091
|
-
/**
|
|
2092
|
-
* Data for updating an existing file record
|
|
2093
|
-
*/
|
|
2094
|
-
interface UpdateFile {
|
|
2095
|
-
name?: string;
|
|
2096
|
-
folderPath?: string;
|
|
2097
|
-
documentId?: Uuid | null;
|
|
2098
|
-
position?: number | null;
|
|
2099
|
-
ocrStatus?: FileOcrStatus | null;
|
|
2100
|
-
ocrText?: string | null;
|
|
2101
|
-
ocrConfidence?: number | null;
|
|
2102
|
-
processedAt?: Date | null;
|
|
2103
|
-
}
|
|
2104
|
-
|
|
2105
|
-
/**
|
|
2106
|
-
* Outcome of a compaction pass: a no-op (context already small enough), an LLM
|
|
2107
|
-
* `summary`, or a degraded `truncation` (the summarizer failed/timed out/returned
|
|
2108
|
-
* empty, so older messages were dropped and a notice injected). Canonical home —
|
|
2109
|
-
* `runtime` re-exports this and `react` imports it; never duplicate the literals.
|
|
2110
|
-
*/
|
|
2111
|
-
type CompactionStrategy = "no-op" | "summary" | "truncation";
|
|
2112
|
-
type AgentRunStatus = "pending" | "running" | "completed" | "failed" | "cancelled" | "paused";
|
|
2113
|
-
type AgentSessionStatus = "active" | "idle" | "completed" | "failed" | "cancelled" | "waiting_human" | "waiting_agents" | "timeout" | "expired";
|
|
2114
|
-
type AgentSessionMode = "interactive" | "autonomous";
|
|
2115
|
-
type AgentMissionPolicy = "off" | "observe" | "enforce";
|
|
2116
|
-
type AgentMissionStatus = "active" | "verifying" | "completed" | "needs_review" | "abandoned";
|
|
2117
|
-
type AgentTodoPlanStatus = "active" | "completed" | "promoted" | "abandoned";
|
|
2118
|
-
type TriggerEventType = "record.created" | "record.updated" | "record.deleted" | "form.submitted" | "agent.completed" | "webhook" | "schedule";
|
|
2119
|
-
type AgentTriggerType = Extract<TriggerEventType, "record.created" | "record.updated" | "record.deleted">;
|
|
2120
|
-
type ProviderName = "anthropic" | "openai" | "google" | "mistral";
|
|
2121
|
-
interface ModelDefinition {
|
|
2122
|
-
provider: ProviderName;
|
|
2123
|
-
model: string;
|
|
2124
|
-
maxTokens?: number;
|
|
2125
|
-
/**
|
|
2126
|
-
* Total context window in tokens (e.g. 200000 for Claude Sonnet).
|
|
2127
|
-
* Required by the compaction subsystem when this model is used as the
|
|
2128
|
-
* summary model; optional otherwise.
|
|
2129
|
-
*/
|
|
2130
|
-
contextWindow?: number;
|
|
2131
|
-
}
|
|
2132
|
-
interface RetryPolicy {
|
|
2133
|
-
maxRetries: number;
|
|
2134
|
-
backoffMs: number;
|
|
2135
|
-
backoffMultiplier: number;
|
|
2136
|
-
}
|
|
2137
|
-
interface AgentExecutionConfig {
|
|
2138
|
-
maxConcurrentRuns: number;
|
|
2139
|
-
retryPolicy: RetryPolicy;
|
|
2140
|
-
timeoutMs: number;
|
|
2141
|
-
costLimitUsd?: number;
|
|
2142
|
-
}
|
|
2143
|
-
/**
|
|
2144
|
-
* Shared base config used by AgentDefinition, inline runs, and AgentSession.
|
|
2145
|
-
*/
|
|
2146
|
-
interface AgentConfig {
|
|
2147
|
-
systemPrompt: string;
|
|
2148
|
-
model: ModelDefinition;
|
|
2149
|
-
tools?: string[];
|
|
2150
|
-
timeoutMs?: number;
|
|
2151
|
-
costLimitUsd?: number | null;
|
|
2152
|
-
canDelegate: boolean;
|
|
2153
|
-
maxDepth: number;
|
|
2154
|
-
maxTreeCostUsd?: number;
|
|
2155
|
-
critic?: CriticConfig;
|
|
2156
|
-
missionPolicy?: AgentMissionPolicy;
|
|
2157
|
-
}
|
|
2158
|
-
interface CriticConfig {
|
|
2159
|
-
enabled: boolean;
|
|
2160
|
-
model?: ModelDefinition;
|
|
2161
|
-
systemPrompt?: string;
|
|
2162
|
-
maxRetries?: number;
|
|
2163
|
-
}
|
|
2164
|
-
/**
|
|
2165
|
-
* Standalone trigger definition (replaces embedded AgentTrigger[]).
|
|
2166
|
-
* Triggers are now first-class entities with their own lifecycle.
|
|
2167
|
-
*/
|
|
2168
|
-
interface AgentTriggerDefinition {
|
|
2169
|
-
id: string;
|
|
2170
|
-
tenantId: string;
|
|
2171
|
-
definitionId: string;
|
|
2172
|
-
name?: string;
|
|
2173
|
-
eventType: TriggerEventType;
|
|
2174
|
-
objectId?: string;
|
|
2175
|
-
watchedFields?: string[];
|
|
2176
|
-
formDefinitionId?: string;
|
|
2177
|
-
sourceAgentId?: string;
|
|
2178
|
-
webhookPath?: string;
|
|
2179
|
-
cronExpression?: string;
|
|
2180
|
-
timezone?: string;
|
|
2181
|
-
filter?: FilterState;
|
|
2182
|
-
inputBuilder?: string;
|
|
2183
|
-
debounceMs?: number;
|
|
2184
|
-
enabled: boolean;
|
|
2185
|
-
lastFiredAt?: Date;
|
|
2186
|
-
createdAt: Date;
|
|
2187
|
-
updatedAt: Date;
|
|
2188
|
-
}
|
|
2189
|
-
interface AgentSchedule {
|
|
2190
|
-
cron: string;
|
|
2191
|
-
timezone?: string;
|
|
2192
|
-
enabled: boolean;
|
|
2193
|
-
input?: Record<string, unknown>;
|
|
2194
|
-
inputBuilder?: string;
|
|
2195
|
-
}
|
|
2196
|
-
/**
|
|
2197
|
-
* Declarative trigger carried by an {@link AgentBlueprint}. The boot sync
|
|
2198
|
-
* reconciles the agent's AgentTriggerDefinition rows to match, using `name`
|
|
2199
|
-
* as the stable identity.
|
|
2200
|
-
*/
|
|
2201
|
-
interface AgentTriggerBlueprint {
|
|
2202
|
-
name: string;
|
|
2203
|
-
eventType: TriggerEventType;
|
|
2204
|
-
objectId?: string;
|
|
2205
|
-
watchedFields?: string[];
|
|
2206
|
-
formDefinitionId?: string;
|
|
2207
|
-
sourceAgentId?: string;
|
|
2208
|
-
webhookPath?: string;
|
|
2209
|
-
cronExpression?: string;
|
|
2210
|
-
timezone?: string;
|
|
2211
|
-
filter?: FilterState;
|
|
2212
|
-
inputBuilder?: string;
|
|
2213
|
-
debounceMs?: number;
|
|
2214
|
-
enabled: boolean;
|
|
2215
|
-
}
|
|
2216
|
-
/**
|
|
2217
|
-
* Code-declared agent definition produced by the `agent()` builder.
|
|
2218
|
-
* Contains everything an AgentDefinition needs except runtime-assigned
|
|
2219
|
-
* fields (id, tenantId, createdBy, timestamps). `system: true` blueprints
|
|
2220
|
-
* are seeded/reconciled at boot and immutable through the public API.
|
|
2221
|
-
*/
|
|
2222
|
-
interface AgentBlueprint {
|
|
2223
|
-
name: string;
|
|
2224
|
-
icon?: string;
|
|
2225
|
-
description?: string;
|
|
2226
|
-
systemPrompt: string;
|
|
2227
|
-
model: ModelDefinition;
|
|
2228
|
-
tools?: string[];
|
|
2229
|
-
schedule?: AgentSchedule;
|
|
2230
|
-
config: AgentExecutionConfig;
|
|
2231
|
-
canDelegate?: boolean;
|
|
2232
|
-
maxDepth?: number;
|
|
2233
|
-
maxTreeCostUsd?: number;
|
|
2234
|
-
system: boolean;
|
|
2235
|
-
triggers: AgentTriggerBlueprint[];
|
|
2236
|
-
}
|
|
2237
|
-
interface AgentMessageAttachment {
|
|
2238
|
-
id: string;
|
|
2239
|
-
name: string;
|
|
2240
|
-
mimeType: string;
|
|
2241
|
-
size: number;
|
|
2242
|
-
}
|
|
2243
|
-
interface AgentMissionArtifact {
|
|
2244
|
-
path: string;
|
|
2245
|
-
description: string;
|
|
2246
|
-
mediaType?: string;
|
|
2247
|
-
}
|
|
2248
|
-
interface AgentMissionRubricCriterion {
|
|
2249
|
-
id: string;
|
|
2250
|
-
description: string;
|
|
2251
|
-
}
|
|
2252
|
-
interface AgentMissionRubric {
|
|
2253
|
-
criteria: AgentMissionRubricCriterion[];
|
|
2254
|
-
createdAt: string;
|
|
2255
|
-
}
|
|
2256
|
-
interface AgentMissionVerification {
|
|
2257
|
-
cycle: number;
|
|
2258
|
-
attempts: number;
|
|
2259
|
-
maxAttempts: number;
|
|
2260
|
-
lastVerdict?: "pass" | "fail";
|
|
2261
|
-
lastFeedback?: string;
|
|
2262
|
-
missingCriteria?: string[];
|
|
2263
|
-
lastEvidenceHash?: string;
|
|
2264
|
-
pendingEvidenceHash?: string;
|
|
2265
|
-
lastAttemptAt?: string;
|
|
2266
|
-
verifierCostUsd?: number;
|
|
2267
|
-
verifierInputTokens?: number;
|
|
2268
|
-
verifierOutputTokens?: number;
|
|
2269
|
-
}
|
|
2270
|
-
interface AgentMission {
|
|
2271
|
-
id: string;
|
|
2272
|
-
tenantId: string;
|
|
2273
|
-
sessionId: string;
|
|
2274
|
-
activationMessageId?: string;
|
|
2275
|
-
status: AgentMissionStatus;
|
|
2276
|
-
objective: string;
|
|
2277
|
-
todos: AITodoItem[];
|
|
2278
|
-
artifacts: AgentMissionArtifact[];
|
|
2279
|
-
rubric?: AgentMissionRubric;
|
|
2280
|
-
verification: AgentMissionVerification;
|
|
2281
|
-
version: number;
|
|
2282
|
-
createdBy?: string;
|
|
2283
|
-
createdAt: Date;
|
|
2284
|
-
updatedAt: Date;
|
|
2285
|
-
completedAt?: Date;
|
|
2286
|
-
}
|
|
2287
|
-
/** UI-safe mission lifecycle snapshot returned by REST and realtime surfaces. */
|
|
2288
|
-
interface AgentMissionView {
|
|
2289
|
-
id: string;
|
|
2290
|
-
sessionId: string;
|
|
2291
|
-
status: AgentMissionStatus;
|
|
2292
|
-
objective: string;
|
|
2293
|
-
todos: AITodoItem[];
|
|
2294
|
-
artifacts: AgentMissionArtifact[];
|
|
2295
|
-
verification: Pick<AgentMissionVerification, "cycle" | "attempts" | "maxAttempts" | "lastVerdict" | "lastFeedback" | "missingCriteria" | "lastAttemptAt">;
|
|
2296
|
-
version: number;
|
|
2297
|
-
createdAt: string;
|
|
2298
|
-
updatedAt: string;
|
|
2299
|
-
completedAt?: string;
|
|
2300
|
-
}
|
|
2301
|
-
interface AgentMissionPage {
|
|
2302
|
-
items: AgentMissionView[];
|
|
2303
|
-
nextCursor?: string;
|
|
2304
|
-
}
|
|
2305
|
-
/** A lightweight, pre-mission todo plan scoped to one agent session. */
|
|
2306
|
-
interface AgentTodoPlan {
|
|
2307
|
-
id: string;
|
|
2308
|
-
tenantId: string;
|
|
2309
|
-
sessionId: string;
|
|
2310
|
-
activationMessageId?: string;
|
|
2311
|
-
status: AgentTodoPlanStatus;
|
|
2312
|
-
todos: AITodoItem[];
|
|
2313
|
-
version: number;
|
|
2314
|
-
createdBy?: string;
|
|
2315
|
-
createdAt: Date;
|
|
2316
|
-
updatedAt: Date;
|
|
2317
|
-
completedAt?: Date;
|
|
2318
|
-
promotedMissionId?: string;
|
|
2319
|
-
}
|
|
2320
|
-
/** UI-safe todo plan lifecycle snapshot returned by REST and realtime surfaces. */
|
|
2321
|
-
interface AgentTodoPlanView {
|
|
2322
|
-
id: string;
|
|
2323
|
-
sessionId: string;
|
|
2324
|
-
status: AgentTodoPlanStatus;
|
|
2325
|
-
todos: AITodoItem[];
|
|
2326
|
-
version: number;
|
|
2327
|
-
createdAt: string;
|
|
2328
|
-
updatedAt: string;
|
|
2329
|
-
completedAt?: string;
|
|
2330
|
-
promotedMissionId?: string;
|
|
2331
|
-
}
|
|
2332
|
-
interface AgentDefinition {
|
|
2333
|
-
id: string;
|
|
2334
|
-
tenantId: string;
|
|
2335
|
-
name: string;
|
|
2336
|
-
icon?: string;
|
|
2337
|
-
description?: string;
|
|
2338
|
-
systemPrompt: string;
|
|
2339
|
-
model: ModelDefinition;
|
|
2340
|
-
tools?: string[];
|
|
2341
|
-
schedule?: AgentSchedule;
|
|
2342
|
-
config: AgentExecutionConfig;
|
|
2343
|
-
/** Code-declared (immutable via public API); reconciled by the boot sync. */
|
|
2344
|
-
system: boolean;
|
|
2345
|
-
createdBy: string;
|
|
2346
|
-
createdAt: Date;
|
|
2347
|
-
updatedAt: Date;
|
|
2348
|
-
deletedAt?: Date;
|
|
2349
|
-
canDelegate?: boolean;
|
|
2350
|
-
maxDepth?: number;
|
|
2351
|
-
maxTreeCostUsd?: number;
|
|
2352
|
-
critic?: CriticConfig;
|
|
2353
|
-
missionPolicy?: AgentMissionPolicy;
|
|
2354
|
-
autoDecide?: boolean;
|
|
2355
|
-
fileIds?: string[];
|
|
2356
|
-
attachments?: File[];
|
|
2357
|
-
}
|
|
2358
|
-
interface AgentRun {
|
|
2359
|
-
id: string;
|
|
2360
|
-
definitionId?: string;
|
|
2361
|
-
parentRunId?: string;
|
|
2362
|
-
depth: number;
|
|
2363
|
-
inlineConfig?: AgentConfig;
|
|
2364
|
-
tenantId: string;
|
|
2365
|
-
createdBy?: string;
|
|
2366
|
-
status: AgentRunStatus;
|
|
2367
|
-
retryCount: number;
|
|
2368
|
-
input: Record<string, unknown>;
|
|
2369
|
-
output?: Record<string, unknown>;
|
|
2370
|
-
error?: string;
|
|
2371
|
-
tokenUsage?: {
|
|
2372
|
-
input: number;
|
|
2373
|
-
output: number;
|
|
2374
|
-
};
|
|
2375
|
-
costUsd?: number;
|
|
2376
|
-
startedAt?: Date;
|
|
2377
|
-
completedAt?: Date;
|
|
2378
|
-
createdAt: Date;
|
|
2379
|
-
sessionId?: string;
|
|
2380
|
-
rootRunId?: string;
|
|
2381
|
-
triggerId?: string;
|
|
2382
|
-
/** Source domain-event id that launched this run; used for redelivery idempotency. */
|
|
2383
|
-
sourceEventId?: string;
|
|
2384
|
-
treeCostUsd?: number;
|
|
2385
|
-
effectiveSystemPrompt?: string;
|
|
2386
|
-
/** Monotonic fencing token, incremented on each lease acquisition. */
|
|
2387
|
-
attemptId?: number;
|
|
2388
|
-
/** Worker id currently holding the execution lease (null when free). */
|
|
2389
|
-
leaseOwner?: string;
|
|
2390
|
-
/** When the current lease expires; a run is re-acquirable once past this. */
|
|
2391
|
-
leaseExpiresAt?: Date;
|
|
2392
|
-
}
|
|
2393
|
-
interface AgentSession {
|
|
2394
|
-
id: string;
|
|
2395
|
-
tenantId: string;
|
|
2396
|
-
mode: AgentSessionMode;
|
|
2397
|
-
status: AgentSessionStatus;
|
|
2398
|
-
definitionId?: string;
|
|
2399
|
-
inlineConfig?: AgentConfig;
|
|
2400
|
-
parentSessionId?: string;
|
|
2401
|
-
rootSessionId: string;
|
|
2402
|
-
depth: number;
|
|
2403
|
-
missionPrompt?: string;
|
|
2404
|
-
treeCostUsd: number;
|
|
2405
|
-
name?: string;
|
|
2406
|
-
metadata?: Record<string, unknown>;
|
|
2407
|
-
createdBy?: string;
|
|
2408
|
-
createdAt: Date;
|
|
2409
|
-
updatedAt: Date;
|
|
2410
|
-
completedAt?: Date;
|
|
2411
|
-
expiresAt?: Date;
|
|
2412
|
-
archivedAt?: Date;
|
|
2413
|
-
/** Per-actor read marker. Populated by list endpoints when the caller is known. */
|
|
2414
|
-
lastReadAt?: Date;
|
|
2415
|
-
/** Convenience flag: true when session has activity since `lastReadAt` (or never read). */
|
|
2416
|
-
isUnread?: boolean;
|
|
2417
|
-
}
|
|
2418
|
-
type ToolPartState = "streaming" | "running" | "completed" | "error";
|
|
2419
|
-
/**
|
|
2420
|
-
* Structured cause for a tool part that ended in `state: "error"` without the
|
|
2421
|
-
* tool having run. Lets the UI render a localized explanation instead of the
|
|
2422
|
-
* raw error string.
|
|
2423
|
-
*/
|
|
2424
|
-
type ToolPartErrorCode = "output_limit_reached" | "interrupted";
|
|
2425
|
-
type AgentMessagePart = {
|
|
2426
|
-
type: "text";
|
|
2427
|
-
text: string;
|
|
2428
|
-
} | {
|
|
2429
|
-
type: "reasoning";
|
|
2430
|
-
text: string;
|
|
2431
|
-
} | {
|
|
2432
|
-
type: "error";
|
|
2433
|
-
error: string;
|
|
2434
|
-
errorClass?: string;
|
|
2435
|
-
} | {
|
|
2436
|
-
type: "tool";
|
|
2437
|
-
toolCallId: string;
|
|
2438
|
-
name: string;
|
|
2439
|
-
args: Record<string, unknown>;
|
|
2440
|
-
result?: unknown;
|
|
2441
|
-
error?: string;
|
|
2442
|
-
errorCode?: ToolPartErrorCode;
|
|
2443
|
-
state: ToolPartState;
|
|
2444
|
-
durationMs?: number;
|
|
2445
|
-
} | {
|
|
2446
|
-
type: "file";
|
|
2447
|
-
fileId: string;
|
|
2448
|
-
name: string;
|
|
2449
|
-
mimeType: string;
|
|
2450
|
-
} | {
|
|
2451
|
-
type: "compaction";
|
|
2452
|
-
state: "in-progress";
|
|
2453
|
-
reason: "preflight_threshold" | "overflow_recovery";
|
|
2454
|
-
estimatedTokens?: number;
|
|
2455
|
-
reportedTokens?: number;
|
|
2456
|
-
} | {
|
|
2457
|
-
type: "compaction";
|
|
2458
|
-
state: "completed";
|
|
2459
|
-
tokensBefore: number;
|
|
2460
|
-
tokensAfter: number;
|
|
2461
|
-
tokensSaved: number;
|
|
2462
|
-
strategy: CompactionStrategy;
|
|
2463
|
-
durationMs: number;
|
|
2464
|
-
/**
|
|
2465
|
-
* Raw summary text produced by the summarizer LLM. Persisted so that
|
|
2466
|
-
* follow-up turns can reuse it instead of re-running the summarizer.
|
|
2467
|
-
*/
|
|
2468
|
-
summary?: string;
|
|
2469
|
-
} | {
|
|
2470
|
-
type: "compaction";
|
|
2471
|
-
state: "failed";
|
|
2472
|
-
/** Human-readable reason from the CompactionImpossibleError. */
|
|
2473
|
-
reason: string;
|
|
2474
|
-
durationMs?: number;
|
|
2475
|
-
};
|
|
2476
|
-
/**
|
|
2477
|
-
* Persisted message in an agent session.
|
|
2478
|
-
* Unified type for both interactive and autonomous sessions.
|
|
2479
|
-
*/
|
|
2480
|
-
interface AgentSessionMessage {
|
|
2481
|
-
id: string;
|
|
2482
|
-
sessionId: string;
|
|
2483
|
-
tenantId?: string;
|
|
2484
|
-
runId?: string;
|
|
2485
|
-
role: "user" | "assistant" | "system" | "tool";
|
|
2486
|
-
parts: AgentMessagePart[];
|
|
2487
|
-
attachments?: AgentMessageAttachment[];
|
|
2488
|
-
mentions?: MentionReference[];
|
|
2489
|
-
model?: ModelDefinition;
|
|
2490
|
-
tokenUsage?: {
|
|
2491
|
-
input: number;
|
|
2492
|
-
output: number;
|
|
2493
|
-
};
|
|
2494
|
-
metadata?: Record<string, unknown>;
|
|
2495
|
-
createdAt: Date;
|
|
2496
|
-
}
|
|
2497
|
-
interface AgentToolCall {
|
|
2498
|
-
id: string;
|
|
2499
|
-
name: string;
|
|
2500
|
-
arguments: Record<string, unknown>;
|
|
2501
|
-
result?: unknown;
|
|
2502
|
-
error?: string;
|
|
2503
|
-
durationMs?: number;
|
|
2504
|
-
/** Set by StreamEventAccumulator.reconcile() when the tool call was cut off before completing. */
|
|
2505
|
-
errorCode?: ToolPartErrorCode;
|
|
2506
|
-
}
|
|
2507
|
-
interface RecordAgentEvent {
|
|
2508
|
-
type: AgentTriggerType;
|
|
2509
|
-
objectId: string;
|
|
2510
|
-
recordId: string;
|
|
2511
|
-
tenantId: string;
|
|
2512
|
-
data?: Record<string, unknown>;
|
|
2513
|
-
}
|
|
2514
|
-
interface FormSubmittedAgentEvent {
|
|
2515
|
-
type: "form.submitted";
|
|
2516
|
-
tenantId: string;
|
|
2517
|
-
formId: string;
|
|
2518
|
-
formName: string;
|
|
2519
|
-
submissionId: string;
|
|
2520
|
-
createdBy?: string;
|
|
2521
|
-
createdRecordIds: Record<string, string>;
|
|
2522
|
-
data: {
|
|
2523
|
-
formId: string;
|
|
2524
|
-
formName: string;
|
|
2525
|
-
submissionId: string;
|
|
2526
|
-
createdBy?: string;
|
|
2527
|
-
createdRecordIds: Record<string, string>;
|
|
2528
|
-
slotValues: Record<string, Record<string, unknown>>;
|
|
2529
|
-
stepValues: Record<string, Record<string, unknown>>;
|
|
2530
|
-
};
|
|
2531
|
-
}
|
|
2532
|
-
type AgentEvent = RecordAgentEvent | FormSubmittedAgentEvent;
|
|
2533
|
-
interface AgentDashboard {
|
|
2534
|
-
activeRuns: number;
|
|
2535
|
-
pendingRuns: number;
|
|
2536
|
-
failedToday: number;
|
|
2537
|
-
completedToday: number;
|
|
2538
|
-
totalCostToday: number;
|
|
2539
|
-
totalCostWeek: number;
|
|
2540
|
-
}
|
|
2541
|
-
/**
|
|
2542
|
-
* Message role in a conversation
|
|
2543
|
-
*/
|
|
2544
|
-
type AIMessageRole = "user" | "assistant";
|
|
2545
|
-
/**
|
|
2546
|
-
* An AI model available for selection by the user.
|
|
2547
|
-
* Configured on the backend and exposed via GET /agent/models.
|
|
2548
|
-
*/
|
|
2549
|
-
interface AIAvailableModel {
|
|
2550
|
-
/** Model identifier exposed to the UI (e.g. "claude-sonnet-4-6") */
|
|
2551
|
-
id: string;
|
|
2552
|
-
/**
|
|
2553
|
-
* Provider model ID sent to the underlying SDK. Defaults to `id` when omitted.
|
|
2554
|
-
* Use this to register multiple registry entries (different `contextWindow`,
|
|
2555
|
-
* `label`, etc.) that route to the same upstream model — e.g. a test entry
|
|
2556
|
-
* with a reduced context window for QA of the compaction system.
|
|
2557
|
-
*/
|
|
2558
|
-
apiModelId?: string;
|
|
2559
|
-
/** Provider name (e.g. "anthropic", "google") */
|
|
2560
|
-
provider: string;
|
|
2561
|
-
/** Display label (e.g. "Claude 4.6 Sonnet") */
|
|
2562
|
-
label: string;
|
|
2563
|
-
/** Whether this is the default model */
|
|
2564
|
-
isDefault?: boolean;
|
|
2565
|
-
/**
|
|
2566
|
-
* Total context window in tokens. Optional — resolved from the vendored
|
|
2567
|
-
* models.dev snapshot when omitted. Set explicitly only for a deliberate cap
|
|
2568
|
-
* (e.g. a QA reduced-window entry).
|
|
2569
|
-
*/
|
|
2570
|
-
contextWindow?: number;
|
|
2571
|
-
/**
|
|
2572
|
-
* Maximum output tokens. Optional — resolved from the models.dev snapshot when
|
|
2573
|
-
* omitted. Set explicitly only for a deliberate cap.
|
|
2574
|
-
*/
|
|
2575
|
-
maxOutputTokens?: number;
|
|
2576
|
-
/**
|
|
2577
|
-
* Set true for a model newer than the models.dev snapshot. When true,
|
|
2578
|
-
* `contextWindow` and `maxOutputTokens` MUST be provided explicitly. Token
|
|
2579
|
-
* cost stays unknown (never developer-specified) until the snapshot lists it.
|
|
2580
|
-
*/
|
|
2581
|
-
unverified?: boolean;
|
|
2582
|
-
/** If true, this model is used for generating compaction summaries */
|
|
2583
|
-
isCompactionModel?: boolean;
|
|
2584
|
-
/** If true, this model is used for fast utility generations (regex, formula, …) */
|
|
2585
|
-
isUtilityModel?: boolean;
|
|
2586
|
-
}
|
|
2587
|
-
/**
|
|
2588
|
-
* Tool call status during execution
|
|
2589
|
-
*/
|
|
2590
|
-
type AIToolCallStatus = "pending" | "running" | "streaming" | "success" | "error";
|
|
2591
|
-
/**
|
|
2592
|
-
* Tool call information for chat UI
|
|
2593
|
-
*/
|
|
2594
|
-
interface AIToolCall {
|
|
2595
|
-
/** Unique tool call ID */
|
|
2596
|
-
id: string;
|
|
2597
|
-
/** Tool name */
|
|
2598
|
-
name: string;
|
|
2599
|
-
/** Tool arguments */
|
|
2600
|
-
args?: Record<string, unknown>;
|
|
2601
|
-
/** Tool result (when complete) */
|
|
2602
|
-
result?: unknown;
|
|
2603
|
-
/** Error message if failed */
|
|
2604
|
-
error?: string;
|
|
2605
|
-
/** Execution status */
|
|
2606
|
-
status: AIToolCallStatus;
|
|
2607
|
-
}
|
|
2608
|
-
/**
|
|
2609
|
-
* Part type for message content
|
|
2610
|
-
*/
|
|
2611
|
-
type AIChatMessagePartType = "text" | "attachment" | "tool" | "thinking" | "reasoning" | "todo" | "question" | "error" | "approval" | "record" | "search-results" | "compaction" | (string & {});
|
|
2612
|
-
/**
|
|
2613
|
-
* Data for text part
|
|
2614
|
-
*/
|
|
2615
|
-
interface TextPartData {
|
|
2616
|
-
text: string;
|
|
2617
|
-
isStreaming?: boolean;
|
|
2618
|
-
}
|
|
2619
|
-
/**
|
|
2620
|
-
* Data for tool part (same as AIToolCall)
|
|
2621
|
-
*/
|
|
2622
|
-
interface ToolPartData {
|
|
2623
|
-
id: string;
|
|
2624
|
-
name: string;
|
|
2625
|
-
args?: Record<string, unknown>;
|
|
2626
|
-
result?: unknown;
|
|
2627
|
-
error?: string;
|
|
2628
|
-
errorCode?: ToolPartErrorCode;
|
|
2629
|
-
status: AIToolCallStatus;
|
|
2630
|
-
/** Raw JSON string accumulating during tool-input streaming (cleared on tool_input_end) */
|
|
2631
|
-
partialInput?: string;
|
|
2632
|
-
}
|
|
2633
|
-
/**
|
|
2634
|
-
* Data for thinking part
|
|
2635
|
-
*/
|
|
2636
|
-
interface ThinkingPartData {
|
|
2637
|
-
isStreaming: boolean;
|
|
2638
|
-
startTime?: number;
|
|
2639
|
-
}
|
|
2640
|
-
/**
|
|
2641
|
-
* Data for reasoning part (Extended Thinking content)
|
|
2642
|
-
*/
|
|
2643
|
-
interface ReasoningPartData {
|
|
2644
|
-
/** Reasoning content (accumulated during streaming) */
|
|
2645
|
-
content: string;
|
|
2646
|
-
/** Whether reasoning is still streaming */
|
|
2647
|
-
isStreaming: boolean;
|
|
2648
|
-
/** Start timestamp for elapsed time display */
|
|
2649
|
-
startTime?: number;
|
|
2650
|
-
}
|
|
2651
|
-
/**
|
|
2652
|
-
* A part of a chat message.
|
|
2653
|
-
* Parts are ordered chronologically as they arrive from the stream.
|
|
2654
|
-
*/
|
|
2655
|
-
interface AIChatMessagePart {
|
|
2656
|
-
/** Part type */
|
|
2657
|
-
type: AIChatMessagePartType;
|
|
2658
|
-
/** Unique part ID */
|
|
2659
|
-
id: string;
|
|
2660
|
-
/** Part-specific data */
|
|
2661
|
-
data: unknown;
|
|
2662
|
-
}
|
|
2663
|
-
/**
|
|
2664
|
-
* Terminal status of a dispatched subagent, mirrored onto the parent-visible
|
|
2665
|
-
* notification. `completed` reads as success; everything else reads as failure.
|
|
2666
|
-
*/
|
|
2667
|
-
type AISubagentStatus = "completed" | "failed" | "cancelled" | "timeout" | "expired";
|
|
2668
|
-
/**
|
|
2669
|
-
* Narrow, UI-ready projection of an `agent-notification` message. Derived by the
|
|
2670
|
-
* react mapper from the raw `AgentSessionMessage.metadata` so the UI never has to
|
|
2671
|
-
* touch untrusted wrapper text: the title comes from {@link childName}/{@link status}
|
|
2672
|
-
* and {@link body} is the child's report already unwrapped from its `<subagent_result>`
|
|
2673
|
-
* envelope.
|
|
2674
|
-
*/
|
|
2675
|
-
interface AIChatNotification {
|
|
2676
|
-
childSessionId: string;
|
|
2677
|
-
childName: string;
|
|
2678
|
-
status: AISubagentStatus;
|
|
2679
|
-
/** Child's report, unwrapped from the `<subagent_result>` envelope; rendered as markdown. */
|
|
2680
|
-
body: string;
|
|
2681
|
-
}
|
|
2682
|
-
/**
|
|
2683
|
-
* Chat message for runtime/streaming.
|
|
2684
|
-
*
|
|
2685
|
-
* All content is represented as ordered parts (text, tools, thinking, etc.)
|
|
2686
|
-
* Parts are in chronological order as they arrive from the stream.
|
|
2687
|
-
*
|
|
2688
|
-
* Used in:
|
|
2689
|
-
* - useAgentChat hook
|
|
2690
|
-
* - AI chat UI components
|
|
2691
|
-
* - Stream processing
|
|
2692
|
-
*/
|
|
2693
|
-
interface AIChatMessage {
|
|
2694
|
-
/** Unique message ID */
|
|
2695
|
-
id: string;
|
|
2696
|
-
/** Message role */
|
|
2697
|
-
role: AIMessageRole;
|
|
2698
|
-
/** Ordered message parts (text, tools, thinking, etc.) */
|
|
2699
|
-
parts: AIChatMessagePart[];
|
|
2700
|
-
/** Whether the message is still streaming */
|
|
2701
|
-
isStreaming?: boolean;
|
|
2702
|
-
/** Message timestamp */
|
|
2703
|
-
timestamp?: Date;
|
|
2704
|
-
/** Error message if the message failed */
|
|
2705
|
-
error?: string;
|
|
2706
|
-
/**
|
|
2707
|
-
* Present only for subagent-completion notifications. When set, the UI renders
|
|
2708
|
-
* a compact collapsible callout in the agent flow instead of a user bubble, and
|
|
2709
|
-
* ignores {@link parts} (which still hold the raw wrapper text).
|
|
2710
|
-
*/
|
|
2711
|
-
notification?: AIChatNotification;
|
|
2712
|
-
/**
|
|
2713
|
-
* Tokens reported by the provider after this message completed. The `input`
|
|
2714
|
-
* value reflects the size of the conversation Anthropic actually saw on
|
|
2715
|
-
* that turn — used by the chat composer to render a context-window
|
|
2716
|
-
* progress ring.
|
|
2717
|
-
*/
|
|
2718
|
-
tokenUsage?: {
|
|
2719
|
-
input: number;
|
|
2720
|
-
output: number;
|
|
2721
|
-
};
|
|
2722
|
-
}
|
|
2723
|
-
/**
|
|
2724
|
-
* Question types supported by the agent
|
|
2725
|
-
*/
|
|
2726
|
-
type AIQuestionType = "text" | "choice" | "confirm" | "multiselect";
|
|
2727
|
-
/**
|
|
2728
|
-
* Option for choice/multiselect questions
|
|
2729
|
-
*/
|
|
2730
|
-
interface AIQuestionOption {
|
|
2731
|
-
value: string;
|
|
2732
|
-
label: string;
|
|
2733
|
-
description?: string;
|
|
2734
|
-
}
|
|
2735
|
-
/**
|
|
2736
|
-
* Question from the agent to the user
|
|
2737
|
-
*/
|
|
2738
|
-
interface AIQuestion {
|
|
2739
|
-
/** Unique question ID */
|
|
2740
|
-
id: string;
|
|
2741
|
-
/** Question type */
|
|
2742
|
-
type: AIQuestionType;
|
|
2743
|
-
/** Question text */
|
|
2744
|
-
question: string;
|
|
2745
|
-
/** Options for choice/multiselect */
|
|
2746
|
-
options?: AIQuestionOption[];
|
|
2747
|
-
/** Placeholder for text input */
|
|
2748
|
-
placeholder?: string;
|
|
2749
|
-
/** Whether answer is required */
|
|
2750
|
-
required?: boolean;
|
|
2751
|
-
/** Min selections for multiselect */
|
|
2752
|
-
minSelections?: number;
|
|
2753
|
-
/** Max selections for multiselect */
|
|
2754
|
-
maxSelections?: number;
|
|
2755
|
-
}
|
|
2756
|
-
/**
|
|
2757
|
-
* Answer format for questions
|
|
2758
|
-
*/
|
|
2759
|
-
type AIQuestionAnswer = {
|
|
2760
|
-
type: "text";
|
|
2761
|
-
value: string;
|
|
2762
|
-
} | {
|
|
2763
|
-
type: "choice";
|
|
2764
|
-
value: string;
|
|
2765
|
-
} | {
|
|
2766
|
-
type: "confirm";
|
|
2767
|
-
value: boolean;
|
|
2768
|
-
} | {
|
|
2769
|
-
type: "multiselect";
|
|
2770
|
-
value: string[];
|
|
2771
|
-
};
|
|
902
|
+
declare const BEHAVIOR_PROPERTIES: readonly ["required", "hidden", "archived", "deprecated", "defaultValue", "config", "order", "unique"];
|
|
2772
903
|
/**
|
|
2773
|
-
*
|
|
904
|
+
* Presentation properties - Always modifiable
|
|
905
|
+
* These only affect display, not logic.
|
|
2774
906
|
*/
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
value: string;
|
|
2778
|
-
/** Display label */
|
|
2779
|
-
label: string;
|
|
2780
|
-
}
|
|
907
|
+
declare const PRESENTATION_PROPERTIES: readonly ["label", "description", "placeholder", "icon"];
|
|
908
|
+
|
|
2781
909
|
/**
|
|
2782
|
-
*
|
|
910
|
+
* Type of resource that can be audited
|
|
2783
911
|
*/
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
id: string;
|
|
2787
|
-
/** Question text to display */
|
|
2788
|
-
question: string;
|
|
2789
|
-
/** Predefined options (if provided, displayed as buttons) */
|
|
2790
|
-
options?: AIBatchQuestionOption[];
|
|
2791
|
-
/** Allow custom text input in addition to options */
|
|
2792
|
-
allowCustomAnswer?: boolean;
|
|
2793
|
-
/** Placeholder for custom input field */
|
|
2794
|
-
placeholder?: string;
|
|
2795
|
-
}
|
|
912
|
+
declare const AUDIT_RESOURCE_TYPES: readonly ["record", "object", "attribute", "view", "user", "role", "settings", "file", "agent"];
|
|
913
|
+
type AuditResourceType = (typeof AUDIT_RESOURCE_TYPES)[number];
|
|
2796
914
|
/**
|
|
2797
|
-
*
|
|
915
|
+
* Actions that can be audited
|
|
2798
916
|
*/
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
skipped: boolean;
|
|
2802
|
-
/** Map of question ID to answer value */
|
|
2803
|
-
answers: Record<string, string>;
|
|
2804
|
-
}
|
|
917
|
+
declare const AUDIT_ACTIONS: readonly ["record.created", "record.updated", "record.deleted", "record.restored", "record.purged", "object.created", "object.updated", "object.deleted", "attribute.created", "attribute.updated", "attribute.deleted", "view.created", "view.updated", "view.deleted", "user.created", "user.invited", "user.updated", "user.deleted", "user.login", "user.logout", "role.created", "role.updated", "role.deleted", "role.assigned", "role.revoked", "settings.updated", "file.uploaded", "file.updated", "file.deleted"];
|
|
918
|
+
type AuditAction = (typeof AUDIT_ACTIONS)[number];
|
|
2805
919
|
/**
|
|
2806
|
-
*
|
|
920
|
+
* Actor type - who performed the action
|
|
2807
921
|
*/
|
|
2808
|
-
type
|
|
922
|
+
type AuditActorType = ActorType;
|
|
2809
923
|
/**
|
|
2810
|
-
*
|
|
924
|
+
* Detail of a change on a field
|
|
2811
925
|
*/
|
|
2812
|
-
interface
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
926
|
+
interface AuditChange {
|
|
927
|
+
/** Field name that was changed */
|
|
928
|
+
field: string;
|
|
929
|
+
/** Previous value (undefined for new fields) */
|
|
930
|
+
oldValue: unknown;
|
|
931
|
+
/** New value (undefined for deleted fields) */
|
|
932
|
+
newValue: unknown;
|
|
933
|
+
/** Resolved label for oldValue when the field is a relation. */
|
|
934
|
+
oldLabel?: string;
|
|
935
|
+
/** Resolved label for newValue when the field is a relation. */
|
|
936
|
+
newLabel?: string;
|
|
937
|
+
/** Resolved labels for oldValue array, aligned by index. */
|
|
938
|
+
oldLabels?: string[];
|
|
939
|
+
/** Resolved labels for newValue array, aligned by index. */
|
|
940
|
+
newLabels?: string[];
|
|
2818
941
|
}
|
|
2819
942
|
/**
|
|
2820
|
-
*
|
|
943
|
+
* Audit log entry - immutable record of an action
|
|
2821
944
|
*/
|
|
2822
|
-
interface
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
945
|
+
interface AuditLogEntry {
|
|
946
|
+
id: Uuid;
|
|
947
|
+
tenantId: Uuid;
|
|
948
|
+
/** actors.id of the actor (null for system actions) */
|
|
949
|
+
actorId?: string;
|
|
950
|
+
/** Denormalized email for search (in case user is deleted) */
|
|
951
|
+
actorEmail?: string;
|
|
952
|
+
/** Type of actor */
|
|
953
|
+
actorType: AuditActorType;
|
|
954
|
+
/** Direct parent actor in a delegation chain (e.g. user who launched the agent). */
|
|
955
|
+
triggeredByActorId?: string;
|
|
956
|
+
/** Root human actor at the top of a delegation chain. Null in pure-autonomous runs. */
|
|
957
|
+
rootActorId?: string;
|
|
958
|
+
action: AuditAction;
|
|
959
|
+
resourceType: AuditResourceType;
|
|
960
|
+
resourceId: Uuid;
|
|
961
|
+
/** Human-readable label (record name, object label, etc.) */
|
|
962
|
+
resourceLabel?: string;
|
|
963
|
+
/** Object technical name (e.g., "companies", "contacts") */
|
|
964
|
+
objectName?: string;
|
|
965
|
+
/** Object UUID */
|
|
966
|
+
objectId?: Uuid;
|
|
967
|
+
changes?: AuditChange[];
|
|
968
|
+
/** Extra context (IP, user-agent, requestId, etc.) */
|
|
969
|
+
metadata?: Record<string, unknown>;
|
|
970
|
+
createdAt: Date;
|
|
2826
971
|
}
|
|
2827
972
|
/**
|
|
2828
|
-
*
|
|
973
|
+
* Input for creating an audit log entry.
|
|
974
|
+
* Tenant ID is automatically set from execution context.
|
|
2829
975
|
*/
|
|
2830
|
-
interface
|
|
2831
|
-
id
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
976
|
+
interface CreateAuditLogInput {
|
|
977
|
+
/** actors.id of the actor (null for system actions) */
|
|
978
|
+
actorId?: string;
|
|
979
|
+
/** Denormalized actor email for display purposes. */
|
|
980
|
+
actorEmail?: string;
|
|
981
|
+
actorType?: AuditActorType;
|
|
982
|
+
action: AuditAction;
|
|
983
|
+
resourceType: AuditResourceType;
|
|
984
|
+
resourceId: string;
|
|
985
|
+
resourceLabel?: string;
|
|
986
|
+
objectName?: string;
|
|
987
|
+
objectId?: string;
|
|
988
|
+
changes?: AuditChange[];
|
|
989
|
+
metadata?: Record<string, unknown>;
|
|
990
|
+
/** Direct parent in a delegation chain (e.g. user who launched the agent). */
|
|
991
|
+
triggeredByActorId?: string;
|
|
992
|
+
/** Root human actor at the top of a delegation chain. */
|
|
993
|
+
rootActorId?: string;
|
|
2839
994
|
}
|
|
2840
995
|
/**
|
|
2841
|
-
*
|
|
996
|
+
* Valid column names for sorting audit log entries.
|
|
997
|
+
* Maps to snake_case database column names used in Supabase queries.
|
|
2842
998
|
*/
|
|
2843
|
-
|
|
2844
|
-
requests: number;
|
|
2845
|
-
tokens: number;
|
|
2846
|
-
cost: number;
|
|
2847
|
-
}
|
|
999
|
+
type AuditSortField = "created_at" | "action" | "resource_type" | "actor_id" | "actor_email" | "object_name";
|
|
2848
1000
|
/**
|
|
2849
|
-
*
|
|
2850
|
-
*
|
|
2851
|
-
* - `soul`: Tenant identity and persona (admin-managed)
|
|
2852
|
-
* - `user`: Per-user facts and preferences
|
|
2853
|
-
* - `daily`: Auto-generated daily summaries
|
|
2854
|
-
* - `session`: Auto-generated conversation summaries
|
|
1001
|
+
* Options for listing audit logs
|
|
2855
1002
|
*/
|
|
2856
|
-
|
|
1003
|
+
interface AuditListOptions {
|
|
1004
|
+
limit?: number;
|
|
1005
|
+
offset?: number;
|
|
1006
|
+
action?: AuditAction | AuditAction[];
|
|
1007
|
+
resourceType?: AuditResourceType | AuditResourceType[];
|
|
1008
|
+
objectName?: string;
|
|
1009
|
+
actorId?: string;
|
|
1010
|
+
from?: Date;
|
|
1011
|
+
to?: Date;
|
|
1012
|
+
sorts?: Array<{
|
|
1013
|
+
field: AuditSortField;
|
|
1014
|
+
direction: "asc" | "desc";
|
|
1015
|
+
}>;
|
|
1016
|
+
}
|
|
2857
1017
|
/**
|
|
2858
|
-
*
|
|
1018
|
+
* Options for AuditService
|
|
2859
1019
|
*/
|
|
2860
|
-
interface
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
1020
|
+
interface AuditServiceOptions {
|
|
1021
|
+
/**
|
|
1022
|
+
* If true, audit logging is async (fire-and-forget).
|
|
1023
|
+
* Better performance but logs might be lost on crash.
|
|
1024
|
+
* @default false
|
|
1025
|
+
*/
|
|
1026
|
+
async?: boolean;
|
|
1027
|
+
/**
|
|
1028
|
+
* Batch size for async mode.
|
|
1029
|
+
* Logs are buffered and flushed when batch is full or after flushIntervalMs.
|
|
1030
|
+
* @default 10
|
|
1031
|
+
*/
|
|
1032
|
+
batchSize?: number;
|
|
1033
|
+
/**
|
|
1034
|
+
* Flush interval in ms for async mode.
|
|
1035
|
+
* @default 1000
|
|
1036
|
+
*/
|
|
1037
|
+
flushIntervalMs?: number;
|
|
2873
1038
|
}
|
|
2874
1039
|
/**
|
|
2875
|
-
*
|
|
1040
|
+
* A single field-level history entry, derived from an audit log change.
|
|
1041
|
+
* Client-safe — no tenant or internal IDs.
|
|
2876
1042
|
*/
|
|
2877
|
-
interface
|
|
1043
|
+
interface FieldHistoryEntry {
|
|
2878
1044
|
id: string;
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
1045
|
+
field: string;
|
|
1046
|
+
oldValue: unknown;
|
|
1047
|
+
newValue: unknown;
|
|
1048
|
+
oldLabel?: string;
|
|
1049
|
+
newLabel?: string;
|
|
1050
|
+
oldLabels?: string[];
|
|
1051
|
+
newLabels?: string[];
|
|
1052
|
+
actorEmail?: string;
|
|
1053
|
+
createdAt: Date;
|
|
2887
1054
|
}
|
|
2888
1055
|
|
|
1056
|
+
/**
|
|
1057
|
+
* The minimum every capability predicate in this file reads: the type, plus
|
|
1058
|
+
* whatever else of a full `Attribute` the caller happens to hold. Exported so
|
|
1059
|
+
* callers that only have a partial attribute — a plan's proposed attribute, a
|
|
1060
|
+
* schema snapshot row — can ask the same questions as callers holding the real
|
|
1061
|
+
* thing, instead of restating the rules.
|
|
1062
|
+
*/
|
|
2889
1063
|
type AttributeLike = Pick<Attribute, "type"> & Partial<Attribute>;
|
|
2890
1064
|
type AttributeLifecycleCapabilities = {
|
|
2891
1065
|
active: boolean;
|
|
@@ -3596,6 +1770,10 @@ interface RecordMetadata {
|
|
|
3596
1770
|
createdAt: Date;
|
|
3597
1771
|
/** Last update timestamp */
|
|
3598
1772
|
updatedAt: Date;
|
|
1773
|
+
/** Workspace-wide or actor-private visibility assigned by runtime policy. */
|
|
1774
|
+
visibility: ResourceVisibility;
|
|
1775
|
+
/** Owning actor for private records; null for workspace records. */
|
|
1776
|
+
ownedBy: Uuid | null;
|
|
3599
1777
|
/**
|
|
3600
1778
|
* Actor ID who created this record.
|
|
3601
1779
|
* Automatically set by RecordService when actorId is configured.
|
|
@@ -3623,7 +1801,11 @@ interface RecordMetadata {
|
|
|
3623
1801
|
* Note: `metadata` is part of RecordMetadata but NOT a SystemField because
|
|
3624
1802
|
* it is writable by developers via insert/update.
|
|
3625
1803
|
*/
|
|
3626
|
-
type SystemFields = "id" | "createdAt" | "updatedAt" | "createdBy" | "lastUpdatedBy";
|
|
1804
|
+
type SystemFields = "id" | "createdAt" | "updatedAt" | "createdBy" | "lastUpdatedBy" | "visibility" | "ownedBy";
|
|
1805
|
+
/** Remove policy/system-owned fields even when `T` carries an open custom-key index signature. */
|
|
1806
|
+
type WithoutSystemFields<T> = Omit<T, SystemFields> & {
|
|
1807
|
+
[K in SystemFields]?: never;
|
|
1808
|
+
};
|
|
3627
1809
|
|
|
3628
1810
|
/**
|
|
3629
1811
|
* Extract the record type from an ObjectBuilder instance
|
|
@@ -3671,7 +1853,7 @@ type ExtractRecordInput<TBuilder> = TBuilder extends {
|
|
|
3671
1853
|
_types: {
|
|
3672
1854
|
input: infer R;
|
|
3673
1855
|
};
|
|
3674
|
-
} ?
|
|
1856
|
+
} ? WithoutSystemFields<WithCustomAttributes$1<R>> : never;
|
|
3675
1857
|
/**
|
|
3676
1858
|
* Extract the input type without custom attributes (strict mode)
|
|
3677
1859
|
* Omits system fields (id, createdAt, updatedAt) as they are managed automatically.
|
|
@@ -3680,7 +1862,7 @@ type ExtractRecordInputStrict<TBuilder> = TBuilder extends {
|
|
|
3680
1862
|
_types: {
|
|
3681
1863
|
input: infer R;
|
|
3682
1864
|
};
|
|
3683
|
-
} ?
|
|
1865
|
+
} ? WithoutSystemFields<R> : never;
|
|
3684
1866
|
/**
|
|
3685
1867
|
* Extract the update type from an ObjectBuilder instance
|
|
3686
1868
|
* Includes support for custom attributes.
|
|
@@ -3690,7 +1872,7 @@ type ExtractRecordUpdate<TBuilder> = TBuilder extends {
|
|
|
3690
1872
|
_types: {
|
|
3691
1873
|
update: infer R;
|
|
3692
1874
|
};
|
|
3693
|
-
} ?
|
|
1875
|
+
} ? WithoutSystemFields<WithCustomAttributes$1<R>> : never;
|
|
3694
1876
|
/**
|
|
3695
1877
|
* Extract the update type without custom attributes (strict mode)
|
|
3696
1878
|
* Omits system fields (id, createdAt, updatedAt) as they are managed automatically.
|
|
@@ -3699,7 +1881,7 @@ type ExtractRecordUpdateStrict<TBuilder> = TBuilder extends {
|
|
|
3699
1881
|
_types: {
|
|
3700
1882
|
update: infer R;
|
|
3701
1883
|
};
|
|
3702
|
-
} ?
|
|
1884
|
+
} ? WithoutSystemFields<R> : never;
|
|
3703
1885
|
|
|
3704
1886
|
/** Lifecycle of a Reflex. There is no "broken" state: a failing reflex disarms itself. */
|
|
3705
1887
|
type ReflexState = "learning" | "armed" | "disarmed";
|
|
@@ -4032,6 +2214,114 @@ interface InviteUserInput {
|
|
|
4032
2214
|
redirectTo?: string;
|
|
4033
2215
|
}
|
|
4034
2216
|
|
|
2217
|
+
/**
|
|
2218
|
+
* The `GET /schema/state` wire contract, shared by the runtime that produces it
|
|
2219
|
+
* and the CLI that consumes it.
|
|
2220
|
+
*
|
|
2221
|
+
* The CLI used to re-declare all of this by hand, under a comment reading
|
|
2222
|
+
* "Mirrored (not imported — the CLI must not depend on @stndrds/runtime) …
|
|
2223
|
+
* Keep these in sync". A maintenance instruction written in a comment is what a
|
|
2224
|
+
* contract looks like when nothing owns it: the CLI's view key once omitted
|
|
2225
|
+
* `type` while the server keyed views by `(object, name, type)`, so two
|
|
2226
|
+
* code-defined views sharing a name collided and overwrite POSTs carried the
|
|
2227
|
+
* wrong `viewId` (#1251).
|
|
2228
|
+
*
|
|
2229
|
+
* These are deliberately **wire** types, not the runtime's internal ones. A
|
|
2230
|
+
* response is JSON from a server whose version the caller does not control, so
|
|
2231
|
+
* `icon` is a plain string rather than the `IconName` union and `hashVersion` is
|
|
2232
|
+
* a number rather than the literal `1` — a stricter type here would be a
|
|
2233
|
+
* guarantee nothing checks. The runtime narrows on its own side, where it
|
|
2234
|
+
* produces the values.
|
|
2235
|
+
*/
|
|
2236
|
+
/** A resolution ack attached to a view. */
|
|
2237
|
+
interface ViewStateResolution {
|
|
2238
|
+
codeHash: string;
|
|
2239
|
+
dbHash: string;
|
|
2240
|
+
resolvedBy: Uuid;
|
|
2241
|
+
createdAt: string;
|
|
2242
|
+
}
|
|
2243
|
+
/** Field-level runtime-vs-baseline delta for a diverged view. */
|
|
2244
|
+
interface ViewConfigDelta {
|
|
2245
|
+
tabsAdded: string[];
|
|
2246
|
+
tabsRemoved: string[];
|
|
2247
|
+
tabsChanged: Array<{
|
|
2248
|
+
name: string;
|
|
2249
|
+
changedKeys: string[];
|
|
2250
|
+
}>;
|
|
2251
|
+
topLevelChanged: string[];
|
|
2252
|
+
}
|
|
2253
|
+
/**
|
|
2254
|
+
* Current state of one code-defined (system) view row: its stored content plus
|
|
2255
|
+
* enough hash information to classify drift against the code-defined registry
|
|
2256
|
+
* (in sync / db-ahead / code-ahead / conflict).
|
|
2257
|
+
*/
|
|
2258
|
+
interface ViewStateEntry {
|
|
2259
|
+
viewId: Uuid;
|
|
2260
|
+
object: string;
|
|
2261
|
+
name: string;
|
|
2262
|
+
type: ViewType;
|
|
2263
|
+
/** Content-hash of the view's CURRENT stored content. */
|
|
2264
|
+
dbHash: string;
|
|
2265
|
+
/** Content-hash the row was last known to match; `null` if never synced. */
|
|
2266
|
+
baselineHash: string | null;
|
|
2267
|
+
config: ViewConfig;
|
|
2268
|
+
label: string;
|
|
2269
|
+
description: string | null;
|
|
2270
|
+
icon: string | null;
|
|
2271
|
+
default: boolean;
|
|
2272
|
+
metadata: Record<string, unknown> | null;
|
|
2273
|
+
resolutions: ViewStateResolution[];
|
|
2274
|
+
/** Null when the row is in sync or has no stored baseline config. */
|
|
2275
|
+
delta: ViewConfigDelta | null;
|
|
2276
|
+
}
|
|
2277
|
+
interface DriftAttributeInfo {
|
|
2278
|
+
name: string;
|
|
2279
|
+
label: string;
|
|
2280
|
+
type: string;
|
|
2281
|
+
config: Record<string, unknown>;
|
|
2282
|
+
tolerated: boolean;
|
|
2283
|
+
isRelation: boolean;
|
|
2284
|
+
}
|
|
2285
|
+
interface CustomObjectInfo {
|
|
2286
|
+
name: string;
|
|
2287
|
+
label: string;
|
|
2288
|
+
attributes: DriftAttributeInfo[];
|
|
2289
|
+
}
|
|
2290
|
+
interface SystemObjectDriftInfo {
|
|
2291
|
+
objectName: string;
|
|
2292
|
+
objectLabel: string;
|
|
2293
|
+
sealed: boolean;
|
|
2294
|
+
customAttributes: DriftAttributeInfo[];
|
|
2295
|
+
}
|
|
2296
|
+
interface SchemaDriftResult {
|
|
2297
|
+
tenant: string;
|
|
2298
|
+
hasUnexpectedDrift: boolean;
|
|
2299
|
+
customObjects: CustomObjectInfo[];
|
|
2300
|
+
systemObjectDrift: SystemObjectDriftInfo[];
|
|
2301
|
+
summary: {
|
|
2302
|
+
totalCustomObjects: number;
|
|
2303
|
+
totalCustomAttributes: number;
|
|
2304
|
+
totalUnexpected: number;
|
|
2305
|
+
};
|
|
2306
|
+
}
|
|
2307
|
+
/**
|
|
2308
|
+
* Full schema state a CLI diff/pull needs: code-defined view rows with their
|
|
2309
|
+
* current vs. baseline hashes and pending overwrite resolutions, plus object
|
|
2310
|
+
* and attribute drift.
|
|
2311
|
+
*/
|
|
2312
|
+
interface SchemaState {
|
|
2313
|
+
tenant: string;
|
|
2314
|
+
hashVersion: number;
|
|
2315
|
+
views: ViewStateEntry[];
|
|
2316
|
+
drift: SchemaDriftResult;
|
|
2317
|
+
}
|
|
2318
|
+
/**
|
|
2319
|
+
* The one place the view identity is spelled out. The server keys views by
|
|
2320
|
+
* `(object, name, type)`; a consumer that drops `type` collides two
|
|
2321
|
+
* code-defined views sharing a name (#1251).
|
|
2322
|
+
*/
|
|
2323
|
+
declare function viewStateKey(view: Pick<ViewStateEntry, "object" | "name" | "type">): string;
|
|
2324
|
+
|
|
4035
2325
|
/**
|
|
4036
2326
|
* Contracts for the AI generation module (regex, formula, …).
|
|
4037
2327
|
* Client-safe: no prompts or server logic here.
|
|
@@ -4070,144 +2360,15 @@ interface AIGenerationUsage {
|
|
|
4070
2360
|
inputTokens: number;
|
|
4071
2361
|
outputTokens: number;
|
|
4072
2362
|
}
|
|
4073
|
-
/** Result of a successful generation. */
|
|
4074
|
-
interface AIGenerationResult {
|
|
4075
|
-
/** The final value to apply (the regex pattern / the formula expression). */
|
|
4076
|
-
value: string;
|
|
4077
|
-
/** Plain-language explanation of what was generated. */
|
|
4078
|
-
explanation?: string;
|
|
4079
|
-
/** Token usage for the whole request (sum across repair attempts). */
|
|
4080
|
-
usage: AIGenerationUsage;
|
|
4081
|
-
}
|
|
4082
|
-
|
|
4083
|
-
interface AddAttributeInput {
|
|
4084
|
-
name: string;
|
|
4085
|
-
label: string;
|
|
4086
|
-
type: AttributeType;
|
|
4087
|
-
required?: boolean;
|
|
4088
|
-
unique?: boolean;
|
|
4089
|
-
description?: string;
|
|
4090
|
-
placeholder?: string;
|
|
4091
|
-
icon?: IconName;
|
|
4092
|
-
defaultValue?: unknown;
|
|
4093
|
-
metadata?: Record<string, unknown>;
|
|
4094
|
-
[key: string]: unknown;
|
|
4095
|
-
}
|
|
4096
|
-
interface CreateCustomObjectInput {
|
|
4097
|
-
name: string;
|
|
4098
|
-
label: string;
|
|
4099
|
-
pluralLabel?: string;
|
|
4100
|
-
labelExpression: string;
|
|
4101
|
-
embeddingExpression?: string;
|
|
4102
|
-
description?: string;
|
|
4103
|
-
icon?: IconName;
|
|
4104
|
-
attributes?: (Attribute | {
|
|
4105
|
-
build: () => Attribute;
|
|
4106
|
-
})[];
|
|
4107
|
-
metadata?: Record<string, unknown>;
|
|
4108
|
-
}
|
|
4109
|
-
interface UpdateObjectInput {
|
|
4110
|
-
label?: string;
|
|
4111
|
-
pluralLabel?: string;
|
|
4112
|
-
description?: string;
|
|
4113
|
-
icon?: IconName;
|
|
4114
|
-
labelExpression?: string;
|
|
4115
|
-
embeddingExpression?: string;
|
|
4116
|
-
metadata?: Record<string, unknown>;
|
|
4117
|
-
}
|
|
4118
|
-
interface CreateViewInput {
|
|
4119
|
-
objectName: string;
|
|
4120
|
-
type: ViewType;
|
|
4121
|
-
name: string;
|
|
4122
|
-
label: string;
|
|
4123
|
-
description?: string;
|
|
4124
|
-
icon?: IconName;
|
|
4125
|
-
config: ViewConfig;
|
|
4126
|
-
default?: boolean;
|
|
4127
|
-
metadata?: Record<string, unknown>;
|
|
4128
|
-
}
|
|
4129
|
-
interface UpdateViewInput {
|
|
4130
|
-
label?: string;
|
|
4131
|
-
description?: string;
|
|
4132
|
-
icon?: IconName;
|
|
4133
|
-
config?: ViewConfig;
|
|
4134
|
-
default?: boolean;
|
|
4135
|
-
metadata?: Record<string, unknown>;
|
|
4136
|
-
}
|
|
4137
|
-
interface RelationOption {
|
|
4138
|
-
id: string;
|
|
4139
|
-
objectId: string;
|
|
4140
|
-
objectName: string;
|
|
4141
|
-
objectLabel: string;
|
|
4142
|
-
objectIcon?: string;
|
|
4143
|
-
label: string;
|
|
4144
|
-
}
|
|
4145
|
-
interface RelationOptionsResponse {
|
|
4146
|
-
options: RelationOption[];
|
|
4147
|
-
hasMore: boolean;
|
|
4148
|
-
total: number;
|
|
4149
|
-
}
|
|
4150
|
-
interface StreamEventMessagePersisted {
|
|
4151
|
-
type: "message_persisted";
|
|
4152
|
-
message: AgentSessionMessage;
|
|
4153
|
-
}
|
|
4154
|
-
/**
|
|
4155
|
-
* An already-persisted message had its parts updated out-of-band (e.g. a
|
|
4156
|
-
* pending HITL tool part closed when the user replied). Clients replace the
|
|
4157
|
-
* stored message in place without touching streaming state.
|
|
4158
|
-
*/
|
|
4159
|
-
interface StreamEventMessageUpdated {
|
|
4160
|
-
type: "message_updated";
|
|
4161
|
-
message: AgentSessionMessage;
|
|
4162
|
-
}
|
|
4163
|
-
/** A committed, UI-safe mission lifecycle snapshot. */
|
|
4164
|
-
interface StreamEventMissionUpdate {
|
|
4165
|
-
type: "mission_update";
|
|
4166
|
-
mission: AgentMissionView;
|
|
4167
|
-
}
|
|
4168
|
-
/** A committed, UI-safe lightweight todo plan lifecycle snapshot. */
|
|
4169
|
-
interface StreamEventTodoPlanUpdate {
|
|
4170
|
-
type: "todo_plan_update";
|
|
4171
|
-
plan: AgentTodoPlanView;
|
|
4172
|
-
}
|
|
4173
|
-
interface StreamEventCompactionStart {
|
|
4174
|
-
type: "compaction_start";
|
|
4175
|
-
reason: "preflight_threshold" | "overflow_recovery";
|
|
4176
|
-
estimatedTokens?: number;
|
|
4177
|
-
reportedTokens?: number;
|
|
4178
|
-
}
|
|
4179
|
-
interface StreamEventCompactionEnd {
|
|
4180
|
-
type: "compaction_end";
|
|
4181
|
-
tokensBefore: number;
|
|
4182
|
-
tokensAfter: number;
|
|
4183
|
-
tokensSaved: number;
|
|
4184
|
-
strategy: CompactionStrategy;
|
|
4185
|
-
durationMs: number;
|
|
4186
|
-
summary?: string;
|
|
4187
|
-
}
|
|
4188
|
-
interface StreamEventCompactionFailed {
|
|
4189
|
-
type: "compaction_failed";
|
|
4190
|
-
reason: string;
|
|
4191
|
-
}
|
|
4192
|
-
/**
|
|
4193
|
-
* Emitted once per agent turn, just before `complete`, carrying the exact
|
|
4194
|
-
* provider token usage enriched with context-window utilization and cost.
|
|
4195
|
-
* All fields are computed server-side — consumers display without recalculating.
|
|
4196
|
-
*/
|
|
4197
|
-
interface StreamEventUsage {
|
|
4198
|
-
type: "usage";
|
|
4199
|
-
inputTokens: number;
|
|
4200
|
-
outputTokens: number;
|
|
4201
|
-
totalTokens: number;
|
|
4202
|
-
cacheReadTokens?: number;
|
|
4203
|
-
cacheCreationTokens?: number;
|
|
4204
|
-
/** Context window size of the model (in tokens). */
|
|
4205
|
-
contextWindow: number;
|
|
4206
|
-
/** totalTokens / contextWindow, clamped to [0, 1]. Computed server-side. */
|
|
4207
|
-
utilization: number;
|
|
4208
|
-
/** Estimated cost in USD. Undefined when pricing is unknown — never faked. */
|
|
4209
|
-
costUsd?: number;
|
|
4210
|
-
}
|
|
2363
|
+
/** Result of a successful generation. */
|
|
2364
|
+
interface AIGenerationResult {
|
|
2365
|
+
/** The final value to apply (the regex pattern / the formula expression). */
|
|
2366
|
+
value: string;
|
|
2367
|
+
/** Plain-language explanation of what was generated. */
|
|
2368
|
+
explanation?: string;
|
|
2369
|
+
/** Token usage for the whole request (sum across repair attempts). */
|
|
2370
|
+
usage: AIGenerationUsage;
|
|
2371
|
+
}
|
|
4211
2372
|
|
|
4212
2373
|
/**
|
|
4213
2374
|
* Utility functions for working with objects.
|
|
@@ -4244,11 +2405,85 @@ declare function isNotEmpty(obj: unknown): obj is Record<string, unknown>;
|
|
|
4244
2405
|
*/
|
|
4245
2406
|
declare function toUndefinedIfEmpty<T extends Record<string, unknown>>(obj: T | undefined | null): T | undefined;
|
|
4246
2407
|
|
|
2408
|
+
/**
|
|
2409
|
+
* The one byte-size display concept.
|
|
2410
|
+
*
|
|
2411
|
+
* Decimal (1000-based), because that is what the product shows and what every
|
|
2412
|
+
* locale's size string is built from. Binary limits (`FILE_SIZE`, `KILOBYTES`)
|
|
2413
|
+
* stay 1024-based — a ceiling and a label answer different questions, and
|
|
2414
|
+
* conflating them is what made the previous unification bounce.
|
|
2415
|
+
*
|
|
2416
|
+
* Magnitude and label are separate on purpose: locales format the same
|
|
2417
|
+
* magnitude with their own unit words, while non-UI surfaces (CLI tables, agent
|
|
2418
|
+
* prompt XML) want the English label and would otherwise re-derive the maths.
|
|
2419
|
+
*/
|
|
2420
|
+
interface ByteMagnitude {
|
|
2421
|
+
/** Rounded value in the chosen unit, e.g. `1.2` for 1_200_000 bytes → MB. */
|
|
2422
|
+
value: number;
|
|
2423
|
+
/** Index into a 5-entry unit table: 0=bytes, 1=K, 2=M, 3=G, 4=T. */
|
|
2424
|
+
unitIndex: number;
|
|
2425
|
+
}
|
|
2426
|
+
/** Locale-agnostic magnitude — every size string in the product starts here. */
|
|
2427
|
+
declare function computeByteMagnitude(bytes: number): ByteMagnitude;
|
|
2428
|
+
/** English unit labels, indexed by {@link ByteMagnitude.unitIndex}. */
|
|
2429
|
+
declare const BYTE_UNIT_LABELS: readonly ["B", "KB", "MB", "GB", "TB"];
|
|
2430
|
+
/**
|
|
2431
|
+
* English size string — `"1.5 MB"`. For surfaces with no locale of their own:
|
|
2432
|
+
* the CLI, and the file listings an agent reads. An agent and a human must not
|
|
2433
|
+
* see two different sizes for the same file.
|
|
2434
|
+
*/
|
|
2435
|
+
declare function formatByteSize(bytes: number): string;
|
|
2436
|
+
|
|
2437
|
+
/**
|
|
2438
|
+
* The one definition of what `format: email | url | slug` means.
|
|
2439
|
+
*
|
|
2440
|
+
* Three representations of the same rule used to coexist: the attribute-config
|
|
2441
|
+
* UI stored `{ format }` with no pattern, the code builders wrote a hardcoded
|
|
2442
|
+
* `pattern` with no format, and the validator read only `pattern`. So a text
|
|
2443
|
+
* attribute configured as Email in the UI was validated by nothing at all, and
|
|
2444
|
+
* one declared with `.email()` came back to that UI as a custom regex.
|
|
2445
|
+
*/
|
|
2446
|
+
declare const TEXT_FORMAT_PATTERNS: {
|
|
2447
|
+
readonly email: "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
|
|
2448
|
+
readonly url: "^https?:\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+[/#?]?.*$";
|
|
2449
|
+
readonly slug: "^[a-z0-9]+(?:-[a-z0-9]+)*$";
|
|
2450
|
+
};
|
|
2451
|
+
/**
|
|
2452
|
+
* The pattern a text attribute is actually validated against.
|
|
2453
|
+
*
|
|
2454
|
+
* An explicit `pattern` wins: it is the escape hatch for rules no preset covers,
|
|
2455
|
+
* and a caller who wrote one means it. Otherwise the declared `format` supplies
|
|
2456
|
+
* one. An attribute with neither stays unconstrained.
|
|
2457
|
+
*/
|
|
2458
|
+
declare function resolveTextPattern(attr: Pick<TextAttribute, "format" | "pattern">): string | undefined;
|
|
2459
|
+
|
|
4247
2460
|
declare const DOCUMENT_SYSTEM_ATTRIBUTES: {
|
|
4248
2461
|
readonly ATTACHMENTS: "attachments";
|
|
4249
2462
|
};
|
|
4250
2463
|
declare function isDocumentAttribute(attr: Attribute): attr is DocumentAttribute;
|
|
4251
|
-
|
|
2464
|
+
/** The parts of a file an `accepts` pattern can be matched against. */
|
|
2465
|
+
interface AcceptsCandidate {
|
|
2466
|
+
/** File name, used only by `.ext` patterns. */
|
|
2467
|
+
name: string;
|
|
2468
|
+
mimeType: string;
|
|
2469
|
+
}
|
|
2470
|
+
/**
|
|
2471
|
+
* The single definition of "does this file satisfy `accepts`", shared by the
|
|
2472
|
+
* runtime document validator and every UI file picker.
|
|
2473
|
+
*
|
|
2474
|
+
* A pattern is one of the three forms the HTML `accept` attribute allows:
|
|
2475
|
+
* a MIME glob (`image/*`), an exact MIME type, or an extension (`.pdf`).
|
|
2476
|
+
* Extensions are supported because `FileInput` forwards the same string to a
|
|
2477
|
+
* native `<input accept>` — rejecting here what the browser's own dialog
|
|
2478
|
+
* offered would be stricter than the picker the user just used. They follow
|
|
2479
|
+
* the HTML rule exactly: a case-insensitive **suffix** match on the file name,
|
|
2480
|
+
* so `.gz` and `.tar.gz` both match `archive.tar.gz` and `.env` matches itself.
|
|
2481
|
+
*
|
|
2482
|
+
* An absent or empty `accepts` is unconstrained: a document attribute that
|
|
2483
|
+
* declares no restriction accepts anything, and the client must not be
|
|
2484
|
+
* stricter than the server that stores the file.
|
|
2485
|
+
*/
|
|
2486
|
+
declare function matchesAccepts(file: AcceptsCandidate, accepts: string[] | null | undefined): boolean;
|
|
4252
2487
|
|
|
4253
2488
|
/**
|
|
4254
2489
|
* The set of attribute types allowed as relation/document properties.
|
|
@@ -4330,6 +2565,17 @@ declare function formatLocationValue(location: Location | null | undefined, gran
|
|
|
4330
2565
|
*/
|
|
4331
2566
|
declare function formatAttributeValue(value: unknown, attribute: Attribute): string;
|
|
4332
2567
|
|
|
2568
|
+
/**
|
|
2569
|
+
* Validate a labelExpression and return detailed result
|
|
2570
|
+
*
|
|
2571
|
+
* @param expression - The labelExpression to validate
|
|
2572
|
+
* @returns Validation result with success status and extracted info
|
|
2573
|
+
*/
|
|
2574
|
+
declare function validateLabelExpression(expression: string): {
|
|
2575
|
+
success: boolean;
|
|
2576
|
+
error?: string;
|
|
2577
|
+
attributes?: string[];
|
|
2578
|
+
};
|
|
4333
2579
|
/**
|
|
4334
2580
|
* Apply a sequence of pipes to a string value.
|
|
4335
2581
|
* Reusable utility for any template-like system that needs pipe processing.
|
|
@@ -4478,6 +2724,17 @@ declare function normalizeDateValue(value: unknown, attr: Pick<DateAttribute, "e
|
|
|
4478
2724
|
*/
|
|
4479
2725
|
declare function dateValueStart(value: unknown): string | null;
|
|
4480
2726
|
|
|
2727
|
+
/** Server-owned metadata key carrying the human/root creator principal. */
|
|
2728
|
+
declare const RECORD_CREATOR_ROOT_ACTOR_METADATA_KEY = "__creatorRootActorId";
|
|
2729
|
+
/**
|
|
2730
|
+
* Resolve who may manage creator-scoped record actions.
|
|
2731
|
+
*
|
|
2732
|
+
* New delegated records persist their root principal in metadata while
|
|
2733
|
+
* retaining the actual agent in `createdBy`. Legacy records fall back to the
|
|
2734
|
+
* direct creator actor.
|
|
2735
|
+
*/
|
|
2736
|
+
declare function getRecordCreatorPrincipalId(record: Pick<ObjectRecord, "createdBy" | "metadata">): string | undefined;
|
|
2737
|
+
|
|
4481
2738
|
/**
|
|
4482
2739
|
* Attribute fields stored in dedicated database columns (not in config JSONB).
|
|
4483
2740
|
* Used to determine which properties are extracted into the config column during sync.
|
|
@@ -4605,6 +2862,19 @@ declare class AgentBuilder {
|
|
|
4605
2862
|
private readonly bp;
|
|
4606
2863
|
constructor(config: AgentBuilderConfig);
|
|
4607
2864
|
description(value: string): this;
|
|
2865
|
+
/**
|
|
2866
|
+
* Display text shown wherever this agent's identity is rendered in the
|
|
2867
|
+
* UI — a separate concern from `name` (the stable identity the boot sync
|
|
2868
|
+
* matches rows on). Falls back to `name` when never called.
|
|
2869
|
+
*
|
|
2870
|
+
* @example
|
|
2871
|
+
* ```typescript
|
|
2872
|
+
* agent({ name: "architecte" })
|
|
2873
|
+
* .label("Architecte")
|
|
2874
|
+
* // ...
|
|
2875
|
+
* ```
|
|
2876
|
+
*/
|
|
2877
|
+
label(value: string): this;
|
|
4608
2878
|
icon(value: string): this;
|
|
4609
2879
|
systemPrompt(value: string): this;
|
|
4610
2880
|
model(provider: ProviderName, model: string, options?: Pick<ModelDefinition, "maxTokens" | "contextWindow">): this;
|
|
@@ -4628,6 +2898,23 @@ declare class AgentBuilder {
|
|
|
4628
2898
|
maxDepth?: number;
|
|
4629
2899
|
maxTreeCostUsd?: number;
|
|
4630
2900
|
}): this;
|
|
2901
|
+
approval(value: Partial<AgentApprovalPolicy>): this;
|
|
2902
|
+
/** Runtime-agent visibility. Code-declared system agents must stay workspace-visible. */
|
|
2903
|
+
visibility(value: ResourceVisibility): this;
|
|
2904
|
+
/**
|
|
2905
|
+
* Gate this agent behind a system permission: an actor lacking `action` on
|
|
2906
|
+
* `resource` never sees it in the agent list and cannot open a session
|
|
2907
|
+
* against it. Reuses the same permission vocabulary that guards the
|
|
2908
|
+
* matching HTTP surface — do not invent a new resource/action pair.
|
|
2909
|
+
*
|
|
2910
|
+
* @example
|
|
2911
|
+
* ```typescript
|
|
2912
|
+
* agent({ name: "architecte" })
|
|
2913
|
+
* .requiresPermission("architect", "update")
|
|
2914
|
+
* // ...
|
|
2915
|
+
* ```
|
|
2916
|
+
*/
|
|
2917
|
+
requiresPermission(resource: SystemResource, action: Action): this;
|
|
4631
2918
|
/**
|
|
4632
2919
|
* Declare a trigger. `name` is the stable identity the boot sync uses to
|
|
4633
2920
|
* reconcile trigger rows; `enabled` defaults to true.
|
|
@@ -5467,6 +3754,15 @@ declare class DocumentAttributeBuilder<TName extends string, TRequired extends b
|
|
|
5467
3754
|
*/
|
|
5468
3755
|
declare function document<TName extends string>(config: TypedBuilderConfig<TName>): DocumentAttributeBuilder<TName, false>;
|
|
5469
3756
|
|
|
3757
|
+
/**
|
|
3758
|
+
* Validate object name format: kebab-case (slug format), max 63 characters.
|
|
3759
|
+
* Single source of truth for `ObjectBuilder`'s private `validateName` (write
|
|
3760
|
+
* time, via `object(...).build()`) and `SchemaPlanValidator` (propose time,
|
|
3761
|
+
* for both new-object names and — via `parseAttributeConfig`-style reuse —
|
|
3762
|
+
* anywhere else an object name needs the same shape check). Kept next to
|
|
3763
|
+
* `validateAttributeName` rather than duplicating the regex a second time.
|
|
3764
|
+
*/
|
|
3765
|
+
declare function validateObjectName(name: string): void;
|
|
5470
3766
|
/**
|
|
5471
3767
|
* Validate attribute name as valid variable identifier
|
|
5472
3768
|
*/
|
|
@@ -5740,11 +4036,11 @@ declare class ObjectBuilder<TRecord extends Record<string, unknown> = {}> implem
|
|
|
5740
4036
|
/** Full record type with custom attributes and metadata (same as ExtractRecord) */
|
|
5741
4037
|
record: WithCustomAttributes<TRecord> & RecordMetadata;
|
|
5742
4038
|
/** Input type for creating records, omits system fields (same as ExtractRecordInput) */
|
|
5743
|
-
create:
|
|
4039
|
+
create: WithoutSystemFields<WithCustomAttributes<TRecord>>;
|
|
5744
4040
|
/** Partial type for updating records, omits system fields (same as ExtractRecordUpdate) */
|
|
5745
|
-
update:
|
|
4041
|
+
update: WithoutSystemFields<WithCustomAttributes<{
|
|
5746
4042
|
[K in keyof TRecord]?: TRecord[K];
|
|
5747
|
-
}
|
|
4043
|
+
}>>;
|
|
5748
4044
|
};
|
|
5749
4045
|
/**
|
|
5750
4046
|
* Standard Schema v1 interface implementation.
|
|
@@ -6020,14 +4316,6 @@ declare class RelationGroupBuilder {
|
|
|
6020
4316
|
* Allow creating new related records inline
|
|
6021
4317
|
*/
|
|
6022
4318
|
allowCreate(value?: boolean): this;
|
|
6023
|
-
/**
|
|
6024
|
-
* Enable two-level traversal (through mode).
|
|
6025
|
-
* Parent rows become grouping headers; sub-rows from `attribute` are the primary display.
|
|
6026
|
-
*
|
|
6027
|
-
* @param attribute - Relation attribute on the first-level target object
|
|
6028
|
-
* @example .through("companies") — display companies linked via each member
|
|
6029
|
-
*/
|
|
6030
|
-
through(attribute: string): this;
|
|
6031
4319
|
/**
|
|
6032
4320
|
* Build the relation group definition
|
|
6033
4321
|
*/
|
|
@@ -6059,13 +4347,6 @@ interface BaseTabConfig {
|
|
|
6059
4347
|
* .tableFrom("contacts", "company")
|
|
6060
4348
|
* .columns("firstName", "lastName", "email")
|
|
6061
4349
|
* .crud()
|
|
6062
|
-
*
|
|
6063
|
-
* // 2-level traversal
|
|
6064
|
-
* .tab("members-companies", "Entreprises des membres")
|
|
6065
|
-
* .table("members")
|
|
6066
|
-
* .through("companies")
|
|
6067
|
-
* .columns("legalName", "legalForm", "companies__role")
|
|
6068
|
-
* .showSourceTarget()
|
|
6069
4350
|
* ```
|
|
6070
4351
|
*/
|
|
6071
4352
|
declare class TableTabConfig {
|
|
@@ -6122,18 +4403,6 @@ declare class TableTabConfig {
|
|
|
6122
4403
|
* @example .sort("lastName") or .sort("createdAt", "desc")
|
|
6123
4404
|
*/
|
|
6124
4405
|
sort(attribute: string, direction?: "asc" | "desc"): this;
|
|
6125
|
-
/**
|
|
6126
|
-
* Traverse a 2nd-level relation to display nested data.
|
|
6127
|
-
* When active, `tab.columns` stores the 2nd-level object's attribute names.
|
|
6128
|
-
*
|
|
6129
|
-
* @param attribute - Relation attribute on the first-level target object
|
|
6130
|
-
* @example .table("members").through("companies").columns(["name", "sector"])
|
|
6131
|
-
*/
|
|
6132
|
-
through(attribute: string): this;
|
|
6133
|
-
/**
|
|
6134
|
-
* Show _source and _target columns in flattened (through) view
|
|
6135
|
-
*/
|
|
6136
|
-
showSourceTarget(value?: boolean): this;
|
|
6137
4406
|
/**
|
|
6138
4407
|
* Continue building with a new tab
|
|
6139
4408
|
*/
|
|
@@ -6509,6 +4778,7 @@ interface ListViewTabData {
|
|
|
6509
4778
|
label: string;
|
|
6510
4779
|
icon?: IconName;
|
|
6511
4780
|
default?: boolean;
|
|
4781
|
+
visibility: ListViewTabVisibility;
|
|
6512
4782
|
layout: "table" | "kanban";
|
|
6513
4783
|
columns: string[];
|
|
6514
4784
|
columnSizing?: Record<string, number>;
|
|
@@ -6655,6 +4925,11 @@ declare class ListViewTabConfigBuilder {
|
|
|
6655
4925
|
* Mark this tab as the default tab
|
|
6656
4926
|
*/
|
|
6657
4927
|
default(): this;
|
|
4928
|
+
/**
|
|
4929
|
+
* Set the record scope this tab reads. Defaults to `"all"` (no scope: every
|
|
4930
|
+
* workspace record plus the viewer's own private ones).
|
|
4931
|
+
*/
|
|
4932
|
+
visibility(value: ListViewTabVisibility): this;
|
|
6658
4933
|
/**
|
|
6659
4934
|
* Set the layout to table (default)
|
|
6660
4935
|
*/
|
|
@@ -7841,6 +6116,40 @@ type RecordDeletedLiveEvent = {
|
|
|
7841
6116
|
recordVersion: number;
|
|
7842
6117
|
deletedAt: string;
|
|
7843
6118
|
};
|
|
6119
|
+
/**
|
|
6120
|
+
* Minimal removal event used when a record leaves a projection without being
|
|
6121
|
+
* deleted (for example workspace -> private). The allowlisted shape is safe to
|
|
6122
|
+
* publish to the old audience: it contains routing identity and ordering only.
|
|
6123
|
+
*/
|
|
6124
|
+
type RecordRemovedLiveEvent = {
|
|
6125
|
+
type: "record.removed";
|
|
6126
|
+
objectId: string;
|
|
6127
|
+
recordId: string;
|
|
6128
|
+
recordVersion: number;
|
|
6129
|
+
};
|
|
6130
|
+
/** JSON-stable current record snapshot used to add/upsert a projection. */
|
|
6131
|
+
type RecordLiveSnapshot = {
|
|
6132
|
+
id: string;
|
|
6133
|
+
objectId: string;
|
|
6134
|
+
visibility: "workspace" | "private";
|
|
6135
|
+
ownedBy: string | null;
|
|
6136
|
+
label: string;
|
|
6137
|
+
values: Record<string, unknown>;
|
|
6138
|
+
metadata?: Record<string, unknown>;
|
|
6139
|
+
createdAt: string;
|
|
6140
|
+
updatedAt: string;
|
|
6141
|
+
createdBy?: string;
|
|
6142
|
+
lastUpdatedBy?: string;
|
|
6143
|
+
schemaVersion: number;
|
|
6144
|
+
};
|
|
6145
|
+
/** Creation-shaped event used when a record enters a projection. */
|
|
6146
|
+
type RecordCreatedLiveEvent = {
|
|
6147
|
+
type: "record.created";
|
|
6148
|
+
objectId: string;
|
|
6149
|
+
recordId: string;
|
|
6150
|
+
recordVersion: number;
|
|
6151
|
+
record: RecordLiveSnapshot;
|
|
6152
|
+
};
|
|
7844
6153
|
type ViewProjectionStaleLiveEvent = {
|
|
7845
6154
|
type: "view.projection.stale";
|
|
7846
6155
|
viewId: string;
|
|
@@ -7967,7 +6276,7 @@ type ChannelRevokedLiveEvent = {
|
|
|
7967
6276
|
channel: string;
|
|
7968
6277
|
reason: "permission-revoked" | "workspace-left" | "object-deleted";
|
|
7969
6278
|
};
|
|
7970
|
-
type LiveEventPayload = RecordPatchLiveEvent | RecordDeletedLiveEvent | ViewProjectionStaleLiveEvent | AgentSessionPatchLiveEvent | AgentUnreadPatchLiveEvent | NotificationCreatedLiveEvent | NotificationRecipientPatchLiveEvent | NotificationCountPatchLiveEvent | ConversationRenamedLiveEvent | BrowserPreviewUpdatedLiveEvent | ChannelRevokedLiveEvent;
|
|
6279
|
+
type LiveEventPayload = RecordPatchLiveEvent | RecordDeletedLiveEvent | RecordRemovedLiveEvent | RecordCreatedLiveEvent | ViewProjectionStaleLiveEvent | AgentSessionPatchLiveEvent | AgentUnreadPatchLiveEvent | NotificationCreatedLiveEvent | NotificationRecipientPatchLiveEvent | NotificationCountPatchLiveEvent | ConversationRenamedLiveEvent | BrowserPreviewUpdatedLiveEvent | ChannelRevokedLiveEvent;
|
|
7971
6280
|
type LiveEventType = LiveEventPayload["type"];
|
|
7972
6281
|
declare const LIVE_EVENT_TYPES: readonly LiveEventType[];
|
|
7973
6282
|
declare function isLiveEventType(value: unknown): value is LiveEventType;
|
|
@@ -8023,8 +6332,17 @@ interface OperatorSpec {
|
|
|
8023
6332
|
/** In-memory evaluation. `value` is the record's value for `attr`. */
|
|
8024
6333
|
evaluateInMemory: (value: unknown, ruleValue: FilterValue, attr: Attribute) => boolean;
|
|
8025
6334
|
}
|
|
6335
|
+
/**
|
|
6336
|
+
* Decide whether an `is` rule is checkbox equality. When the attribute type
|
|
6337
|
+
* is known it alone decides; the boolean-value fallback applies only when the
|
|
6338
|
+
* type is unknown. Shared by adapter-supabase and adapter-meilisearch so both
|
|
6339
|
+
* query builders classify `is` rules identically.
|
|
6340
|
+
*/
|
|
6341
|
+
declare function isCheckboxEquality(attributeType: string | undefined, value: unknown): boolean;
|
|
8026
6342
|
declare const OPERATOR_SPECS: Record<FilterOperator, OperatorSpec>;
|
|
8027
6343
|
|
|
6344
|
+
/** Evaluate filters against custom values and the record's canonical system fields. */
|
|
6345
|
+
declare function evaluateRecordFilterState(state: FilterState, record: ObjectRecord, attributes: Attribute[]): boolean;
|
|
8028
6346
|
/**
|
|
8029
6347
|
* Evaluate a `FilterState` against a flat record of values, in memory.
|
|
8030
6348
|
* Returns false on unknown attribute or operator/type mismatch (safe-fail).
|
|
@@ -8042,9 +6360,21 @@ declare function normalizeForEdgeRpc(op: FilterOperator): FilterOperator;
|
|
|
8042
6360
|
*/
|
|
8043
6361
|
declare function toMultiValueOperator(op: FilterOperator): FilterOperator;
|
|
8044
6362
|
|
|
6363
|
+
declare const SYSTEM_FILTER_ATTRIBUTE_TYPES: Readonly<Record<string, Attribute["type"]>>;
|
|
6364
|
+
/**
|
|
6365
|
+
* Legacy domain operator names removed by the 2026-08 unification. They get
|
|
6366
|
+
* NO input alias — validation rejects them with a message naming the
|
|
6367
|
+
* canonical replacement so callers migrate instead of silently drifting.
|
|
6368
|
+
*/
|
|
6369
|
+
declare const REMOVED_OPERATOR_REPLACEMENTS: Record<string, string>;
|
|
8045
6370
|
interface QualifiedRuleValidationContext {
|
|
8046
6371
|
attributes: Attribute[];
|
|
8047
6372
|
}
|
|
6373
|
+
/**
|
|
6374
|
+
* Collect canonical query-validation issues without mutating the caller's
|
|
6375
|
+
* rule or throwing for ordinary validation failures.
|
|
6376
|
+
*/
|
|
6377
|
+
declare function collectQualifiedRuleIssues(rule: FilterRule, context: QualifiedRuleValidationContext): ValidationError["errors"];
|
|
8048
6378
|
declare function validateQualifiedRule(rule: FilterRule, context: QualifiedRuleValidationContext): void;
|
|
8049
6379
|
|
|
8050
6380
|
/** True when a filter value is a query-time dynamic token. */
|
|
@@ -8092,9 +6422,57 @@ declare function extractCurrencyFilterValue(value: unknown): number | null;
|
|
|
8092
6422
|
* collapse to their comparable scalar; scalars pass through. */
|
|
8093
6423
|
declare function extractFilterValue(value: unknown): string | number | boolean | null;
|
|
8094
6424
|
|
|
6425
|
+
/**
|
|
6426
|
+
* The ONLY accepted non-canonical input: short standard codes and camelCase
|
|
6427
|
+
* forms, kept as a deliberate token-saving input dialect. They normalize to
|
|
6428
|
+
* canonical names before validation/storage — they are never stored and never
|
|
6429
|
+
* part of `FilterOperator`. Removed legacy domain names (`before`, `after`,
|
|
6430
|
+
* `on_or_before`, `on_or_after`, `is_checked`, `is_not_checked`,
|
|
6431
|
+
* `day_month_eq`) deliberately have NO alias: validation rejects them with a
|
|
6432
|
+
* message naming the canonical replacement.
|
|
6433
|
+
*/
|
|
8095
6434
|
declare const SYNONYM_ALIASES: Record<string, string>;
|
|
8096
|
-
declare
|
|
8097
|
-
|
|
6435
|
+
declare function normalizeOperator(rawOp: string): string;
|
|
6436
|
+
/**
|
|
6437
|
+
* Normalize a filter rule's operator (input aliases only — see
|
|
6438
|
+
* SYNONYM_ALIASES). Returns the same rule when the operator is already
|
|
6439
|
+
* canonical, otherwise a copy carrying the canonical operator. Anything the
|
|
6440
|
+
* aliases don't cover (including removed legacy names) passes through
|
|
6441
|
+
* untouched for validation to reject.
|
|
6442
|
+
*/
|
|
6443
|
+
declare function normalizeFilterRule<T extends {
|
|
6444
|
+
operator: string;
|
|
6445
|
+
}>(rule: T): T;
|
|
6446
|
+
|
|
6447
|
+
/**
|
|
6448
|
+
* Half-open UTC millisecond range `[startMs, endMs)` covered by an `is_within`
|
|
6449
|
+
* rule. `endMs` is the start of the day *after* the last included day, so every
|
|
6450
|
+
* backend can compare with `>= start AND < end` and select the same rows.
|
|
6451
|
+
*/
|
|
6452
|
+
interface IsWithinBounds {
|
|
6453
|
+
startMs: number;
|
|
6454
|
+
endMs: number;
|
|
6455
|
+
}
|
|
6456
|
+
/**
|
|
6457
|
+
* Narrow an unknown filter value to a fully-formed {@link RelativeDateValue}.
|
|
6458
|
+
* A partial shape (missing `unit`, empty object, …) would fall through to a
|
|
6459
|
+
* no-op predicate downstream and silently return the entire dataset (#723).
|
|
6460
|
+
*/
|
|
6461
|
+
declare function isRelativeDateValue(value: unknown): value is RelativeDateValue;
|
|
6462
|
+
/**
|
|
6463
|
+
* The single definition of the `is_within` relative-date window, shared by the
|
|
6464
|
+
* in-memory evaluator, the Postgres converter and the Meilisearch builder.
|
|
6465
|
+
*
|
|
6466
|
+
* Bounds are aligned to whole UTC days: `past` spans `[start of today - amount,
|
|
6467
|
+
* start of tomorrow)` and `future` spans `[start of today, start of the day
|
|
6468
|
+
* after today + amount)`. Both directions therefore include all of today.
|
|
6469
|
+
*
|
|
6470
|
+
* Returns `null` when the value is malformed or the offset overflows the Date
|
|
6471
|
+
* range, so callers never emit a predicate built from `NaN` bounds.
|
|
6472
|
+
*/
|
|
6473
|
+
declare function resolveIsWithinBounds(value: unknown, now?: Date): IsWithinBounds | null;
|
|
6474
|
+
/** Format a UTC millisecond bound as the `YYYY-MM-DD` day string Postgres compares against. */
|
|
6475
|
+
declare function toUtcDayString(ms: number): string;
|
|
8098
6476
|
|
|
8099
6477
|
/** Built-in external connector providers (v1). */
|
|
8100
6478
|
type ConnectorProviderId = "gmail" | "outlook";
|
|
@@ -8265,4 +6643,893 @@ interface ViewSyncPayload {
|
|
|
8265
6643
|
*/
|
|
8266
6644
|
declare function viewSyncPayload(view: ViewDefinition): ViewSyncPayload;
|
|
8267
6645
|
|
|
8268
|
-
export { type AIAvailableModel, type AIBatchQuestion, type AIBatchQuestionAnswer, type AIBatchQuestionOption, type AIChatMessage, type AIChatMessagePart, type AIChatMessagePartType, type AIChatNotification, type AICompactionSummary, type AIGenerationInputMap, type AIGenerationResult, type AIGenerationType, type AIGenerationUsage, type AIMemoryEntry, type AIMemoryType, type AIMessageRole, type AIProviderMetrics, type AIQuestion, type AIQuestionAnswer, type AIQuestionOption, type AIQuestionType, type AISubagentStatus, type AITodoItem, type AITodoList, type AITodoStatus, type AIToolCall, type AIToolCallStatus, type AIUsageMetrics, ALLOWED_PROPERTY_TYPES, ALL_ACTIONS, ALL_SYSTEM_RESOURCES, ATTRIBUTE_FILTER_OPERATORS, AUDIT_ACTIONS, AUDIT_RESOURCE_TYPES, type AccessLevel, type Action, type ActivityTab, ActivityTabConfig, type Actor, type ActorRoleAssignment, type ActorStatus, type ActorType, type AddAttributeInput, type AddSharedMailboxInput, type AdvancedFilterState, type AgentBlueprint, AgentBuilder, type AgentBuilderConfig, type AgentConfig, type AgentDashboard, type AgentDefinition, type AgentEvent, type AgentExecutionConfig, type AgentMessageAttachment, type AgentMessagePart, type AgentMission, type AgentMissionArtifact, type AgentMissionPage, type AgentMissionPolicy, type AgentMissionRubric, type AgentMissionRubricCriterion, type AgentMissionStatus, type AgentMissionVerification, type AgentMissionView, type AgentRun, type AgentRunStatus, type AgentSchedule, type AgentSession, type AgentSessionMessage, type AgentSessionMode, type AgentSessionPatchLiveEvent, type AgentSessionStatus, type AgentTodoPlan, type AgentTodoPlanStatus, type AgentTodoPlanView, type AgentToolCall, type AgentTriggerBlueprint, type AgentTriggerDefinition, type AgentTriggerType, type AgentUnreadPatchLiveEvent, type ApiKey, type ApiKeyAuthContext, type ApiKeyPermission, type ApiKeyWithSecret, type AssignActorRoleInput, type AssignRoleInput, Attribute, type AttributeAgentCapabilities, type AttributeAuthoringCapabilities, type AttributeCapabilities, type AttributeCardinality, type AttributeDefaultValueCapability, type AttributeExchangeCapabilities, type AttributeGroupField, type AttributeLifecycleCapabilities, type AttributePolymorphicCapability, type AttributePresentationCapabilities, type AttributeQueryCapabilities, type AttributeRequiredCapability, type AttributeStorageCapabilities, type AttributeStorageMode, AttributeType, type AuditAction, type AuditActorType, type AuditChange, type AuditListOptions, type AuditLogEntry, type AuditResourceType, type AuditServiceOptions, type AuditSortField, BEHAVIOR_PROPERTIES, BROWSER_PREVIEW_STATUSES, BilateralConfig, type BoundingBox, type BrowserPreviewDescriptor, type BrowserPreviewStatus, type BrowserPreviewUpdatedLiveEvent, type BuilderConfig, COMPUTED_FUNCTIONS, COMPUTED_FUNCTION_METADATA, COMPUTED_FUNCTION_NAMES, CONNECTOR_CALLBACK_PARAM, CROSS_TYPE_CONVERSIONS, type ChannelRevokedLiveEvent, CheckboxAttribute, type CollectionPage, type CollectionRequest, type CollectionResponse, type CompactionStrategy, type CompileComputedFormulaInput, type ComputedCompileAttribute, type ComputedCompileObject, type ComputedCompileSchema, ComputedDependency, type ComputedDependencyGraphNode, ComputedFormulaAstNode, ComputedFormulaCompileError, type ComputedFormulaResult, type ComputedFunctionCategory, type ComputedFunctionMetadata, type ComputedFunctionName, type ComputedFunctionSignature, ComputedOptionsSource, ComputedPlan, ComputedReturnType, ComputedValueType, type ConfigOverrides, type ConnectionStatus, type ConnectionStatusId, type ConnectionView, type ConnectorCallbackStatusValue, type ConnectorProviderId, type ConnectorScope, type ConversationRenamedLiveEvent, type CountMode, type CreateActorInput, type CreateApiKeyInput, type CreateAuditLogInput, type CreateCustomObjectInput, type CreateDBAttribute, type CreateDBForm, type CreateDBFormSubmission, type CreateDBObject, type CreateDBView, type CreateDBViewOverlay, type CreateDocument, type CreateDocumentLink, type CreateFile, type CreateMode, type CreateNotificationInput, type CreateNotificationRecipientInput, type CreateObjectRecord, type CreatePermissionInput, type CreateReflexInput, type CreateReflexVersionInput, type CreateRoleInput, type CreateUserProfile, type CreateViewInput, type CriticConfig, Currency, CurrencyAttribute, type CurrencyFilterValue, type CustomAttributeValue, type CustomTab, CustomTabConfig, type DBAttribute, type DBForm, type DBFormSubmission, type DBObject, type DBView, type DBViewOverlay, type DBViewSyncResolution, DB_COLUMN_FIELDS, DEFAULT_AGENT_EXECUTION_CONFIG, DEFAULT_ROLES, DEFAULT_ROLE_DESCRIPTIONS, DEFAULT_ROLE_LABELS, DEFAULT_ROLE_PERMISSIONS, DOCUMENT_SYSTEM_ATTRIBUTES, DateAttribute, DateRangeValue, type DefaultRoleName, type DeletedMode, DetailViewBuilder, type DetailViewConfig, type DetailViewDefinition, type Document, DocumentAttribute, type DocumentFile, type DocumentKind, DocumentLayout, type DocumentListOptions, type DocumentWithFiles, type DocumentWithSubCount, type DocumentsTab, DocumentsTabConfig, type DomainEvent, type DynamicValue, type DynamicValueResolver, EMPTY_VALUE_PLACEHOLDER, type Eager, type EdgeQuantifier, type EffectivePermissions, type EmailAttachmentMeta, type EmailDirection, type EmailParticipantRef, type EmailParticipantRole, type EmailProvider, type EmailVisibility, type EmailsTab, EmailsTabConfig, type EnvVarEntry, type EnvVarScope, type EventDataMap, type EventType, type ExtendedFilterRule, type ExtractRecord, type ExtractRecordInput, type ExtractRecordInputStrict, type ExtractRecordStrict, type ExtractRecordUpdate, type ExtractRecordUpdateStrict, FORM_FORBIDDEN_ATTRIBUTE_TYPES, type FeatureFlagDefinition, type FeatureFlagsConfig, type FeatureFlagsRepository, type FeatureGate, type Field, type FieldGroup, type FieldHistoryEntry, type File, type FileListOptions, type FileOcrStatus, type FilterCombinator, type FilterGroup, type FilterOperator, type FilterRule, type FilterState, type FilterValue, type FlagLevel, type FlagOverride, FlagRegistry, FlagService, type FlagValueType, FormBuilder, type FormDefinition, type FormDensity, type FormFieldRef, type FormFieldsRow, type FormFreeFieldRef, type FormHeadingRow, FormRegistry, type FormRow, FormRowBuilder, type FormSeparatorRow, type FormSlot, type FormSlotFieldRef, type FormStatus, type FormStep, FormStepBuilder, type FormSubmission, type FormSubmissionStatus, type FormSubmittedAgentEvent, type FormTab, type FormTextRow, type FormsTab, FormulaAttribute, type FormulaGenerationAttribute, type FormulaGenerationInput, FormulaReturnType, type GeocodingAdapter, type GeocodingAutocompleteParams, type GeocodingParams, type GeocodingSuggestion, type GlobalSearchGroupedOptions, type GlobalSearchGroupedResult, type GlobalSearchOptions, type GlobalSearchResultItem, type Group, GroupBuilder, IDENTITY_PROPERTIES, type InferAttributeValue, type InferQualifiedProps, type InverseSource, type InviteUserInput, LIVE_EVENT_TYPES, LIVE_STREAM_START_CURSOR, type ListOptions, ListViewBuilder, type ListViewConfig, type ListViewDefinition, type ListViewLayout, type ListViewTab, ListViewTabConfigBuilder, type LiveChannel, type LiveChannelKind, type LiveErrorPayload, type LiveEventEnvelope, type LiveEventPayload, type LiveEventType, type LiveGapPayload, type LiveNotification, type LiveNotificationRecipient, type LiveNotificationRecipientPatch, type LiveReplayCompletePayload, type LiveSubscribePayload, type LiveUnsubscribePayload, Location, LocationAttribute, LocationGranularity, MEMORY_LIST_VIEW, MEMORY_OBJECT, MEMORY_VIEW, type MailboxAccount, type MailboxCursor, type MailboxEmail, type MailboxListResponse, type MailboxQuery, type MailboxReadState, type MailboxThread, type MailboxThreadDetail, type MentionEntityType, type MentionReference, type MentionedContext, type MentionedEntityContext, MigrationDefinition, type ModelDefinition, MultiRelationAttribute, MultiselectAttribute, NOTIFICATION_INBOX_STATES, NOTIFICATION_KINDS, NOTIFICATION_PRIORITIES, NOTIFICATION_SENSITIVITIES, NOTIFICATION_TYPES_V1, NOTIFICATION_TYPE_AGENT_QUESTION_REQUESTED, NOTIFICATION_TYPE_AGENT_SESSION_COMPLETED, NOTIFICATION_TYPE_AGENT_SESSION_FAILED, NOTIFICATION_TYPE_AGENT_SESSION_TIMEOUT, NOTIFICATION_TYPE_AGENT_SESSION_WAITING_HUMAN, NOTIFICATION_TYPE_AGENT_TASK_ASSIGNED, NOTIFICATION_WORK_STATES, NO_VALUE_OPERATORS, type NoValueOperator, NoopGeocodingAdapter, type Notification, type NotificationCountPatchLiveEvent, type NotificationCounts, type NotificationCreatedLiveEvent, type NotificationInboxState, type NotificationKind, type NotificationListParams, type NotificationListResult, type NotificationPriority, type NotificationRecipient, type NotificationRecipientPatchLiveEvent, type NotificationSensitivity, type NotificationSubject, type NotificationType, type NotificationV1Type, type NotificationWithRecipient, type NotificationWorkState, NumberAttribute, OPERATORS_BY_TYPE, OPERATOR_SPECS, ObjectBuilder, type ObjectConfig, ObjectDefinition, type ObjectPermissions, type OcrAdapter, type OcrInput, type OcrOptions, type OcrPage, type OcrResult, type OcrTextBlock, type OperatorSpec, Option, PRESENTATION_PROPERTIES, type PageInfo, type PageOptions, type PageResponse, type ParsedAttribute, type Permission, type PermissionScope, Phone, PhoneAttribute, type PhoneFilterValue, PropertySchema, type ProviderName, QUALIFIED_SEPARATOR, type QualifiedDocumentAttributeBuilder, type QualifiedDocumentBrand, type QueryState, type ReasoningPartData, type RecordAgentEvent, type RecordDeletedLiveEvent, type RecordDocuments, type RecordFieldPatch, type RecordMetadata, type RecordPatchLiveEvent, type Reflex, type ReflexRun, type ReflexState, type ReflexVersion, type ReflexVersionStatus, type RegexGenerationInput, RelationAttribute, type RelationGroup, RelationGroupBuilder, type RelationOption, type RelationOptionsResponse, type RelationSource, RelationTarget, type RelativeDateValue, type ResolutionContext, type ResolvedFlag, type RetryPolicy, type ReverseGeocodingParams, RichtextAttribute, type RichtextTab, RichtextTabConfig, type Role, RollupAttribute, RollupFunction, type RunEffect, type RunMode, SKILL_LIST_VIEW, SKILL_OBJECT, SKILL_VIEW, STANDARD_SCHEMA_VENDOR, SYNONYM_ALIASES, SYSTEM_ATTRIBUTES, SYSTEM_ATTRIBUTE_I18N_KEYS, SYSTEM_RESOURCES, SYSTEM_RESOURCE_LABELS, type SearchOptions, SelectAttribute, type SidePanelConfig, type SidebarExtraItem, SingleRelationAttribute, type SlotMode, type SortDirection, type SortRule, type StandardSchemaIssue, type StandardSchemaResult, type StartConnectorAuthInput, type StartConnectorAuthResult, type StaticFlagDefault, StatusAttribute, type StorageProvider, type StreamEventCompactionEnd, type StreamEventCompactionFailed, type StreamEventCompactionStart, type StreamEventMessagePersisted, type StreamEventMessageUpdated, type StreamEventMissionUpdate, type StreamEventTodoPlanUpdate, type StreamEventUsage, type SystemAttribute, type SystemAttributeI18nKey, type SystemFields, type SystemPermissions, type SystemResource, type Tab, TabBuilder, type TabType, type TableSource, type TableTab, TableTabConfig, TenantId, type TenantSettings, TextAttribute, type TextPartData, type ThinkingPartData, TimeFormat, Timestamps, type ToolPartData, type ToolPartErrorCode, type ToolPartState, type TriggerEventType, USER_STATUSES, type UpdateActorInput, type UpdateDBAttribute, type UpdateDBForm, type UpdateDBFormSubmission, type UpdateDBObject, type UpdateDBView, type UpdateDBViewOverlay, type UpdateDocument, type UpdateFile, type UpdateObjectInput, type UpdateRoleInput, type UpdateUserProfile, type UpdateViewInput, type UpsertDBAttribute, type UpsertDBObject, type UpsertDBView, UserAttribute, type UserLike, type UserProfile, UserReferenceType, type UserRoleAssignment, type UserStatus, Uuid, type ValueRef, type ViewConfig, type ViewDefinition, type ViewOverlay, type ViewProjectionStaleLiveEvent, type ViewSyncPayload, type ViewType, type WithCustomAttributes$1 as WithCustomAttributes, accessLevelToActions, actionsToAccessLevel, agent, applyPipes, applyRelationProps, assertAcyclicComputedDependencies, assertLiveStreamCursor, booleanFlag, buildPropertySchema, buildQualifiedAttribute, canonicalStringify, checkbox, compareLiveStreamCursors, compileComputedFormula, compileRollupAttribute, createFlagRegistry, createFlagService, createStandardSchemaProps, currency, currentActor, date, dateValueStart, detailView, document, evaluateComputedAst, evaluateComputedFormula, evaluateComputedFormulaWithResult, evaluateFilterState, extractAttributeNames, extractCurrencyFilterValue, extractFilterValue, extractValueRefs, flagRegistry, form, formRegistry, formatAttributeValue, formatComputedResult, formatLocationValue, formula, generateDefaultDetailView, generateDefaultListView, getActiveTab, getAttributeCapabilities, getAttributeFilterOperators, getErrorMessage, getLiveProtocolPayloadChannel, getOperatorPolarity, getRollupFilterOperators, getSlotFieldTargets, getSystemAttributeI18nKey, getSystemAttributeList, getUserDisplayName, group, inferRollupReturnType, isAttributeFilterable, isAttributeGroupable, isAttributeKanbanGroupable, isAttributeSearchable, isComputedFunctionName, isDateRangeValue, isDefaultRole, isDetailView, isDocumentAttribute, isDynamicValue, isEmptyObject, isFieldGroup, isFormDefinition, isFormFieldsRow, isFormFreeFieldRef, isFormHeadingRow, isFormSeparatorRow, isFormSlotFieldRef, isFormTextRow, isLabelExpression, isListView, isLiveErrorPayload, isLiveEventEnvelope, isLiveEventPayload, isLiveEventPayloadForType, isLiveEventType, isLiveGapPayload, isLiveReplayCompletePayload, isLiveStreamCursor, isManagedSystemAttribute, isNoValueOperator, isNotEmpty, isPlainRecord, isRelationGroup, isStandardSchema, jsonFlag, listView, liveChannelKey, location, matchesMime, multiselect, normalizeDateValue, normalizeForEdgeRpc, normalizeOperator, now, number, numberFlag, object, parseLiveChannelKey, parseLiveSubscribePayload, parseLiveUnsubscribePayload, parseQualifiedAttribute, phone, registry, relation, relationGroup, renderLabelExpression, resetViewToDefault, richtext, rollup, rollupToFormulaExpression, select, status, stringFlag, text, toMultiValueOperator, toUndefinedIfEmpty, today, user, validateAttributeName, validateQualifiedRule, viewRegistry, viewSyncPayload };
|
|
6646
|
+
/** An attribute to add to an object that already exists, or is created in the same plan. */
|
|
6647
|
+
interface PlannedAttribute {
|
|
6648
|
+
objectName: string;
|
|
6649
|
+
name: string;
|
|
6650
|
+
label: string;
|
|
6651
|
+
type: Attribute["type"];
|
|
6652
|
+
config?: Record<string, unknown>;
|
|
6653
|
+
required?: boolean;
|
|
6654
|
+
description?: string;
|
|
6655
|
+
}
|
|
6656
|
+
/**
|
|
6657
|
+
* An object to create, with its attributes inline. Inline attributes are the
|
|
6658
|
+
* same lighter descriptor as `PlannedAttribute` (minus `objectName`, which
|
|
6659
|
+
* the parent object supplies) — not the full `Attribute` discriminated
|
|
6660
|
+
* union. The full union carries type-specific required fields an agent
|
|
6661
|
+
* proposal has no reason to fill in.
|
|
6662
|
+
*/
|
|
6663
|
+
interface PlannedObject {
|
|
6664
|
+
name: string;
|
|
6665
|
+
label: string;
|
|
6666
|
+
pluralLabel?: string;
|
|
6667
|
+
description?: string;
|
|
6668
|
+
icon: IconName;
|
|
6669
|
+
labelExpression: string;
|
|
6670
|
+
attributes: Omit<PlannedAttribute, "objectName">[];
|
|
6671
|
+
}
|
|
6672
|
+
/**
|
|
6673
|
+
* A complete agent-authored target for one deterministic default view.
|
|
6674
|
+
*
|
|
6675
|
+
* `canonicalConfig` is the *whole* config the view should end up with, not a
|
|
6676
|
+
* patch: the agent reads the baseline, edits it, and sends it back entire.
|
|
6677
|
+
* The field is deliberately not called `config` — that name reads as "the bit
|
|
6678
|
+
* I want to change", which is exactly the loose-patch shape this contract
|
|
6679
|
+
* replaced, and a partial config here would silently drop every tab and
|
|
6680
|
+
* setting the agent did not restate.
|
|
6681
|
+
*
|
|
6682
|
+
* Existing objects require the opaque `baselineToken` issued by the server's
|
|
6683
|
+
* read-only default-view endpoint — it proves the agent authored against the
|
|
6684
|
+
* baseline that is still current. Objects created by this same plan must omit
|
|
6685
|
+
* it, because no baseline can exist yet. The proposal schema enforces that
|
|
6686
|
+
* cross-entry rule.
|
|
6687
|
+
*/
|
|
6688
|
+
type ProposedDefaultViewTarget = {
|
|
6689
|
+
objectName: string;
|
|
6690
|
+
viewType: "list";
|
|
6691
|
+
canonicalConfig: ListViewConfig;
|
|
6692
|
+
baselineToken?: string;
|
|
6693
|
+
} | {
|
|
6694
|
+
objectName: string;
|
|
6695
|
+
viewType: "detail";
|
|
6696
|
+
canonicalConfig: DetailViewConfig;
|
|
6697
|
+
baselineToken?: string;
|
|
6698
|
+
};
|
|
6699
|
+
/**
|
|
6700
|
+
* Where the base config a target was authored against came from.
|
|
6701
|
+
*
|
|
6702
|
+
* `"absent"` is the plan-created-object case, and the reason `baseConfigHash`
|
|
6703
|
+
* is nullable: such an object does not exist at proposal time, so there is no
|
|
6704
|
+
* baseline to hash — the same fact that forbids its target from carrying a
|
|
6705
|
+
* `baselineToken`. Its default views are created during apply by
|
|
6706
|
+
* `ObjectSchemaService.createCustomObject`, from the real generator against
|
|
6707
|
+
* the real persisted object; a baseline synthesized at proposal time would
|
|
6708
|
+
* therefore not merely be missing, it would be *wrong*, and would spuriously
|
|
6709
|
+
* fail the staleness comparison it exists to support.
|
|
6710
|
+
*/
|
|
6711
|
+
type ViewBaselineOrigin = "persisted" | "generated" | "absent";
|
|
6712
|
+
/** Shared by both view types; `canonicalConfig` is what discriminates them. */
|
|
6713
|
+
interface PersistedDefaultViewTargetBase {
|
|
6714
|
+
objectName: string;
|
|
6715
|
+
/** Hash of the baseline this target was authored against; `null` iff `baselineOrigin` is `"absent"`. */
|
|
6716
|
+
baseConfigHash: string | null;
|
|
6717
|
+
targetConfigHash: string;
|
|
6718
|
+
baselineOrigin: ViewBaselineOrigin;
|
|
6719
|
+
}
|
|
6720
|
+
/** A server-prepared executable target. Agent-only baseline tokens never persist. */
|
|
6721
|
+
type PersistedDefaultViewTarget = (PersistedDefaultViewTargetBase & {
|
|
6722
|
+
viewType: "list";
|
|
6723
|
+
canonicalConfig: ListViewConfig;
|
|
6724
|
+
}) | (PersistedDefaultViewTargetBase & {
|
|
6725
|
+
viewType: "detail";
|
|
6726
|
+
canonicalConfig: DetailViewConfig;
|
|
6727
|
+
});
|
|
6728
|
+
interface PlannedAttributeRemoval {
|
|
6729
|
+
objectName: string;
|
|
6730
|
+
attributeName: string;
|
|
6731
|
+
}
|
|
6732
|
+
interface PlannedObjectRemoval {
|
|
6733
|
+
objectName: string;
|
|
6734
|
+
}
|
|
6735
|
+
interface PlannedRename {
|
|
6736
|
+
objectName: string;
|
|
6737
|
+
from: string;
|
|
6738
|
+
to: string;
|
|
6739
|
+
}
|
|
6740
|
+
/**
|
|
6741
|
+
* Everything that adds, minus the view targets — those are the one branch
|
|
6742
|
+
* whose shape differs between the model-facing and the server-prepared
|
|
6743
|
+
* contract, so each version restates only that field.
|
|
6744
|
+
*
|
|
6745
|
+
* Nothing here can lose record data. Deliberately has no `views` (create)
|
|
6746
|
+
* branch: creating a view is not part of a plan, the same way changing an
|
|
6747
|
+
* attribute's type is not — a target can only replace the config of an
|
|
6748
|
+
* object's default view of a given type.
|
|
6749
|
+
*/
|
|
6750
|
+
interface SchemaPlanAdditiveBase {
|
|
6751
|
+
objects: PlannedObject[];
|
|
6752
|
+
attributes: PlannedAttribute[];
|
|
6753
|
+
}
|
|
6754
|
+
interface SchemaPlanAdditive extends SchemaPlanAdditiveBase {
|
|
6755
|
+
viewUpdates: ProposedDefaultViewTarget[];
|
|
6756
|
+
}
|
|
6757
|
+
interface PersistedSchemaPlanAdditive extends SchemaPlanAdditiveBase {
|
|
6758
|
+
viewUpdates: PersistedDefaultViewTarget[];
|
|
6759
|
+
}
|
|
6760
|
+
/**
|
|
6761
|
+
* Everything that can lose record data or break references. A non-empty
|
|
6762
|
+
* destructive branch is what makes the UI require an explicit confirmation —
|
|
6763
|
+
* the structure carries the distinction, so no caller can forget to check it.
|
|
6764
|
+
*
|
|
6765
|
+
* Type change is deliberately absent: `changeAttributeType` raises
|
|
6766
|
+
* `ChangeTypeNotSupportedError` at runtime by design and lives in code through
|
|
6767
|
+
* `.migration(N, m => m.changeType(...))`.
|
|
6768
|
+
*/
|
|
6769
|
+
interface SchemaPlanDestructive {
|
|
6770
|
+
attributeRemovals: PlannedAttributeRemoval[];
|
|
6771
|
+
objectRemovals: PlannedObjectRemoval[];
|
|
6772
|
+
renames: PlannedRename[];
|
|
6773
|
+
}
|
|
6774
|
+
/**
|
|
6775
|
+
* A model-facing proposal.
|
|
6776
|
+
*
|
|
6777
|
+
* There is only one plan contract, so the type carries no version suffix. The
|
|
6778
|
+
* `schemaPlanVersion` FIELD stays required and literal all the same: it is the
|
|
6779
|
+
* wire guard, and it is what makes an unversioned payload get refused outright
|
|
6780
|
+
* rather than guessed at — a plan authored against an older shape can never be
|
|
6781
|
+
* silently reinterpreted under this one.
|
|
6782
|
+
*/
|
|
6783
|
+
interface SchemaPlan {
|
|
6784
|
+
schemaPlanVersion: 2;
|
|
6785
|
+
summary: string;
|
|
6786
|
+
additive: SchemaPlanAdditive;
|
|
6787
|
+
destructive: SchemaPlanDestructive;
|
|
6788
|
+
}
|
|
6789
|
+
/**
|
|
6790
|
+
* A plan being accumulated one entry at a time, before a summary exists.
|
|
6791
|
+
*
|
|
6792
|
+
* Derived from {@link SchemaPlan} rather than redeclared, so an entry added to
|
|
6793
|
+
* the plan shape is automatically addable to a draft — the two cannot drift
|
|
6794
|
+
* into accepting different things. `summary` is absent because it describes a
|
|
6795
|
+
* finished plan: the agent writes it at `propose_schema_plan`, once it knows
|
|
6796
|
+
* what it actually assembled. `schemaPlanVersion` is absent because a draft is
|
|
6797
|
+
* never handed to anything that dispatches on it; it is stamped at finalize.
|
|
6798
|
+
*/
|
|
6799
|
+
type SchemaPlanDraft = Omit<SchemaPlan, "schemaPlanVersion" | "summary">;
|
|
6800
|
+
/**
|
|
6801
|
+
* Where a session's draft stands in its lifecycle.
|
|
6802
|
+
*
|
|
6803
|
+
* `composing` is a draft still accumulating entries; `proposed` is a draft
|
|
6804
|
+
* whose entries became a plan (`propose_schema_plan`) and are KEPT — the
|
|
6805
|
+
* preview window renders them until the plan is applied or rejected. A
|
|
6806
|
+
* proposed draft never silently accepts new entries: the next entry starts a
|
|
6807
|
+
* fresh `composing` draft, which is what protects a later plan from stale
|
|
6808
|
+
* leftovers now that drafts are session-scoped rather than turn-scoped.
|
|
6809
|
+
*/
|
|
6810
|
+
type SchemaPlanDraftStatus = "composing" | "proposed";
|
|
6811
|
+
/** Sample records for preview only — keyed by object name, values keyed by attribute name. */
|
|
6812
|
+
type SchemaPlanSampleData = Record<string, Record<string, unknown>[]>;
|
|
6813
|
+
/**
|
|
6814
|
+
* What a draft repository write carries: the plan-shaped draft plus the
|
|
6815
|
+
* preview envelope around it. `updatedAt` is absent on purpose — the store
|
|
6816
|
+
* stamps it, so no caller can write a time it made up.
|
|
6817
|
+
*/
|
|
6818
|
+
interface SchemaPlanDraftWrite {
|
|
6819
|
+
draft: SchemaPlanDraft;
|
|
6820
|
+
sampleData: SchemaPlanSampleData;
|
|
6821
|
+
status: SchemaPlanDraftStatus;
|
|
6822
|
+
/** The plan this draft became at finalize; `null` while composing. */
|
|
6823
|
+
proposedPlanId: Uuid | null;
|
|
6824
|
+
}
|
|
6825
|
+
/**
|
|
6826
|
+
* What the draft endpoint returns and the repository stores alongside the
|
|
6827
|
+
* plan-shaped draft. `updatedAt` (ISO string) is the store's stamp, used by
|
|
6828
|
+
* the preview window's dismissal ledger to tell new activity from old.
|
|
6829
|
+
*/
|
|
6830
|
+
interface SchemaPlanDraftState extends SchemaPlanDraftWrite {
|
|
6831
|
+
updatedAt: string;
|
|
6832
|
+
}
|
|
6833
|
+
/**
|
|
6834
|
+
* What the draft endpoint answers: the full state, or `{ draft: null }` for a
|
|
6835
|
+
* session with no draft — always 200, because "nothing composed yet" is a
|
|
6836
|
+
* normal state the preview window polls through, not an error.
|
|
6837
|
+
*/
|
|
6838
|
+
type SchemaPlanDraftResponse = SchemaPlanDraftState | {
|
|
6839
|
+
draft: null;
|
|
6840
|
+
};
|
|
6841
|
+
/** The server-prepared payload persisted for later approval and execution. */
|
|
6842
|
+
interface PersistedSchemaPlan {
|
|
6843
|
+
schemaPlanVersion: 2;
|
|
6844
|
+
summary: string;
|
|
6845
|
+
additive: PersistedSchemaPlanAdditive;
|
|
6846
|
+
destructive: SchemaPlanDestructive;
|
|
6847
|
+
}
|
|
6848
|
+
/** What a destructive entry costs, measured against real rows. */
|
|
6849
|
+
interface SchemaPlanImpactEntry {
|
|
6850
|
+
objectName: string;
|
|
6851
|
+
/** Absent for an object removal. */
|
|
6852
|
+
attributeName?: string;
|
|
6853
|
+
/** Record values purged by an attribute removal, or records deleted by an object removal. */
|
|
6854
|
+
affectedRecords: number;
|
|
6855
|
+
}
|
|
6856
|
+
interface SchemaPlanImpact {
|
|
6857
|
+
entries: SchemaPlanImpactEntry[];
|
|
6858
|
+
/** Renames carry no countable impact; listed so the dialog can say so. */
|
|
6859
|
+
renameWarnings: string[];
|
|
6860
|
+
}
|
|
6861
|
+
/**
|
|
6862
|
+
* One semantic difference between a view target's `canonicalConfig` and the
|
|
6863
|
+
* baseline it was authored against.
|
|
6864
|
+
*
|
|
6865
|
+
* A view target replaces a view's configuration WHOLESALE, so the approval
|
|
6866
|
+
* screen showing only "list view of devis" asks a human to agree to a
|
|
6867
|
+
* replacement they cannot see. These entries are what that screen renders
|
|
6868
|
+
* instead — computed server-side, against the very baseline the target's
|
|
6869
|
+
* token proved current.
|
|
6870
|
+
*
|
|
6871
|
+
* Deliberately structured data, never rendered sentences: the wording is a
|
|
6872
|
+
* presentation concern and lives in the frontend's locale files, so the same
|
|
6873
|
+
* stored plan can be read in any language and the runtime never accumulates
|
|
6874
|
+
* user-facing prose.
|
|
6875
|
+
*
|
|
6876
|
+
* The list of kinds is not exhaustive and never can be — the view config types
|
|
6877
|
+
* grow, and a hand-maintained set of comparisons will always lag them. What IS
|
|
6878
|
+
* guaranteed is the invariant that makes an incomplete list safe: a difference
|
|
6879
|
+
* with no `kind` of its own still produces `"otherChanges"`, so an empty
|
|
6880
|
+
* `changes` array means the two configurations are byte-identical after
|
|
6881
|
+
* canonicalization, never "we did not think to look".
|
|
6882
|
+
*/
|
|
6883
|
+
type ViewChange = {
|
|
6884
|
+
kind: "columnsAdded";
|
|
6885
|
+
tabId: string;
|
|
6886
|
+
columns: string[];
|
|
6887
|
+
} | {
|
|
6888
|
+
kind: "columnsRemoved";
|
|
6889
|
+
tabId: string;
|
|
6890
|
+
columns: string[];
|
|
6891
|
+
} | {
|
|
6892
|
+
kind: "columnsReordered";
|
|
6893
|
+
tabId: string;
|
|
6894
|
+
} | {
|
|
6895
|
+
kind: "tabAdded";
|
|
6896
|
+
tabId: string;
|
|
6897
|
+
label: string;
|
|
6898
|
+
} | {
|
|
6899
|
+
kind: "tabRemoved";
|
|
6900
|
+
tabId: string;
|
|
6901
|
+
label: string;
|
|
6902
|
+
} | {
|
|
6903
|
+
kind: "tabRenamed";
|
|
6904
|
+
tabId: string;
|
|
6905
|
+
from: string;
|
|
6906
|
+
to: string;
|
|
6907
|
+
}
|
|
6908
|
+
/**
|
|
6909
|
+
* The tabs that exist on both sides now appear in a different sequence.
|
|
6910
|
+
* A view-wide fact rather than a per-tab one, and a visible one: the tab
|
|
6911
|
+
* bar renders tabs in config order and the first tab is the one a record
|
|
6912
|
+
* opens on, so a pure reordering changes both the bar and the landing tab.
|
|
6913
|
+
*/
|
|
6914
|
+
| {
|
|
6915
|
+
kind: "tabsReordered";
|
|
6916
|
+
}
|
|
6917
|
+
/**
|
|
6918
|
+
* A tab that stayed, whose configuration moved in some way other than its
|
|
6919
|
+
* label or its column list — a form tab's groups and fields, a table tab's
|
|
6920
|
+
* source or filters, a kanban tab's grouping. Without it a detail-view
|
|
6921
|
+
* target could rewrite every field of every form and still describe itself
|
|
6922
|
+
* as changing nothing, which is exactly the silence this whole change-set
|
|
6923
|
+
* exists to break.
|
|
6924
|
+
*/
|
|
6925
|
+
| {
|
|
6926
|
+
kind: "tabSettingsChanged";
|
|
6927
|
+
tabId: string;
|
|
6928
|
+
}
|
|
6929
|
+
/** The view had no side panel and now has one — it appears on every record page. */
|
|
6930
|
+
| {
|
|
6931
|
+
kind: "sidePanelAdded";
|
|
6932
|
+
attributes: string[];
|
|
6933
|
+
} | {
|
|
6934
|
+
kind: "sidePanelAttributesAdded";
|
|
6935
|
+
attributes: string[];
|
|
6936
|
+
} | {
|
|
6937
|
+
kind: "sidePanelAttributesRemoved";
|
|
6938
|
+
attributes: string[];
|
|
6939
|
+
} | {
|
|
6940
|
+
kind: "sidePanelRemoved";
|
|
6941
|
+
} | {
|
|
6942
|
+
kind: "defaultFiltersChanged";
|
|
6943
|
+
} | {
|
|
6944
|
+
kind: "defaultFiltersRemoved";
|
|
6945
|
+
}
|
|
6946
|
+
/**
|
|
6947
|
+
* The configurations differ in a way none of the kinds above describes.
|
|
6948
|
+
*
|
|
6949
|
+
* The load-bearing entry of this union, and the reason the others may be
|
|
6950
|
+
* incomplete: without it, a difference nobody modelled would render as an
|
|
6951
|
+
* empty `changes` array, i.e. as the positive claim "this changes nothing".
|
|
6952
|
+
* A confident false negative on an approval screen is strictly worse than
|
|
6953
|
+
* the bare object name it replaced — it manufactures the trust it should be
|
|
6954
|
+
* earning. This turns every such gap into a vague answer rather than a
|
|
6955
|
+
* wrong one.
|
|
6956
|
+
*/
|
|
6957
|
+
| {
|
|
6958
|
+
kind: "otherChanges";
|
|
6959
|
+
}
|
|
6960
|
+
/**
|
|
6961
|
+
* The whole of what can be said about a target on an object this same plan
|
|
6962
|
+
* creates: it has no baseline (see {@link ViewBaselineOrigin}), so there is
|
|
6963
|
+
* nothing to have changed — the view is simply new.
|
|
6964
|
+
*/
|
|
6965
|
+
| {
|
|
6966
|
+
kind: "newObjectView";
|
|
6967
|
+
};
|
|
6968
|
+
/** What one view target changes, as the approval screen reads it. */
|
|
6969
|
+
interface SchemaPlanViewChanges {
|
|
6970
|
+
objectName: string;
|
|
6971
|
+
viewType: ViewType;
|
|
6972
|
+
/**
|
|
6973
|
+
* Bounded and deterministically ordered. Empty means — provably, not by
|
|
6974
|
+
* convention — that the target's configuration is byte-identical to its
|
|
6975
|
+
* baseline after canonicalization: any other difference falls through to
|
|
6976
|
+
* {@link ViewChange} `"otherChanges"`. So an empty array is a real answer
|
|
6977
|
+
* ("this view target changes nothing"), never a gap in the comparisons.
|
|
6978
|
+
*/
|
|
6979
|
+
changes: ViewChange[];
|
|
6980
|
+
/**
|
|
6981
|
+
* How many further changes were computed and dropped to keep `changes`
|
|
6982
|
+
* bounded. `0` for every ordinary target; non-zero says the summary is
|
|
6983
|
+
* partial, so the screen can say so rather than imply completeness.
|
|
6984
|
+
*
|
|
6985
|
+
* What survives truncation is chosen destructive-first: an approver can
|
|
6986
|
+
* accept an unlisted addition, but must never be shown a summary that
|
|
6987
|
+
* silently omitted a deletion.
|
|
6988
|
+
*/
|
|
6989
|
+
droppedChanges: number;
|
|
6990
|
+
}
|
|
6991
|
+
/**
|
|
6992
|
+
* The human-facing description of a plan's view targets, computed once at
|
|
6993
|
+
* propose time and stored beside {@link SchemaPlanImpact} — never inside the
|
|
6994
|
+
* plan payload, which is the executable contract and is server-prepared from
|
|
6995
|
+
* an agent proposal that is forbidden from carrying this field.
|
|
6996
|
+
*
|
|
6997
|
+
* Objects and attributes are absent on purpose: the approval screen already
|
|
6998
|
+
* lists those from the plan itself. Views are the one target whose effect is
|
|
6999
|
+
* invisible without a diff.
|
|
7000
|
+
*/
|
|
7001
|
+
interface SchemaPlanChangeSet {
|
|
7002
|
+
views: SchemaPlanViewChanges[];
|
|
7003
|
+
}
|
|
7004
|
+
/**
|
|
7005
|
+
* Takes only the destructive branch — identical in the proposal and the
|
|
7006
|
+
* persisted contract — so both a `SchemaPlan` and a `PersistedSchemaPlan`
|
|
7007
|
+
* can be asked the question without either name appearing here.
|
|
7008
|
+
*/
|
|
7009
|
+
declare function hasDestructiveEntries(plan: {
|
|
7010
|
+
destructive: SchemaPlanDestructive;
|
|
7011
|
+
}): boolean;
|
|
7012
|
+
/**
|
|
7013
|
+
* A schema plan's lifecycle: it starts `proposed`, and leaves that state
|
|
7014
|
+
* exactly once, into either `applying` or `rejected`.
|
|
7015
|
+
*
|
|
7016
|
+
* `applying` is the real double-apply guard, claimed via a conditional UPDATE
|
|
7017
|
+
* (`SchemaPlanRepository.markApplying`) BEFORE any mutation runs, so two
|
|
7018
|
+
* concurrent applies can never both execute the mutation list. From
|
|
7019
|
+
* `applying` it resolves into either `applied` (every entry landed) or
|
|
7020
|
+
* `failed` (it stopped partway — see {@link SchemaPlanOutcome}). Neither
|
|
7021
|
+
* terminal state may be re-applied: there is no rollback on this platform, so
|
|
7022
|
+
* resuming a `failed` plan would risk re-applying entries that already
|
|
7023
|
+
* landed. Resuming a half-applied plan is a different feature.
|
|
7024
|
+
*
|
|
7025
|
+
* `rejected` is a human refusing the change outright — claimed the same way,
|
|
7026
|
+
* via a conditional UPDATE (`SchemaPlanRepository.markRejected`). A rejected
|
|
7027
|
+
* plan can never move again: it is not `proposed` any more, so
|
|
7028
|
+
* `markApplying`'s own `WHERE status = 'proposed'` guard already refuses it
|
|
7029
|
+
* with no extra check needed anywhere else.
|
|
7030
|
+
*/
|
|
7031
|
+
type SchemaPlanStatus = "proposed" | "applying" | "applied" | "failed" | "rejected";
|
|
7032
|
+
/**
|
|
7033
|
+
* What actually happened when a plan was applied.
|
|
7034
|
+
*
|
|
7035
|
+
* `adapter.transaction()` is not a real SQL transaction on this platform
|
|
7036
|
+
* (PostgREST has no transaction primitive), so a plan that fails midway
|
|
7037
|
+
* leaves its already-applied entries in place. `applied` is persisted
|
|
7038
|
+
* incrementally — after every step that lands, not only at the end — so a
|
|
7039
|
+
* process crash between two steps still leaves a readable record of exactly
|
|
7040
|
+
* what landed, even though `status` is then stuck at `"applying"` forever
|
|
7041
|
+
* (there is no lease-reclaim system; a stuck claim is diagnosable via
|
|
7042
|
+
* `claimedAt`, not automatically recovered). `failedAt` is set only once the
|
|
7043
|
+
* plan actually stops — `null` while a plan is still `"applying"` and making
|
|
7044
|
+
* progress, or once it reaches `"applied"` (a plan that finished cleanly
|
|
7045
|
+
* clears its outcome back to `null` entirely; see `StoredSchemaPlan.outcome`).
|
|
7046
|
+
*/
|
|
7047
|
+
interface SchemaPlanOutcome {
|
|
7048
|
+
/** Entries successfully applied so far, in the order they ran. */
|
|
7049
|
+
applied: string[];
|
|
7050
|
+
/** The entry that failed, and why — `null` until (if ever) the plan actually stops. */
|
|
7051
|
+
failedAt: {
|
|
7052
|
+
entry: string;
|
|
7053
|
+
reason: string;
|
|
7054
|
+
} | null;
|
|
7055
|
+
}
|
|
7056
|
+
/**
|
|
7057
|
+
* A persisted schema plan, as returned by the repository and by
|
|
7058
|
+
* `GET /schema/plans/:planId`.
|
|
7059
|
+
*
|
|
7060
|
+
* Proposal and approval run under different identities: an agent (or a
|
|
7061
|
+
* human) proposes a plan and it is validated and shown to a human, who later
|
|
7062
|
+
* approves it by sending only its `id`. The stored row is the single source
|
|
7063
|
+
* of truth about what was agreed — the plan payload itself never travels in
|
|
7064
|
+
* the approval request, so a caller cannot approve something other than what
|
|
7065
|
+
* was validated and shown.
|
|
7066
|
+
*/
|
|
7067
|
+
interface StoredSchemaPlan {
|
|
7068
|
+
id: Uuid;
|
|
7069
|
+
/**
|
|
7070
|
+
* The server-prepared payload, never the agent's raw proposal: `propose`
|
|
7071
|
+
* verifies each view target's `baselineToken` and converts the plan into
|
|
7072
|
+
* {@link PersistedSchemaPlan}, replacing that credential with the
|
|
7073
|
+
* `baseConfigHash`/`targetConfigHash`/`baselineOrigin` it proved.
|
|
7074
|
+
*/
|
|
7075
|
+
plan: PersistedSchemaPlan;
|
|
7076
|
+
impact: SchemaPlanImpact;
|
|
7077
|
+
/**
|
|
7078
|
+
* What each of the plan's view targets actually changes, measured at
|
|
7079
|
+
* propose time against the baseline each target's token proved current.
|
|
7080
|
+
*
|
|
7081
|
+
* Stored here rather than in `plan` for the same reason `impact` is: it is
|
|
7082
|
+
* a server-computed *description* of the plan, not part of the executable
|
|
7083
|
+
* contract — the proposal parser rejects an agent-supplied `changeSet`
|
|
7084
|
+
* outright, so this can only ever have been derived from the configuration
|
|
7085
|
+
* the agent actually sent.
|
|
7086
|
+
*/
|
|
7087
|
+
changeSet: SchemaPlanChangeSet;
|
|
7088
|
+
status: SchemaPlanStatus;
|
|
7089
|
+
proposedByActorId: Uuid;
|
|
7090
|
+
appliedByActorId: Uuid | null;
|
|
7091
|
+
/**
|
|
7092
|
+
* Who rejected this plan, and when — `null` unless `status` is
|
|
7093
|
+
* `"rejected"`. Set atomically together, by the same `markRejected` call
|
|
7094
|
+
* that flips `status`.
|
|
7095
|
+
*/
|
|
7096
|
+
rejectedByActorId: Uuid | null;
|
|
7097
|
+
rejectedAt: string | null;
|
|
7098
|
+
/**
|
|
7099
|
+
* Set once a plan has started applying and has landed at least one entry,
|
|
7100
|
+
* or has stopped partway; `null` for a plan that never got past
|
|
7101
|
+
* `"proposed"`, and cleared back to `null` once the plan finishes cleanly
|
|
7102
|
+
* (`"applied"`) — a plan that succeeded has nothing left to report.
|
|
7103
|
+
*/
|
|
7104
|
+
outcome: SchemaPlanOutcome | null;
|
|
7105
|
+
/**
|
|
7106
|
+
* When `markApplying` claimed this plan. `null` until claimed. Diagnostic
|
|
7107
|
+
* only: it tells a human how long a plan has been stuck `"applying"`, it
|
|
7108
|
+
* does not drive any automatic reclaim.
|
|
7109
|
+
*/
|
|
7110
|
+
claimedAt: string | null;
|
|
7111
|
+
}
|
|
7112
|
+
|
|
7113
|
+
declare const SCHEMA_PLAN_LIMITS: {
|
|
7114
|
+
readonly objectAdditions: 20;
|
|
7115
|
+
readonly totalMutations: 500;
|
|
7116
|
+
readonly serializedBytes: number;
|
|
7117
|
+
};
|
|
7118
|
+
declare const plannedAttributeSchema: z$1.ZodType<{
|
|
7119
|
+
objectName: string;
|
|
7120
|
+
name: string;
|
|
7121
|
+
label: string;
|
|
7122
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7123
|
+
config?: Record<string, unknown> | undefined;
|
|
7124
|
+
required?: boolean | undefined;
|
|
7125
|
+
description?: string | undefined;
|
|
7126
|
+
}, unknown, z$1.core.$ZodTypeInternals<{
|
|
7127
|
+
objectName: string;
|
|
7128
|
+
name: string;
|
|
7129
|
+
label: string;
|
|
7130
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7131
|
+
config?: Record<string, unknown> | undefined;
|
|
7132
|
+
required?: boolean | undefined;
|
|
7133
|
+
description?: string | undefined;
|
|
7134
|
+
}, unknown>>;
|
|
7135
|
+
/**
|
|
7136
|
+
* An attribute declared inside the object that carries it, so `objectName` is
|
|
7137
|
+
* implied by the parent rather than repeated. Exported because
|
|
7138
|
+
* `add_planned_attributes` needs exactly this shape too — it takes the object
|
|
7139
|
+
* name once, alongside the list, instead of on every entry.
|
|
7140
|
+
*/
|
|
7141
|
+
declare const plannedInlineAttributeSchema: z$1.ZodType<{
|
|
7142
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7143
|
+
name: string;
|
|
7144
|
+
label: string;
|
|
7145
|
+
required?: boolean | undefined;
|
|
7146
|
+
description?: string | undefined;
|
|
7147
|
+
config?: Record<string, unknown> | undefined;
|
|
7148
|
+
}, unknown, z$1.core.$ZodTypeInternals<{
|
|
7149
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7150
|
+
name: string;
|
|
7151
|
+
label: string;
|
|
7152
|
+
required?: boolean | undefined;
|
|
7153
|
+
description?: string | undefined;
|
|
7154
|
+
config?: Record<string, unknown> | undefined;
|
|
7155
|
+
}, unknown>>;
|
|
7156
|
+
declare const plannedObjectSchema: z$1.ZodObject<{
|
|
7157
|
+
name: z$1.ZodString;
|
|
7158
|
+
label: z$1.ZodString;
|
|
7159
|
+
pluralLabel: z$1.ZodOptional<z$1.ZodString>;
|
|
7160
|
+
description: z$1.ZodOptional<z$1.ZodString>;
|
|
7161
|
+
icon: z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<"path" | "one" | "location" | "user" | "search" | "repeat" | "anchor" | "link" | "at" | "sort" | "map" | "filter" | "target" | "key" | "label" | "x" | "a-arrow-down" | "a-arrow-up" | "academic-hat" | "accessibility" | "activity-square" | "activity" | "add-queue" | "aeroplane" | "air-conditioner" | "airplay" | "airpods" | "alarm-check" | "alarm-minus" | "alarm-plus" | "alarm-smoke" | "alarm-snooze" | "alarm-x" | "alarm" | "album" | "align-bottom" | "align-horizontal" | "align-left" | "align-right" | "align-top" | "align-vertical" | "alt" | "ambulance" | "ampersand-square" | "ampersand" | "ampersands" | "angry-circle" | "angry-ghost" | "angry-square" | "annoyed-circle" | "annoyed-ghost" | "annoyed-square" | "aperture" | "api" | "ar" | "archive" | "arrow-diagonal-one" | "arrow-diagonal-two" | "arrow-down-circle" | "arrow-down-left-circle" | "arrow-down-left-square" | "arrow-down-left-waves" | "arrow-down-left" | "arrow-down-right-circle" | "arrow-down-right-square" | "arrow-down-right-waves" | "arrow-down-right" | "arrow-down-square" | "arrow-down-waves" | "arrow-down" | "arrow-left-circle" | "arrow-left-right" | "arrow-left-square" | "arrow-left-waves" | "arrow-left" | "arrow-long-down-left" | "arrow-long-down-right" | "arrow-long-down" | "arrow-long-left" | "arrow-long-right" | "arrow-long-up-left" | "arrow-long-up-right" | "arrow-long-up" | "arrow-right-circle" | "arrow-right-square" | "arrow-right-waves" | "arrow-right" | "arrow-up-circle" | "arrow-up-down" | "arrow-up-left-circle" | "arrow-up-left-square" | "arrow-up-left-waves" | "arrow-up-left" | "arrow-up-right-circle" | "arrow-up-right-square" | "arrow-up-right-waves" | "arrow-up-right" | "arrow-up-square" | "arrow-up-waves" | "arrow-up" | "asterisk-circle" | "asterisk-diamond" | "asterisk-hexagon" | "asterisk-octagon" | "asterisk-square" | "asterisk-waves" | "atom" | "baby" | "backpack" | "badge" | "baggage-claim" | "ban" | "bank" | "baseball" | "bath" | "battery-charging-four" | "battery-charging-one" | "battery-charging-three" | "battery-charging-two" | "battery-charging" | "battery-check" | "battery-empty" | "battery-full" | "battery-minus" | "battery-plus" | "battery-x" | "bell-check" | "bell-home" | "bell-minus" | "bell-on" | "bell-plus" | "bell-slash" | "bell-snooze" | "bell-user" | "bell-x" | "bell" | "binoculars" | "bitcoin-circle" | "bitcoin-diamond" | "bitcoin-hexagon" | "bitcoin-octagon" | "bitcoin-square" | "bitcoin-waves" | "bitcoin" | "bluetooth" | "boat" | "book-check" | "book-dot" | "book-home" | "book-image" | "book-minus" | "book-open" | "book-plus" | "book-slash" | "book-snooze" | "book-user" | "book-x" | "book" | "bookmark-check" | "bookmark-dot" | "bookmark-home" | "bookmark-minus" | "bookmark-plus" | "bookmark-slash" | "bookmark-snooze" | "bookmark-user" | "bookmark-x" | "bookmark" | "bounding-box" | "bowl" | "box" | "brand-chrome" | "brand-codepen" | "brand-codesandbox" | "brand-dribbble" | "brand-facebook" | "brand-figma" | "brand-framer" | "brand-github" | "brand-gitlab" | "brand-google" | "brand-instagram" | "brand-linkedin" | "brand-pinterest" | "brand-pocket" | "brand-slack" | "brand-spotify" | "brand-telegram" | "brand-threads" | "brand-trello" | "brand-twitch" | "brand-twitter" | "brand-x" | "brand-youtube" | "briefcase-conveyor-belt" | "briefcase" | "brightness-high" | "brightness-low" | "bubbles" | "building-one" | "building" | "cable-car" | "cake" | "calendar-check" | "calendar-down" | "calendar-minus" | "calendar-plus" | "calendar-slash" | "calendar-up" | "calendar-x" | "calendar" | "camera-slash" | "camera" | "campfire" | "cannabis" | "caravan" | "cart-check" | "cart-minus" | "cart-plus" | "cart-x" | "cart" | "cast-screen" | "center-focus" | "chart-area" | "chart-bar-big" | "chart-bar-decreasing" | "chart-bar-increasing" | "chart-bar-one" | "chart-bar-stacked" | "chart-bar" | "chart-bubble" | "chart-candlestick" | "chart-column-big" | "chart-column-decreasing" | "chart-column-increasing" | "chart-column-stacked" | "chart-column" | "chart-gantt" | "chart-graph" | "chart-line" | "chart-network" | "chart-no-axes-column-decreasing" | "chart-no-axes-column-increasing" | "chart-no-axes-column" | "chart-no-axes-combined" | "chart-no-axes-gantt" | "chart-pie-one" | "chart-pie-two" | "chart-pie" | "chart-scatter" | "chart-spline" | "chat-check" | "chat-dots" | "chat-messages" | "chat-minus" | "chat-plus" | "chat-x" | "chat" | "check-circle-one" | "check-circle" | "check-diamond" | "check-hexagon" | "check-octagon" | "check-square-one" | "check-square" | "check-waves" | "check" | "chevron-double-down-left" | "chevron-double-down-right" | "chevron-double-down" | "chevron-double-left" | "chevron-double-right" | "chevron-double-up-left" | "chevron-double-up-right" | "chevron-double-up" | "chevron-down-circle" | "chevron-down-left-circle" | "chevron-down-left-square" | "chevron-down-left-waves" | "chevron-down-left" | "chevron-down-right-circle" | "chevron-down-right-square" | "chevron-down-right-waves" | "chevron-down-right" | "chevron-down-square" | "chevron-down-waves" | "chevron-down" | "chevron-left-circle" | "chevron-left-square" | "chevron-left-waves" | "chevron-left" | "chevron-right-circle" | "chevron-right-square" | "chevron-right-waves" | "chevron-right" | "chevron-up-circle" | "chevron-up-down" | "chevron-up-left-circle" | "chevron-up-left-square" | "chevron-up-left-waves" | "chevron-up-left" | "chevron-up-right-circle" | "chevron-up-right-square" | "chevron-up-right-waves" | "chevron-up-right" | "chevron-up-square" | "chevron-up-waves" | "chevron-up" | "chip" | "cigarette-off" | "cigarette" | "circle-dashed" | "circle-half-circle" | "circle-half" | "circle-notch" | "circle" | "click" | "clipboard" | "clock-circle" | "clock-diamond" | "clock-eight" | "clock-eleven" | "clock-five" | "clock-four" | "clock-hand" | "clock-hexagon" | "clock-nine" | "clock-octagon" | "clock-one" | "clock-seven" | "clock-six" | "clock-square" | "clock-ten" | "clock-three" | "clock-twelve" | "clock-two" | "clock-waves" | "cloud-download" | "cloud-drizzle" | "cloud-fog" | "cloud-hail" | "cloud-lightning" | "cloud-moon-rain" | "cloud-moon" | "cloud-off" | "cloud-rain-wind" | "cloud-rain" | "cloud-snow" | "cloud-sun-rain" | "cloud-sun" | "cloud-upload" | "cloud" | "cloudy" | "cocktail" | "code-circle" | "code-diamond" | "code-hexagon" | "code-octagon" | "code-square" | "code-waves" | "code" | "coffee" | "cog-four" | "cog-one" | "cog-three" | "cog-two" | "cog" | "columns" | "command" | "compass" | "components" | "confetti" | "config-vertical" | "config" | "contactless-circle" | "contactless" | "controller" | "cookie" | "copy" | "copyleft" | "copyright-slash" | "copyright" | "corner-down-left" | "corner-down-right" | "corner-left-down" | "corner-left-up" | "corner-right-down" | "corner-right-up" | "corner-up-left" | "corner-up-right" | "credit-card-check" | "credit-card-minus" | "credit-card-plus" | "credit-card-x" | "credit-card" | "croissant" | "crop" | "crosshair" | "cupcake" | "danger-circle" | "danger-diamond" | "danger-hexagon" | "danger-octagon" | "danger-square" | "danger-triangle" | "danger-waves" | "danger" | "database" | "daze-circle" | "daze-ghost" | "daze-square" | "delete" | "desktop" | "diamond" | "dice-five" | "dice-four" | "dice-one" | "dice-six" | "dice-three" | "dice-two" | "dislike" | "divide" | "dollar-circle" | "dollar-diamond" | "dollar-hexagon" | "dollar-octagon" | "dollar-square" | "dollar-waves" | "dollar" | "door-closed-locked" | "door-closed" | "door-open" | "dots-circle" | "dots-diamond" | "dots-hexagon" | "dots-octagon" | "dots-square" | "dots-vertical-circle" | "dots-vertical-diamond" | "dots-vertical-hexagon" | "dots-vertical-octagon" | "dots-vertical-square" | "dots-vertical-waves" | "dots-vertical" | "dots-waves" | "dots" | "download" | "drop" | "droplet-off" | "droplet" | "droplets" | "ear-slash" | "ear" | "earth" | "eclipse" | "edit-one" | "edit" | "egg" | "eight-circle" | "eight-diamond" | "eight-hexagon" | "eight-octagon" | "eight-square" | "eight-waves" | "eight" | "elevator" | "envelope-open" | "envelope" | "euro-circle" | "euro-diamond" | "euro-hexagon" | "euro-octagon" | "euro-square" | "euro-waves" | "euro" | "exclude" | "external-link" | "eye-slash" | "eye" | "face-id" | "fat-arrow-down-left" | "fat-arrow-down-right" | "fat-arrow-down" | "fat-arrow-left" | "fat-arrow-right" | "fat-arrow-up-left" | "fat-arrow-up-right" | "fat-arrow-up" | "fat-corner-down-left" | "fat-corner-down-right" | "fat-corner-left-down" | "fat-corner-left-up" | "fat-corner-right-down" | "fat-corner-right-up" | "fat-corner-up-left" | "fat-corner-up-right" | "female" | "file-check" | "file-minus" | "file-plus" | "file-text" | "file-x" | "file" | "film" | "filter-one" | "fine-tune" | "fire" | "five-circle" | "five-diamond" | "five-hexagon" | "five-octagon" | "five-square" | "five-waves" | "five" | "flag-one" | "flag" | "flame-kindling" | "flame" | "flask" | "flower-2" | "flower" | "folder-check" | "folder-heart" | "folder-kanban" | "folder-minus" | "folder-one" | "folder-plus" | "folder-slash" | "folder-two" | "folder-x" | "folder" | "forward-circle" | "forward-diamond" | "forward-hexagon" | "forward-octagon" | "forward-square" | "forward-waves" | "forward" | "four-circle" | "four-diamond" | "four-hexagon" | "four-octagon" | "four-square" | "four-waves" | "four" | "frame" | "funny-circle" | "funny-ghost" | "funny-square" | "gift" | "git-branch" | "git-circle" | "git-commit" | "git-diamond" | "git-diff" | "git-hexagon" | "git-merge" | "git-octagon" | "git-pull-request" | "git-square" | "git-waves" | "glasses" | "globe" | "grid-one" | "grid" | "hand" | "hard-drive" | "hash-circle" | "hash-diamond" | "hash-hexagon" | "hash-octagon" | "hash-square" | "hash-waves" | "hash" | "haze" | "heading-five" | "heading-four" | "heading-one" | "heading-six" | "heading-three" | "heading-two" | "heading" | "headphones" | "heart-broken" | "heart-check" | "heart-circle" | "heart-diamond" | "heart-dot" | "heart-hexagon" | "heart-home" | "heart-minus" | "heart-octagon" | "heart-plus" | "heart-slash" | "heart-snooze" | "heart-square" | "heart-user" | "heart-waves" | "heart-x" | "heart" | "hexagon" | "home-check" | "home-minus" | "home-plus" | "home-smile" | "home-x" | "home" | "image-circle" | "image-rectangle" | "image" | "inbox-archive" | "inbox-check" | "inbox-down" | "inbox-minus" | "inbox-plus" | "inbox-up" | "inbox-x" | "inbox" | "incognito" | "indifferent-circle" | "indifferent-ghost" | "indifferent-square" | "infinity" | "info-circle" | "info-diamond" | "info-hexagon" | "info-octagon" | "info-square" | "info-triangle" | "info-waves" | "info" | "intersect" | "kanban" | "keyboard-brightness-high" | "keyboard-brightness-low" | "keyboard" | "lamp" | "layers-one" | "layers-three" | "layers-two" | "layout" | "leaf" | "leaves" | "letter-a-circle" | "letter-a-diamond" | "letter-a-hexagon" | "letter-a-octagon" | "letter-a-square" | "letter-a-waves" | "letter-a" | "letter-b-circle" | "letter-b-diamond" | "letter-b-hexagon" | "letter-b-octagon" | "letter-b-square" | "letter-b-waves" | "letter-b" | "letter-c-circle" | "letter-c-diamond" | "letter-c-hexagon" | "letter-c-octagon" | "letter-c-square" | "letter-c-waves" | "letter-c" | "letter-d-circle" | "letter-d-diamond" | "letter-d-hexagon" | "letter-d-octagon" | "letter-d-square" | "letter-d-waves" | "letter-d" | "letter-e-circle" | "letter-e-diamond" | "letter-e-hexagon" | "letter-e-octagon" | "letter-e-square" | "letter-e-waves" | "letter-e" | "letter-f-circle" | "letter-f-diamond" | "letter-f-hexagon" | "letter-f-octagon" | "letter-f-square" | "letter-f-waves" | "letter-f" | "letter-g-circle" | "letter-g-diamond" | "letter-g-hexagon" | "letter-g-octagon" | "letter-g-square" | "letter-g-waves" | "letter-g" | "letter-h-circle" | "letter-h-diamond" | "letter-h-hexagon" | "letter-h-octagon" | "letter-h-square" | "letter-h-waves" | "letter-h" | "letter-i-circle" | "letter-i-diamond" | "letter-i-hexagon" | "letter-i-octagon" | "letter-i-square" | "letter-i-waves" | "letter-i" | "letter-j-circle" | "letter-j-diamond" | "letter-j-hexagon" | "letter-j-octagon" | "letter-j-square" | "letter-j-waves" | "letter-j" | "letter-k-circle" | "letter-k-diamond" | "letter-k-hexagon" | "letter-k-octagon" | "letter-k-square" | "letter-k-waves" | "letter-k" | "letter-l-circle" | "letter-l-diamond" | "letter-l-hexagon" | "letter-l-octagon" | "letter-l-square" | "letter-l-waves" | "letter-l" | "letter-m-circle" | "letter-m-diamond" | "letter-m-hexagon" | "letter-m-octagon" | "letter-m-square" | "letter-m-waves" | "letter-m" | "letter-n-circle" | "letter-n-diamond" | "letter-n-hexagon" | "letter-n-octagon" | "letter-n-square" | "letter-n-waves" | "letter-n" | "letter-o-circle" | "letter-o-diamond" | "letter-o-hexagon" | "letter-o-octagon" | "letter-o-square" | "letter-o-waves" | "letter-o" | "letter-p-circle" | "letter-p-diamond" | "letter-p-hexagon" | "letter-p-octagon" | "letter-p-square" | "letter-p-waves" | "letter-p" | "letter-q-circle" | "letter-q-diamond" | "letter-q-hexagon" | "letter-q-octagon" | "letter-q-square" | "letter-q-waves" | "letter-q" | "letter-r-circle" | "letter-r-diamond" | "letter-r-hexagon" | "letter-r-octagon" | "letter-r-square" | "letter-r-waves" | "letter-r" | "letter-s-circle" | "letter-s-diamond" | "letter-s-hexagon" | "letter-s-octagon" | "letter-s-square" | "letter-s-waves" | "letter-s" | "letter-t-circle" | "letter-t-diamond" | "letter-t-hexagon" | "letter-t-octagon" | "letter-t-square" | "letter-t-waves" | "letter-t" | "letter-u-circle" | "letter-u-diamond" | "letter-u-hexagon" | "letter-u-octagon" | "letter-u-square" | "letter-u-waves" | "letter-u" | "letter-v-circle" | "letter-v-diamond" | "letter-v-hexagon" | "letter-v-octagon" | "letter-v-square" | "letter-v-waves" | "letter-v" | "letter-w-circle" | "letter-w-diamond" | "letter-w-hexagon" | "letter-w-octagon" | "letter-w-square" | "letter-w-waves" | "letter-w" | "letter-x-circle" | "letter-x-diamond" | "letter-x-hexagon" | "letter-x-octagon" | "letter-x-square" | "letter-x-waves" | "letter-x" | "letter-y-circle" | "letter-y-diamond" | "letter-y-hexagon" | "letter-y-octagon" | "letter-y-square" | "letter-y-waves" | "letter-y" | "letter-z-circle" | "letter-z-diamond" | "letter-z-hexagon" | "letter-z-octagon" | "letter-z-square" | "letter-z-waves" | "letter-z" | "lightning-off" | "lightning" | "like" | "line-chart-circle" | "line-chart-diamond" | "line-chart-hexagon" | "line-chart-octagon" | "line-chart-square" | "line-chart-waves" | "link-one" | "link-two" | "list-check" | "list-number" | "list" | "location-check" | "location-home" | "location-minus" | "location-plus" | "location-selected" | "location-slash" | "location-snooze" | "location-user" | "location-x" | "lock-circle" | "lock-diamond" | "lock-hexagon" | "lock-keyhole" | "lock-octagon" | "lock-open-keyhole" | "lock-open-password" | "lock-open" | "lock-password" | "lock-square" | "lock-waves" | "lock" | "login" | "logout" | "magnet" | "male" | "mask" | "math-square" | "math" | "maximize-one" | "maximize" | "menu" | "message-check" | "message-dots" | "message-minus" | "message-plus" | "message-reply" | "message-x" | "message" | "microphone-slash" | "microphone" | "minimize-one" | "minimize" | "minus-circle" | "minus-diamond" | "minus-hexagon" | "minus-octagon" | "minus-square" | "minus-waves" | "minus" | "mobile-signal-five" | "mobile-signal-four" | "mobile-signal-one" | "mobile-signal-three" | "mobile-signal-two" | "mobile" | "moon-star" | "moon" | "mountain-snow" | "mountain" | "mouse-pointer" | "move-diagonal-one" | "move-diagonal" | "move-horizontal" | "move-vertical" | "move" | "music-circle" | "music-diamond" | "music-hexagon" | "music-octagon" | "music-square" | "music-waves" | "music" | "myna" | "navigation-one" | "navigation" | "nine-circle" | "nine-diamond" | "nine-hexagon" | "nine-octagon" | "nine-square" | "nine-waves" | "nine" | "notification" | "octagon" | "one-circle" | "one-diamond" | "one-hexagon" | "one-octagon" | "one-square" | "one-waves" | "option" | "package" | "paint" | "panel-bottom-close" | "panel-bottom-inactive" | "panel-bottom-open" | "panel-bottom" | "panel-left-close" | "panel-left-inactive" | "panel-left-open" | "panel-left" | "panel-right-close" | "panel-right-inactive" | "panel-right-open" | "panel-right" | "panel-top-close" | "panel-top-inactive" | "panel-top-open" | "panel-top" | "paperclip" | "parking" | "password" | "pause-circle" | "pause-diamond" | "pause-hexagon" | "pause-octagon" | "pause-square" | "pause-waves" | "pause" | "pen" | "pencil" | "percentage-circle" | "percentage-diamond" | "percentage-hexagon" | "percentage-octagon" | "percentage-square" | "percentage-waves" | "percentage" | "pin" | "pizza" | "planet" | "play-circle" | "play-diamond" | "play-hexagon" | "play-octagon" | "play-square" | "play-waves" | "play" | "plus-circle" | "plus-diamond" | "plus-hexagon" | "plus-octagon" | "plus-square" | "plus-waves" | "plus" | "pokeball" | "power" | "presentation" | "printer" | "puzzle" | "question-circle" | "question-diamond" | "question-hexagon" | "question-octagon" | "question-square" | "question-waves" | "question" | "radio" | "rainbow" | "reception-bell" | "record" | "rectangle-vertical" | "rectangle" | "redo" | "refresh-alt" | "refresh" | "rewind-circle" | "rewind-diamond" | "rewind-hexagon" | "rewind-octagon" | "rewind-square" | "rewind-waves" | "rewind" | "rhombus" | "ribbon" | "rocket" | "room-service" | "rows" | "rss" | "ruler" | "rupee-circle" | "rupee-diamond" | "rupee-hexagon" | "rupee-octagon" | "rupee-square" | "rupee-waves" | "rupee" | "sad-circle" | "sad-ghost" | "sad-square" | "save" | "scan" | "scissors" | "sea-waves" | "search-check" | "search-circle" | "search-diamond" | "search-dot" | "search-hexagon" | "search-home" | "search-minus" | "search-octagon" | "search-plus" | "search-slash" | "search-snooze" | "search-square" | "search-user" | "search-waves" | "search-x" | "select-multiple" | "send" | "servers" | "seven-circle" | "seven-diamond" | "seven-hexagon" | "seven-octagon" | "seven-square" | "seven-waves" | "seven" | "share" | "shell" | "shield-check" | "shield-crossed" | "shield-minus" | "shield-one" | "shield-plus" | "shield-slash" | "shield-two" | "shield-x" | "shield" | "shooting-star" | "shopping-bag" | "shovel" | "shrub" | "shuffle-alt" | "shuffle" | "sidebar-alt" | "sidebar" | "signal-circle" | "signal-diamond" | "signal-hexagon" | "signal-octagon" | "signal-square" | "signal-waves" | "signal" | "six-circle" | "six-diamond" | "six-hexagon" | "six-octagon" | "six-square" | "six-waves" | "six" | "skip-back" | "skip-forward" | "slash-circle" | "slash-diamond" | "slash-hexagon" | "slash-octagon" | "slash-square" | "slash-waves" | "smile-circle" | "smile-ghost" | "smile-square" | "snow" | "snowflake" | "sofa" | "sparkles" | "speaker" | "spinner-one" | "spinner" | "sprout" | "square-chart-gantt" | "square-dashed-kanban" | "square-dashed" | "square-half" | "square-kanban" | "square" | "star" | "stop-circle" | "stop-diamond" | "stop-hexagon" | "stop-octagon" | "stop-square" | "stop-waves" | "stop" | "store" | "subtract" | "sun-dim" | "sun-medium" | "sun-snow" | "sun" | "sunrise" | "sunset" | "support" | "swatches" | "table" | "tablet" | "tag-plus" | "tag" | "tally-five" | "tally-four" | "tally-one" | "tally-three" | "tally-two" | "telephone-call" | "telephone-forward" | "telephone-in" | "telephone-missed" | "telephone-out" | "telephone-slash" | "telephone" | "tent-tree" | "tent" | "terminal" | "text-align-center" | "text-align-left" | "text-align-right" | "text-justify" | "thermometer-snowflake" | "thermometer-sun" | "thermometer" | "three-circle" | "three-diamond" | "three-hexagon" | "three-octagon" | "three-square" | "three-waves" | "three" | "ticket-slash" | "ticket" | "toggle-left" | "toggle-right" | "tool" | "tornado" | "train" | "trash-one" | "trash-two" | "trash" | "tree-deciduous" | "tree-palm" | "tree-pine" | "tree" | "trees" | "trending-down" | "trending-up-down" | "trending-up" | "triangle" | "truck" | "tv" | "two-circle" | "two-diamond" | "two-hexagon" | "two-octagon" | "two-square" | "two-waves" | "two" | "type-bold" | "type-italic" | "type-text" | "type-underline" | "umbrella-off" | "umbrella" | "undo" | "union" | "unlink" | "upload" | "user-check" | "user-circle" | "user-diamond" | "user-hexagon" | "user-minus" | "user-octagon" | "user-plus" | "user-settings" | "user-square" | "user-waves" | "user-x" | "users-group" | "users" | "video-slash" | "video" | "volume-check" | "volume-high" | "volume-low" | "volume-minus" | "volume-none" | "volume-plus" | "volume-slash" | "volume-x" | "watch" | "waves" | "webcam" | "wheel" | "wheelchair" | "wifi-check" | "wifi-low" | "wifi-medium" | "wifi-minus" | "wifi-plus" | "wifi-slash" | "wifi-x" | "wifi" | "wind-arrow-down" | "wind" | "winds" | "wine" | "wink-circle" | "wink-ghost" | "wink-square" | "wrench" | "x-circle" | "x-diamond" | "x-hexagon" | "x-octagon" | "x-square" | "x-triangle" | "x-waves" | "yen-circle" | "yen-diamond" | "yen-hexagon" | "yen-octagon" | "yen-square" | "yen-waves" | "yen" | "zap-off" | "zap" | "zero-circle" | "zero-diamond" | "zero-hexagon" | "zero-octagon" | "zero-square" | "zero-waves" | "zero", string>>;
|
|
7162
|
+
labelExpression: z$1.ZodString;
|
|
7163
|
+
attributes: z$1.ZodDefault<z$1.ZodArray<z$1.ZodType<{
|
|
7164
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7165
|
+
name: string;
|
|
7166
|
+
label: string;
|
|
7167
|
+
required?: boolean | undefined;
|
|
7168
|
+
description?: string | undefined;
|
|
7169
|
+
config?: Record<string, unknown> | undefined;
|
|
7170
|
+
}, unknown, z$1.core.$ZodTypeInternals<{
|
|
7171
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7172
|
+
name: string;
|
|
7173
|
+
label: string;
|
|
7174
|
+
required?: boolean | undefined;
|
|
7175
|
+
description?: string | undefined;
|
|
7176
|
+
config?: Record<string, unknown> | undefined;
|
|
7177
|
+
}, unknown>>>>;
|
|
7178
|
+
}, z$1.core.$strict>;
|
|
7179
|
+
declare const destructiveSchema: z$1.ZodDefault<z$1.ZodObject<{
|
|
7180
|
+
attributeRemovals: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7181
|
+
objectName: z$1.ZodString;
|
|
7182
|
+
attributeName: z$1.ZodString;
|
|
7183
|
+
}, z$1.core.$strict>>>;
|
|
7184
|
+
objectRemovals: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7185
|
+
objectName: z$1.ZodString;
|
|
7186
|
+
}, z$1.core.$strict>>>;
|
|
7187
|
+
renames: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7188
|
+
objectName: z$1.ZodString;
|
|
7189
|
+
from: z$1.ZodString;
|
|
7190
|
+
to: z$1.ZodString;
|
|
7191
|
+
}, z$1.core.$strict>>>;
|
|
7192
|
+
}, z$1.core.$strict>>;
|
|
7193
|
+
declare const proposedDefaultViewTargetSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
7194
|
+
objectName: z$1.ZodString;
|
|
7195
|
+
viewType: z$1.ZodLiteral<"list">;
|
|
7196
|
+
canonicalConfig: z$1.ZodType<ListViewConfig, unknown, z$1.core.$ZodTypeInternals<ListViewConfig, unknown>>;
|
|
7197
|
+
baselineToken: z$1.ZodOptional<z$1.ZodString>;
|
|
7198
|
+
}, z$1.core.$strict>, z$1.ZodObject<{
|
|
7199
|
+
objectName: z$1.ZodString;
|
|
7200
|
+
viewType: z$1.ZodLiteral<"detail">;
|
|
7201
|
+
canonicalConfig: z$1.ZodType<DetailViewConfig, unknown, z$1.core.$ZodTypeInternals<DetailViewConfig, unknown>>;
|
|
7202
|
+
baselineToken: z$1.ZodOptional<z$1.ZodString>;
|
|
7203
|
+
}, z$1.core.$strict>], "viewType">;
|
|
7204
|
+
declare const persistedDefaultViewTargetSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
7205
|
+
baseConfigHash: z$1.ZodNullable<z$1.ZodString>;
|
|
7206
|
+
targetConfigHash: z$1.ZodString;
|
|
7207
|
+
baselineOrigin: z$1.ZodEnum<{
|
|
7208
|
+
persisted: "persisted";
|
|
7209
|
+
generated: "generated";
|
|
7210
|
+
absent: "absent";
|
|
7211
|
+
}>;
|
|
7212
|
+
objectName: z$1.ZodString;
|
|
7213
|
+
viewType: z$1.ZodLiteral<"list">;
|
|
7214
|
+
canonicalConfig: z$1.ZodType<ListViewConfig, unknown, z$1.core.$ZodTypeInternals<ListViewConfig, unknown>>;
|
|
7215
|
+
}, z$1.core.$strict>, z$1.ZodObject<{
|
|
7216
|
+
baseConfigHash: z$1.ZodNullable<z$1.ZodString>;
|
|
7217
|
+
targetConfigHash: z$1.ZodString;
|
|
7218
|
+
baselineOrigin: z$1.ZodEnum<{
|
|
7219
|
+
persisted: "persisted";
|
|
7220
|
+
generated: "generated";
|
|
7221
|
+
absent: "absent";
|
|
7222
|
+
}>;
|
|
7223
|
+
objectName: z$1.ZodString;
|
|
7224
|
+
viewType: z$1.ZodLiteral<"detail">;
|
|
7225
|
+
canonicalConfig: z$1.ZodType<DetailViewConfig, unknown, z$1.core.$ZodTypeInternals<DetailViewConfig, unknown>>;
|
|
7226
|
+
}, z$1.core.$strict>], "viewType">;
|
|
7227
|
+
declare const structuralSchemaPlanSchema: z$1.ZodObject<{
|
|
7228
|
+
schemaPlanVersion: z$1.ZodLiteral<2>;
|
|
7229
|
+
summary: z$1.ZodString;
|
|
7230
|
+
additive: z$1.ZodDefault<z$1.ZodObject<{
|
|
7231
|
+
objects: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7232
|
+
name: z$1.ZodString;
|
|
7233
|
+
label: z$1.ZodString;
|
|
7234
|
+
pluralLabel: z$1.ZodOptional<z$1.ZodString>;
|
|
7235
|
+
description: z$1.ZodOptional<z$1.ZodString>;
|
|
7236
|
+
icon: z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<"path" | "one" | "location" | "user" | "search" | "repeat" | "anchor" | "link" | "at" | "sort" | "map" | "filter" | "target" | "key" | "label" | "x" | "a-arrow-down" | "a-arrow-up" | "academic-hat" | "accessibility" | "activity-square" | "activity" | "add-queue" | "aeroplane" | "air-conditioner" | "airplay" | "airpods" | "alarm-check" | "alarm-minus" | "alarm-plus" | "alarm-smoke" | "alarm-snooze" | "alarm-x" | "alarm" | "album" | "align-bottom" | "align-horizontal" | "align-left" | "align-right" | "align-top" | "align-vertical" | "alt" | "ambulance" | "ampersand-square" | "ampersand" | "ampersands" | "angry-circle" | "angry-ghost" | "angry-square" | "annoyed-circle" | "annoyed-ghost" | "annoyed-square" | "aperture" | "api" | "ar" | "archive" | "arrow-diagonal-one" | "arrow-diagonal-two" | "arrow-down-circle" | "arrow-down-left-circle" | "arrow-down-left-square" | "arrow-down-left-waves" | "arrow-down-left" | "arrow-down-right-circle" | "arrow-down-right-square" | "arrow-down-right-waves" | "arrow-down-right" | "arrow-down-square" | "arrow-down-waves" | "arrow-down" | "arrow-left-circle" | "arrow-left-right" | "arrow-left-square" | "arrow-left-waves" | "arrow-left" | "arrow-long-down-left" | "arrow-long-down-right" | "arrow-long-down" | "arrow-long-left" | "arrow-long-right" | "arrow-long-up-left" | "arrow-long-up-right" | "arrow-long-up" | "arrow-right-circle" | "arrow-right-square" | "arrow-right-waves" | "arrow-right" | "arrow-up-circle" | "arrow-up-down" | "arrow-up-left-circle" | "arrow-up-left-square" | "arrow-up-left-waves" | "arrow-up-left" | "arrow-up-right-circle" | "arrow-up-right-square" | "arrow-up-right-waves" | "arrow-up-right" | "arrow-up-square" | "arrow-up-waves" | "arrow-up" | "asterisk-circle" | "asterisk-diamond" | "asterisk-hexagon" | "asterisk-octagon" | "asterisk-square" | "asterisk-waves" | "atom" | "baby" | "backpack" | "badge" | "baggage-claim" | "ban" | "bank" | "baseball" | "bath" | "battery-charging-four" | "battery-charging-one" | "battery-charging-three" | "battery-charging-two" | "battery-charging" | "battery-check" | "battery-empty" | "battery-full" | "battery-minus" | "battery-plus" | "battery-x" | "bell-check" | "bell-home" | "bell-minus" | "bell-on" | "bell-plus" | "bell-slash" | "bell-snooze" | "bell-user" | "bell-x" | "bell" | "binoculars" | "bitcoin-circle" | "bitcoin-diamond" | "bitcoin-hexagon" | "bitcoin-octagon" | "bitcoin-square" | "bitcoin-waves" | "bitcoin" | "bluetooth" | "boat" | "book-check" | "book-dot" | "book-home" | "book-image" | "book-minus" | "book-open" | "book-plus" | "book-slash" | "book-snooze" | "book-user" | "book-x" | "book" | "bookmark-check" | "bookmark-dot" | "bookmark-home" | "bookmark-minus" | "bookmark-plus" | "bookmark-slash" | "bookmark-snooze" | "bookmark-user" | "bookmark-x" | "bookmark" | "bounding-box" | "bowl" | "box" | "brand-chrome" | "brand-codepen" | "brand-codesandbox" | "brand-dribbble" | "brand-facebook" | "brand-figma" | "brand-framer" | "brand-github" | "brand-gitlab" | "brand-google" | "brand-instagram" | "brand-linkedin" | "brand-pinterest" | "brand-pocket" | "brand-slack" | "brand-spotify" | "brand-telegram" | "brand-threads" | "brand-trello" | "brand-twitch" | "brand-twitter" | "brand-x" | "brand-youtube" | "briefcase-conveyor-belt" | "briefcase" | "brightness-high" | "brightness-low" | "bubbles" | "building-one" | "building" | "cable-car" | "cake" | "calendar-check" | "calendar-down" | "calendar-minus" | "calendar-plus" | "calendar-slash" | "calendar-up" | "calendar-x" | "calendar" | "camera-slash" | "camera" | "campfire" | "cannabis" | "caravan" | "cart-check" | "cart-minus" | "cart-plus" | "cart-x" | "cart" | "cast-screen" | "center-focus" | "chart-area" | "chart-bar-big" | "chart-bar-decreasing" | "chart-bar-increasing" | "chart-bar-one" | "chart-bar-stacked" | "chart-bar" | "chart-bubble" | "chart-candlestick" | "chart-column-big" | "chart-column-decreasing" | "chart-column-increasing" | "chart-column-stacked" | "chart-column" | "chart-gantt" | "chart-graph" | "chart-line" | "chart-network" | "chart-no-axes-column-decreasing" | "chart-no-axes-column-increasing" | "chart-no-axes-column" | "chart-no-axes-combined" | "chart-no-axes-gantt" | "chart-pie-one" | "chart-pie-two" | "chart-pie" | "chart-scatter" | "chart-spline" | "chat-check" | "chat-dots" | "chat-messages" | "chat-minus" | "chat-plus" | "chat-x" | "chat" | "check-circle-one" | "check-circle" | "check-diamond" | "check-hexagon" | "check-octagon" | "check-square-one" | "check-square" | "check-waves" | "check" | "chevron-double-down-left" | "chevron-double-down-right" | "chevron-double-down" | "chevron-double-left" | "chevron-double-right" | "chevron-double-up-left" | "chevron-double-up-right" | "chevron-double-up" | "chevron-down-circle" | "chevron-down-left-circle" | "chevron-down-left-square" | "chevron-down-left-waves" | "chevron-down-left" | "chevron-down-right-circle" | "chevron-down-right-square" | "chevron-down-right-waves" | "chevron-down-right" | "chevron-down-square" | "chevron-down-waves" | "chevron-down" | "chevron-left-circle" | "chevron-left-square" | "chevron-left-waves" | "chevron-left" | "chevron-right-circle" | "chevron-right-square" | "chevron-right-waves" | "chevron-right" | "chevron-up-circle" | "chevron-up-down" | "chevron-up-left-circle" | "chevron-up-left-square" | "chevron-up-left-waves" | "chevron-up-left" | "chevron-up-right-circle" | "chevron-up-right-square" | "chevron-up-right-waves" | "chevron-up-right" | "chevron-up-square" | "chevron-up-waves" | "chevron-up" | "chip" | "cigarette-off" | "cigarette" | "circle-dashed" | "circle-half-circle" | "circle-half" | "circle-notch" | "circle" | "click" | "clipboard" | "clock-circle" | "clock-diamond" | "clock-eight" | "clock-eleven" | "clock-five" | "clock-four" | "clock-hand" | "clock-hexagon" | "clock-nine" | "clock-octagon" | "clock-one" | "clock-seven" | "clock-six" | "clock-square" | "clock-ten" | "clock-three" | "clock-twelve" | "clock-two" | "clock-waves" | "cloud-download" | "cloud-drizzle" | "cloud-fog" | "cloud-hail" | "cloud-lightning" | "cloud-moon-rain" | "cloud-moon" | "cloud-off" | "cloud-rain-wind" | "cloud-rain" | "cloud-snow" | "cloud-sun-rain" | "cloud-sun" | "cloud-upload" | "cloud" | "cloudy" | "cocktail" | "code-circle" | "code-diamond" | "code-hexagon" | "code-octagon" | "code-square" | "code-waves" | "code" | "coffee" | "cog-four" | "cog-one" | "cog-three" | "cog-two" | "cog" | "columns" | "command" | "compass" | "components" | "confetti" | "config-vertical" | "config" | "contactless-circle" | "contactless" | "controller" | "cookie" | "copy" | "copyleft" | "copyright-slash" | "copyright" | "corner-down-left" | "corner-down-right" | "corner-left-down" | "corner-left-up" | "corner-right-down" | "corner-right-up" | "corner-up-left" | "corner-up-right" | "credit-card-check" | "credit-card-minus" | "credit-card-plus" | "credit-card-x" | "credit-card" | "croissant" | "crop" | "crosshair" | "cupcake" | "danger-circle" | "danger-diamond" | "danger-hexagon" | "danger-octagon" | "danger-square" | "danger-triangle" | "danger-waves" | "danger" | "database" | "daze-circle" | "daze-ghost" | "daze-square" | "delete" | "desktop" | "diamond" | "dice-five" | "dice-four" | "dice-one" | "dice-six" | "dice-three" | "dice-two" | "dislike" | "divide" | "dollar-circle" | "dollar-diamond" | "dollar-hexagon" | "dollar-octagon" | "dollar-square" | "dollar-waves" | "dollar" | "door-closed-locked" | "door-closed" | "door-open" | "dots-circle" | "dots-diamond" | "dots-hexagon" | "dots-octagon" | "dots-square" | "dots-vertical-circle" | "dots-vertical-diamond" | "dots-vertical-hexagon" | "dots-vertical-octagon" | "dots-vertical-square" | "dots-vertical-waves" | "dots-vertical" | "dots-waves" | "dots" | "download" | "drop" | "droplet-off" | "droplet" | "droplets" | "ear-slash" | "ear" | "earth" | "eclipse" | "edit-one" | "edit" | "egg" | "eight-circle" | "eight-diamond" | "eight-hexagon" | "eight-octagon" | "eight-square" | "eight-waves" | "eight" | "elevator" | "envelope-open" | "envelope" | "euro-circle" | "euro-diamond" | "euro-hexagon" | "euro-octagon" | "euro-square" | "euro-waves" | "euro" | "exclude" | "external-link" | "eye-slash" | "eye" | "face-id" | "fat-arrow-down-left" | "fat-arrow-down-right" | "fat-arrow-down" | "fat-arrow-left" | "fat-arrow-right" | "fat-arrow-up-left" | "fat-arrow-up-right" | "fat-arrow-up" | "fat-corner-down-left" | "fat-corner-down-right" | "fat-corner-left-down" | "fat-corner-left-up" | "fat-corner-right-down" | "fat-corner-right-up" | "fat-corner-up-left" | "fat-corner-up-right" | "female" | "file-check" | "file-minus" | "file-plus" | "file-text" | "file-x" | "file" | "film" | "filter-one" | "fine-tune" | "fire" | "five-circle" | "five-diamond" | "five-hexagon" | "five-octagon" | "five-square" | "five-waves" | "five" | "flag-one" | "flag" | "flame-kindling" | "flame" | "flask" | "flower-2" | "flower" | "folder-check" | "folder-heart" | "folder-kanban" | "folder-minus" | "folder-one" | "folder-plus" | "folder-slash" | "folder-two" | "folder-x" | "folder" | "forward-circle" | "forward-diamond" | "forward-hexagon" | "forward-octagon" | "forward-square" | "forward-waves" | "forward" | "four-circle" | "four-diamond" | "four-hexagon" | "four-octagon" | "four-square" | "four-waves" | "four" | "frame" | "funny-circle" | "funny-ghost" | "funny-square" | "gift" | "git-branch" | "git-circle" | "git-commit" | "git-diamond" | "git-diff" | "git-hexagon" | "git-merge" | "git-octagon" | "git-pull-request" | "git-square" | "git-waves" | "glasses" | "globe" | "grid-one" | "grid" | "hand" | "hard-drive" | "hash-circle" | "hash-diamond" | "hash-hexagon" | "hash-octagon" | "hash-square" | "hash-waves" | "hash" | "haze" | "heading-five" | "heading-four" | "heading-one" | "heading-six" | "heading-three" | "heading-two" | "heading" | "headphones" | "heart-broken" | "heart-check" | "heart-circle" | "heart-diamond" | "heart-dot" | "heart-hexagon" | "heart-home" | "heart-minus" | "heart-octagon" | "heart-plus" | "heart-slash" | "heart-snooze" | "heart-square" | "heart-user" | "heart-waves" | "heart-x" | "heart" | "hexagon" | "home-check" | "home-minus" | "home-plus" | "home-smile" | "home-x" | "home" | "image-circle" | "image-rectangle" | "image" | "inbox-archive" | "inbox-check" | "inbox-down" | "inbox-minus" | "inbox-plus" | "inbox-up" | "inbox-x" | "inbox" | "incognito" | "indifferent-circle" | "indifferent-ghost" | "indifferent-square" | "infinity" | "info-circle" | "info-diamond" | "info-hexagon" | "info-octagon" | "info-square" | "info-triangle" | "info-waves" | "info" | "intersect" | "kanban" | "keyboard-brightness-high" | "keyboard-brightness-low" | "keyboard" | "lamp" | "layers-one" | "layers-three" | "layers-two" | "layout" | "leaf" | "leaves" | "letter-a-circle" | "letter-a-diamond" | "letter-a-hexagon" | "letter-a-octagon" | "letter-a-square" | "letter-a-waves" | "letter-a" | "letter-b-circle" | "letter-b-diamond" | "letter-b-hexagon" | "letter-b-octagon" | "letter-b-square" | "letter-b-waves" | "letter-b" | "letter-c-circle" | "letter-c-diamond" | "letter-c-hexagon" | "letter-c-octagon" | "letter-c-square" | "letter-c-waves" | "letter-c" | "letter-d-circle" | "letter-d-diamond" | "letter-d-hexagon" | "letter-d-octagon" | "letter-d-square" | "letter-d-waves" | "letter-d" | "letter-e-circle" | "letter-e-diamond" | "letter-e-hexagon" | "letter-e-octagon" | "letter-e-square" | "letter-e-waves" | "letter-e" | "letter-f-circle" | "letter-f-diamond" | "letter-f-hexagon" | "letter-f-octagon" | "letter-f-square" | "letter-f-waves" | "letter-f" | "letter-g-circle" | "letter-g-diamond" | "letter-g-hexagon" | "letter-g-octagon" | "letter-g-square" | "letter-g-waves" | "letter-g" | "letter-h-circle" | "letter-h-diamond" | "letter-h-hexagon" | "letter-h-octagon" | "letter-h-square" | "letter-h-waves" | "letter-h" | "letter-i-circle" | "letter-i-diamond" | "letter-i-hexagon" | "letter-i-octagon" | "letter-i-square" | "letter-i-waves" | "letter-i" | "letter-j-circle" | "letter-j-diamond" | "letter-j-hexagon" | "letter-j-octagon" | "letter-j-square" | "letter-j-waves" | "letter-j" | "letter-k-circle" | "letter-k-diamond" | "letter-k-hexagon" | "letter-k-octagon" | "letter-k-square" | "letter-k-waves" | "letter-k" | "letter-l-circle" | "letter-l-diamond" | "letter-l-hexagon" | "letter-l-octagon" | "letter-l-square" | "letter-l-waves" | "letter-l" | "letter-m-circle" | "letter-m-diamond" | "letter-m-hexagon" | "letter-m-octagon" | "letter-m-square" | "letter-m-waves" | "letter-m" | "letter-n-circle" | "letter-n-diamond" | "letter-n-hexagon" | "letter-n-octagon" | "letter-n-square" | "letter-n-waves" | "letter-n" | "letter-o-circle" | "letter-o-diamond" | "letter-o-hexagon" | "letter-o-octagon" | "letter-o-square" | "letter-o-waves" | "letter-o" | "letter-p-circle" | "letter-p-diamond" | "letter-p-hexagon" | "letter-p-octagon" | "letter-p-square" | "letter-p-waves" | "letter-p" | "letter-q-circle" | "letter-q-diamond" | "letter-q-hexagon" | "letter-q-octagon" | "letter-q-square" | "letter-q-waves" | "letter-q" | "letter-r-circle" | "letter-r-diamond" | "letter-r-hexagon" | "letter-r-octagon" | "letter-r-square" | "letter-r-waves" | "letter-r" | "letter-s-circle" | "letter-s-diamond" | "letter-s-hexagon" | "letter-s-octagon" | "letter-s-square" | "letter-s-waves" | "letter-s" | "letter-t-circle" | "letter-t-diamond" | "letter-t-hexagon" | "letter-t-octagon" | "letter-t-square" | "letter-t-waves" | "letter-t" | "letter-u-circle" | "letter-u-diamond" | "letter-u-hexagon" | "letter-u-octagon" | "letter-u-square" | "letter-u-waves" | "letter-u" | "letter-v-circle" | "letter-v-diamond" | "letter-v-hexagon" | "letter-v-octagon" | "letter-v-square" | "letter-v-waves" | "letter-v" | "letter-w-circle" | "letter-w-diamond" | "letter-w-hexagon" | "letter-w-octagon" | "letter-w-square" | "letter-w-waves" | "letter-w" | "letter-x-circle" | "letter-x-diamond" | "letter-x-hexagon" | "letter-x-octagon" | "letter-x-square" | "letter-x-waves" | "letter-x" | "letter-y-circle" | "letter-y-diamond" | "letter-y-hexagon" | "letter-y-octagon" | "letter-y-square" | "letter-y-waves" | "letter-y" | "letter-z-circle" | "letter-z-diamond" | "letter-z-hexagon" | "letter-z-octagon" | "letter-z-square" | "letter-z-waves" | "letter-z" | "lightning-off" | "lightning" | "like" | "line-chart-circle" | "line-chart-diamond" | "line-chart-hexagon" | "line-chart-octagon" | "line-chart-square" | "line-chart-waves" | "link-one" | "link-two" | "list-check" | "list-number" | "list" | "location-check" | "location-home" | "location-minus" | "location-plus" | "location-selected" | "location-slash" | "location-snooze" | "location-user" | "location-x" | "lock-circle" | "lock-diamond" | "lock-hexagon" | "lock-keyhole" | "lock-octagon" | "lock-open-keyhole" | "lock-open-password" | "lock-open" | "lock-password" | "lock-square" | "lock-waves" | "lock" | "login" | "logout" | "magnet" | "male" | "mask" | "math-square" | "math" | "maximize-one" | "maximize" | "menu" | "message-check" | "message-dots" | "message-minus" | "message-plus" | "message-reply" | "message-x" | "message" | "microphone-slash" | "microphone" | "minimize-one" | "minimize" | "minus-circle" | "minus-diamond" | "minus-hexagon" | "minus-octagon" | "minus-square" | "minus-waves" | "minus" | "mobile-signal-five" | "mobile-signal-four" | "mobile-signal-one" | "mobile-signal-three" | "mobile-signal-two" | "mobile" | "moon-star" | "moon" | "mountain-snow" | "mountain" | "mouse-pointer" | "move-diagonal-one" | "move-diagonal" | "move-horizontal" | "move-vertical" | "move" | "music-circle" | "music-diamond" | "music-hexagon" | "music-octagon" | "music-square" | "music-waves" | "music" | "myna" | "navigation-one" | "navigation" | "nine-circle" | "nine-diamond" | "nine-hexagon" | "nine-octagon" | "nine-square" | "nine-waves" | "nine" | "notification" | "octagon" | "one-circle" | "one-diamond" | "one-hexagon" | "one-octagon" | "one-square" | "one-waves" | "option" | "package" | "paint" | "panel-bottom-close" | "panel-bottom-inactive" | "panel-bottom-open" | "panel-bottom" | "panel-left-close" | "panel-left-inactive" | "panel-left-open" | "panel-left" | "panel-right-close" | "panel-right-inactive" | "panel-right-open" | "panel-right" | "panel-top-close" | "panel-top-inactive" | "panel-top-open" | "panel-top" | "paperclip" | "parking" | "password" | "pause-circle" | "pause-diamond" | "pause-hexagon" | "pause-octagon" | "pause-square" | "pause-waves" | "pause" | "pen" | "pencil" | "percentage-circle" | "percentage-diamond" | "percentage-hexagon" | "percentage-octagon" | "percentage-square" | "percentage-waves" | "percentage" | "pin" | "pizza" | "planet" | "play-circle" | "play-diamond" | "play-hexagon" | "play-octagon" | "play-square" | "play-waves" | "play" | "plus-circle" | "plus-diamond" | "plus-hexagon" | "plus-octagon" | "plus-square" | "plus-waves" | "plus" | "pokeball" | "power" | "presentation" | "printer" | "puzzle" | "question-circle" | "question-diamond" | "question-hexagon" | "question-octagon" | "question-square" | "question-waves" | "question" | "radio" | "rainbow" | "reception-bell" | "record" | "rectangle-vertical" | "rectangle" | "redo" | "refresh-alt" | "refresh" | "rewind-circle" | "rewind-diamond" | "rewind-hexagon" | "rewind-octagon" | "rewind-square" | "rewind-waves" | "rewind" | "rhombus" | "ribbon" | "rocket" | "room-service" | "rows" | "rss" | "ruler" | "rupee-circle" | "rupee-diamond" | "rupee-hexagon" | "rupee-octagon" | "rupee-square" | "rupee-waves" | "rupee" | "sad-circle" | "sad-ghost" | "sad-square" | "save" | "scan" | "scissors" | "sea-waves" | "search-check" | "search-circle" | "search-diamond" | "search-dot" | "search-hexagon" | "search-home" | "search-minus" | "search-octagon" | "search-plus" | "search-slash" | "search-snooze" | "search-square" | "search-user" | "search-waves" | "search-x" | "select-multiple" | "send" | "servers" | "seven-circle" | "seven-diamond" | "seven-hexagon" | "seven-octagon" | "seven-square" | "seven-waves" | "seven" | "share" | "shell" | "shield-check" | "shield-crossed" | "shield-minus" | "shield-one" | "shield-plus" | "shield-slash" | "shield-two" | "shield-x" | "shield" | "shooting-star" | "shopping-bag" | "shovel" | "shrub" | "shuffle-alt" | "shuffle" | "sidebar-alt" | "sidebar" | "signal-circle" | "signal-diamond" | "signal-hexagon" | "signal-octagon" | "signal-square" | "signal-waves" | "signal" | "six-circle" | "six-diamond" | "six-hexagon" | "six-octagon" | "six-square" | "six-waves" | "six" | "skip-back" | "skip-forward" | "slash-circle" | "slash-diamond" | "slash-hexagon" | "slash-octagon" | "slash-square" | "slash-waves" | "smile-circle" | "smile-ghost" | "smile-square" | "snow" | "snowflake" | "sofa" | "sparkles" | "speaker" | "spinner-one" | "spinner" | "sprout" | "square-chart-gantt" | "square-dashed-kanban" | "square-dashed" | "square-half" | "square-kanban" | "square" | "star" | "stop-circle" | "stop-diamond" | "stop-hexagon" | "stop-octagon" | "stop-square" | "stop-waves" | "stop" | "store" | "subtract" | "sun-dim" | "sun-medium" | "sun-snow" | "sun" | "sunrise" | "sunset" | "support" | "swatches" | "table" | "tablet" | "tag-plus" | "tag" | "tally-five" | "tally-four" | "tally-one" | "tally-three" | "tally-two" | "telephone-call" | "telephone-forward" | "telephone-in" | "telephone-missed" | "telephone-out" | "telephone-slash" | "telephone" | "tent-tree" | "tent" | "terminal" | "text-align-center" | "text-align-left" | "text-align-right" | "text-justify" | "thermometer-snowflake" | "thermometer-sun" | "thermometer" | "three-circle" | "three-diamond" | "three-hexagon" | "three-octagon" | "three-square" | "three-waves" | "three" | "ticket-slash" | "ticket" | "toggle-left" | "toggle-right" | "tool" | "tornado" | "train" | "trash-one" | "trash-two" | "trash" | "tree-deciduous" | "tree-palm" | "tree-pine" | "tree" | "trees" | "trending-down" | "trending-up-down" | "trending-up" | "triangle" | "truck" | "tv" | "two-circle" | "two-diamond" | "two-hexagon" | "two-octagon" | "two-square" | "two-waves" | "two" | "type-bold" | "type-italic" | "type-text" | "type-underline" | "umbrella-off" | "umbrella" | "undo" | "union" | "unlink" | "upload" | "user-check" | "user-circle" | "user-diamond" | "user-hexagon" | "user-minus" | "user-octagon" | "user-plus" | "user-settings" | "user-square" | "user-waves" | "user-x" | "users-group" | "users" | "video-slash" | "video" | "volume-check" | "volume-high" | "volume-low" | "volume-minus" | "volume-none" | "volume-plus" | "volume-slash" | "volume-x" | "watch" | "waves" | "webcam" | "wheel" | "wheelchair" | "wifi-check" | "wifi-low" | "wifi-medium" | "wifi-minus" | "wifi-plus" | "wifi-slash" | "wifi-x" | "wifi" | "wind-arrow-down" | "wind" | "winds" | "wine" | "wink-circle" | "wink-ghost" | "wink-square" | "wrench" | "x-circle" | "x-diamond" | "x-hexagon" | "x-octagon" | "x-square" | "x-triangle" | "x-waves" | "yen-circle" | "yen-diamond" | "yen-hexagon" | "yen-octagon" | "yen-square" | "yen-waves" | "yen" | "zap-off" | "zap" | "zero-circle" | "zero-diamond" | "zero-hexagon" | "zero-octagon" | "zero-square" | "zero-waves" | "zero", string>>;
|
|
7237
|
+
labelExpression: z$1.ZodString;
|
|
7238
|
+
attributes: z$1.ZodDefault<z$1.ZodArray<z$1.ZodType<{
|
|
7239
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7240
|
+
name: string;
|
|
7241
|
+
label: string;
|
|
7242
|
+
required?: boolean | undefined;
|
|
7243
|
+
description?: string | undefined;
|
|
7244
|
+
config?: Record<string, unknown> | undefined;
|
|
7245
|
+
}, unknown, z$1.core.$ZodTypeInternals<{
|
|
7246
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7247
|
+
name: string;
|
|
7248
|
+
label: string;
|
|
7249
|
+
required?: boolean | undefined;
|
|
7250
|
+
description?: string | undefined;
|
|
7251
|
+
config?: Record<string, unknown> | undefined;
|
|
7252
|
+
}, unknown>>>>;
|
|
7253
|
+
}, z$1.core.$strict>>>;
|
|
7254
|
+
attributes: z$1.ZodDefault<z$1.ZodArray<z$1.ZodType<{
|
|
7255
|
+
objectName: string;
|
|
7256
|
+
name: string;
|
|
7257
|
+
label: string;
|
|
7258
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7259
|
+
config?: Record<string, unknown> | undefined;
|
|
7260
|
+
required?: boolean | undefined;
|
|
7261
|
+
description?: string | undefined;
|
|
7262
|
+
}, unknown, z$1.core.$ZodTypeInternals<{
|
|
7263
|
+
objectName: string;
|
|
7264
|
+
name: string;
|
|
7265
|
+
label: string;
|
|
7266
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7267
|
+
config?: Record<string, unknown> | undefined;
|
|
7268
|
+
required?: boolean | undefined;
|
|
7269
|
+
description?: string | undefined;
|
|
7270
|
+
}, unknown>>>>;
|
|
7271
|
+
viewUpdates: z$1.ZodDefault<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
7272
|
+
objectName: z$1.ZodString;
|
|
7273
|
+
viewType: z$1.ZodLiteral<"list">;
|
|
7274
|
+
canonicalConfig: z$1.ZodType<ListViewConfig, unknown, z$1.core.$ZodTypeInternals<ListViewConfig, unknown>>;
|
|
7275
|
+
baselineToken: z$1.ZodOptional<z$1.ZodString>;
|
|
7276
|
+
}, z$1.core.$strict>, z$1.ZodObject<{
|
|
7277
|
+
objectName: z$1.ZodString;
|
|
7278
|
+
viewType: z$1.ZodLiteral<"detail">;
|
|
7279
|
+
canonicalConfig: z$1.ZodType<DetailViewConfig, unknown, z$1.core.$ZodTypeInternals<DetailViewConfig, unknown>>;
|
|
7280
|
+
baselineToken: z$1.ZodOptional<z$1.ZodString>;
|
|
7281
|
+
}, z$1.core.$strict>], "viewType">>>;
|
|
7282
|
+
}, z$1.core.$strict>>;
|
|
7283
|
+
destructive: z$1.ZodDefault<z$1.ZodObject<{
|
|
7284
|
+
attributeRemovals: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7285
|
+
objectName: z$1.ZodString;
|
|
7286
|
+
attributeName: z$1.ZodString;
|
|
7287
|
+
}, z$1.core.$strict>>>;
|
|
7288
|
+
objectRemovals: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7289
|
+
objectName: z$1.ZodString;
|
|
7290
|
+
}, z$1.core.$strict>>>;
|
|
7291
|
+
renames: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7292
|
+
objectName: z$1.ZodString;
|
|
7293
|
+
from: z$1.ZodString;
|
|
7294
|
+
to: z$1.ZodString;
|
|
7295
|
+
}, z$1.core.$strict>>>;
|
|
7296
|
+
}, z$1.core.$strict>>;
|
|
7297
|
+
}, z$1.core.$strict>;
|
|
7298
|
+
/**
|
|
7299
|
+
* The strict model-facing parser. Raw JSON safety and bytes are bounded before
|
|
7300
|
+
* defaults materialize; the structural parser then enforces the version literal
|
|
7301
|
+
* and mutation coherence. `shape` is retained for the AI tool's expected-key
|
|
7302
|
+
* diagnostics.
|
|
7303
|
+
*/
|
|
7304
|
+
declare const schemaPlanSchema: z$1.ZodPreprocess<z$1.ZodObject<{
|
|
7305
|
+
schemaPlanVersion: z$1.ZodLiteral<2>;
|
|
7306
|
+
summary: z$1.ZodString;
|
|
7307
|
+
additive: z$1.ZodDefault<z$1.ZodObject<{
|
|
7308
|
+
objects: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7309
|
+
name: z$1.ZodString;
|
|
7310
|
+
label: z$1.ZodString;
|
|
7311
|
+
pluralLabel: z$1.ZodOptional<z$1.ZodString>;
|
|
7312
|
+
description: z$1.ZodOptional<z$1.ZodString>;
|
|
7313
|
+
icon: z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<"path" | "one" | "location" | "user" | "search" | "repeat" | "anchor" | "link" | "at" | "sort" | "map" | "filter" | "target" | "key" | "label" | "x" | "a-arrow-down" | "a-arrow-up" | "academic-hat" | "accessibility" | "activity-square" | "activity" | "add-queue" | "aeroplane" | "air-conditioner" | "airplay" | "airpods" | "alarm-check" | "alarm-minus" | "alarm-plus" | "alarm-smoke" | "alarm-snooze" | "alarm-x" | "alarm" | "album" | "align-bottom" | "align-horizontal" | "align-left" | "align-right" | "align-top" | "align-vertical" | "alt" | "ambulance" | "ampersand-square" | "ampersand" | "ampersands" | "angry-circle" | "angry-ghost" | "angry-square" | "annoyed-circle" | "annoyed-ghost" | "annoyed-square" | "aperture" | "api" | "ar" | "archive" | "arrow-diagonal-one" | "arrow-diagonal-two" | "arrow-down-circle" | "arrow-down-left-circle" | "arrow-down-left-square" | "arrow-down-left-waves" | "arrow-down-left" | "arrow-down-right-circle" | "arrow-down-right-square" | "arrow-down-right-waves" | "arrow-down-right" | "arrow-down-square" | "arrow-down-waves" | "arrow-down" | "arrow-left-circle" | "arrow-left-right" | "arrow-left-square" | "arrow-left-waves" | "arrow-left" | "arrow-long-down-left" | "arrow-long-down-right" | "arrow-long-down" | "arrow-long-left" | "arrow-long-right" | "arrow-long-up-left" | "arrow-long-up-right" | "arrow-long-up" | "arrow-right-circle" | "arrow-right-square" | "arrow-right-waves" | "arrow-right" | "arrow-up-circle" | "arrow-up-down" | "arrow-up-left-circle" | "arrow-up-left-square" | "arrow-up-left-waves" | "arrow-up-left" | "arrow-up-right-circle" | "arrow-up-right-square" | "arrow-up-right-waves" | "arrow-up-right" | "arrow-up-square" | "arrow-up-waves" | "arrow-up" | "asterisk-circle" | "asterisk-diamond" | "asterisk-hexagon" | "asterisk-octagon" | "asterisk-square" | "asterisk-waves" | "atom" | "baby" | "backpack" | "badge" | "baggage-claim" | "ban" | "bank" | "baseball" | "bath" | "battery-charging-four" | "battery-charging-one" | "battery-charging-three" | "battery-charging-two" | "battery-charging" | "battery-check" | "battery-empty" | "battery-full" | "battery-minus" | "battery-plus" | "battery-x" | "bell-check" | "bell-home" | "bell-minus" | "bell-on" | "bell-plus" | "bell-slash" | "bell-snooze" | "bell-user" | "bell-x" | "bell" | "binoculars" | "bitcoin-circle" | "bitcoin-diamond" | "bitcoin-hexagon" | "bitcoin-octagon" | "bitcoin-square" | "bitcoin-waves" | "bitcoin" | "bluetooth" | "boat" | "book-check" | "book-dot" | "book-home" | "book-image" | "book-minus" | "book-open" | "book-plus" | "book-slash" | "book-snooze" | "book-user" | "book-x" | "book" | "bookmark-check" | "bookmark-dot" | "bookmark-home" | "bookmark-minus" | "bookmark-plus" | "bookmark-slash" | "bookmark-snooze" | "bookmark-user" | "bookmark-x" | "bookmark" | "bounding-box" | "bowl" | "box" | "brand-chrome" | "brand-codepen" | "brand-codesandbox" | "brand-dribbble" | "brand-facebook" | "brand-figma" | "brand-framer" | "brand-github" | "brand-gitlab" | "brand-google" | "brand-instagram" | "brand-linkedin" | "brand-pinterest" | "brand-pocket" | "brand-slack" | "brand-spotify" | "brand-telegram" | "brand-threads" | "brand-trello" | "brand-twitch" | "brand-twitter" | "brand-x" | "brand-youtube" | "briefcase-conveyor-belt" | "briefcase" | "brightness-high" | "brightness-low" | "bubbles" | "building-one" | "building" | "cable-car" | "cake" | "calendar-check" | "calendar-down" | "calendar-minus" | "calendar-plus" | "calendar-slash" | "calendar-up" | "calendar-x" | "calendar" | "camera-slash" | "camera" | "campfire" | "cannabis" | "caravan" | "cart-check" | "cart-minus" | "cart-plus" | "cart-x" | "cart" | "cast-screen" | "center-focus" | "chart-area" | "chart-bar-big" | "chart-bar-decreasing" | "chart-bar-increasing" | "chart-bar-one" | "chart-bar-stacked" | "chart-bar" | "chart-bubble" | "chart-candlestick" | "chart-column-big" | "chart-column-decreasing" | "chart-column-increasing" | "chart-column-stacked" | "chart-column" | "chart-gantt" | "chart-graph" | "chart-line" | "chart-network" | "chart-no-axes-column-decreasing" | "chart-no-axes-column-increasing" | "chart-no-axes-column" | "chart-no-axes-combined" | "chart-no-axes-gantt" | "chart-pie-one" | "chart-pie-two" | "chart-pie" | "chart-scatter" | "chart-spline" | "chat-check" | "chat-dots" | "chat-messages" | "chat-minus" | "chat-plus" | "chat-x" | "chat" | "check-circle-one" | "check-circle" | "check-diamond" | "check-hexagon" | "check-octagon" | "check-square-one" | "check-square" | "check-waves" | "check" | "chevron-double-down-left" | "chevron-double-down-right" | "chevron-double-down" | "chevron-double-left" | "chevron-double-right" | "chevron-double-up-left" | "chevron-double-up-right" | "chevron-double-up" | "chevron-down-circle" | "chevron-down-left-circle" | "chevron-down-left-square" | "chevron-down-left-waves" | "chevron-down-left" | "chevron-down-right-circle" | "chevron-down-right-square" | "chevron-down-right-waves" | "chevron-down-right" | "chevron-down-square" | "chevron-down-waves" | "chevron-down" | "chevron-left-circle" | "chevron-left-square" | "chevron-left-waves" | "chevron-left" | "chevron-right-circle" | "chevron-right-square" | "chevron-right-waves" | "chevron-right" | "chevron-up-circle" | "chevron-up-down" | "chevron-up-left-circle" | "chevron-up-left-square" | "chevron-up-left-waves" | "chevron-up-left" | "chevron-up-right-circle" | "chevron-up-right-square" | "chevron-up-right-waves" | "chevron-up-right" | "chevron-up-square" | "chevron-up-waves" | "chevron-up" | "chip" | "cigarette-off" | "cigarette" | "circle-dashed" | "circle-half-circle" | "circle-half" | "circle-notch" | "circle" | "click" | "clipboard" | "clock-circle" | "clock-diamond" | "clock-eight" | "clock-eleven" | "clock-five" | "clock-four" | "clock-hand" | "clock-hexagon" | "clock-nine" | "clock-octagon" | "clock-one" | "clock-seven" | "clock-six" | "clock-square" | "clock-ten" | "clock-three" | "clock-twelve" | "clock-two" | "clock-waves" | "cloud-download" | "cloud-drizzle" | "cloud-fog" | "cloud-hail" | "cloud-lightning" | "cloud-moon-rain" | "cloud-moon" | "cloud-off" | "cloud-rain-wind" | "cloud-rain" | "cloud-snow" | "cloud-sun-rain" | "cloud-sun" | "cloud-upload" | "cloud" | "cloudy" | "cocktail" | "code-circle" | "code-diamond" | "code-hexagon" | "code-octagon" | "code-square" | "code-waves" | "code" | "coffee" | "cog-four" | "cog-one" | "cog-three" | "cog-two" | "cog" | "columns" | "command" | "compass" | "components" | "confetti" | "config-vertical" | "config" | "contactless-circle" | "contactless" | "controller" | "cookie" | "copy" | "copyleft" | "copyright-slash" | "copyright" | "corner-down-left" | "corner-down-right" | "corner-left-down" | "corner-left-up" | "corner-right-down" | "corner-right-up" | "corner-up-left" | "corner-up-right" | "credit-card-check" | "credit-card-minus" | "credit-card-plus" | "credit-card-x" | "credit-card" | "croissant" | "crop" | "crosshair" | "cupcake" | "danger-circle" | "danger-diamond" | "danger-hexagon" | "danger-octagon" | "danger-square" | "danger-triangle" | "danger-waves" | "danger" | "database" | "daze-circle" | "daze-ghost" | "daze-square" | "delete" | "desktop" | "diamond" | "dice-five" | "dice-four" | "dice-one" | "dice-six" | "dice-three" | "dice-two" | "dislike" | "divide" | "dollar-circle" | "dollar-diamond" | "dollar-hexagon" | "dollar-octagon" | "dollar-square" | "dollar-waves" | "dollar" | "door-closed-locked" | "door-closed" | "door-open" | "dots-circle" | "dots-diamond" | "dots-hexagon" | "dots-octagon" | "dots-square" | "dots-vertical-circle" | "dots-vertical-diamond" | "dots-vertical-hexagon" | "dots-vertical-octagon" | "dots-vertical-square" | "dots-vertical-waves" | "dots-vertical" | "dots-waves" | "dots" | "download" | "drop" | "droplet-off" | "droplet" | "droplets" | "ear-slash" | "ear" | "earth" | "eclipse" | "edit-one" | "edit" | "egg" | "eight-circle" | "eight-diamond" | "eight-hexagon" | "eight-octagon" | "eight-square" | "eight-waves" | "eight" | "elevator" | "envelope-open" | "envelope" | "euro-circle" | "euro-diamond" | "euro-hexagon" | "euro-octagon" | "euro-square" | "euro-waves" | "euro" | "exclude" | "external-link" | "eye-slash" | "eye" | "face-id" | "fat-arrow-down-left" | "fat-arrow-down-right" | "fat-arrow-down" | "fat-arrow-left" | "fat-arrow-right" | "fat-arrow-up-left" | "fat-arrow-up-right" | "fat-arrow-up" | "fat-corner-down-left" | "fat-corner-down-right" | "fat-corner-left-down" | "fat-corner-left-up" | "fat-corner-right-down" | "fat-corner-right-up" | "fat-corner-up-left" | "fat-corner-up-right" | "female" | "file-check" | "file-minus" | "file-plus" | "file-text" | "file-x" | "file" | "film" | "filter-one" | "fine-tune" | "fire" | "five-circle" | "five-diamond" | "five-hexagon" | "five-octagon" | "five-square" | "five-waves" | "five" | "flag-one" | "flag" | "flame-kindling" | "flame" | "flask" | "flower-2" | "flower" | "folder-check" | "folder-heart" | "folder-kanban" | "folder-minus" | "folder-one" | "folder-plus" | "folder-slash" | "folder-two" | "folder-x" | "folder" | "forward-circle" | "forward-diamond" | "forward-hexagon" | "forward-octagon" | "forward-square" | "forward-waves" | "forward" | "four-circle" | "four-diamond" | "four-hexagon" | "four-octagon" | "four-square" | "four-waves" | "four" | "frame" | "funny-circle" | "funny-ghost" | "funny-square" | "gift" | "git-branch" | "git-circle" | "git-commit" | "git-diamond" | "git-diff" | "git-hexagon" | "git-merge" | "git-octagon" | "git-pull-request" | "git-square" | "git-waves" | "glasses" | "globe" | "grid-one" | "grid" | "hand" | "hard-drive" | "hash-circle" | "hash-diamond" | "hash-hexagon" | "hash-octagon" | "hash-square" | "hash-waves" | "hash" | "haze" | "heading-five" | "heading-four" | "heading-one" | "heading-six" | "heading-three" | "heading-two" | "heading" | "headphones" | "heart-broken" | "heart-check" | "heart-circle" | "heart-diamond" | "heart-dot" | "heart-hexagon" | "heart-home" | "heart-minus" | "heart-octagon" | "heart-plus" | "heart-slash" | "heart-snooze" | "heart-square" | "heart-user" | "heart-waves" | "heart-x" | "heart" | "hexagon" | "home-check" | "home-minus" | "home-plus" | "home-smile" | "home-x" | "home" | "image-circle" | "image-rectangle" | "image" | "inbox-archive" | "inbox-check" | "inbox-down" | "inbox-minus" | "inbox-plus" | "inbox-up" | "inbox-x" | "inbox" | "incognito" | "indifferent-circle" | "indifferent-ghost" | "indifferent-square" | "infinity" | "info-circle" | "info-diamond" | "info-hexagon" | "info-octagon" | "info-square" | "info-triangle" | "info-waves" | "info" | "intersect" | "kanban" | "keyboard-brightness-high" | "keyboard-brightness-low" | "keyboard" | "lamp" | "layers-one" | "layers-three" | "layers-two" | "layout" | "leaf" | "leaves" | "letter-a-circle" | "letter-a-diamond" | "letter-a-hexagon" | "letter-a-octagon" | "letter-a-square" | "letter-a-waves" | "letter-a" | "letter-b-circle" | "letter-b-diamond" | "letter-b-hexagon" | "letter-b-octagon" | "letter-b-square" | "letter-b-waves" | "letter-b" | "letter-c-circle" | "letter-c-diamond" | "letter-c-hexagon" | "letter-c-octagon" | "letter-c-square" | "letter-c-waves" | "letter-c" | "letter-d-circle" | "letter-d-diamond" | "letter-d-hexagon" | "letter-d-octagon" | "letter-d-square" | "letter-d-waves" | "letter-d" | "letter-e-circle" | "letter-e-diamond" | "letter-e-hexagon" | "letter-e-octagon" | "letter-e-square" | "letter-e-waves" | "letter-e" | "letter-f-circle" | "letter-f-diamond" | "letter-f-hexagon" | "letter-f-octagon" | "letter-f-square" | "letter-f-waves" | "letter-f" | "letter-g-circle" | "letter-g-diamond" | "letter-g-hexagon" | "letter-g-octagon" | "letter-g-square" | "letter-g-waves" | "letter-g" | "letter-h-circle" | "letter-h-diamond" | "letter-h-hexagon" | "letter-h-octagon" | "letter-h-square" | "letter-h-waves" | "letter-h" | "letter-i-circle" | "letter-i-diamond" | "letter-i-hexagon" | "letter-i-octagon" | "letter-i-square" | "letter-i-waves" | "letter-i" | "letter-j-circle" | "letter-j-diamond" | "letter-j-hexagon" | "letter-j-octagon" | "letter-j-square" | "letter-j-waves" | "letter-j" | "letter-k-circle" | "letter-k-diamond" | "letter-k-hexagon" | "letter-k-octagon" | "letter-k-square" | "letter-k-waves" | "letter-k" | "letter-l-circle" | "letter-l-diamond" | "letter-l-hexagon" | "letter-l-octagon" | "letter-l-square" | "letter-l-waves" | "letter-l" | "letter-m-circle" | "letter-m-diamond" | "letter-m-hexagon" | "letter-m-octagon" | "letter-m-square" | "letter-m-waves" | "letter-m" | "letter-n-circle" | "letter-n-diamond" | "letter-n-hexagon" | "letter-n-octagon" | "letter-n-square" | "letter-n-waves" | "letter-n" | "letter-o-circle" | "letter-o-diamond" | "letter-o-hexagon" | "letter-o-octagon" | "letter-o-square" | "letter-o-waves" | "letter-o" | "letter-p-circle" | "letter-p-diamond" | "letter-p-hexagon" | "letter-p-octagon" | "letter-p-square" | "letter-p-waves" | "letter-p" | "letter-q-circle" | "letter-q-diamond" | "letter-q-hexagon" | "letter-q-octagon" | "letter-q-square" | "letter-q-waves" | "letter-q" | "letter-r-circle" | "letter-r-diamond" | "letter-r-hexagon" | "letter-r-octagon" | "letter-r-square" | "letter-r-waves" | "letter-r" | "letter-s-circle" | "letter-s-diamond" | "letter-s-hexagon" | "letter-s-octagon" | "letter-s-square" | "letter-s-waves" | "letter-s" | "letter-t-circle" | "letter-t-diamond" | "letter-t-hexagon" | "letter-t-octagon" | "letter-t-square" | "letter-t-waves" | "letter-t" | "letter-u-circle" | "letter-u-diamond" | "letter-u-hexagon" | "letter-u-octagon" | "letter-u-square" | "letter-u-waves" | "letter-u" | "letter-v-circle" | "letter-v-diamond" | "letter-v-hexagon" | "letter-v-octagon" | "letter-v-square" | "letter-v-waves" | "letter-v" | "letter-w-circle" | "letter-w-diamond" | "letter-w-hexagon" | "letter-w-octagon" | "letter-w-square" | "letter-w-waves" | "letter-w" | "letter-x-circle" | "letter-x-diamond" | "letter-x-hexagon" | "letter-x-octagon" | "letter-x-square" | "letter-x-waves" | "letter-x" | "letter-y-circle" | "letter-y-diamond" | "letter-y-hexagon" | "letter-y-octagon" | "letter-y-square" | "letter-y-waves" | "letter-y" | "letter-z-circle" | "letter-z-diamond" | "letter-z-hexagon" | "letter-z-octagon" | "letter-z-square" | "letter-z-waves" | "letter-z" | "lightning-off" | "lightning" | "like" | "line-chart-circle" | "line-chart-diamond" | "line-chart-hexagon" | "line-chart-octagon" | "line-chart-square" | "line-chart-waves" | "link-one" | "link-two" | "list-check" | "list-number" | "list" | "location-check" | "location-home" | "location-minus" | "location-plus" | "location-selected" | "location-slash" | "location-snooze" | "location-user" | "location-x" | "lock-circle" | "lock-diamond" | "lock-hexagon" | "lock-keyhole" | "lock-octagon" | "lock-open-keyhole" | "lock-open-password" | "lock-open" | "lock-password" | "lock-square" | "lock-waves" | "lock" | "login" | "logout" | "magnet" | "male" | "mask" | "math-square" | "math" | "maximize-one" | "maximize" | "menu" | "message-check" | "message-dots" | "message-minus" | "message-plus" | "message-reply" | "message-x" | "message" | "microphone-slash" | "microphone" | "minimize-one" | "minimize" | "minus-circle" | "minus-diamond" | "minus-hexagon" | "minus-octagon" | "minus-square" | "minus-waves" | "minus" | "mobile-signal-five" | "mobile-signal-four" | "mobile-signal-one" | "mobile-signal-three" | "mobile-signal-two" | "mobile" | "moon-star" | "moon" | "mountain-snow" | "mountain" | "mouse-pointer" | "move-diagonal-one" | "move-diagonal" | "move-horizontal" | "move-vertical" | "move" | "music-circle" | "music-diamond" | "music-hexagon" | "music-octagon" | "music-square" | "music-waves" | "music" | "myna" | "navigation-one" | "navigation" | "nine-circle" | "nine-diamond" | "nine-hexagon" | "nine-octagon" | "nine-square" | "nine-waves" | "nine" | "notification" | "octagon" | "one-circle" | "one-diamond" | "one-hexagon" | "one-octagon" | "one-square" | "one-waves" | "option" | "package" | "paint" | "panel-bottom-close" | "panel-bottom-inactive" | "panel-bottom-open" | "panel-bottom" | "panel-left-close" | "panel-left-inactive" | "panel-left-open" | "panel-left" | "panel-right-close" | "panel-right-inactive" | "panel-right-open" | "panel-right" | "panel-top-close" | "panel-top-inactive" | "panel-top-open" | "panel-top" | "paperclip" | "parking" | "password" | "pause-circle" | "pause-diamond" | "pause-hexagon" | "pause-octagon" | "pause-square" | "pause-waves" | "pause" | "pen" | "pencil" | "percentage-circle" | "percentage-diamond" | "percentage-hexagon" | "percentage-octagon" | "percentage-square" | "percentage-waves" | "percentage" | "pin" | "pizza" | "planet" | "play-circle" | "play-diamond" | "play-hexagon" | "play-octagon" | "play-square" | "play-waves" | "play" | "plus-circle" | "plus-diamond" | "plus-hexagon" | "plus-octagon" | "plus-square" | "plus-waves" | "plus" | "pokeball" | "power" | "presentation" | "printer" | "puzzle" | "question-circle" | "question-diamond" | "question-hexagon" | "question-octagon" | "question-square" | "question-waves" | "question" | "radio" | "rainbow" | "reception-bell" | "record" | "rectangle-vertical" | "rectangle" | "redo" | "refresh-alt" | "refresh" | "rewind-circle" | "rewind-diamond" | "rewind-hexagon" | "rewind-octagon" | "rewind-square" | "rewind-waves" | "rewind" | "rhombus" | "ribbon" | "rocket" | "room-service" | "rows" | "rss" | "ruler" | "rupee-circle" | "rupee-diamond" | "rupee-hexagon" | "rupee-octagon" | "rupee-square" | "rupee-waves" | "rupee" | "sad-circle" | "sad-ghost" | "sad-square" | "save" | "scan" | "scissors" | "sea-waves" | "search-check" | "search-circle" | "search-diamond" | "search-dot" | "search-hexagon" | "search-home" | "search-minus" | "search-octagon" | "search-plus" | "search-slash" | "search-snooze" | "search-square" | "search-user" | "search-waves" | "search-x" | "select-multiple" | "send" | "servers" | "seven-circle" | "seven-diamond" | "seven-hexagon" | "seven-octagon" | "seven-square" | "seven-waves" | "seven" | "share" | "shell" | "shield-check" | "shield-crossed" | "shield-minus" | "shield-one" | "shield-plus" | "shield-slash" | "shield-two" | "shield-x" | "shield" | "shooting-star" | "shopping-bag" | "shovel" | "shrub" | "shuffle-alt" | "shuffle" | "sidebar-alt" | "sidebar" | "signal-circle" | "signal-diamond" | "signal-hexagon" | "signal-octagon" | "signal-square" | "signal-waves" | "signal" | "six-circle" | "six-diamond" | "six-hexagon" | "six-octagon" | "six-square" | "six-waves" | "six" | "skip-back" | "skip-forward" | "slash-circle" | "slash-diamond" | "slash-hexagon" | "slash-octagon" | "slash-square" | "slash-waves" | "smile-circle" | "smile-ghost" | "smile-square" | "snow" | "snowflake" | "sofa" | "sparkles" | "speaker" | "spinner-one" | "spinner" | "sprout" | "square-chart-gantt" | "square-dashed-kanban" | "square-dashed" | "square-half" | "square-kanban" | "square" | "star" | "stop-circle" | "stop-diamond" | "stop-hexagon" | "stop-octagon" | "stop-square" | "stop-waves" | "stop" | "store" | "subtract" | "sun-dim" | "sun-medium" | "sun-snow" | "sun" | "sunrise" | "sunset" | "support" | "swatches" | "table" | "tablet" | "tag-plus" | "tag" | "tally-five" | "tally-four" | "tally-one" | "tally-three" | "tally-two" | "telephone-call" | "telephone-forward" | "telephone-in" | "telephone-missed" | "telephone-out" | "telephone-slash" | "telephone" | "tent-tree" | "tent" | "terminal" | "text-align-center" | "text-align-left" | "text-align-right" | "text-justify" | "thermometer-snowflake" | "thermometer-sun" | "thermometer" | "three-circle" | "three-diamond" | "three-hexagon" | "three-octagon" | "three-square" | "three-waves" | "three" | "ticket-slash" | "ticket" | "toggle-left" | "toggle-right" | "tool" | "tornado" | "train" | "trash-one" | "trash-two" | "trash" | "tree-deciduous" | "tree-palm" | "tree-pine" | "tree" | "trees" | "trending-down" | "trending-up-down" | "trending-up" | "triangle" | "truck" | "tv" | "two-circle" | "two-diamond" | "two-hexagon" | "two-octagon" | "two-square" | "two-waves" | "two" | "type-bold" | "type-italic" | "type-text" | "type-underline" | "umbrella-off" | "umbrella" | "undo" | "union" | "unlink" | "upload" | "user-check" | "user-circle" | "user-diamond" | "user-hexagon" | "user-minus" | "user-octagon" | "user-plus" | "user-settings" | "user-square" | "user-waves" | "user-x" | "users-group" | "users" | "video-slash" | "video" | "volume-check" | "volume-high" | "volume-low" | "volume-minus" | "volume-none" | "volume-plus" | "volume-slash" | "volume-x" | "watch" | "waves" | "webcam" | "wheel" | "wheelchair" | "wifi-check" | "wifi-low" | "wifi-medium" | "wifi-minus" | "wifi-plus" | "wifi-slash" | "wifi-x" | "wifi" | "wind-arrow-down" | "wind" | "winds" | "wine" | "wink-circle" | "wink-ghost" | "wink-square" | "wrench" | "x-circle" | "x-diamond" | "x-hexagon" | "x-octagon" | "x-square" | "x-triangle" | "x-waves" | "yen-circle" | "yen-diamond" | "yen-hexagon" | "yen-octagon" | "yen-square" | "yen-waves" | "yen" | "zap-off" | "zap" | "zero-circle" | "zero-diamond" | "zero-hexagon" | "zero-octagon" | "zero-square" | "zero-waves" | "zero", string>>;
|
|
7314
|
+
labelExpression: z$1.ZodString;
|
|
7315
|
+
attributes: z$1.ZodDefault<z$1.ZodArray<z$1.ZodType<{
|
|
7316
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7317
|
+
name: string;
|
|
7318
|
+
label: string;
|
|
7319
|
+
required?: boolean | undefined;
|
|
7320
|
+
description?: string | undefined;
|
|
7321
|
+
config?: Record<string, unknown> | undefined;
|
|
7322
|
+
}, unknown, z$1.core.$ZodTypeInternals<{
|
|
7323
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7324
|
+
name: string;
|
|
7325
|
+
label: string;
|
|
7326
|
+
required?: boolean | undefined;
|
|
7327
|
+
description?: string | undefined;
|
|
7328
|
+
config?: Record<string, unknown> | undefined;
|
|
7329
|
+
}, unknown>>>>;
|
|
7330
|
+
}, z$1.core.$strict>>>;
|
|
7331
|
+
attributes: z$1.ZodDefault<z$1.ZodArray<z$1.ZodType<{
|
|
7332
|
+
objectName: string;
|
|
7333
|
+
name: string;
|
|
7334
|
+
label: string;
|
|
7335
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7336
|
+
config?: Record<string, unknown> | undefined;
|
|
7337
|
+
required?: boolean | undefined;
|
|
7338
|
+
description?: string | undefined;
|
|
7339
|
+
}, unknown, z$1.core.$ZodTypeInternals<{
|
|
7340
|
+
objectName: string;
|
|
7341
|
+
name: string;
|
|
7342
|
+
label: string;
|
|
7343
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7344
|
+
config?: Record<string, unknown> | undefined;
|
|
7345
|
+
required?: boolean | undefined;
|
|
7346
|
+
description?: string | undefined;
|
|
7347
|
+
}, unknown>>>>;
|
|
7348
|
+
viewUpdates: z$1.ZodDefault<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
7349
|
+
objectName: z$1.ZodString;
|
|
7350
|
+
viewType: z$1.ZodLiteral<"list">;
|
|
7351
|
+
canonicalConfig: z$1.ZodType<ListViewConfig, unknown, z$1.core.$ZodTypeInternals<ListViewConfig, unknown>>;
|
|
7352
|
+
baselineToken: z$1.ZodOptional<z$1.ZodString>;
|
|
7353
|
+
}, z$1.core.$strict>, z$1.ZodObject<{
|
|
7354
|
+
objectName: z$1.ZodString;
|
|
7355
|
+
viewType: z$1.ZodLiteral<"detail">;
|
|
7356
|
+
canonicalConfig: z$1.ZodType<DetailViewConfig, unknown, z$1.core.$ZodTypeInternals<DetailViewConfig, unknown>>;
|
|
7357
|
+
baselineToken: z$1.ZodOptional<z$1.ZodString>;
|
|
7358
|
+
}, z$1.core.$strict>], "viewType">>>;
|
|
7359
|
+
}, z$1.core.$strict>>;
|
|
7360
|
+
destructive: z$1.ZodDefault<z$1.ZodObject<{
|
|
7361
|
+
attributeRemovals: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7362
|
+
objectName: z$1.ZodString;
|
|
7363
|
+
attributeName: z$1.ZodString;
|
|
7364
|
+
}, z$1.core.$strict>>>;
|
|
7365
|
+
objectRemovals: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7366
|
+
objectName: z$1.ZodString;
|
|
7367
|
+
}, z$1.core.$strict>>>;
|
|
7368
|
+
renames: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7369
|
+
objectName: z$1.ZodString;
|
|
7370
|
+
from: z$1.ZodString;
|
|
7371
|
+
to: z$1.ZodString;
|
|
7372
|
+
}, z$1.core.$strict>>>;
|
|
7373
|
+
}, z$1.core.$strict>>;
|
|
7374
|
+
}, z$1.core.$strict>> & {
|
|
7375
|
+
shape: {
|
|
7376
|
+
schemaPlanVersion: z$1.ZodLiteral<2>;
|
|
7377
|
+
summary: z$1.ZodString;
|
|
7378
|
+
additive: z$1.ZodDefault<z$1.ZodObject<{
|
|
7379
|
+
objects: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7380
|
+
name: z$1.ZodString;
|
|
7381
|
+
label: z$1.ZodString;
|
|
7382
|
+
pluralLabel: z$1.ZodOptional<z$1.ZodString>;
|
|
7383
|
+
description: z$1.ZodOptional<z$1.ZodString>;
|
|
7384
|
+
icon: z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<"path" | "one" | "location" | "user" | "search" | "repeat" | "anchor" | "link" | "at" | "sort" | "map" | "filter" | "target" | "key" | "label" | "x" | "a-arrow-down" | "a-arrow-up" | "academic-hat" | "accessibility" | "activity-square" | "activity" | "add-queue" | "aeroplane" | "air-conditioner" | "airplay" | "airpods" | "alarm-check" | "alarm-minus" | "alarm-plus" | "alarm-smoke" | "alarm-snooze" | "alarm-x" | "alarm" | "album" | "align-bottom" | "align-horizontal" | "align-left" | "align-right" | "align-top" | "align-vertical" | "alt" | "ambulance" | "ampersand-square" | "ampersand" | "ampersands" | "angry-circle" | "angry-ghost" | "angry-square" | "annoyed-circle" | "annoyed-ghost" | "annoyed-square" | "aperture" | "api" | "ar" | "archive" | "arrow-diagonal-one" | "arrow-diagonal-two" | "arrow-down-circle" | "arrow-down-left-circle" | "arrow-down-left-square" | "arrow-down-left-waves" | "arrow-down-left" | "arrow-down-right-circle" | "arrow-down-right-square" | "arrow-down-right-waves" | "arrow-down-right" | "arrow-down-square" | "arrow-down-waves" | "arrow-down" | "arrow-left-circle" | "arrow-left-right" | "arrow-left-square" | "arrow-left-waves" | "arrow-left" | "arrow-long-down-left" | "arrow-long-down-right" | "arrow-long-down" | "arrow-long-left" | "arrow-long-right" | "arrow-long-up-left" | "arrow-long-up-right" | "arrow-long-up" | "arrow-right-circle" | "arrow-right-square" | "arrow-right-waves" | "arrow-right" | "arrow-up-circle" | "arrow-up-down" | "arrow-up-left-circle" | "arrow-up-left-square" | "arrow-up-left-waves" | "arrow-up-left" | "arrow-up-right-circle" | "arrow-up-right-square" | "arrow-up-right-waves" | "arrow-up-right" | "arrow-up-square" | "arrow-up-waves" | "arrow-up" | "asterisk-circle" | "asterisk-diamond" | "asterisk-hexagon" | "asterisk-octagon" | "asterisk-square" | "asterisk-waves" | "atom" | "baby" | "backpack" | "badge" | "baggage-claim" | "ban" | "bank" | "baseball" | "bath" | "battery-charging-four" | "battery-charging-one" | "battery-charging-three" | "battery-charging-two" | "battery-charging" | "battery-check" | "battery-empty" | "battery-full" | "battery-minus" | "battery-plus" | "battery-x" | "bell-check" | "bell-home" | "bell-minus" | "bell-on" | "bell-plus" | "bell-slash" | "bell-snooze" | "bell-user" | "bell-x" | "bell" | "binoculars" | "bitcoin-circle" | "bitcoin-diamond" | "bitcoin-hexagon" | "bitcoin-octagon" | "bitcoin-square" | "bitcoin-waves" | "bitcoin" | "bluetooth" | "boat" | "book-check" | "book-dot" | "book-home" | "book-image" | "book-minus" | "book-open" | "book-plus" | "book-slash" | "book-snooze" | "book-user" | "book-x" | "book" | "bookmark-check" | "bookmark-dot" | "bookmark-home" | "bookmark-minus" | "bookmark-plus" | "bookmark-slash" | "bookmark-snooze" | "bookmark-user" | "bookmark-x" | "bookmark" | "bounding-box" | "bowl" | "box" | "brand-chrome" | "brand-codepen" | "brand-codesandbox" | "brand-dribbble" | "brand-facebook" | "brand-figma" | "brand-framer" | "brand-github" | "brand-gitlab" | "brand-google" | "brand-instagram" | "brand-linkedin" | "brand-pinterest" | "brand-pocket" | "brand-slack" | "brand-spotify" | "brand-telegram" | "brand-threads" | "brand-trello" | "brand-twitch" | "brand-twitter" | "brand-x" | "brand-youtube" | "briefcase-conveyor-belt" | "briefcase" | "brightness-high" | "brightness-low" | "bubbles" | "building-one" | "building" | "cable-car" | "cake" | "calendar-check" | "calendar-down" | "calendar-minus" | "calendar-plus" | "calendar-slash" | "calendar-up" | "calendar-x" | "calendar" | "camera-slash" | "camera" | "campfire" | "cannabis" | "caravan" | "cart-check" | "cart-minus" | "cart-plus" | "cart-x" | "cart" | "cast-screen" | "center-focus" | "chart-area" | "chart-bar-big" | "chart-bar-decreasing" | "chart-bar-increasing" | "chart-bar-one" | "chart-bar-stacked" | "chart-bar" | "chart-bubble" | "chart-candlestick" | "chart-column-big" | "chart-column-decreasing" | "chart-column-increasing" | "chart-column-stacked" | "chart-column" | "chart-gantt" | "chart-graph" | "chart-line" | "chart-network" | "chart-no-axes-column-decreasing" | "chart-no-axes-column-increasing" | "chart-no-axes-column" | "chart-no-axes-combined" | "chart-no-axes-gantt" | "chart-pie-one" | "chart-pie-two" | "chart-pie" | "chart-scatter" | "chart-spline" | "chat-check" | "chat-dots" | "chat-messages" | "chat-minus" | "chat-plus" | "chat-x" | "chat" | "check-circle-one" | "check-circle" | "check-diamond" | "check-hexagon" | "check-octagon" | "check-square-one" | "check-square" | "check-waves" | "check" | "chevron-double-down-left" | "chevron-double-down-right" | "chevron-double-down" | "chevron-double-left" | "chevron-double-right" | "chevron-double-up-left" | "chevron-double-up-right" | "chevron-double-up" | "chevron-down-circle" | "chevron-down-left-circle" | "chevron-down-left-square" | "chevron-down-left-waves" | "chevron-down-left" | "chevron-down-right-circle" | "chevron-down-right-square" | "chevron-down-right-waves" | "chevron-down-right" | "chevron-down-square" | "chevron-down-waves" | "chevron-down" | "chevron-left-circle" | "chevron-left-square" | "chevron-left-waves" | "chevron-left" | "chevron-right-circle" | "chevron-right-square" | "chevron-right-waves" | "chevron-right" | "chevron-up-circle" | "chevron-up-down" | "chevron-up-left-circle" | "chevron-up-left-square" | "chevron-up-left-waves" | "chevron-up-left" | "chevron-up-right-circle" | "chevron-up-right-square" | "chevron-up-right-waves" | "chevron-up-right" | "chevron-up-square" | "chevron-up-waves" | "chevron-up" | "chip" | "cigarette-off" | "cigarette" | "circle-dashed" | "circle-half-circle" | "circle-half" | "circle-notch" | "circle" | "click" | "clipboard" | "clock-circle" | "clock-diamond" | "clock-eight" | "clock-eleven" | "clock-five" | "clock-four" | "clock-hand" | "clock-hexagon" | "clock-nine" | "clock-octagon" | "clock-one" | "clock-seven" | "clock-six" | "clock-square" | "clock-ten" | "clock-three" | "clock-twelve" | "clock-two" | "clock-waves" | "cloud-download" | "cloud-drizzle" | "cloud-fog" | "cloud-hail" | "cloud-lightning" | "cloud-moon-rain" | "cloud-moon" | "cloud-off" | "cloud-rain-wind" | "cloud-rain" | "cloud-snow" | "cloud-sun-rain" | "cloud-sun" | "cloud-upload" | "cloud" | "cloudy" | "cocktail" | "code-circle" | "code-diamond" | "code-hexagon" | "code-octagon" | "code-square" | "code-waves" | "code" | "coffee" | "cog-four" | "cog-one" | "cog-three" | "cog-two" | "cog" | "columns" | "command" | "compass" | "components" | "confetti" | "config-vertical" | "config" | "contactless-circle" | "contactless" | "controller" | "cookie" | "copy" | "copyleft" | "copyright-slash" | "copyright" | "corner-down-left" | "corner-down-right" | "corner-left-down" | "corner-left-up" | "corner-right-down" | "corner-right-up" | "corner-up-left" | "corner-up-right" | "credit-card-check" | "credit-card-minus" | "credit-card-plus" | "credit-card-x" | "credit-card" | "croissant" | "crop" | "crosshair" | "cupcake" | "danger-circle" | "danger-diamond" | "danger-hexagon" | "danger-octagon" | "danger-square" | "danger-triangle" | "danger-waves" | "danger" | "database" | "daze-circle" | "daze-ghost" | "daze-square" | "delete" | "desktop" | "diamond" | "dice-five" | "dice-four" | "dice-one" | "dice-six" | "dice-three" | "dice-two" | "dislike" | "divide" | "dollar-circle" | "dollar-diamond" | "dollar-hexagon" | "dollar-octagon" | "dollar-square" | "dollar-waves" | "dollar" | "door-closed-locked" | "door-closed" | "door-open" | "dots-circle" | "dots-diamond" | "dots-hexagon" | "dots-octagon" | "dots-square" | "dots-vertical-circle" | "dots-vertical-diamond" | "dots-vertical-hexagon" | "dots-vertical-octagon" | "dots-vertical-square" | "dots-vertical-waves" | "dots-vertical" | "dots-waves" | "dots" | "download" | "drop" | "droplet-off" | "droplet" | "droplets" | "ear-slash" | "ear" | "earth" | "eclipse" | "edit-one" | "edit" | "egg" | "eight-circle" | "eight-diamond" | "eight-hexagon" | "eight-octagon" | "eight-square" | "eight-waves" | "eight" | "elevator" | "envelope-open" | "envelope" | "euro-circle" | "euro-diamond" | "euro-hexagon" | "euro-octagon" | "euro-square" | "euro-waves" | "euro" | "exclude" | "external-link" | "eye-slash" | "eye" | "face-id" | "fat-arrow-down-left" | "fat-arrow-down-right" | "fat-arrow-down" | "fat-arrow-left" | "fat-arrow-right" | "fat-arrow-up-left" | "fat-arrow-up-right" | "fat-arrow-up" | "fat-corner-down-left" | "fat-corner-down-right" | "fat-corner-left-down" | "fat-corner-left-up" | "fat-corner-right-down" | "fat-corner-right-up" | "fat-corner-up-left" | "fat-corner-up-right" | "female" | "file-check" | "file-minus" | "file-plus" | "file-text" | "file-x" | "file" | "film" | "filter-one" | "fine-tune" | "fire" | "five-circle" | "five-diamond" | "five-hexagon" | "five-octagon" | "five-square" | "five-waves" | "five" | "flag-one" | "flag" | "flame-kindling" | "flame" | "flask" | "flower-2" | "flower" | "folder-check" | "folder-heart" | "folder-kanban" | "folder-minus" | "folder-one" | "folder-plus" | "folder-slash" | "folder-two" | "folder-x" | "folder" | "forward-circle" | "forward-diamond" | "forward-hexagon" | "forward-octagon" | "forward-square" | "forward-waves" | "forward" | "four-circle" | "four-diamond" | "four-hexagon" | "four-octagon" | "four-square" | "four-waves" | "four" | "frame" | "funny-circle" | "funny-ghost" | "funny-square" | "gift" | "git-branch" | "git-circle" | "git-commit" | "git-diamond" | "git-diff" | "git-hexagon" | "git-merge" | "git-octagon" | "git-pull-request" | "git-square" | "git-waves" | "glasses" | "globe" | "grid-one" | "grid" | "hand" | "hard-drive" | "hash-circle" | "hash-diamond" | "hash-hexagon" | "hash-octagon" | "hash-square" | "hash-waves" | "hash" | "haze" | "heading-five" | "heading-four" | "heading-one" | "heading-six" | "heading-three" | "heading-two" | "heading" | "headphones" | "heart-broken" | "heart-check" | "heart-circle" | "heart-diamond" | "heart-dot" | "heart-hexagon" | "heart-home" | "heart-minus" | "heart-octagon" | "heart-plus" | "heart-slash" | "heart-snooze" | "heart-square" | "heart-user" | "heart-waves" | "heart-x" | "heart" | "hexagon" | "home-check" | "home-minus" | "home-plus" | "home-smile" | "home-x" | "home" | "image-circle" | "image-rectangle" | "image" | "inbox-archive" | "inbox-check" | "inbox-down" | "inbox-minus" | "inbox-plus" | "inbox-up" | "inbox-x" | "inbox" | "incognito" | "indifferent-circle" | "indifferent-ghost" | "indifferent-square" | "infinity" | "info-circle" | "info-diamond" | "info-hexagon" | "info-octagon" | "info-square" | "info-triangle" | "info-waves" | "info" | "intersect" | "kanban" | "keyboard-brightness-high" | "keyboard-brightness-low" | "keyboard" | "lamp" | "layers-one" | "layers-three" | "layers-two" | "layout" | "leaf" | "leaves" | "letter-a-circle" | "letter-a-diamond" | "letter-a-hexagon" | "letter-a-octagon" | "letter-a-square" | "letter-a-waves" | "letter-a" | "letter-b-circle" | "letter-b-diamond" | "letter-b-hexagon" | "letter-b-octagon" | "letter-b-square" | "letter-b-waves" | "letter-b" | "letter-c-circle" | "letter-c-diamond" | "letter-c-hexagon" | "letter-c-octagon" | "letter-c-square" | "letter-c-waves" | "letter-c" | "letter-d-circle" | "letter-d-diamond" | "letter-d-hexagon" | "letter-d-octagon" | "letter-d-square" | "letter-d-waves" | "letter-d" | "letter-e-circle" | "letter-e-diamond" | "letter-e-hexagon" | "letter-e-octagon" | "letter-e-square" | "letter-e-waves" | "letter-e" | "letter-f-circle" | "letter-f-diamond" | "letter-f-hexagon" | "letter-f-octagon" | "letter-f-square" | "letter-f-waves" | "letter-f" | "letter-g-circle" | "letter-g-diamond" | "letter-g-hexagon" | "letter-g-octagon" | "letter-g-square" | "letter-g-waves" | "letter-g" | "letter-h-circle" | "letter-h-diamond" | "letter-h-hexagon" | "letter-h-octagon" | "letter-h-square" | "letter-h-waves" | "letter-h" | "letter-i-circle" | "letter-i-diamond" | "letter-i-hexagon" | "letter-i-octagon" | "letter-i-square" | "letter-i-waves" | "letter-i" | "letter-j-circle" | "letter-j-diamond" | "letter-j-hexagon" | "letter-j-octagon" | "letter-j-square" | "letter-j-waves" | "letter-j" | "letter-k-circle" | "letter-k-diamond" | "letter-k-hexagon" | "letter-k-octagon" | "letter-k-square" | "letter-k-waves" | "letter-k" | "letter-l-circle" | "letter-l-diamond" | "letter-l-hexagon" | "letter-l-octagon" | "letter-l-square" | "letter-l-waves" | "letter-l" | "letter-m-circle" | "letter-m-diamond" | "letter-m-hexagon" | "letter-m-octagon" | "letter-m-square" | "letter-m-waves" | "letter-m" | "letter-n-circle" | "letter-n-diamond" | "letter-n-hexagon" | "letter-n-octagon" | "letter-n-square" | "letter-n-waves" | "letter-n" | "letter-o-circle" | "letter-o-diamond" | "letter-o-hexagon" | "letter-o-octagon" | "letter-o-square" | "letter-o-waves" | "letter-o" | "letter-p-circle" | "letter-p-diamond" | "letter-p-hexagon" | "letter-p-octagon" | "letter-p-square" | "letter-p-waves" | "letter-p" | "letter-q-circle" | "letter-q-diamond" | "letter-q-hexagon" | "letter-q-octagon" | "letter-q-square" | "letter-q-waves" | "letter-q" | "letter-r-circle" | "letter-r-diamond" | "letter-r-hexagon" | "letter-r-octagon" | "letter-r-square" | "letter-r-waves" | "letter-r" | "letter-s-circle" | "letter-s-diamond" | "letter-s-hexagon" | "letter-s-octagon" | "letter-s-square" | "letter-s-waves" | "letter-s" | "letter-t-circle" | "letter-t-diamond" | "letter-t-hexagon" | "letter-t-octagon" | "letter-t-square" | "letter-t-waves" | "letter-t" | "letter-u-circle" | "letter-u-diamond" | "letter-u-hexagon" | "letter-u-octagon" | "letter-u-square" | "letter-u-waves" | "letter-u" | "letter-v-circle" | "letter-v-diamond" | "letter-v-hexagon" | "letter-v-octagon" | "letter-v-square" | "letter-v-waves" | "letter-v" | "letter-w-circle" | "letter-w-diamond" | "letter-w-hexagon" | "letter-w-octagon" | "letter-w-square" | "letter-w-waves" | "letter-w" | "letter-x-circle" | "letter-x-diamond" | "letter-x-hexagon" | "letter-x-octagon" | "letter-x-square" | "letter-x-waves" | "letter-x" | "letter-y-circle" | "letter-y-diamond" | "letter-y-hexagon" | "letter-y-octagon" | "letter-y-square" | "letter-y-waves" | "letter-y" | "letter-z-circle" | "letter-z-diamond" | "letter-z-hexagon" | "letter-z-octagon" | "letter-z-square" | "letter-z-waves" | "letter-z" | "lightning-off" | "lightning" | "like" | "line-chart-circle" | "line-chart-diamond" | "line-chart-hexagon" | "line-chart-octagon" | "line-chart-square" | "line-chart-waves" | "link-one" | "link-two" | "list-check" | "list-number" | "list" | "location-check" | "location-home" | "location-minus" | "location-plus" | "location-selected" | "location-slash" | "location-snooze" | "location-user" | "location-x" | "lock-circle" | "lock-diamond" | "lock-hexagon" | "lock-keyhole" | "lock-octagon" | "lock-open-keyhole" | "lock-open-password" | "lock-open" | "lock-password" | "lock-square" | "lock-waves" | "lock" | "login" | "logout" | "magnet" | "male" | "mask" | "math-square" | "math" | "maximize-one" | "maximize" | "menu" | "message-check" | "message-dots" | "message-minus" | "message-plus" | "message-reply" | "message-x" | "message" | "microphone-slash" | "microphone" | "minimize-one" | "minimize" | "minus-circle" | "minus-diamond" | "minus-hexagon" | "minus-octagon" | "minus-square" | "minus-waves" | "minus" | "mobile-signal-five" | "mobile-signal-four" | "mobile-signal-one" | "mobile-signal-three" | "mobile-signal-two" | "mobile" | "moon-star" | "moon" | "mountain-snow" | "mountain" | "mouse-pointer" | "move-diagonal-one" | "move-diagonal" | "move-horizontal" | "move-vertical" | "move" | "music-circle" | "music-diamond" | "music-hexagon" | "music-octagon" | "music-square" | "music-waves" | "music" | "myna" | "navigation-one" | "navigation" | "nine-circle" | "nine-diamond" | "nine-hexagon" | "nine-octagon" | "nine-square" | "nine-waves" | "nine" | "notification" | "octagon" | "one-circle" | "one-diamond" | "one-hexagon" | "one-octagon" | "one-square" | "one-waves" | "option" | "package" | "paint" | "panel-bottom-close" | "panel-bottom-inactive" | "panel-bottom-open" | "panel-bottom" | "panel-left-close" | "panel-left-inactive" | "panel-left-open" | "panel-left" | "panel-right-close" | "panel-right-inactive" | "panel-right-open" | "panel-right" | "panel-top-close" | "panel-top-inactive" | "panel-top-open" | "panel-top" | "paperclip" | "parking" | "password" | "pause-circle" | "pause-diamond" | "pause-hexagon" | "pause-octagon" | "pause-square" | "pause-waves" | "pause" | "pen" | "pencil" | "percentage-circle" | "percentage-diamond" | "percentage-hexagon" | "percentage-octagon" | "percentage-square" | "percentage-waves" | "percentage" | "pin" | "pizza" | "planet" | "play-circle" | "play-diamond" | "play-hexagon" | "play-octagon" | "play-square" | "play-waves" | "play" | "plus-circle" | "plus-diamond" | "plus-hexagon" | "plus-octagon" | "plus-square" | "plus-waves" | "plus" | "pokeball" | "power" | "presentation" | "printer" | "puzzle" | "question-circle" | "question-diamond" | "question-hexagon" | "question-octagon" | "question-square" | "question-waves" | "question" | "radio" | "rainbow" | "reception-bell" | "record" | "rectangle-vertical" | "rectangle" | "redo" | "refresh-alt" | "refresh" | "rewind-circle" | "rewind-diamond" | "rewind-hexagon" | "rewind-octagon" | "rewind-square" | "rewind-waves" | "rewind" | "rhombus" | "ribbon" | "rocket" | "room-service" | "rows" | "rss" | "ruler" | "rupee-circle" | "rupee-diamond" | "rupee-hexagon" | "rupee-octagon" | "rupee-square" | "rupee-waves" | "rupee" | "sad-circle" | "sad-ghost" | "sad-square" | "save" | "scan" | "scissors" | "sea-waves" | "search-check" | "search-circle" | "search-diamond" | "search-dot" | "search-hexagon" | "search-home" | "search-minus" | "search-octagon" | "search-plus" | "search-slash" | "search-snooze" | "search-square" | "search-user" | "search-waves" | "search-x" | "select-multiple" | "send" | "servers" | "seven-circle" | "seven-diamond" | "seven-hexagon" | "seven-octagon" | "seven-square" | "seven-waves" | "seven" | "share" | "shell" | "shield-check" | "shield-crossed" | "shield-minus" | "shield-one" | "shield-plus" | "shield-slash" | "shield-two" | "shield-x" | "shield" | "shooting-star" | "shopping-bag" | "shovel" | "shrub" | "shuffle-alt" | "shuffle" | "sidebar-alt" | "sidebar" | "signal-circle" | "signal-diamond" | "signal-hexagon" | "signal-octagon" | "signal-square" | "signal-waves" | "signal" | "six-circle" | "six-diamond" | "six-hexagon" | "six-octagon" | "six-square" | "six-waves" | "six" | "skip-back" | "skip-forward" | "slash-circle" | "slash-diamond" | "slash-hexagon" | "slash-octagon" | "slash-square" | "slash-waves" | "smile-circle" | "smile-ghost" | "smile-square" | "snow" | "snowflake" | "sofa" | "sparkles" | "speaker" | "spinner-one" | "spinner" | "sprout" | "square-chart-gantt" | "square-dashed-kanban" | "square-dashed" | "square-half" | "square-kanban" | "square" | "star" | "stop-circle" | "stop-diamond" | "stop-hexagon" | "stop-octagon" | "stop-square" | "stop-waves" | "stop" | "store" | "subtract" | "sun-dim" | "sun-medium" | "sun-snow" | "sun" | "sunrise" | "sunset" | "support" | "swatches" | "table" | "tablet" | "tag-plus" | "tag" | "tally-five" | "tally-four" | "tally-one" | "tally-three" | "tally-two" | "telephone-call" | "telephone-forward" | "telephone-in" | "telephone-missed" | "telephone-out" | "telephone-slash" | "telephone" | "tent-tree" | "tent" | "terminal" | "text-align-center" | "text-align-left" | "text-align-right" | "text-justify" | "thermometer-snowflake" | "thermometer-sun" | "thermometer" | "three-circle" | "three-diamond" | "three-hexagon" | "three-octagon" | "three-square" | "three-waves" | "three" | "ticket-slash" | "ticket" | "toggle-left" | "toggle-right" | "tool" | "tornado" | "train" | "trash-one" | "trash-two" | "trash" | "tree-deciduous" | "tree-palm" | "tree-pine" | "tree" | "trees" | "trending-down" | "trending-up-down" | "trending-up" | "triangle" | "truck" | "tv" | "two-circle" | "two-diamond" | "two-hexagon" | "two-octagon" | "two-square" | "two-waves" | "two" | "type-bold" | "type-italic" | "type-text" | "type-underline" | "umbrella-off" | "umbrella" | "undo" | "union" | "unlink" | "upload" | "user-check" | "user-circle" | "user-diamond" | "user-hexagon" | "user-minus" | "user-octagon" | "user-plus" | "user-settings" | "user-square" | "user-waves" | "user-x" | "users-group" | "users" | "video-slash" | "video" | "volume-check" | "volume-high" | "volume-low" | "volume-minus" | "volume-none" | "volume-plus" | "volume-slash" | "volume-x" | "watch" | "waves" | "webcam" | "wheel" | "wheelchair" | "wifi-check" | "wifi-low" | "wifi-medium" | "wifi-minus" | "wifi-plus" | "wifi-slash" | "wifi-x" | "wifi" | "wind-arrow-down" | "wind" | "winds" | "wine" | "wink-circle" | "wink-ghost" | "wink-square" | "wrench" | "x-circle" | "x-diamond" | "x-hexagon" | "x-octagon" | "x-square" | "x-triangle" | "x-waves" | "yen-circle" | "yen-diamond" | "yen-hexagon" | "yen-octagon" | "yen-square" | "yen-waves" | "yen" | "zap-off" | "zap" | "zero-circle" | "zero-diamond" | "zero-hexagon" | "zero-octagon" | "zero-square" | "zero-waves" | "zero", string>>;
|
|
7385
|
+
labelExpression: z$1.ZodString;
|
|
7386
|
+
attributes: z$1.ZodDefault<z$1.ZodArray<z$1.ZodType<{
|
|
7387
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7388
|
+
name: string;
|
|
7389
|
+
label: string;
|
|
7390
|
+
required?: boolean | undefined;
|
|
7391
|
+
description?: string | undefined;
|
|
7392
|
+
config?: Record<string, unknown> | undefined;
|
|
7393
|
+
}, unknown, z$1.core.$ZodTypeInternals<{
|
|
7394
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7395
|
+
name: string;
|
|
7396
|
+
label: string;
|
|
7397
|
+
required?: boolean | undefined;
|
|
7398
|
+
description?: string | undefined;
|
|
7399
|
+
config?: Record<string, unknown> | undefined;
|
|
7400
|
+
}, unknown>>>>;
|
|
7401
|
+
}, z$1.core.$strict>>>;
|
|
7402
|
+
attributes: z$1.ZodDefault<z$1.ZodArray<z$1.ZodType<{
|
|
7403
|
+
objectName: string;
|
|
7404
|
+
name: string;
|
|
7405
|
+
label: string;
|
|
7406
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7407
|
+
config?: Record<string, unknown> | undefined;
|
|
7408
|
+
required?: boolean | undefined;
|
|
7409
|
+
description?: string | undefined;
|
|
7410
|
+
}, unknown, z$1.core.$ZodTypeInternals<{
|
|
7411
|
+
objectName: string;
|
|
7412
|
+
name: string;
|
|
7413
|
+
label: string;
|
|
7414
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7415
|
+
config?: Record<string, unknown> | undefined;
|
|
7416
|
+
required?: boolean | undefined;
|
|
7417
|
+
description?: string | undefined;
|
|
7418
|
+
}, unknown>>>>;
|
|
7419
|
+
viewUpdates: z$1.ZodDefault<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
7420
|
+
objectName: z$1.ZodString;
|
|
7421
|
+
viewType: z$1.ZodLiteral<"list">;
|
|
7422
|
+
canonicalConfig: z$1.ZodType<ListViewConfig, unknown, z$1.core.$ZodTypeInternals<ListViewConfig, unknown>>;
|
|
7423
|
+
baselineToken: z$1.ZodOptional<z$1.ZodString>;
|
|
7424
|
+
}, z$1.core.$strict>, z$1.ZodObject<{
|
|
7425
|
+
objectName: z$1.ZodString;
|
|
7426
|
+
viewType: z$1.ZodLiteral<"detail">;
|
|
7427
|
+
canonicalConfig: z$1.ZodType<DetailViewConfig, unknown, z$1.core.$ZodTypeInternals<DetailViewConfig, unknown>>;
|
|
7428
|
+
baselineToken: z$1.ZodOptional<z$1.ZodString>;
|
|
7429
|
+
}, z$1.core.$strict>], "viewType">>>;
|
|
7430
|
+
}, z$1.core.$strict>>;
|
|
7431
|
+
destructive: z$1.ZodDefault<z$1.ZodObject<{
|
|
7432
|
+
attributeRemovals: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7433
|
+
objectName: z$1.ZodString;
|
|
7434
|
+
attributeName: z$1.ZodString;
|
|
7435
|
+
}, z$1.core.$strict>>>;
|
|
7436
|
+
objectRemovals: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7437
|
+
objectName: z$1.ZodString;
|
|
7438
|
+
}, z$1.core.$strict>>>;
|
|
7439
|
+
renames: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7440
|
+
objectName: z$1.ZodString;
|
|
7441
|
+
from: z$1.ZodString;
|
|
7442
|
+
to: z$1.ZodString;
|
|
7443
|
+
}, z$1.core.$strict>>>;
|
|
7444
|
+
}, z$1.core.$strict>>;
|
|
7445
|
+
};
|
|
7446
|
+
};
|
|
7447
|
+
declare const persistedSchemaPlanSchema: z$1.ZodPreprocess<z$1.ZodObject<{
|
|
7448
|
+
schemaPlanVersion: z$1.ZodLiteral<2>;
|
|
7449
|
+
summary: z$1.ZodString;
|
|
7450
|
+
additive: z$1.ZodDefault<z$1.ZodObject<{
|
|
7451
|
+
objects: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7452
|
+
name: z$1.ZodString;
|
|
7453
|
+
label: z$1.ZodString;
|
|
7454
|
+
pluralLabel: z$1.ZodOptional<z$1.ZodString>;
|
|
7455
|
+
description: z$1.ZodOptional<z$1.ZodString>;
|
|
7456
|
+
icon: z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<"path" | "one" | "location" | "user" | "search" | "repeat" | "anchor" | "link" | "at" | "sort" | "map" | "filter" | "target" | "key" | "label" | "x" | "a-arrow-down" | "a-arrow-up" | "academic-hat" | "accessibility" | "activity-square" | "activity" | "add-queue" | "aeroplane" | "air-conditioner" | "airplay" | "airpods" | "alarm-check" | "alarm-minus" | "alarm-plus" | "alarm-smoke" | "alarm-snooze" | "alarm-x" | "alarm" | "album" | "align-bottom" | "align-horizontal" | "align-left" | "align-right" | "align-top" | "align-vertical" | "alt" | "ambulance" | "ampersand-square" | "ampersand" | "ampersands" | "angry-circle" | "angry-ghost" | "angry-square" | "annoyed-circle" | "annoyed-ghost" | "annoyed-square" | "aperture" | "api" | "ar" | "archive" | "arrow-diagonal-one" | "arrow-diagonal-two" | "arrow-down-circle" | "arrow-down-left-circle" | "arrow-down-left-square" | "arrow-down-left-waves" | "arrow-down-left" | "arrow-down-right-circle" | "arrow-down-right-square" | "arrow-down-right-waves" | "arrow-down-right" | "arrow-down-square" | "arrow-down-waves" | "arrow-down" | "arrow-left-circle" | "arrow-left-right" | "arrow-left-square" | "arrow-left-waves" | "arrow-left" | "arrow-long-down-left" | "arrow-long-down-right" | "arrow-long-down" | "arrow-long-left" | "arrow-long-right" | "arrow-long-up-left" | "arrow-long-up-right" | "arrow-long-up" | "arrow-right-circle" | "arrow-right-square" | "arrow-right-waves" | "arrow-right" | "arrow-up-circle" | "arrow-up-down" | "arrow-up-left-circle" | "arrow-up-left-square" | "arrow-up-left-waves" | "arrow-up-left" | "arrow-up-right-circle" | "arrow-up-right-square" | "arrow-up-right-waves" | "arrow-up-right" | "arrow-up-square" | "arrow-up-waves" | "arrow-up" | "asterisk-circle" | "asterisk-diamond" | "asterisk-hexagon" | "asterisk-octagon" | "asterisk-square" | "asterisk-waves" | "atom" | "baby" | "backpack" | "badge" | "baggage-claim" | "ban" | "bank" | "baseball" | "bath" | "battery-charging-four" | "battery-charging-one" | "battery-charging-three" | "battery-charging-two" | "battery-charging" | "battery-check" | "battery-empty" | "battery-full" | "battery-minus" | "battery-plus" | "battery-x" | "bell-check" | "bell-home" | "bell-minus" | "bell-on" | "bell-plus" | "bell-slash" | "bell-snooze" | "bell-user" | "bell-x" | "bell" | "binoculars" | "bitcoin-circle" | "bitcoin-diamond" | "bitcoin-hexagon" | "bitcoin-octagon" | "bitcoin-square" | "bitcoin-waves" | "bitcoin" | "bluetooth" | "boat" | "book-check" | "book-dot" | "book-home" | "book-image" | "book-minus" | "book-open" | "book-plus" | "book-slash" | "book-snooze" | "book-user" | "book-x" | "book" | "bookmark-check" | "bookmark-dot" | "bookmark-home" | "bookmark-minus" | "bookmark-plus" | "bookmark-slash" | "bookmark-snooze" | "bookmark-user" | "bookmark-x" | "bookmark" | "bounding-box" | "bowl" | "box" | "brand-chrome" | "brand-codepen" | "brand-codesandbox" | "brand-dribbble" | "brand-facebook" | "brand-figma" | "brand-framer" | "brand-github" | "brand-gitlab" | "brand-google" | "brand-instagram" | "brand-linkedin" | "brand-pinterest" | "brand-pocket" | "brand-slack" | "brand-spotify" | "brand-telegram" | "brand-threads" | "brand-trello" | "brand-twitch" | "brand-twitter" | "brand-x" | "brand-youtube" | "briefcase-conveyor-belt" | "briefcase" | "brightness-high" | "brightness-low" | "bubbles" | "building-one" | "building" | "cable-car" | "cake" | "calendar-check" | "calendar-down" | "calendar-minus" | "calendar-plus" | "calendar-slash" | "calendar-up" | "calendar-x" | "calendar" | "camera-slash" | "camera" | "campfire" | "cannabis" | "caravan" | "cart-check" | "cart-minus" | "cart-plus" | "cart-x" | "cart" | "cast-screen" | "center-focus" | "chart-area" | "chart-bar-big" | "chart-bar-decreasing" | "chart-bar-increasing" | "chart-bar-one" | "chart-bar-stacked" | "chart-bar" | "chart-bubble" | "chart-candlestick" | "chart-column-big" | "chart-column-decreasing" | "chart-column-increasing" | "chart-column-stacked" | "chart-column" | "chart-gantt" | "chart-graph" | "chart-line" | "chart-network" | "chart-no-axes-column-decreasing" | "chart-no-axes-column-increasing" | "chart-no-axes-column" | "chart-no-axes-combined" | "chart-no-axes-gantt" | "chart-pie-one" | "chart-pie-two" | "chart-pie" | "chart-scatter" | "chart-spline" | "chat-check" | "chat-dots" | "chat-messages" | "chat-minus" | "chat-plus" | "chat-x" | "chat" | "check-circle-one" | "check-circle" | "check-diamond" | "check-hexagon" | "check-octagon" | "check-square-one" | "check-square" | "check-waves" | "check" | "chevron-double-down-left" | "chevron-double-down-right" | "chevron-double-down" | "chevron-double-left" | "chevron-double-right" | "chevron-double-up-left" | "chevron-double-up-right" | "chevron-double-up" | "chevron-down-circle" | "chevron-down-left-circle" | "chevron-down-left-square" | "chevron-down-left-waves" | "chevron-down-left" | "chevron-down-right-circle" | "chevron-down-right-square" | "chevron-down-right-waves" | "chevron-down-right" | "chevron-down-square" | "chevron-down-waves" | "chevron-down" | "chevron-left-circle" | "chevron-left-square" | "chevron-left-waves" | "chevron-left" | "chevron-right-circle" | "chevron-right-square" | "chevron-right-waves" | "chevron-right" | "chevron-up-circle" | "chevron-up-down" | "chevron-up-left-circle" | "chevron-up-left-square" | "chevron-up-left-waves" | "chevron-up-left" | "chevron-up-right-circle" | "chevron-up-right-square" | "chevron-up-right-waves" | "chevron-up-right" | "chevron-up-square" | "chevron-up-waves" | "chevron-up" | "chip" | "cigarette-off" | "cigarette" | "circle-dashed" | "circle-half-circle" | "circle-half" | "circle-notch" | "circle" | "click" | "clipboard" | "clock-circle" | "clock-diamond" | "clock-eight" | "clock-eleven" | "clock-five" | "clock-four" | "clock-hand" | "clock-hexagon" | "clock-nine" | "clock-octagon" | "clock-one" | "clock-seven" | "clock-six" | "clock-square" | "clock-ten" | "clock-three" | "clock-twelve" | "clock-two" | "clock-waves" | "cloud-download" | "cloud-drizzle" | "cloud-fog" | "cloud-hail" | "cloud-lightning" | "cloud-moon-rain" | "cloud-moon" | "cloud-off" | "cloud-rain-wind" | "cloud-rain" | "cloud-snow" | "cloud-sun-rain" | "cloud-sun" | "cloud-upload" | "cloud" | "cloudy" | "cocktail" | "code-circle" | "code-diamond" | "code-hexagon" | "code-octagon" | "code-square" | "code-waves" | "code" | "coffee" | "cog-four" | "cog-one" | "cog-three" | "cog-two" | "cog" | "columns" | "command" | "compass" | "components" | "confetti" | "config-vertical" | "config" | "contactless-circle" | "contactless" | "controller" | "cookie" | "copy" | "copyleft" | "copyright-slash" | "copyright" | "corner-down-left" | "corner-down-right" | "corner-left-down" | "corner-left-up" | "corner-right-down" | "corner-right-up" | "corner-up-left" | "corner-up-right" | "credit-card-check" | "credit-card-minus" | "credit-card-plus" | "credit-card-x" | "credit-card" | "croissant" | "crop" | "crosshair" | "cupcake" | "danger-circle" | "danger-diamond" | "danger-hexagon" | "danger-octagon" | "danger-square" | "danger-triangle" | "danger-waves" | "danger" | "database" | "daze-circle" | "daze-ghost" | "daze-square" | "delete" | "desktop" | "diamond" | "dice-five" | "dice-four" | "dice-one" | "dice-six" | "dice-three" | "dice-two" | "dislike" | "divide" | "dollar-circle" | "dollar-diamond" | "dollar-hexagon" | "dollar-octagon" | "dollar-square" | "dollar-waves" | "dollar" | "door-closed-locked" | "door-closed" | "door-open" | "dots-circle" | "dots-diamond" | "dots-hexagon" | "dots-octagon" | "dots-square" | "dots-vertical-circle" | "dots-vertical-diamond" | "dots-vertical-hexagon" | "dots-vertical-octagon" | "dots-vertical-square" | "dots-vertical-waves" | "dots-vertical" | "dots-waves" | "dots" | "download" | "drop" | "droplet-off" | "droplet" | "droplets" | "ear-slash" | "ear" | "earth" | "eclipse" | "edit-one" | "edit" | "egg" | "eight-circle" | "eight-diamond" | "eight-hexagon" | "eight-octagon" | "eight-square" | "eight-waves" | "eight" | "elevator" | "envelope-open" | "envelope" | "euro-circle" | "euro-diamond" | "euro-hexagon" | "euro-octagon" | "euro-square" | "euro-waves" | "euro" | "exclude" | "external-link" | "eye-slash" | "eye" | "face-id" | "fat-arrow-down-left" | "fat-arrow-down-right" | "fat-arrow-down" | "fat-arrow-left" | "fat-arrow-right" | "fat-arrow-up-left" | "fat-arrow-up-right" | "fat-arrow-up" | "fat-corner-down-left" | "fat-corner-down-right" | "fat-corner-left-down" | "fat-corner-left-up" | "fat-corner-right-down" | "fat-corner-right-up" | "fat-corner-up-left" | "fat-corner-up-right" | "female" | "file-check" | "file-minus" | "file-plus" | "file-text" | "file-x" | "file" | "film" | "filter-one" | "fine-tune" | "fire" | "five-circle" | "five-diamond" | "five-hexagon" | "five-octagon" | "five-square" | "five-waves" | "five" | "flag-one" | "flag" | "flame-kindling" | "flame" | "flask" | "flower-2" | "flower" | "folder-check" | "folder-heart" | "folder-kanban" | "folder-minus" | "folder-one" | "folder-plus" | "folder-slash" | "folder-two" | "folder-x" | "folder" | "forward-circle" | "forward-diamond" | "forward-hexagon" | "forward-octagon" | "forward-square" | "forward-waves" | "forward" | "four-circle" | "four-diamond" | "four-hexagon" | "four-octagon" | "four-square" | "four-waves" | "four" | "frame" | "funny-circle" | "funny-ghost" | "funny-square" | "gift" | "git-branch" | "git-circle" | "git-commit" | "git-diamond" | "git-diff" | "git-hexagon" | "git-merge" | "git-octagon" | "git-pull-request" | "git-square" | "git-waves" | "glasses" | "globe" | "grid-one" | "grid" | "hand" | "hard-drive" | "hash-circle" | "hash-diamond" | "hash-hexagon" | "hash-octagon" | "hash-square" | "hash-waves" | "hash" | "haze" | "heading-five" | "heading-four" | "heading-one" | "heading-six" | "heading-three" | "heading-two" | "heading" | "headphones" | "heart-broken" | "heart-check" | "heart-circle" | "heart-diamond" | "heart-dot" | "heart-hexagon" | "heart-home" | "heart-minus" | "heart-octagon" | "heart-plus" | "heart-slash" | "heart-snooze" | "heart-square" | "heart-user" | "heart-waves" | "heart-x" | "heart" | "hexagon" | "home-check" | "home-minus" | "home-plus" | "home-smile" | "home-x" | "home" | "image-circle" | "image-rectangle" | "image" | "inbox-archive" | "inbox-check" | "inbox-down" | "inbox-minus" | "inbox-plus" | "inbox-up" | "inbox-x" | "inbox" | "incognito" | "indifferent-circle" | "indifferent-ghost" | "indifferent-square" | "infinity" | "info-circle" | "info-diamond" | "info-hexagon" | "info-octagon" | "info-square" | "info-triangle" | "info-waves" | "info" | "intersect" | "kanban" | "keyboard-brightness-high" | "keyboard-brightness-low" | "keyboard" | "lamp" | "layers-one" | "layers-three" | "layers-two" | "layout" | "leaf" | "leaves" | "letter-a-circle" | "letter-a-diamond" | "letter-a-hexagon" | "letter-a-octagon" | "letter-a-square" | "letter-a-waves" | "letter-a" | "letter-b-circle" | "letter-b-diamond" | "letter-b-hexagon" | "letter-b-octagon" | "letter-b-square" | "letter-b-waves" | "letter-b" | "letter-c-circle" | "letter-c-diamond" | "letter-c-hexagon" | "letter-c-octagon" | "letter-c-square" | "letter-c-waves" | "letter-c" | "letter-d-circle" | "letter-d-diamond" | "letter-d-hexagon" | "letter-d-octagon" | "letter-d-square" | "letter-d-waves" | "letter-d" | "letter-e-circle" | "letter-e-diamond" | "letter-e-hexagon" | "letter-e-octagon" | "letter-e-square" | "letter-e-waves" | "letter-e" | "letter-f-circle" | "letter-f-diamond" | "letter-f-hexagon" | "letter-f-octagon" | "letter-f-square" | "letter-f-waves" | "letter-f" | "letter-g-circle" | "letter-g-diamond" | "letter-g-hexagon" | "letter-g-octagon" | "letter-g-square" | "letter-g-waves" | "letter-g" | "letter-h-circle" | "letter-h-diamond" | "letter-h-hexagon" | "letter-h-octagon" | "letter-h-square" | "letter-h-waves" | "letter-h" | "letter-i-circle" | "letter-i-diamond" | "letter-i-hexagon" | "letter-i-octagon" | "letter-i-square" | "letter-i-waves" | "letter-i" | "letter-j-circle" | "letter-j-diamond" | "letter-j-hexagon" | "letter-j-octagon" | "letter-j-square" | "letter-j-waves" | "letter-j" | "letter-k-circle" | "letter-k-diamond" | "letter-k-hexagon" | "letter-k-octagon" | "letter-k-square" | "letter-k-waves" | "letter-k" | "letter-l-circle" | "letter-l-diamond" | "letter-l-hexagon" | "letter-l-octagon" | "letter-l-square" | "letter-l-waves" | "letter-l" | "letter-m-circle" | "letter-m-diamond" | "letter-m-hexagon" | "letter-m-octagon" | "letter-m-square" | "letter-m-waves" | "letter-m" | "letter-n-circle" | "letter-n-diamond" | "letter-n-hexagon" | "letter-n-octagon" | "letter-n-square" | "letter-n-waves" | "letter-n" | "letter-o-circle" | "letter-o-diamond" | "letter-o-hexagon" | "letter-o-octagon" | "letter-o-square" | "letter-o-waves" | "letter-o" | "letter-p-circle" | "letter-p-diamond" | "letter-p-hexagon" | "letter-p-octagon" | "letter-p-square" | "letter-p-waves" | "letter-p" | "letter-q-circle" | "letter-q-diamond" | "letter-q-hexagon" | "letter-q-octagon" | "letter-q-square" | "letter-q-waves" | "letter-q" | "letter-r-circle" | "letter-r-diamond" | "letter-r-hexagon" | "letter-r-octagon" | "letter-r-square" | "letter-r-waves" | "letter-r" | "letter-s-circle" | "letter-s-diamond" | "letter-s-hexagon" | "letter-s-octagon" | "letter-s-square" | "letter-s-waves" | "letter-s" | "letter-t-circle" | "letter-t-diamond" | "letter-t-hexagon" | "letter-t-octagon" | "letter-t-square" | "letter-t-waves" | "letter-t" | "letter-u-circle" | "letter-u-diamond" | "letter-u-hexagon" | "letter-u-octagon" | "letter-u-square" | "letter-u-waves" | "letter-u" | "letter-v-circle" | "letter-v-diamond" | "letter-v-hexagon" | "letter-v-octagon" | "letter-v-square" | "letter-v-waves" | "letter-v" | "letter-w-circle" | "letter-w-diamond" | "letter-w-hexagon" | "letter-w-octagon" | "letter-w-square" | "letter-w-waves" | "letter-w" | "letter-x-circle" | "letter-x-diamond" | "letter-x-hexagon" | "letter-x-octagon" | "letter-x-square" | "letter-x-waves" | "letter-x" | "letter-y-circle" | "letter-y-diamond" | "letter-y-hexagon" | "letter-y-octagon" | "letter-y-square" | "letter-y-waves" | "letter-y" | "letter-z-circle" | "letter-z-diamond" | "letter-z-hexagon" | "letter-z-octagon" | "letter-z-square" | "letter-z-waves" | "letter-z" | "lightning-off" | "lightning" | "like" | "line-chart-circle" | "line-chart-diamond" | "line-chart-hexagon" | "line-chart-octagon" | "line-chart-square" | "line-chart-waves" | "link-one" | "link-two" | "list-check" | "list-number" | "list" | "location-check" | "location-home" | "location-minus" | "location-plus" | "location-selected" | "location-slash" | "location-snooze" | "location-user" | "location-x" | "lock-circle" | "lock-diamond" | "lock-hexagon" | "lock-keyhole" | "lock-octagon" | "lock-open-keyhole" | "lock-open-password" | "lock-open" | "lock-password" | "lock-square" | "lock-waves" | "lock" | "login" | "logout" | "magnet" | "male" | "mask" | "math-square" | "math" | "maximize-one" | "maximize" | "menu" | "message-check" | "message-dots" | "message-minus" | "message-plus" | "message-reply" | "message-x" | "message" | "microphone-slash" | "microphone" | "minimize-one" | "minimize" | "minus-circle" | "minus-diamond" | "minus-hexagon" | "minus-octagon" | "minus-square" | "minus-waves" | "minus" | "mobile-signal-five" | "mobile-signal-four" | "mobile-signal-one" | "mobile-signal-three" | "mobile-signal-two" | "mobile" | "moon-star" | "moon" | "mountain-snow" | "mountain" | "mouse-pointer" | "move-diagonal-one" | "move-diagonal" | "move-horizontal" | "move-vertical" | "move" | "music-circle" | "music-diamond" | "music-hexagon" | "music-octagon" | "music-square" | "music-waves" | "music" | "myna" | "navigation-one" | "navigation" | "nine-circle" | "nine-diamond" | "nine-hexagon" | "nine-octagon" | "nine-square" | "nine-waves" | "nine" | "notification" | "octagon" | "one-circle" | "one-diamond" | "one-hexagon" | "one-octagon" | "one-square" | "one-waves" | "option" | "package" | "paint" | "panel-bottom-close" | "panel-bottom-inactive" | "panel-bottom-open" | "panel-bottom" | "panel-left-close" | "panel-left-inactive" | "panel-left-open" | "panel-left" | "panel-right-close" | "panel-right-inactive" | "panel-right-open" | "panel-right" | "panel-top-close" | "panel-top-inactive" | "panel-top-open" | "panel-top" | "paperclip" | "parking" | "password" | "pause-circle" | "pause-diamond" | "pause-hexagon" | "pause-octagon" | "pause-square" | "pause-waves" | "pause" | "pen" | "pencil" | "percentage-circle" | "percentage-diamond" | "percentage-hexagon" | "percentage-octagon" | "percentage-square" | "percentage-waves" | "percentage" | "pin" | "pizza" | "planet" | "play-circle" | "play-diamond" | "play-hexagon" | "play-octagon" | "play-square" | "play-waves" | "play" | "plus-circle" | "plus-diamond" | "plus-hexagon" | "plus-octagon" | "plus-square" | "plus-waves" | "plus" | "pokeball" | "power" | "presentation" | "printer" | "puzzle" | "question-circle" | "question-diamond" | "question-hexagon" | "question-octagon" | "question-square" | "question-waves" | "question" | "radio" | "rainbow" | "reception-bell" | "record" | "rectangle-vertical" | "rectangle" | "redo" | "refresh-alt" | "refresh" | "rewind-circle" | "rewind-diamond" | "rewind-hexagon" | "rewind-octagon" | "rewind-square" | "rewind-waves" | "rewind" | "rhombus" | "ribbon" | "rocket" | "room-service" | "rows" | "rss" | "ruler" | "rupee-circle" | "rupee-diamond" | "rupee-hexagon" | "rupee-octagon" | "rupee-square" | "rupee-waves" | "rupee" | "sad-circle" | "sad-ghost" | "sad-square" | "save" | "scan" | "scissors" | "sea-waves" | "search-check" | "search-circle" | "search-diamond" | "search-dot" | "search-hexagon" | "search-home" | "search-minus" | "search-octagon" | "search-plus" | "search-slash" | "search-snooze" | "search-square" | "search-user" | "search-waves" | "search-x" | "select-multiple" | "send" | "servers" | "seven-circle" | "seven-diamond" | "seven-hexagon" | "seven-octagon" | "seven-square" | "seven-waves" | "seven" | "share" | "shell" | "shield-check" | "shield-crossed" | "shield-minus" | "shield-one" | "shield-plus" | "shield-slash" | "shield-two" | "shield-x" | "shield" | "shooting-star" | "shopping-bag" | "shovel" | "shrub" | "shuffle-alt" | "shuffle" | "sidebar-alt" | "sidebar" | "signal-circle" | "signal-diamond" | "signal-hexagon" | "signal-octagon" | "signal-square" | "signal-waves" | "signal" | "six-circle" | "six-diamond" | "six-hexagon" | "six-octagon" | "six-square" | "six-waves" | "six" | "skip-back" | "skip-forward" | "slash-circle" | "slash-diamond" | "slash-hexagon" | "slash-octagon" | "slash-square" | "slash-waves" | "smile-circle" | "smile-ghost" | "smile-square" | "snow" | "snowflake" | "sofa" | "sparkles" | "speaker" | "spinner-one" | "spinner" | "sprout" | "square-chart-gantt" | "square-dashed-kanban" | "square-dashed" | "square-half" | "square-kanban" | "square" | "star" | "stop-circle" | "stop-diamond" | "stop-hexagon" | "stop-octagon" | "stop-square" | "stop-waves" | "stop" | "store" | "subtract" | "sun-dim" | "sun-medium" | "sun-snow" | "sun" | "sunrise" | "sunset" | "support" | "swatches" | "table" | "tablet" | "tag-plus" | "tag" | "tally-five" | "tally-four" | "tally-one" | "tally-three" | "tally-two" | "telephone-call" | "telephone-forward" | "telephone-in" | "telephone-missed" | "telephone-out" | "telephone-slash" | "telephone" | "tent-tree" | "tent" | "terminal" | "text-align-center" | "text-align-left" | "text-align-right" | "text-justify" | "thermometer-snowflake" | "thermometer-sun" | "thermometer" | "three-circle" | "three-diamond" | "three-hexagon" | "three-octagon" | "three-square" | "three-waves" | "three" | "ticket-slash" | "ticket" | "toggle-left" | "toggle-right" | "tool" | "tornado" | "train" | "trash-one" | "trash-two" | "trash" | "tree-deciduous" | "tree-palm" | "tree-pine" | "tree" | "trees" | "trending-down" | "trending-up-down" | "trending-up" | "triangle" | "truck" | "tv" | "two-circle" | "two-diamond" | "two-hexagon" | "two-octagon" | "two-square" | "two-waves" | "two" | "type-bold" | "type-italic" | "type-text" | "type-underline" | "umbrella-off" | "umbrella" | "undo" | "union" | "unlink" | "upload" | "user-check" | "user-circle" | "user-diamond" | "user-hexagon" | "user-minus" | "user-octagon" | "user-plus" | "user-settings" | "user-square" | "user-waves" | "user-x" | "users-group" | "users" | "video-slash" | "video" | "volume-check" | "volume-high" | "volume-low" | "volume-minus" | "volume-none" | "volume-plus" | "volume-slash" | "volume-x" | "watch" | "waves" | "webcam" | "wheel" | "wheelchair" | "wifi-check" | "wifi-low" | "wifi-medium" | "wifi-minus" | "wifi-plus" | "wifi-slash" | "wifi-x" | "wifi" | "wind-arrow-down" | "wind" | "winds" | "wine" | "wink-circle" | "wink-ghost" | "wink-square" | "wrench" | "x-circle" | "x-diamond" | "x-hexagon" | "x-octagon" | "x-square" | "x-triangle" | "x-waves" | "yen-circle" | "yen-diamond" | "yen-hexagon" | "yen-octagon" | "yen-square" | "yen-waves" | "yen" | "zap-off" | "zap" | "zero-circle" | "zero-diamond" | "zero-hexagon" | "zero-octagon" | "zero-square" | "zero-waves" | "zero", string>>;
|
|
7457
|
+
labelExpression: z$1.ZodString;
|
|
7458
|
+
attributes: z$1.ZodDefault<z$1.ZodArray<z$1.ZodType<{
|
|
7459
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7460
|
+
name: string;
|
|
7461
|
+
label: string;
|
|
7462
|
+
required?: boolean | undefined;
|
|
7463
|
+
description?: string | undefined;
|
|
7464
|
+
config?: Record<string, unknown> | undefined;
|
|
7465
|
+
}, unknown, z$1.core.$ZodTypeInternals<{
|
|
7466
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7467
|
+
name: string;
|
|
7468
|
+
label: string;
|
|
7469
|
+
required?: boolean | undefined;
|
|
7470
|
+
description?: string | undefined;
|
|
7471
|
+
config?: Record<string, unknown> | undefined;
|
|
7472
|
+
}, unknown>>>>;
|
|
7473
|
+
}, z$1.core.$strict>>>;
|
|
7474
|
+
attributes: z$1.ZodDefault<z$1.ZodArray<z$1.ZodType<{
|
|
7475
|
+
objectName: string;
|
|
7476
|
+
name: string;
|
|
7477
|
+
label: string;
|
|
7478
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7479
|
+
config?: Record<string, unknown> | undefined;
|
|
7480
|
+
required?: boolean | undefined;
|
|
7481
|
+
description?: string | undefined;
|
|
7482
|
+
}, unknown, z$1.core.$ZodTypeInternals<{
|
|
7483
|
+
objectName: string;
|
|
7484
|
+
name: string;
|
|
7485
|
+
label: string;
|
|
7486
|
+
type: "number" | "text" | "date" | "select" | "multiselect" | "formula" | "rollup" | "relation" | "richtext" | "checkbox" | "phone" | "currency" | "status" | "location" | "user" | "document";
|
|
7487
|
+
config?: Record<string, unknown> | undefined;
|
|
7488
|
+
required?: boolean | undefined;
|
|
7489
|
+
description?: string | undefined;
|
|
7490
|
+
}, unknown>>>>;
|
|
7491
|
+
viewUpdates: z$1.ZodDefault<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{
|
|
7492
|
+
baseConfigHash: z$1.ZodNullable<z$1.ZodString>;
|
|
7493
|
+
targetConfigHash: z$1.ZodString;
|
|
7494
|
+
baselineOrigin: z$1.ZodEnum<{
|
|
7495
|
+
persisted: "persisted";
|
|
7496
|
+
generated: "generated";
|
|
7497
|
+
absent: "absent";
|
|
7498
|
+
}>;
|
|
7499
|
+
objectName: z$1.ZodString;
|
|
7500
|
+
viewType: z$1.ZodLiteral<"list">;
|
|
7501
|
+
canonicalConfig: z$1.ZodType<ListViewConfig, unknown, z$1.core.$ZodTypeInternals<ListViewConfig, unknown>>;
|
|
7502
|
+
}, z$1.core.$strict>, z$1.ZodObject<{
|
|
7503
|
+
baseConfigHash: z$1.ZodNullable<z$1.ZodString>;
|
|
7504
|
+
targetConfigHash: z$1.ZodString;
|
|
7505
|
+
baselineOrigin: z$1.ZodEnum<{
|
|
7506
|
+
persisted: "persisted";
|
|
7507
|
+
generated: "generated";
|
|
7508
|
+
absent: "absent";
|
|
7509
|
+
}>;
|
|
7510
|
+
objectName: z$1.ZodString;
|
|
7511
|
+
viewType: z$1.ZodLiteral<"detail">;
|
|
7512
|
+
canonicalConfig: z$1.ZodType<DetailViewConfig, unknown, z$1.core.$ZodTypeInternals<DetailViewConfig, unknown>>;
|
|
7513
|
+
}, z$1.core.$strict>], "viewType">>>;
|
|
7514
|
+
}, z$1.core.$strict>>;
|
|
7515
|
+
destructive: z$1.ZodDefault<z$1.ZodObject<{
|
|
7516
|
+
attributeRemovals: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7517
|
+
objectName: z$1.ZodString;
|
|
7518
|
+
attributeName: z$1.ZodString;
|
|
7519
|
+
}, z$1.core.$strict>>>;
|
|
7520
|
+
objectRemovals: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7521
|
+
objectName: z$1.ZodString;
|
|
7522
|
+
}, z$1.core.$strict>>>;
|
|
7523
|
+
renames: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{
|
|
7524
|
+
objectName: z$1.ZodString;
|
|
7525
|
+
from: z$1.ZodString;
|
|
7526
|
+
to: z$1.ZodString;
|
|
7527
|
+
}, z$1.core.$strict>>>;
|
|
7528
|
+
}, z$1.core.$strict>>;
|
|
7529
|
+
}, z$1.core.$strict>>;
|
|
7530
|
+
/** Public parser-derived proposal types; consumers do not need to restate Zod defaults. */
|
|
7531
|
+
type SchemaPlanProposalInput = z$1.input<typeof structuralSchemaPlanSchema>;
|
|
7532
|
+
type ParsedSchemaPlanProposal = z$1.output<typeof schemaPlanSchema>;
|
|
7533
|
+
type ParsedPersistedSchemaPlan = z$1.output<typeof persistedSchemaPlanSchema>;
|
|
7534
|
+
|
|
7535
|
+
export { type AIGenerationInputMap, type AIGenerationResult, type AIGenerationType, type AIGenerationUsage, ALLOWED_PROPERTY_TYPES, ALL_SYSTEM_RESOURCES, ATTRIBUTE_FILTER_OPERATORS, AUDIT_ACTIONS, AUDIT_RESOURCE_TYPES, type AcceptsCandidate, Action, ActivityTabConfig, type Actor, type ActorRoleAssignment, type ActorStatus, type ActorType, type AddSharedMailboxInput, AgentApprovalPolicy, AgentBlueprint, AgentBuilder, type AgentBuilderConfig, AgentExecutionConfig, AgentSchedule, type AgentSessionPatchLiveEvent, AgentTriggerBlueprint, type AgentUnreadPatchLiveEvent, type ApiKey, type ApiKeyAuthContext, type ApiKeyPermission, type ApiKeyWithSecret, type AssignActorRoleInput, Attribute, type AttributeAgentCapabilities, type AttributeAuthoringCapabilities, type AttributeCapabilities, type AttributeCardinality, type AttributeDefaultValueCapability, type AttributeExchangeCapabilities, AttributeGroupField, type AttributeLifecycleCapabilities, type AttributeLike, type AttributePolymorphicCapability, type AttributePresentationCapabilities, type AttributeQueryCapabilities, type AttributeRequiredCapability, type AttributeStorageCapabilities, type AttributeStorageMode, AttributeType, type AuditAction, type AuditActorType, type AuditChange, type AuditListOptions, type AuditLogEntry, type AuditResourceType, type AuditServiceOptions, type AuditSortField, type AuthorizedGlobalSearchResult, type AuthorizedRecordSearchResult, type AuthorizedSearchPage, BEHAVIOR_PROPERTIES, BROWSER_PREVIEW_STATUSES, BYTE_UNIT_LABELS, BilateralConfig, type BoundingBox, type BrowserPreviewDescriptor, type BrowserPreviewStatus, type BrowserPreviewUpdatedLiveEvent, type BuilderConfig, type ByteMagnitude, COMPUTED_FUNCTIONS, COMPUTED_FUNCTION_METADATA, COMPUTED_FUNCTION_NAMES, CONNECTOR_CALLBACK_PARAM, type ChannelRevokedLiveEvent, CheckboxAttribute, type CollectionPage, type CollectionRequest, type CollectionResponse, type CompileComputedFormulaInput, type ComputedCompileAttribute, type ComputedCompileObject, type ComputedCompileSchema, ComputedDependency, type ComputedDependencyGraphNode, ComputedFormulaAstNode, ComputedFormulaCompileError, type ComputedFormulaResult, type ComputedFunctionCategory, type ComputedFunctionMetadata, type ComputedFunctionName, type ComputedFunctionSignature, ComputedOptionsSource, ComputedPlan, ComputedReturnType, ComputedValueType, ConfigOverrides, type ConnectionStatus, type ConnectionStatusId, type ConnectionView, type ConnectorCallbackStatusValue, type ConnectorProviderId, type ConnectorScope, type ContinuationPage, type ConversationRenamedLiveEvent, type CountMode, type CreateActorInput, type CreateApiKeyInput, type CreateAuditLogInput, type CreateDBAttribute, type CreateDBForm, type CreateDBFormSubmission, type CreateDBObject, type CreateDBView, type CreateDBViewOverlay, CreateMode, type CreateNotificationInput, type CreateNotificationRecipientInput, type CreateObjectRecord, type CreateReflexInput, type CreateReflexVersionInput, type CreateUserProfile, Currency, CurrencyAttribute, type CustomAttributeValue, type CustomObjectInfo, CustomTabConfig, type DBAttribute, type DBForm, type DBFormSubmission, type DBObject, type DBView, type DBViewOverlay, type DBViewSyncResolution, DB_COLUMN_FIELDS, DEFAULT_AGENT_EXECUTION_CONFIG, DEFAULT_ROLES, DEFAULT_ROLE_DESCRIPTIONS, DEFAULT_ROLE_LABELS, DEFAULT_ROLE_PERMISSIONS, DOCUMENT_SYSTEM_ATTRIBUTES, DateAttribute, DateRangeValue, type DefaultRoleName, type DeletedMode, DetailViewBuilder, DetailViewConfig, DetailViewDefinition, DocumentAttribute, DocumentLayout, DocumentsTabConfig, type DomainEvent, type DriftAttributeInfo, DynamicValue, type DynamicValueResolver, EMPTY_VALUE_PLACEHOLDER, ESTIMATED_COUNT_CAP, type Eager, type EmailAttachmentMeta, type EmailDirection, type EmailParticipantRef, type EmailParticipantRole, type EmailProvider, type EmailVisibility, EmailsTabConfig, type EnvVarEntry, type EnvVarScope, type EventDataMap, type EventType, type ExtractRecord, type ExtractRecordInput, type ExtractRecordInputStrict, type ExtractRecordStrict, type ExtractRecordUpdate, type ExtractRecordUpdateStrict, FORM_FORBIDDEN_ATTRIBUTE_TYPES, type FeatureFlagDefinition, type FeatureFlagsConfig, type FeatureFlagsRepository, type FeatureGate, Field, FieldGroup, type FieldHistoryEntry, type FileListOptions, FilterOperator, FilterRule, FilterState, FilterValue, type FlagLevel, type FlagOverride, FlagRegistry, type FlagResolutionContext, FlagService, type FlagValueType, FormBuilder, type FormDefinition, type FormFieldRef, type FormFieldsRow, type FormFreeFieldRef, type FormHeadingRow, FormRegistry, type FormRow, FormRowBuilder, type FormSeparatorRow, type FormSlot, type FormSlotFieldRef, type FormStatus, type FormStep, FormStepBuilder, type FormSubmission, type FormSubmissionStatus, type FormTextRow, FormulaAttribute, type FormulaGenerationAttribute, type FormulaGenerationInput, FormulaReturnType, type GeocodingAdapter, type GeocodingAutocompleteParams, type GeocodingParams, type GeocodingSuggestion, type GlobalSearchGroupedOptions, type GlobalSearchGroupedResult, type GlobalSearchOptions, type GlobalSearchResultItem, Group, GroupBuilder, IDENTITY_PROPERTIES, type InferAttributeValue, type InferQualifiedProps, type InviteUserInput, type IsWithinBounds, LIVE_EVENT_TYPES, LIVE_STREAM_START_CURSOR, type ListOptions, ListViewBuilder, ListViewConfig, ListViewDefinition, ListViewTab, ListViewTabConfigBuilder, ListViewTabVisibility, type LiveChannel, type LiveChannelKind, type LiveErrorPayload, type LiveEventEnvelope, type LiveEventPayload, type LiveEventType, type LiveGapPayload, type LiveNotification, type LiveNotificationRecipient, type LiveNotificationRecipientPatch, type LiveReplayCompletePayload, type LiveSubscribePayload, type LiveUnsubscribePayload, Location, LocationAttribute, LocationGranularity, MEMORY_LIST_VIEW, MEMORY_OBJECT, MEMORY_VIEW, type MailboxAccount, type MailboxCursor, type MailboxEmail, type MailboxListResponse, type MailboxQuery, type MailboxReadState, type MailboxThread, type MailboxThreadDetail, MigrationDefinition, ModelDefinition, MultiRelationAttribute, MultiselectAttribute, NOTIFICATION_INBOX_STATES, NOTIFICATION_KINDS, NOTIFICATION_PRIORITIES, NOTIFICATION_SENSITIVITIES, NOTIFICATION_TYPES_V1, NOTIFICATION_TYPE_AGENT_QUESTION_REQUESTED, NOTIFICATION_TYPE_AGENT_SESSION_COMPLETED, NOTIFICATION_TYPE_AGENT_SESSION_FAILED, NOTIFICATION_TYPE_AGENT_SESSION_TIMEOUT, NOTIFICATION_TYPE_AGENT_SESSION_WAITING_HUMAN, NOTIFICATION_TYPE_AGENT_TASK_ASSIGNED, NOTIFICATION_WORK_STATES, NoopGeocodingAdapter, type Notification, type NotificationCountPatchLiveEvent, type NotificationCounts, type NotificationCreatedLiveEvent, type NotificationInboxState, type NotificationKind, type NotificationListParams, type NotificationListResult, type NotificationPriority, type NotificationRecipient, type NotificationRecipientPatchLiveEvent, type NotificationSensitivity, type NotificationSubject, type NotificationType, type NotificationV1Type, type NotificationWithRecipient, type NotificationWorkState, NumberAttribute, OPERATOR_SPECS, ObjectBuilder, type ObjectConfig, ObjectDefinition, ObjectRecord, type OcrAdapter, type OcrInput, type OcrOptions, type OcrPage, type OcrResult, type OcrTextBlock, type OperatorSpec, Option, PRESENTATION_PROPERTIES, type PageInfo, type PageOptions, type PageResponse, type ParsedAttribute, type ParsedPersistedSchemaPlan, type ParsedSchemaPlanProposal, PermissionScope, type PersistedDefaultViewTarget, type PersistedSchemaPlan, type PersistedSchemaPlanAdditive, Phone, PhoneAttribute, type PlannedAttribute, type PlannedAttributeRemoval, type PlannedObject, type PlannedObjectRemoval, type PlannedRename, PropertySchema, type ProposedDefaultViewTarget, ProviderName, QUALIFIED_SEPARATOR, type QualifiedDocumentAttributeBuilder, type QualifiedDocumentBrand, RECORD_CREATOR_ROOT_ACTOR_METADATA_KEY, REMOVED_OPERATOR_REPLACEMENTS, type RecordCreatedLiveEvent, type RecordDeletedLiveEvent, type RecordFieldPatch, type RecordLiveSnapshot, type RecordMetadata, type RecordPatchLiveEvent, type RecordRemovedLiveEvent, type Reflex, type ReflexRun, type ReflexState, type ReflexVersion, type ReflexVersionStatus, type RegexGenerationInput, RelationAttribute, RelationGroup, RelationGroupBuilder, RelationTarget, RelativeDateValue, type ResolutionContext, type ResolvedFlag, ResourceVisibility, type ReverseGeocodingParams, RichtextAttribute, RichtextTabConfig, RollupAttribute, RollupFunction, type RunEffect, type RunMode, SCHEMA_PLAN_LIMITS, SKILL_LIST_VIEW, SKILL_OBJECT, SKILL_VIEW, STANDARD_SCHEMA_VENDOR, SYNONYM_ALIASES, SYSTEM_ATTRIBUTES, SYSTEM_ATTRIBUTE_I18N_KEYS, SYSTEM_FILTER_ATTRIBUTE_TYPES, SYSTEM_RESOURCES, SYSTEM_RESOURCE_LABELS, type SchemaDriftResult, type SchemaPlan, type SchemaPlanAdditive, type SchemaPlanAdditiveBase, type SchemaPlanChangeSet, type SchemaPlanDestructive, type SchemaPlanDraft, type SchemaPlanDraftResponse, type SchemaPlanDraftState, type SchemaPlanDraftStatus, type SchemaPlanDraftWrite, type SchemaPlanImpact, type SchemaPlanImpactEntry, type SchemaPlanOutcome, type SchemaPlanProposalInput, type SchemaPlanSampleData, type SchemaPlanStatus, type SchemaPlanViewChanges, type SchemaState, type SearchOptions, SelectAttribute, SidePanelConfig, type SidebarExtraItem, SingleRelationAttribute, type SlotMode, SortRule, type StandardSchemaIssue, type StandardSchemaResult, type StartConnectorAuthInput, type StartConnectorAuthResult, type StaticFlagDefault, StatusAttribute, type StoredSchemaPlan, type SystemAttribute, type SystemAttributeI18nKey, type SystemFields, type SystemObjectDriftInfo, SystemResource, TEXT_FORMAT_PATTERNS, Tab, TabBuilder, TableTab, TableTabConfig, TenantId, type TenantSettings, TextAttribute, TimeFormat, Timestamps, TriggerEventType, USER_STATUSES, type UpdateActorInput, type UpdateDBAttribute, type UpdateDBForm, type UpdateDBFormSubmission, type UpdateDBObject, type UpdateDBView, type UpdateDBViewOverlay, type UpdateUserProfile, type UpsertDBAttribute, type UpsertDBObject, type UpsertDBView, UserAttribute, type UserLike, type UserProfile, UserReferenceType, type UserStatus, Uuid, ValidationError, type ValueRef, type ViewBaselineOrigin, type ViewChange, ViewConfig, type ViewConfigDelta, ViewDefinition, type ViewProjectionStaleLiveEvent, type ViewStateEntry, type ViewStateResolution, type ViewSyncPayload, ViewType, type WithCustomAttributes$1 as WithCustomAttributes, type WithoutSystemFields, agent, applyPipes, applyRelationProps, assertAcyclicComputedDependencies, assertLiveStreamCursor, booleanFlag, buildPropertySchema, buildQualifiedAttribute, canonicalStringify, checkbox, collectQualifiedRuleIssues, compareLiveStreamCursors, compileComputedFormula, compileRollupAttribute, computeByteMagnitude, createFlagRegistry, createFlagService, createStandardSchemaProps, currency, currentActor, date, dateValueStart, destructiveSchema, detailView, document, evaluateComputedAst, evaluateComputedFormula, evaluateComputedFormulaWithResult, evaluateFilterState, evaluateRecordFilterState, extractAttributeNames, extractCurrencyFilterValue, extractFilterValue, extractValueRefs, flagRegistry, form, formRegistry, formatAttributeValue, formatByteSize, formatComputedResult, formatLocationValue, formula, generateDefaultDetailView, generateDefaultListView, getActiveTab, getAttributeCapabilities, getAttributeFilterOperators, getErrorMessage, getLiveProtocolPayloadChannel, getOperatorPolarity, getRecordCreatorPrincipalId, getSlotFieldTargets, getSystemAttributeI18nKey, getSystemAttributeList, getUserDisplayName, group, hasDestructiveEntries, inferRollupReturnType, isAttributeFilterable, isAttributeGroupable, isAttributeKanbanGroupable, isAttributeSearchable, isCheckboxEquality, isComputedFunctionName, isDateRangeValue, isDefaultRole, isDocumentAttribute, isDynamicValue, isEmptyObject, isFormDefinition, isFormFieldsRow, isFormFreeFieldRef, isFormHeadingRow, isFormSeparatorRow, isFormSlotFieldRef, isFormTextRow, isLabelExpression, isLiveErrorPayload, isLiveEventEnvelope, isLiveEventPayload, isLiveEventPayloadForType, isLiveEventType, isLiveGapPayload, isLiveReplayCompletePayload, isLiveStreamCursor, isManagedSystemAttribute, isNotEmpty, isPlainRecord, isRelativeDateValue, isStandardSchema, jsonFlag, listView, liveChannelKey, location, matchesAccepts, multiselect, normalizeDateValue, normalizeFilterRule, normalizeForEdgeRpc, normalizeOperator, now, number, numberFlag, object, parseLiveChannelKey, parseLiveSubscribePayload, parseLiveUnsubscribePayload, parseQualifiedAttribute, persistedDefaultViewTargetSchema, persistedSchemaPlanSchema, phone, plannedAttributeSchema, plannedInlineAttributeSchema, plannedObjectSchema, proposedDefaultViewTargetSchema, registry, relation, relationGroup, renderLabelExpression, resetViewToDefault, resolveIsWithinBounds, resolveTextPattern, richtext, rollup, rollupToFormulaExpression, schemaPlanSchema, select, status, stringFlag, text, toMultiValueOperator, toUndefinedIfEmpty, toUtcDayString, today, user, validateAttributeName, validateLabelExpression, validateObjectName, validateQualifiedRule, viewRegistry, viewStateKey, viewSyncPayload };
|